基于fpga的交通灯设计

2024-07-23 版权声明 我要投稿

基于fpga的交通灯设计(精选8篇)

基于fpga的交通灯设计 篇1

EDA技术

实训(论文)说明书

题 目: 交通灯控制电路的设计 院(系): 信息与通信学院 专 业: 电子信息工程 学生姓名: 学 号: 指导教师:

2013年月日

桂林电子科技大学实训说明书用纸

摘要

EDA工具对于电子设计人员来说极其重要,它可以在电子设计的各个阶段、层次进行计算机模拟验证,确保设计的准确性,可缩短设计周期,降低设计成本。交通灯可以实现十字路口红绿灯的自动控制。基于FPGA的交通灯设计系统具有可靠性强、实时快速擦写、运算速度高、故障率低、电路简单,且体积小的特点。本设计采用的是Altera公司CycloneII系列的EP2C5T144芯片作为核心最小系统,它可以方便嵌入到实际的交通灯应用系统中,可以完成简单的逻辑控制、数据采集、信号处理、数学计算等功能;使用QuartusII软件作为开发平台;采用自顶向下的设计思路对系统进行模块化设计和综合,并通过波形仿真和硬件实现两种方式实现并验证交通灯的功能。关键词:交通灯、EDA、FPGA

桂林电子科技大学实训说明书用纸

Abstract EDA tools for electronic design personnel is very important, it can be in the electronic design of each stage, levels of computer simulation verification, to ensure the accuracy of the design, can shorten the design cycle, reduce design cost.The traffic light can realize intersection traffic light automatic control.Based on the FPGA of traffic light design system has the reliability, real-time fast operation speed is high, integration.it, low failure rate, circuit is simple, and the characteristics of small volume.This design USES is Altera company CycloneII series of EP2C5T144 chip as the core minimum system, it can be convenient to the actual traffic lights embedded application system, can complete the simple logic control, data acquisition, signal processing, mathematical calculations, etc;Use QuartusII software as a development platform, Using the top-down design idea of system modular design and comprehensive, and through the waveform simulation and hardware realization two ways to realize and verify the function of the traffic lights.Key words: traffic lights;EDA;FPGA

桂林电子科技大学实训说明书用纸

引言

“EDA技术”是一门实践性和实用性都很强的课程,学习的目的在于应用。本设计实训是配合“EDA技术”课堂教学的一个重要的实践教学环节,在本课程设计指导书中列举了一些常用的小型设计系统,旨在起到巩固课堂和书本上所学知识,加强综合能力,提高系统设计水平,启发创新思想的效果。

1设计任务与要求

1.1本综合设计实训任务的内容和要求

① 用EDA实训仪上的4只八段数码管分别显示道路东西和南北通行和禁止的倒计时时间。

② 能设置道路东西和南北两侧通行和禁止的倒计时时间,最大设置时间为99秒,最小设置时间为1秒。

③ 交通灯用红、绿、黄三种发光二极管(LED)显示控制的结果。④ 红、绿、黄灯显示的次序应符合实际交通道路控制的要求。系统概述及设计原理

2.1 系统的主要功能

交通灯控制电路是用于城市交通疏导的管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。交通信号灯指挥着人和各种车辆的安全运行,实现红、黄、绿灯的自动指挥是城乡交通管理现代化的重要课题。在城乡街道的十字交叉路口,为了保证交通秩序和行人安全,一般在每条道路上各有一组红、黄、绿交通信号灯。交通灯控制电路自动控制十字路口两组红、黄、绿交通灯的状态转换,指挥各种车辆和行人安全通行,实现十字路口城乡交通管理自动化。设计一个十字路口交通控制器,方向分为东南西北四个方向。东西方向的红绿灯状态一样,南北方向的红绿灯状态一样。每个方向上,有四盏灯,分别是左转灯、红灯、绿灯和黄灯。左拐灯亮表示左转车辆可以通行;红灯亮表示左转和直行车辆禁行;绿灯亮表示直行车辆和右转的车辆可以通行;黄灯亮表示左转和直行的车辆即将禁行。

本论文简要介绍了FPGA器件的特点和设计意义,以QuartusII软件为开发平台,通过VHDL硬件描述语言以及原理图的输入方式来设计交通灯。交通灯控制器用于自动控制十字路口交通灯和计时器。

系统的主要功能模块方框图如图2-1所示

桂林电子科技大学实训说明书用纸

图2-1 系统主要功能模块

2.2交通灯的设计原理

交通灯控制电路的原理框图如图1.3所示。其中,clkgen是分频器,将EDA实训仪主板提供的20MHz的主频经20000000分频后,得到电路所需的1Hz(秒)时钟。Cnt10de(两个)是十进制减法计数器,产生道路东西和南北通行和禁止的倒计时时间。Contr是控制电路,控制整个系统的工作。控制器接收倒计时的结果,当倒计时归0时,改变电路的控制模式,输出倒计时的初始时间和交通灯亮灭控制信号。

图2-2 交通灯控制电路的原理图 系统各个模块的的设计与仿真

3.1 分频器模块的设计

由于采用的FPGA芯片的时钟频率是50MHz,需要将其分频为1Hz。该模块即是实现50M的分频,将频率变为1Hz的脉冲波,从而得到周期为1s的脉冲波。如果要真正的实现分频50M,在仿真结果图中是很难观察的,甚至是没有办法验证的,故在仿真过程中,将分频的倍数变小,变为20分频,这样从图中可容易的得到并验证对时钟输入信号的20分频,如图3-1所示,Reset是复位信号,CLK_50MHz是输入时钟频率,CLK_1Hz是

桂林电子科技大学实训说明书用纸

输出时钟频率,从图中可以看出,输出频率CLK_1Hz确实是输入时钟频率CLK_50MHz的20分频。

图3-1 分频器仿真图

3.2 状态控制模块的设计

状态控制模块根据输入CLK_1Hz的脉冲信号输出不同的STATUS值,下游的模块依据STATUS的值来确定红绿灯的状态;于此同时对倒计时信号赋初值。在状态控制模块仿真图中,输入信号CLK是一个频率为1Hz的时钟脉冲信号,RESET是复位信号;输出信号STATUS是状态转换信号,控制着下游交通信号灯显示模块的显示情况;LOAD_EW、LOAD_SN是东西、南北方向倒计时开始控制信号,DJS_EW、DJS_SN是东西、南北方向倒计时间信号。其仿真结果图如图3-2所示,由图可得,STATUS共有000(S1)、001(S2)、010(S3)、011(S4)、100(S5)、101(S6)共6个状态,80s为红灯和左转灯的倒计时间,45s为绿灯的倒计时间,5s是黄灯的倒计时间,和状态转换表的状态一致。

图3-2 状态控制模块仿真图

3.3 交通灯信号灯显示模块的设计

交通信号灯显示模块根据输入的STATUS信号,输出对应的红绿黄灯信号,并直接驱动交通信号灯的亮灭。在交通灯信号灯显示模块程序仿真结果图中,STATUS为输入信号,而它依赖于状态控制模块产生的信号STATUS信号,一种六种状态,依次为000(S1)、001(S2)、010(S3)、011(S4)、100(S5)、101(S6);EW_LRGY(8位)是东西方向上交通信号灯的状态,SN_LRGY(8位)是南北方向上交通信号灯的状态,依次为左转、红、绿、黄,对应着EW_LRGY、SN_LRGY的前四位,‘1’表示点亮,‘0’表示熄灭,后四位均为0,表示四个灯的阴极接负极。例如,在STATUS为001时,对应的是东西方向红灯亮,南北方向绿灯亮,仿真结果符合预期,完全正确。其仿真图如3-3所示:

图3-3 信号灯显示模块仿真图

桂林电子科技大学实训说明书用纸

3.4东西方向倒计时模块设计

东西方向倒计时模块用来接收状态控制模块的输出并作为初值,每检测到一个CLK脉冲信号,就进行减一动作,最后把减一结果输出。在该模块仿真图中,CLK为1Hz的输入信号,LOAD_EW为计数器的装载信号,当其为高电平时,将输入信号DJS_EW_IN的值装载到计数器中,并开始进行减一操作,每遇一个CLK脉冲,进行一次减一操作,并将结果输出,由于输入的时钟频率是1Hz,所以显示的时间间隔是1s,与现实生活中的时间保持一致。其仿真结果如图3-4所示,由图可得,该模块首先将80秒的倒计时信号装载进去,并进行减一操作。

图3-4 东西方向倒计时仿真图

3.5 南北方向倒计时模块设计

南北方向倒计时模块用来接收状态控制模块的输出并作为初值,每检测到一个CLK脉冲信号,就进行减一动作,最后把减一结果输出。在该模块仿真图中,CLK为1Hz的输入信号,LOAD_SN为计数器的装载信号,当其为高电平时,将输入信号DJS_SN_IN的值装载到计数器中,并开始进行减一操作,每遇一个CLK脉冲,进行一次减一操作,并将结果输出,由于输入的时钟频率是1Hz,所以显示的时间间隔是1s,与现实生活中的时间保持一致。其仿真结果如图3-5所示,由图可得,该模块将45秒的倒计时信号装载进去,并进行减一操作。

图3-5南北方向倒计时仿真图

3.6 译码模块设计

译码模块程序用来将输入的两位倒计时数值,分解成两个整形数值,以此供后面的译码显示模块译码显示。在译码程序TO_8421_BCD模块仿真图中,DJS_EW_OUT,DJS_SN_OUT为上一倒计时模块的输出信号,其范围在0~80,所有倒计时的范围都包含其内;DJS_EW_OUT_SW,DJS_EW_OUT_GW,DJS_SN_OUT_SW,DJS_SN_OUT_GW为输出信号,其范围为0~9,代表了各个方向的倒计时的十位和个位,且数码管所有显示数字的范围均在其内。例如图中DJS_EW_OUT的值不断变化,相应的依次将其分解为十位(DJS_EW_OUT_SW)和个位(DJS_EW_OUT_GW),并依次递减,仿真结果符合预期,完全正确。仿真结果如图3-6所示:

桂林电子科技大学实训说明书用纸

图3-6 译码仿真结果图

3.7 译码显示模块设计

译码显示模块将上一模块译码模块输出的四个一位数译码成相对应的七位数码管段码,完成倒计时的译码和显示。在译码显示模块仿真图中,DJS_ EW_OUT_ SW,DJS_EW_OUT_GW,DJS_SN_OUT_SW,DJS_SN_OUT_GW是四位的输入信号,也是上一模块TO_8421_BCD的输出信号,它们的范围为数字0~9,DJS_EW_ OUT_SW1,DJS_ EW_ OUT_GW1,DJS_SN_OUT_SW1,DJS_SN_OUT_GW1对应的是相应的七位数码管显示段码的值。图中输出信号的值随着输入信号的变化而相应的变化,例如DJS_EW_OUT_SW为7,DJS_EW_OUT_GW为5时,DJS_EW_OUT_SW1为00000111(a、b、c、d、e、f、g依次对应着1110000,最高位的0表示是数码管的类型是共阴的),表示数码管显示7,DJS_EW_OUT_GW1为01101101,表示数码管显示5。仿真完全正确,符合预期。其仿真结果如图3-7所示:

图3-7 译码显示模块仿真图

3.8 顶层文件模块设计

顶层设计采用VHDL语言描述方式实现,并在工程文件仿真过后通过工具菜单自动生成原理图文件,从而是设计原理更加清晰明朗。

在顶层设计VHDL描述中,共包含7个元件,分别是:

1、分频器模块,2、状态控制模块,3、交通信号灯显示模块,4、东西方向倒计时模块设计,5、南北方向倒计时模块设计,6、译码模块设计,7、译码显示模块设计。这7个模块经过程序设计、编译仿真,结果均能够达到设计要求。最后在顶层设计中,通过元件例化语句将这7个模块连接起来,生成顶层文件。在顶层设计中,RESET是复位信号,输入的时钟频率CLK是50MHz,经过分频50M的分频器后,变为频率为1Hz的时钟信号,周期为1s,用此时钟信号来控制整个系统的步调,与现实生活中交通灯的步调保持一致。EW_LRGY、SN_LRGY分别为东西和南北方向上交通信号灯的状态,EW_DJS_DISPLAY、SN_DJS_DISPLAY为东西

桂林电子科技大学实训说明书用纸

和南北方向红绿灯倒计时间。另外,所有的数码管和二极管均为共阴极显示。例如,在EW_LRGY为01000000(即东西方向红灯亮)、SN_LRGY为10000000(即南北方向左转灯亮)时,EW_DJS_DISPLAY的前八位表示倒计时的十位,后八位表示倒计时的个位;图中EW_DJS_DISPLAY的前八位都是00000111表示7,后八位01111101表示6,后八位01101101表示5,后八位01100110表示4;SN_DJS_DISPLAY的前八位是01001111表示3,后八位01011011表示2,后八位00000110表示1,后八位00111111表示0,以上表明红绿灯和倒计时时间显示符合预期。仿真结果如图3-8所示:

图3-8 顶层文件波形仿真图 实训心得体会

本次EDA技术实训的交通灯采用的是Altera公司CycloneII系列的EP2C5T144芯片作为核心最小系统,它可以方便嵌入到实际的交通灯应用系统中,可以完成简单的逻辑控制、数据采集、信号处理、数学计算等功能;使用QuartusII软件作为开发平台;采用自顶向下的设计思路对系统进行模块化设计和综合,并通过波形仿真和硬件实现两种方式实现并验证交通灯的功能。为期两周的实训,我利用网络和图书馆的有效资源,搜集并下载了大量的关于用FPGA做交通灯设计的资料;然后精心阅读,在老师的指导督促下,并和周围同学进行有效学习和沟通,最终确定了自己的设计方案;最后按照既定的设计方案,通过努力有步骤的实现了交通灯的设计。

通过此次实训设计,让我加深了FPGA的理解,更加熟练了VHDL语言,同时,我深深体会到了通过FPGA设计数字电路的方便、简洁的特点,这让我相信未来数字电路的应用必将更加广泛。另外,我还体会到:从事开发设计工作,一定要保持个勤奋、踏实、严谨的工作态度,这样才能更好的完成工作。最后,我觉得在交通灯控制系统设计中还可以增加一些实用功能,如:

1、针对弱视或色盲人群进行声音提示;

2、在遇到突发状况时,可以将红绿灯改为紧急模式控制;

3、当有119、120等特种车辆通过时,系统可转为特种车放行,其他车辆禁行。

但是这次实训我也发现自己的很多不足之处。在设计过程中我发现自己考虑问题很不全面,自己的专业知识掌握的很不牢靠,所掌握的编程语句还不够,很多程序都看不懂,我希望自己的这些不足之处能在今后的工作和学习中得到改善。而且,通过这次实训,我懂得了学习的重要性,学会了坚持和努力,这将为以后的学习做出了最好的榜样!

桂林电子科技大学实训说明书用纸

还有光有知识是不行的,还得有能力、有技术,单干也是不行的,要适当寻求合作,那样才能更好实现我们的价值。在实训中及社会上,我们都要懂得虚心地向别人学习,即使你觉得自己很厉害,但总有一些东西你是不懂的,所以不懂要多向别人请教,这样才能更好地提高自己的水平和能力,全面发展自己。

桂林电子科技大学实训说明书用纸

谢 辞

在这短短的两周EDA实训中,在这期间同学们都在努力学习,认真做自己各自的实训。在此我要特别感谢各位指导老师们对我的指导,还有各位同学对我的帮助,尤其感谢老师在百忙之中抽出时间为我们讲解设计原理,同时,还要感谢和我一起努力的各位同学,在他们对我的帮助很我自己的努力下,我才能顺利地完成这次实训。

这次实训我受匪颇多,但这多是得益于老师无微不至的关心和细心的教导。在实训中,让我学到了不少知识,给了我一次复习学过的知识的机会,巩固了基础知识。也多亏同学们的无私的帮助和支持,在我无助的时候还是他们伸出他们的友爱之手,帮我渡过难关,在此我也真心的多谢他们默默的帮助。最后再次对老师们说声:谢谢!

桂林电子科技大学实训说明书用纸

参考文献

基于fpga的交通灯设计 篇2

1 系统设计要求

所设计的交通信号灯控制电路,主要适用于在两条干道汇合点形成的十字交叉路口,路口设计两组红绿灯分别对两个方向上的交通运行状态进行管理。交通灯的持续闪亮时间由键盘输入控制。灯亮时序如图1所示,当B方向的红灯亮时,A方向对应绿灯亮,由绿灯转换成红灯的过渡阶段黄灯亮即方向红灯亮的时间等于A方向绿灯和黄灯亮的时间之和。同理,当A方向的红灯变亮时,B方向的交通灯也遵循此规则。各干道上安装有数码管,以倒计时的形式显示本道各信号灯闪亮的时间。当出现特殊情况时,各方向上均亮红灯,倒计时停止。特殊运行状态结束后,控制器恢复原来的状态,继续运行。

2 系统整体设计

整个系统设计如图2所示,该系统主要由计数模块、控制模块、分频模块、分位模块以及显示电路构成。其中分频模块主要将系统输入的基准时钟信号转换为1 Hz的激励信号,驱动计数模块和控制模块工作。控制模块根据计数器的计数情况对交通灯的亮灭及持续时间进行控制,并通过分位电路将灯亮时间以倒计时的形式通过数码管显示出来。图中Reset是复位信号,高电平有效可以实现对计数器的异步清零为保持信号,当Hold为“1”,计数器暂停计数,表示出现特殊情况,各方向车辆都处于禁行状态。

3 主要功能模块设计及仿真

3.1 计数模块设计

计数模块主要实现累加循环计数,计数的最大值由键盘输入控制,输出的计数值为控制模块的灯控提供参考,计数器的主程序设计如下:

计数模块的仿真如图3所示,从图中可以看出,在时钟的驱动下,计数值不断自加,当计数值countnum等于键盘输入值32(key=32)时,计数返回到0,开始下一轮计数。当Hold检测到特殊情况时置`1',使计数器暂停计数。

3.2 控制器模块的仿真设计

在控制器模块中,红、绿、黄三盏灯工作的总时间由键盘输入,各交通灯时间分配规则如下:红灯时间占总时间的1/2,绿灯时间占3/8,黄灯时间占1/8,本设计中键盘输入值为32(key=32),正常情况下红灯亮16 s,绿灯亮12 s,黄灯亮4 s。

控制器仿真情况如图4所示,当hold为低电平,计数值countnum<12时,greenA输出高电平,A东西方向绿灯亮起车辆通行,此时与之相对应的redB输出高电平,B方向红灯亮起车辆禁行。A方向显示交通灯闪烁持续时间的数码管numA从12开始递减,同时B方向显示交通灯闪烁持续时间的数码管numB从16开始递减。当1216,redA输出高电平,A方向红灯亮起车辆禁行,numA从数值16开始倒计时,此时greenB输出高电平,B方向绿灯亮起车辆通行,numB从数值12开始递减。当16

3.3 分位模块设计

分位模块的设计主要是将灯亮时间分为十位和个位,通过两个相应的数码管分别显示出来。本设计中灯亮时间最长不超过40 s(numin<40),numA,numB分别表示十位、个位上的数字,分位模块程序设计的流程图如图5所示。

分位模块的仿真如图6所示,numin的数值大小可以通过numA,numB的组合以十进制数值显示,从而实现了分位功能。

4 系统的硬件设计及调试

本系统的主要逻辑设计由一片EP1K30TC144-3芯片完成,编写的VHDL源程序在Altera公司的逻辑综合工具Max+PlusⅡ下经过编译和功能仿真测试后,针对下载芯片进行管脚配置,下载到EP1K30TC144-3芯片中,进行相应的硬件调试,调试结果与软件仿真的结果相吻合,验证了设计完成了预定功能。

5 结语

本文利用硬件描述语言VHDL编程,借助Altera公司的Max+PlusⅡ软件环境下进行了编译及仿真测试,通过FPGA芯片实现了一个实用的交通信号灯控制系统设计由于采用了技术不但大大缩短了开发研制周期,提高了设计效率,而且使系统具有设计灵活实现简单性能稳定的特点。

参考文献

[1]张明.VHDL实用教程[M].成都:电子科技大学出版社,1999.

[2]谭会生,张昌凡.EDA技术及应用[M].西安:西安电子科技大学出版社,2001.

[3]潘松,王国栋.VHDL实用教程[M].西安:西安电子科技大学出版社,2000.

[4]张顺兴.数字电路与系统设计[M].南京:东南大学出版社,2004.

[5]徐志军,徐光辉.CPLD/FPGA的开发与应用[M].北京:电子工业出版社,2002.

[6]蒋璇,臧春华.数字系统设计与PLD应用技术[M].北京:电子工业出版社,2006.

[7]王永华.现代电气控制及PLC技术[M].北京:北京航空航天大学出版社,2005.

[8]王成勇.智能交通灯控制系统[J].广东技术师范学院学报,2006(4):92-94.

[9]张海英,余臻,陈燕萍.模糊控制在智能交通灯监控系统中的应用[J].计算机技术与发展,2008,18(3):181-183.

基于FPGA的异步串行总线设计 篇3

关键词:异步串口;FPGA器件;Verilog HDL

随着近代通信技术的迅猛发展,对总线传输速率的要求也越来越高。传统的并行总线在发展到一定速率后很难再有所突破,并且在实际应用中还存在着大量的弊端,比如:成本相对较高、抗电磁干扰能力低下、模块间的总线互联繁琐等等。这些都给串行总线的发展和应用提供了客观动力。串行总线按传输模式可分为同步串行总线和异步串行总线两类;同步串行总线在传输过程中需要携带同步时钟信号,因此在传输距离较长或传输速率较高时会出现由于时钟衰落而引起的误码现象,制约了串行总线的传输速率和作用距离。而异步串行总线恰恰规避了这些缺点。因此异步串行总线被大量的应用于高速串行通信系统中。异步串行总线的按实现方式大致可分为两种,一种是采用专用串行总线接口芯片实现,实现方便简单,但二次开发性差,不利于系统升级维护;另一种是基于FPGA等可编程逻辑芯片实现。后者设计灵活,二次开发型良好,参数配置便捷,利于系统升级维护。本文将详细描述一种基于FPGA芯片硬件设计,采用Verilog HDL硬件描述语言实现传输协议的高速异步串行总线设计。

1 硬件设计方案

本设计通过高速异步串行总线和上位机进行通信,通过解析消息内容完成对下位机的实时控制与监测,并且将监测数据及时准确的回传至上位机。本系统要求具备较高的实时控制性能,下位机响应上位机指令要求时间在3us以内,模块间通信稳定可靠、级联简洁,系统性能升级方便等。通过对系统要求研究分析,采用高速异步串行总线实现模块间通信比较符合要求。系统框图如图1所示。

高速异步串行总线硬件设计采用了以FPGA芯片为主,配以接口、时钟、电源变换等外围电路的设计思路。选用ALTERA公司的Cyclone系列FPGA作为核心器件。此芯片内部有丰富的逻辑资源和存储资源,有丰富的时钟网络和锁相环单元和I/O引脚,能够满足异步串行协议实现的硬件需求。多种电压单独使用,有效降低芯片功耗。为了提高FPGA工作稳定性和可靠性在硬件设计时专门在其外围配置了电源监测电路和复位电路,对FPGA的各种工作电压和电流进行监测,当任意一路电压值发生突变时,电源监测电路都会给出命令,立刻关掉其它电源,或者将FPGA的供电端短路至地端,使FPGA进入断电状态,确保芯片不会被损坏。当电压值恢复正常时,电源监测电路将打开供电电路使FPGA再次进入工作状态,通过复位信号启动FPGA的程序从起始状态开始工作,确保FPGA芯片的物理安全和运行安全,从而有效提高系统的可靠性。设计中还采用了LVDS(Low Voltage Differential Signaling)收发芯片来提高串行总线的驱动能力。单端串行总线从FPGA输出后经LVDS收发器转化为差分信号线对输出至模块端口,与其它模块进行物理连接。串行总线采用差分线的连接方式能够更有效的抵抗传输中的共模噪声,降低传输误码率,大幅提高通信质量。详细的设计框图如图2所示。

2 异步串行总线传输协议

根据系统对上下位机指令响应时间要求,自定义了异步串行总线的传输速率和传输协议。因为本协议为异步串行传输协议,所以在每包数据的前面增加了1.5bit的起始位,在每包数据的后面增加了1bit的数据停止位作为一包数据的开始标志和结束标志。为提高数据传输的准确性,在发送起始位之后和信息数据结束之前分别增加了8bit题头和题尾,用于数据接收方信息同步和数据识别;如果接收方收到的题头或者题尾任意一个有误,就判本包数据传输有误。并且在本包数据末端增加了CRC-8校验码,对发送的整个串行码流进行校验。具体传输协议如下:

(1)串行传输格式:

起始位→题头→命令字→信息→题尾→CRC8→停止位;

(2)传输速率:40MHz;

(3)起始位:0(1.5bit)

(4)题头:10100101;

(5)命令字:B7 B6 B5 B4 B3 B2 B1 B0:B0为读写控制位(0读,1写);B1为数据LSB和MSB传输标志位(0为LSB先出,1为MSB先出);B5 B4 B3B2为访问地址(0000自检状态寄存器,0001控制状态寄存器,1110错误重发请求标志寄存器,1111装置ID软件版本寄存器,其它根据实际需求任意扩展定义);B7 B6为传输数据长度(00为0个8bit数据长度,01为1个8bit数据长度,10为2个8bit数据长度,11为3个8bit数据长度)等。

(6)信息:长度为8bit的整数倍;

(7)题尾:01011010;

(8)CRC校验多项式:CRC8=X8+X7+X6+X4+X2+1;

(9)停止位:1(1bit);

(10)无数据时为高电平。读操作时后面的数据长度为0;不够8bit的,空位默认为“0”。

发送消息的过程相对简单,只需要按照传输格式将所要发送的消息进行打包、CRC-8编码。然后用时钟将打包好的数据串行打出即可;接收消息相对复杂一些,为了准确接收数据,防止因为时钟抖动及串行数据传输信号衰落而导致的误码,接收方要尽可能的靠近每比特数据位的中点进行采样,所以在设计程序时利用锁相环将采样时钟倍频到传输速率的4倍频进行同步采样,这样采样点更加接近数据中点,采到的数据更真实。串行数据接收状态机如图3所示。

3 功能模块设计

根据对协议的分析将整个串行总线传输协议从功能上划分为以下几个模块:发射模块、接收模块、解消息模块、CRC校验模块、自检模块、控制模块、ID版本存取模块和错误重发模块等。模块关系图如图4所示。

(1)发射模块:按照协议向上位机回传监测数据,发射错误重发请求数据等;

(2)接收模块:接收上位机下传的参数、命令等;完成起始位的检测和消息同步,题头、题尾的对错判断,同时将收到的数据进行串并转换以8bit为单位打入FIFO(First In First Out)中缓存,备译码模块进行命令字译码和对下位机控制的信息读取。

(3)CRC校验模块:CRC校验模块完成CRC-8编码功能和CRC-8译码功能。当发送消息时,将要发送的数据按8bit打入CRC校验模块,对其进行编码,求出校验码并且拼接到题尾后面将其发出;当接收消息时,接收模块将收到的串行码按8bit打入CRC校验模块,启动CRC译码算法,如果译码成功则启动解消息模块进行相应的后续工作。如果译码失败,终止本次接收,启动错误重发模块,要求对放发送上一包消息。

(4)解消息模块:CRC校验成功后将启动解消息模块进入工作状态,从FIFO中读取命令字数据,对命令字进行解码识别,根据解码信息启动其它相应模块开始工作。

(5)错误重发模块:当接收到串行数据流时,经过题头、题尾、CRC译码判断,任何一个环节出现错误都将终止本次接收流程,同时启动错误重发模块,发送错误重发请求,要求对方重新发送上一包数据。

根据图4所示流程及软件模块功能化分,本设计采用Verilog HDL硬件设计语言开发实现。设计灵活,串口速率、编码模式、传输方式等都可根据系统要求从上位机下发参数进行修改。图5是本串口总线在每秒七万次的通信频率状态下用Quartus软件中的SignalTAP logic Analyzer抓出的工作时序图。可以看出串口总线传输稳定可靠,完全满足系统通信的高速传输要求。

4 结束语

本文介绍了一种基于FPGA芯片的高速异步串行总线设计。总线协议利用Verilog HDL实现,设计灵活、可读性强、维护方便、升级移植性能优越、传输稳定可靠。随着通信系统信息吞吐量的日益增加,这种具备多重优点的串行总线设计将被大量使用。

参考文献

[1] 王诚,吴继华,范丽珍等.Altera FPGA/CPLD设计.第一版.北京:人民邮电出版社.2005

[2] 徐光辉,程东旭,黄如等.基于FPGA的嵌入式开发与应用.北京:电子工业出版社.102

[3] 王冰,勒学明.LVDS技术及其在多信道高速数据传输中的应用.电子技术应用.2003

基于fpga的交通灯设计 篇4

关键词:VHDLCPLD/FPGA数字逻辑电路设计半整数分频器

1引言

CPLD(ComplexprogrammableLogicDevice,复杂可编程逻辑器件)和FPGA(FieldprogrammableGatesArray,现场可编程门阵列)都是可编程逻辑器件,它们是在PAL、GAL等逻辑器件基础上发展起来的。同以往的PAL、GAL相比,FPGA/CPLD的规模比较大,适合于时序、组合等逻辑电路的应用。它可以替代几十甚至上百块通用IC芯片。这种芯片具有可编程和实现方案容易改动等特点。由于芯片内部硬件连接关系的描述可以存放在磁盘、ROM、PROM、或EPROM中,因而在可编程门阵列芯片及外围电路保持不动的情况下,换一块EPROM芯片,就能实现一种新的功能。它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及实时在检验等优点,因此,可广泛应用于产品的原理设计和产品生产之中。几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA和CPLD器件。

在现代电子系统中,数字系统所占的比例越来越大。系统发展的越势是数字化和集成化,而CPLD/FPGA作为可编程ASIC(专用集成电路)器件,它将在数字逻辑系统中发挥越来越重要的作用。

在数字逻辑电路设计中,分频器是一种基本电路。通常用来对某个给定频率进行分频,以得到所需的频率。整数分频器的实现非常简单,可采用标准的计数器,也可以采用可编程逻辑器件设计实现。但在某些场合下,时钟源与所需的频率不成整数倍关系,此时可采用小数分频器进行分频。比如:分频系数为2.5、3.5、7.5等半整数分频器。笔者在模拟设计频率计脉冲信号时,就用了半整数分频器这样的电路。由于时钟源信号为50MHz,而电路中需要产生一个20MHz的时钟信号,其分频比为2.5,因此整数分频将不能胜任。为了解决这一问题,笔者利用VIDL硬件描述语言和原理图输入方式,通过MAX+plusII开发软件和ALTERA公司的FLEX系列EPF10K10LC84-4型FPGA方便地完成了半整数分频器电路的设计。

2小数分频的基本原理

小数分频的基本原理是采用脉冲吞吐计数器和锁相环技术先设计两个不同分频比的整数分频器,然后通过控制单位时间内两种分频比出现的不同次数来获得所需要的小数分频值。如设计一个分频系数为10.1的分频器时,可以将分频器设计成9次10分频,1次11分频,这样总的分频值为:

F=(9×10+1×11)/(9+1)=10.1

从这种实现方法的特点可以看出,由于分频器的分频值不断改变,因此分频后得到的信号抖动较大。当分频系数为N-0.5(N为整数)时,可控制扣除脉冲的时间,以使输出成为一个稳定的脉冲频率,而不是一次N分频,一次N-1分频。

图2模3计数器仿真波形

3电路组成

分频系数为N-0.5的分频器电路可由一个异或门、一个模N计数器和一个二分频器组成。在实现时,模N计数器可设计成带预置的计数器,这样可以实现任意分频系数为N-0.5的分频器。图1给出了通用半整数分频器的电路组成。

基于fpga的交通灯设计 篇5

课程名称:十字路口人行道交通灯设计

业:自动化

号:2011551810

级:11自动化(3)班

学生姓名:余帆

完成日期:2015年1月11日

摘要

PLC是一种新型的通用的自动控制装置。PLC它将传统的继电器控制技术、计算机技术和通讯技术融为一体,是专门为工业控制而设计的,具有功能强、运用灵活、可靠性高、稳定性好、抗干扰能力强、编程简单,使用方便以及体积小、重量轻、功耗低等一系列有点。十字路口的红绿灯指挥着行人和车辆的安全运行,实现红绿灯的自动指挥能使交通管理工作得到改善,也是交通管理工作自动化的重要标志之一。解决好公路交通灯控制问题是保障交通有序、安全、快捷运行的重要环节。

本设计是用PLC来实现对十字路口交通信号灯的控制,其控制方法是采用西门子的S7-200系列CPU224型号PLC对东西南北的红、黄、绿灯实现有规律的循环闪亮,以达到对交通信号灯的控制。控制程序为梯形图(LAD)。

关键词:PLC控制、梯形图、交通灯

目录

0

(一)PLC概述.............................错误!未定义书签。

1.1 PLC的硬件结构........................................3 1.2 PLC的工作原理.........................................4 1.3 S7-200的概述.........................................5

(二)交通信号灯............................................7

(三)方案设计..............................................8

3.1控制要求...............................................8 3.2系统设计方案分析.......................................8 3.3 交通灯状态图..........................................9 3.4 主程序流程图:.......................................10

(四)硬件设计............................................10 4.1 硬件选择.............................................10 4.2 PLC的I/O分配表.....................................10

4.3 PLC的硬件接线图:..................................11

(五)软件设计............................................12 5.1 十字路口交通信号灯梯形图..............................12

(六)仿真实验............................................14

(七)设计总结............................................16 参考文献....................................................16 1

(一)PLC概述

可编程序控制器(Programmabie Logic Controller,缩写PLC)是以微处理器为基础,综合计算机、通信、联网以及自动控制技术而开发的新一代工业控制装置。可编程序控制器是随着技术的进步与现代社会生产方式的转变,为适应多品种、小批量生产的需要,生产、发展起来的一种新型的工业控制装置,在工业自动化各领域取得了广泛的应用。

1.1 PLC的硬件结构

PLC分为固定式和组合式(模块式)两种。固定式包括CPU板、I/O板、显示面板、内存块、电源等,模块式包括CPU模块、I/O模块、内存、电源模块、底板或机架。其结构如图1所示。中央处理单元(CPU)是PLC 的控制中枢,按照系统程序赋予的功能接收并存储从编程器键入的用户程序和数据、存储器I/O以及警戒定时器的状态;并能诊断用户程序中的语法错误。当PLC 投入运行时,首先它以扫描的方式接收现场各输入装置的状态和数据,并分别存入I/O 映象区,然后从用户程序存储器中逐条读取用户程序,经过命令解释后,按指令的规定执行逻辑或算数运算的结果送入I/O 映象区或数据寄存器内,等所有的用户程序执行完毕之后,最后将I/O 映象区的各输出状态或输出寄存器内的数据传送到相应的输出装置,如此循环运行直到停止。

图1 PLC的结构图

1.2 PLC的工作原理

PLC的CPU则采用顺序逻辑扫描用户程序的运行方式,即如果一个输出线圈或逻辑线圈被接通或断开,该线圈的所有触点(包括其常开或常闭触点)不会立即动作,必须等扫描到该触点时才会动作。

当PLC投入运行后,其工作过程一般分为三个阶段,即输入采样、用户程序执行和输出刷新三个阶段。完成上述三个阶段称作一个扫描周期。在整个运行期间,PLC的CPU以一定的扫描速度重复执行上述三个阶段:

1输入采样阶段

在输入采样阶段,PLC以扫描方式依次地读入所有输入状态和数据,并将它们存入I/O映象区中的相应得单元内。输入采样结束后,转入用户程序执行和输出刷新阶段。在这两个阶段中,即使输入状态和数据发生变化,I/O映象区中的相应单元的状态和数据也不会改变。因此,如果输入是脉冲信号,则该脉冲信号的宽度必须大于一个扫描周期,才能保证在任何情况下,该输入均能被读入。

2用户程序执行阶段

在用户程序执行阶段,PLC总是按由上而下的顺序依次地扫描用户程序(梯形图)。在扫描每一条梯形图时,又总是先扫描梯形图左边的由各触点构成的控制线路,并按先左后右、先上后下的顺序对由触点构成的控制线路进行逻辑运算,然后根据逻辑运算的结果,刷新该逻辑线圈在系统RAM存储区中对应位的状态;或者刷新该输出线圈在I/O映象区中对应位的状态;或者确定是否要执行该梯形图所规定的特殊功能指令。

3输出刷新阶段

当扫描用户程序结束后,PLC就进入输出刷新阶段。在此期间,CPU按照I/O映象区内对应的状态和数据刷新所有的输出锁存电路,再经输出电路驱动相应的外设。

1.3 s7-200的概述

西门子S7系列可编程控制器分为S7-400、S7-300、S7-200三个系列,分别为S7系列的大、中、小型可编程控制器系统。S7-200系列可编程控制器有CPU21X系列,CPU22X系列,其中CPU22X型可编程控制器提供了4个不同的基本型号,常见的有CPU221,CPU222,CPU224和CPU226四种基本型号:

小型PLC中,CPU221价格低廉能满足多种集成功能的需要。CPU 222是S7-200家族中低成本的单元,通过可连接的扩展模块即可处理模拟量。CPU 224具有更多的输入输出点及更大的存储器。CPU 226和226XM是功能最强的单元,可完全满足一些中小型复杂控制系统的要求。四种型号的PLC具有下列特点:

集成的24V电源

可直接连接到传感器和变送器执行器,CPU 221和CPU222具有180mA输出。CPU224输出280mA,CPU 226、CPU 226XM输出400mA可用作负载电源。

高速脉冲输出

有2路高速脉冲输出端,输出脉冲频率可达20KHz,用于控制步进电机或伺服电(3)通信口CPU 221、CPU222和CPU224具有1个RS-485通信口。

CPU 226、CPU 226XM具有2个RS-485通信口。支持PPI、MPI通信协议,有自由口通信能力。

(4)模拟电位器CPU221/222有1个模拟电位器,CPU224/226/226XM有2个模拟电位器。模拟电位器用来改变特殊寄存器(SMB28,SMB29)中的数值,以改变程序运行时的参数。如定时器、计数器的预置值,过程量的控制参数。

(5)中断输入允许以极快的速度对过程信号的上升沿作出响应。

(6)EEPROM存储器模块(选件)可作为修改与拷贝程序的快速工具,无需编程器并可进行辅助软件归档工作。

(7)电池模块用户数据(如标志位状态、数据块、定时器、计数器)可通过内部的超级电容存储大约5天。选用电池模块能延长存储时间到200天(10年寿命)。电池模块插在存储器模块的卡槽中。

(8)不同的设备类型CPU 221~226各有2种类型CPU,具有不同的电源电压和控制电压。

(9)数字量输入/输出点CPU 221具有6个输入点和4个输出点;CPU 222具有8个输入点和6个输出点;CPU 224具有14个输入点和10个输出点;

CPU226/226XM具有24个输入点和16个输出点。CPU22X主机的输入点为24V直流双向光电耦合输入电路,输出有继电器和直流(MOS型)两种类型

(10)高速计数器CPU 221/222有4个30KHz高速计数器,CPU224/226/226XM有6个30KHz的高速计数器,用于捕捉比CPU扫描频率更快脉冲信号。

(二)交通信号灯

交通十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。靠什么来实现这井然秩序呢?靠的是交通信号灯的自动指挥系统。那么控制系统是如何实现红、绿、黄三种颜色信号灯有条不紊工作的呢?交通信号灯控制方式很多,可以用电子电路来实现,也可以用单片机编程控制来实现。本文主要介绍如何利用PLC来实现十字路口交通灯的控制。

随着社会的发展,人们的消费水平不断提高,私人车辆不断的增加。人多、车多、道路少的道路交通状况已经很明显了。所以采用有效的方法控制交通灯是势在必行的。PLC的智能控制原则是控制系统的核心,采用PLC根据不同时刻车流量的不同,将红绿灯时长按一定的规律分档。这样就可以达到最大限度的有车放行,减少十字路口的车辆滞留,缓解交通拥挤,实现最优控制,从而提高交通控制系统的效率。

交通信号灯的出现,使得交通得以管制,对于疏导交通流量,提高道路通行能力,减少交通事故有明显效果。为了实现交通道路的管制,力求交通管理先进性、科学化。

用可编程控制器实现交通灯管制的控制系统,以及该系统软、硬件设计方法。实验证明该系统实现简单、经济,能够有效的疏导交通,提高交通路口的通行能力。分析了现代城市交通控制和管理问题的现状,结合交通实际情况阐述了交通控制系统的工作原理,给出了一种简单实用的城市交通灯控制系统的PLC设计方案。可编程控制器在工业自动化中的地位极其重要。广泛应用于各个行业。随着科技的发展,可编程控制器的功能日益完善,加上小型化、低价格、可靠性高,在现代工业中的作用更加突出。

(三)方案设计

3.1控制要求

交通灯控制系统的控制要求如下:

(1)信号灯受一个启动开关控制,当启动开关接通时,信号灯系统开始工作,且先南北红灯亮,东西绿灯亮。当启动开关断开时,所有信号灯都熄灭。

(2)南北红灯亮维持25秒,在南北红灯亮的同时东西绿灯也亮,并维持20秒。到20秒时,东西绿灯闪亮,闪亮3秒后熄灭。在东西绿灯熄灭时,东西黄灯亮,并维持2秒。到2秒时,东西黄灯熄灭,东西红灯亮,同时,南北红灯熄灭,绿灯亮。(3)东西红灯亮维持30秒。南北绿灯亮维持20秒,然后闪亮3秒后熄灭。同时南北黄灯亮,维持2秒后熄灭,这时南北红灯亮,东西绿灯亮。周而复始

3.2系统设计方案分析

按照交通灯系统控制要求下,结合西门子S7-200系列可编程控制器的特性,选择适合的型号。设计思想分析如下:给一个启动的输入信号,要配合一个SB1的按钮,当SB1启动按钮动作,系统工作。

当启动开关SD合上时,I0.0触点接通,Q0.2得电,南北红灯亮;同时Q0.2的动合触点闭合,Q0.3线圈得电,东西绿灯亮。1秒后,T49的动合触点闭合,Q0.7线圈得电,模拟东西向行驶车的灯亮。维持到20秒,T43的动合触点接通,与该触点串联的T59动合触点每隔0.5秒导通0.5秒,从而使东西绿灯闪烁。又过3秒,T44的动断触点断开,Q0.3线圈失电,东西绿灯灭;此时T44的动合触点闭合、T47的动断触点断开,Q0.4线圈得电,东西黄灯亮,Q0.7线圈失电,模拟东西向行驶车的灯灭。再过2秒后,T42的动断触点断开,Q0.4线圈失电,东西黄灯灭;此时起动累计时间达25秒,T37的动断触点断开,Q0.2线圈失电,南北红灯灭,T37的动合触点闭合,Q0.5线圈得电,东西红灯亮,Q0.5的动合触点闭合,Q0.0线圈得电,南北绿灯亮。1秒后,T50的动合触点闭合,Q0.6线圈得电,模拟南北向行驶车的灯亮。又经过25秒,即起动累计时间为50秒时,T38动合触点闭合,与该触点串联的T59的触点每隔0.5秒导通0.5秒,从而使南北绿灯闪烁;闪烁3秒,T39动断触点断开,Q0.0线圈失电,南北绿灯灭;此时T39的动合触点闭合、T48的动断触点断开,Q0.1线圈得电,南北黄灯亮,Q0.6线圈失电,模拟南北向行驶车的灯灭。维持2秒后,T40动断触点断开,Q0.1线圈失电,南北黄灯灭。这时起动累计时间达5秒钟,T41的动断触点断开,T37复位,Q0.3线圈失电,即维持了30秒的东西红灯灭。

3.3 交通灯状态图

十字路口交通灯如下图1所示,将12个交通灯进行编号

图2 十字路口交通灯状态图

3.4 控制要求及程序流程:

(1)按下启动按钮,信号灯开始工作,东西向绿灯、南北向红灯同时亮。(2)东西向绿灯亮25s后,闪烁三次,频率为1s/次。然后东西向黄灯亮,2s后东西向红灯亮,30s后东西绿灯亮……按此循环。

(3)南北向红灯亮30s后,南北向绿灯亮,25s后,闪烁3次,频率为1s/次。然后南北向黄灯亮,2s后南北向红灯亮,30s后南北向绿灯亮……按此循环下去。

(四)硬件设计

4.1 硬件选择

本设计采用PLC来实现对十字路口交通信号灯的控制,其控制方法是选用西门子的S7-200系列CPU222型号PLC对东西南北的红、黄、绿灯实现有规律的循环闪亮,9

以达到对交通信号灯的控制。控制过程中采用顺序控制法用多个定时器自动实现对六个控制对象的控制。根据交通信号灯的亮灭规律,可用PLC编程对其实行自动控制。

4.2 PLC的I/O分配表

名称

启动按钮停止按钮

表1 交通信号灯PLC的输入/输出点分配表

输入信号

输出信号

代号 输入点编号

名称 代号 输出点编号

SB1

I0.0

南北向绿

L0

Q0.0

SB2 I0.1

南北向黄灯

L1 Q0.1

南北向红

L2 Q0.2

东西向绿

L3 Q0.3

东西向黄

L4 Q0.4

东西向红

L5 Q0.5

4.3 PLC的硬件接线图:

图5 PLC 控制接线图

端口I0.0为接入系统开关的传送信号,端口Q0.0接南北绿灯,端口Q0.1接南北黄灯,端口Q0.2接南北红灯,端口Q0.3接东西绿灯,端口Q0.4接东西黄灯,端口Q0.5接东西红灯。

(五)软件设计

5.1 十字路口交通信号灯梯形图

(六)仿真实验

(七)设计总结

在这次课程设计中我遇到了一些问题,但加强了以往学过的理论的知识的应用。虽然这次的课程设计花了我一个星期的时间,通过这次的锻炼,我学到了很多的东西,不仅锻炼了自己的思考能力、绘图能力和程序仿真能力,还锻炼了综合应用知识的能力,同时,我也是在这次课程设计中意识到了自己的不足,我还有许多未知的知识和问题等着学习和处理,知道了今后需要更加努力,使自我能够不断完善。

经过本次课程设计,让我更加深刻的学习和巩固了PLC这门课程,不仅从理论上掌握了课堂上没有学懂的知识,还从实践中扩展了我的知识面,让我对我们专业的知识有了更加全面的认识,更加清晰的认识到我们专业知识的实用性是如此的强,不仅能培养我们的兴趣爱好,更对我们今后的求职就业起到至关重要的作用。

参考文献

基于fpga的交通灯设计 篇6

一. 绪论

1.交通灯的由来:

交通灯是指由红、黄、绿三种颜色灯组成用来指挥交通的信号灯,最早出现在19世纪初在英国中部的约克城的一个典故中,当时交通灯只有两种颜色红绿,随着各种交通工具的发展和交通指挥的需要,第一盏名副其实的三色灯(红、黄、绿三种标志)于1918年诞生。它是三色圆形四面投影器,被安装在纽约市五号街的一座高塔上,由于它的诞生,使城市交通大为改善。2.交通灯的发展史:

19世纪初,在英国中部的约克城,红、绿装分别代表女性的不同身份。其中,着红装的女人表示我已结婚,而着绿装的女人则是未婚者。后来,英国伦敦议会大前经常发生马车轧人的事故,于是人们受到红绿装启发,1868年12月10日,信号灯家族的第一个成员就在伦敦议会大厦的广场上诞生了,由当时英国机械师德?哈设计、制造的灯柱高7米,身上挂着一盏红、绿两色的提灯--煤气交通信号灯,这是城市街道的第一盏信号灯。在灯的脚下,一名手持长杆的警察随心所欲地牵动皮带转换提灯的颜色。后来在信号灯的中心装上煤气灯罩,它的前面有两块红、绿玻璃交替遮挡。不幸的是只面世23天的煤气灯突然爆炸自灭,使一位正在值勤的警察也因此断送了性命。

从此,城市的交通信号灯被取缔了。直到1914年,在美国的克利夫兰市才率先恢复了红绿灯,不过,这时已是“电气信号灯”。稍后又在纽约和芝加哥等城市,相继重新出现了交通信号灯。

随着各种交通工具的发展和交通指挥的需要,第一盏名副其实的三色灯(红、黄、绿三种标志)于1918年诞生。它是三色圆形四面投影器,被安装在纽约市五号街的一座高塔上,由于它的诞生,使城市交通大为改善。

黄色信号灯的发明者是我国的胡汝鼎,他怀着“科学救国”的抱负到美国深造,在大发明家爱迪生为董事长的美国通用电器公司任职员。一天,他站在繁华的十字路口等待绿灯信号,当他看到红灯而正要过去时,一辆转弯的汽车呼地一声擦身而过,吓了他一身冷汗。回到宿舍,他反复琢磨,终于想到在红、绿灯中间再加上一个黄色信号灯,提醒人们注意危险。他的建议立即得到有关方面的肯定。于是红、黄、绿三色信号灯即以一个完整的指挥 1

信号家族,遍及全世界陆、海、空交通领域了。

二. 主体

1.发展智能交通灯系统的意义:

汽车已经逐渐成为了人们日常生活中最主要的交通工具。但是,城市基础设施建设特别是城市交通道路的发展速度却满足不了汽车数量增长的需求,这就使城市交通拥堵现象越来越严重,车辆通行速度成为了城市发展的瓶颈。在加强城市基础建设的同时,改善十字路口的交通信号灯运行模式,提高十字路口的通行效率,对缓解城市交通堵塞有着重要的现实意义。而目前城市的交通灯控制,是根据一定时间段的各车道车流量的调查而分配出的相对合理的同定红绿灯转化周期。但在特定的时间段,会出现某一方向车辆早已通行完,而另一方向车辆排队等绿灯的情况,这严重降低了实际的十字路口交通效率。

针对现实中越来越严重的城市交通拥堵现象,可设计出一种城市十字路口交通信号灯控制的新方法。可根据车流量来智能控制红绿灯的读秒时间,解决了各车道车流量不均衡所造成的十字路口交通资源浪费问题,设计的智能交通控制系统利用对相向车道采用不同步的红绿灯信号控制方法,能够减少交通资源浪费,大幅提高十字路口的车辆通行效率。2.国内外智能交通灯系统的发展现状:

交通信号控制系统是现代城市交通控制和疏导的主要手段。而作为城市交通基本组成部分的平面交叉路口,其通行能力是解决城市交通问题的关键,而交通信号灯又是交叉路口必不可少的交通控制手段。随着计算机技术和自动控制技术的发展,以及交通流理论的不断发展完善,交通运输组织与优化理论、技术的不断提高,国内外逐步形成了一批高水平有实效的城市道路交通控制系统。

(1)澳大利亚SCAT系统:

SCATS采取分层递阶式控制结构。其控制中心备有一台监控计算机和一台管理计算机,通过串行数据通讯线路相连。地区级的计算机自动把各种数据送到管理计算机。监控计算机连续地监视所有路El的信号运行、检测器的工作状况。地区主控制器用于分析路El控制器送来的车流数据,确定控制策略,并对本区域各路口进行实时控制。SCATS系统充分体现了计算机网络技术的突出优点,结构易于更改,控制方案较易变换。SCATS系统明显的不足:第一,系统为一种方案选择系统,限制了配时参数的优化程度;第二,系统过分依赖于计算机硬件,移植能力差:第三,选择控制方案时,无实时信息反馈。

(2)英国SCOOT系统:

SCOOT是由英国道路研究所在TRANSYT系统的基础上采用自适应控制方法于1980年提出的动态交通控制系统。SCOOT的模型与优化原理与TRANSYT相仿,不同的是SCOOT为方案生成的控制系统,是通过安装在交叉口每条进口车道最上游的车辆检测器所采集的车辆信息,进行联机处理,从而形成控制方案,并能连续实时调整周期、绿信比和相位差来适应不同的交通流。SCOOT系统的不足是:相位不能自动增减,任何路E1只能有固定的相序;独立的控制子区的划分不能自动完成,只能人工完成;安装调试困难,对用户的技术要求过高。

(3)国内智能交通控制系统:

国内应用和研究城市交通控制系统的工作起步较晚,20世纪80年代以来,国家一方面进行以改善城市市中心交通为核心的UTSM(urban traffic sys—tem manage)技术研究;另一方面采取引进与开发相结合的方针,建立了一些城市道路交通控制系统。以北京、上海为代表的大城市,交通控制系统主要是简易单点信号机、SCOOT系统、TRANSYT系统和SCATS系统其中几个结合使用;而如湘潭、岳阳等国内中小城市,交通控制系统主要还是使用国产的简易单点信号机和集中协调式信号机。

3.采用基于PLC的智能交通灯控制系统的好处:

(1)特点:

① 能适应各种恶劣的运行环境,抗干扰能力强,可靠性强,远高于其他各种机型; ② 通用性高,使用方便; ③ 程序设计简单,易学,易懂;

④ 采用先进的模块化结构,系统组合灵活方便; ⑤ 系统设计周期短;

⑥ 安装简便,调试方便,维护工作量小;

⑦ 对生产工艺改变的适应性强,可经行柔性生产; ⑧ 体积小,功耗小,性价比高。(2)PLC的应用:

① 开关量的逻辑控制:这是PLC最基本、最广泛的应用领域,它取代传统的继电器电路,实现逻辑控制、顺序控制,既可用于单台设备的控制,也可用于多机群控制及自动化流水线。

② 模拟量控制:在工业生产过程当中,有许多连续变化的量,如温度、压力、流量、液位和速度等都是模拟量。为了是可编程控制器处理模拟量,必须实现模拟量和数字量质之间的A/D转换及D/A转换。PLC厂家都生产配套的A/D和D/A转化模块,使可编程控制器用于模拟量控制。

③ 运动控制:PLC可以用于圆周运动或直线运动的控制。从控制机构配置来说,早起直接用于开关量I/O模块连接位置传感器和执行机构,现在一般使用专用的运动控制模块。如可驱动的步进电机或者伺服电机的单轴或多轴位置控制模块。

④ 过程控制:过程控制是指对温度、压力、流量等模拟量的闭环控制。作为工业控制计算机,PLC能编程控制各种各样的控制算法程序,完成闭环控制。PID调节是一般闭环控制系统中用得较多的调节方法。大中型PLC都有PID模块,目前许多小型PLC也具有此功能模块。PID处理一般是运行专用的PID子程序。

⑤ 通信及联网:PLC通信含PLC间的通信及PLC与其他智能设备间的通行。随着计算机控制的发展,工厂自动化网络发展很快,各PLC厂商都十分重视PLC的通行功能,纷纷推出各自的网络系统。新近生产的PLC都具有通信接口,通信非常方便。

⑥ 数据处理:现代PLC具有数学运算(含矩阵运算、函数运算、逻辑运算)、数据传送、数据转换、排表、查表、位操作等功能,可以完成数据的采集、分析及处理。这些数据可以与存储在存储器中的参考值比较,完成一定的控制操作,也可以利用通信功能传送到别的智能装置,或将它们打印制表。数据处理一般用于大型的控制系统。

三. 总结

采用基于PLC的智能交通灯控制系统,可以根据车流量合理的调节交通信号灯的读秒时间,这样不仅可以有效的防治交通拥堵而且可以合理的利用交通资源,进而大大缓解交通压力。在基于PLC的智能交通灯控制系

统的设计过程中可能牵涉到信号的采集与传输,在考虑到施工的成本以及安装困难度的前提下,本设计主要想采用光电计数器。因为光电计数器叫一般的传感器而言,它不仅成本低而且安装方便。

四. 参考文献

[1] 彭树生.PLC单片机原理及应用.机械工业出版社.2002.1.1 [2] 王晓军.可编程控制器原理及应用.化学工业出版社.2010.9.4 [3] 杜荔编.微机原理及其接口.清华大学出版社.2011.3.1 [4] 曹克澄.单片机原理及应用.第二版.机械工业出版社.2009.1.1 [5] 龚捷.接口技术.化学工业出版社.2009.1.1 [6] 韩九强.传感器与检测技术.清华大学出版社.2010.9.1 [7] 于泉.城市交通信号控制基础.冶金工业出版社.2011.1.1 [8] 周蔚吾.道路交通信号灯控制设置技术手册.知识产权出版社.2009.1.1 [9] 高钦和.可编程控制器应用技术与设计.人民邮电出版社.2004.7.1 [10] 路林吉.PLC应用开发技术与工程实践.人民邮电出版社.2009.4.8 [11] 陈立定.电气控制与可编程控制器.华南理工大学了版社2006.2 [12] 何衍庆.可编程控制器原理及应用技巧.第二版.化学工业出版社.2003.1.1 [13] 廖常初.可编程控制器的编程方法与应用.重庆大学出版社.2001.2.1 [14] 廖常初.PLC梯形图程序的设计方法与技巧.电工技术出版社.2004.9 [15] 廖常初.PLC梯形图的书许控制设计法与顺序功能图.电子技术杂志.2001.第11期

基于FPGA的串口通信设计 篇7

随着计系统和网络的快速发展, 通信发挥的作用越来越重要。在电路设计和制作上越来越多的采用数字化指令, 在一个系统内对外和内部通信越来越多。串行通信作为一种主要的通信方式, 由于所用的传输线少, 因此特别适合于远距离传送, 应用非常广泛。FPGA (现场可编程门阵列) 在数字电路的设计中已经被广泛使用。这种设计方式可以增强系统的可靠性和设计的灵活性。本文详细介绍了已在实际项目中应用的基于FPGA的串口通讯设计。

1 UART模块简介

UART (通用异步收发器) 是广泛使用的串行数据传输协议。专用的UART集成电路已经相当复杂, 在实际应用中一般只需要用到基本功能, 我们可以将所需要的UART功能集成到FPGA内部, 从而简化了整个电路。基本的串口通信只需两条信号线, 在信号线上有2种状态, 高电平 (逻辑1) 和低电平 (逻辑0) 。在发送器空闲时, 数据线保持在高电平状态。发送器通过发送起始位开始一个字符传送, 起始位为逻辑0状态, 表示数据传输开始。数据位一般为8位 (也有6位、7位的情况) , 低位在前, 高位在后。校验位一般用来判断接收的数据位有无错误, 一般是奇偶校验。停止位在最后, 用以标志一个字符传送的结束, 它对应于高电平状态, 这种格式也简称为N, 8, 1。

2 功能设计

基于FPGA的UART按功能划分为3个子模块:时钟控制, 发送模块和接收模块。

2.1 时钟控制

FPGA内部需要有时钟来控制工作, 我们通过分频的方式将系统时钟分频来得到所需的波特率对应的时钟。在FPGA内部可以通过分频器实现。例如FPGA的系统时钟为40MHz, 串口通信的波特率为9600, 由于考虑到接收数据的采样要求, 我们采用16倍波特率时钟9600×16=153600, 40MHz/153600Hz≈260个周期, 使用计数器对40MHz时钟进行分频, 先将输出置为1, 在计数到130时输出低电平并重新计数, 这样就能得到16倍9600波特率同步的时钟。

2.2 发送模块

发送模块的功能是将需要发送的并行数据进行转换, 变为串行数据, 并把串行数据按照既定数据帧格式进行输出, 模块的输入输出信号有:Data[7..0]为需要发送的数据;reset为复位;clk为时钟输入;write为发送控制;busy为发送忙, 表示正在发送数据;tx为串行数据输出。数据的发送由write控制, 主要的VHDL代码如下:

tran:process (clk, reset)

begin

if reset='1'then

busy<='0';

tconter<= (others=>'0') ;

dataconter<= (others=>'0') ;

tdata<= (others=>'0') ;

tx<='1';

elsif (clk='1') and clk'event then

if busy='0'and write='1'then 判断发送控制

busy<='1';

tconter<= (others=>'0') ;

dataconter<= (others=>'0') ;

tdata (7 downto 0) <=data;

tdata (8) <='1';

tx<='0';

elsif busy='1'then

if tconter="000001111"then--使用16倍波特率时钟

if dataconter="1001"then--计数为9时表示数据发送完毕

busy<='0';

tconter<= (others=>'0') ;

dataconter<= (others=>'0') ;

tdata<= (others=>'0') ;

tx<='1';

else

tconter<= (others=>'0') ;

dataconter<=dataconter+1;

tdata (7 downto 0) <=txdata (8 downto 1) ;--数据移位发送

tdata (8) <='0';

tx<=txdata (0) ;

end if;

else

tconter<=tconter+1;

end if;

else

busy<='0';

tconter<= (others=>'0') ;

dataconter<= (others=>'0') ;

tdata<= (others=>'0') ;

tx<='1';

end if;

end if;

end process;

end Behavioral;

2.3 接收模块

接收模块的功能是将收到的串行数据转换成并行数据进行输出。接收模块的工作过程与发送模块类似, 只是顺序相反, 此外还有对起始位的识别。接收模块的信号有:Data[7..0]为接收的数据;reset为复位;clk为时钟输入;rx为串行输入数据;dataready为接收完毕信号。

当输入数据起始位被识别出来后, 模块按照数据格式依次读出各位数据并进行串并转换, 接收完毕后dataready发出信号, 此时data可以被读取。主要VHDL代码与发送模块原理类似, 故省略。

2.4 系统硬件设计

FPGA的输出和输入信号电压并不能直接用于串口通信, 还需要使用串口驱动模块将FPGA输出电平转为串口通信需要的电平。同时根据实际需要可以实现输入与输出采用不同的通信协议。例如Maxim公司的RS232驱动器MAX3232和ADM公司的RS422驱动器ADM3490。这样使得我们在选择串口协议时更加灵活。

3 总结

用FPGA实现串口通信功能, 可以将串口功能与其他系统功能整合进一个FPGA从而减小了系统的面积, 降低了功耗, 具有更高的稳定性, 这种设计方法已经成为当今电子设计领域中的趋势。在实际应用中, 我们将文中设计的UART电路作为一个功能块嵌入到一个FPGA实现的数据采集与处理系统中, 实现了串口通信功能, 证明了该电路设计可靠、工作稳定。

参考文献

[1]任爱峰, 初秀琴.基于FPGA的嵌入式系统设计[M].西安:西安电子科技大学出版社, 2005

[2]吴继华, 王诚.Altera FPGA/CPLD设计[M].北京:人民邮电出版社, 2005

[3]褚振勇.FPGA设计及应用[M].西安:西安电子科技大学出版社.

[4]叶淦华.FPGA嵌入式应用系统开发典型实例[M].北京:中国电力出版社, 2005

基于FPGA的DDR控制器设计 篇8

关键词 DDR SDRAM VerilogHDL FPGA

DDR SDRAM是Double Data Rate Synchronous Dynamic Random Access Memory(双倍速率随机存储器)的简称,它采用2.5V的工作电压,在核心时钟的上升沿和下降沿传输数据,具有比SDR(single data rate) SDRAM多一倍的传输速率的优点。FPGA(Field-Programmable Gate Array)是一种可编程器件,在FPGA上可以实现任意数字电路功能。在电子通讯领域,数据量越来越大,对存储器的需求也越来越大;FPGA具有并行性、可编程等优点,它的应用场合也越来越广,在FPGA板卡上嵌入SDRAM已经应用在很多系统中,因此研究在FPGA平台上来实现DDR读写控制的方法具有重要的实际意义。本文第1、2节介绍基于FPGA的DDR SDRAM控制器的设计过程,第3节主要讲述控制器的调试。FPGA为Altera公司的cycloneIII, DDR为Hynix公司的16Mx16的DDR。

1 DDR SDRAM 的基本操作

本文采用的DDR具有四个BANK(就是被分为四个块);15根地址总线(其中包括2根BANK地址线和13根行列地址线;BANK地址标为BA1~BA0,行列地址线标为A12~A0);16根数据总线(DQ15~DQ0);两根数据捕获探针(DQS,双向信号线);两根写掩码信号(DM1~DM0,可一直设置为0);一对相位相反的主控时钟线(CLK_P,CLK_N);一根时钟使能信号(CKE);四根命令信号线:CS_N(片选信号),RAS_N(行地址使能信号),CAS_N(列地址使能信号)和WE_N(写使能信号)。

1.1 DDR SDRAM的指令

DDR的指令与SDR的指令基本一致,主要由CS_N,RAS_N,CAS_N和WE_N四个信号控制,它们的真值表如表1所示。命令是在主时钟的上升沿捕获。

1.2 DDR常见读写延时参数

CL:CAS latency,列地址有效到读出数据的延时,是在读数据的时候的读命令到数据输出的时间长度,它由厂商确定,主要有2,2.5,3(时钟周期个数)三个数值,可以通过寄存器配置。

tRCD:RAS to CAS latency,行地址(ACT命令)有效到列地址有效的最小延时,芯片属性,不可配置。

tRAS:行有效(ACT命令)到预充电命令的最小时延。

tRP:预充电命令到行有效的最小时延。

1.3 DDR的读写时序

DDR的读写数据是在DQS信号下捕捉的,数据的位数决定了DQS的位数,一位DQS信号负责捕捉八位数据信号。写操作时,DQS在数据信号DQ的中心捕获数据;读操作时,DQS在数据信号的边沿捕获数据[1]。在数据读写之前,需要先进行行有效操作,即ACT命令,然后经过tRCD的时间,执行读或写操作命令。在读操作中,读命令后还要经过CL(CAS latency)时间才开始读取数据。

2 控制器的设计方案

实现DDR的控制,重点需要解决:时钟体系问题,状态转换与指令操作三个方面。本文设计的DDR控制器主要有三个模块,分别是状态转换控制模块,指令译码模块和时钟模块,如图1所示。控制器的用户控制信号有CMD(用户发送的指令)与ADDR(用户地址)、DATAIN(DDR的输入数据)和DATAOUT(DDR的输出数据)。时钟模块提供DDR主时钟和控制器系统内部的数据时钟(CLK_X2)。在使用时,用户首先发送一个CMD到状态转换模块进行状态转换,然后控制器返回一个CMDACK响应用户,在第二个时钟周期将这个命令状态标志输入到指令译码模块进行指令译码,控制指令信号,完成相应的操作。伴随着状态的转换,相应的地址信号也锁存进DDR。

REF_CLK与RESET_N是系统时钟和全局复位信号,除了这两个信号与前述的用户控制信号外,图1中剩下的接口信号就是DDR的接口信号了。

2.1 时钟设计

根据DDR的时序要求,本文一共采用了三个时钟,分别是DDR的一对反相时钟(DDR_CLK_P,DDR_CLK_N)和数据控制时钟(CLK_X2,由时钟模块产生)。根据DDR的要求,指令信号要在DDR_CLK_P的上升沿采样,所以采用其反相时钟信号DDR_CLK_N来同步命令逻辑,使DDR_CLK_P的上升沿恰好在命令的中心。根据DDR读写数据的要求,采用了一个DDR系统时钟频率两倍的数据时钟,用来处理读写数据。

DQS是双向信号,在读数据时由DDR本身产生,在写数据时需要控制器来产生。因为在DDR中DQS与其系统时钟保持一致,只不过是有个偏差范围,所以采用DDR_CLK_P的开关时钟作为DQS信号,写操作中产生DQS信号(数据位宽为16, DQS位宽则为2)的Verilog代码:

assign DQS = oe ? ({2{DDR_CLK}}) : 2'bzz; //oe是写使能信号

如图2,DQ是在CLK_X2时钟下产生的,正好在DQS的边沿锁存。在读数据时DQ与DQS是边沿对齐,如图3,数据时钟(CLK_X2)的上升沿正好在数据的中心。综合读写操作,发现图2、图3中的CLK_X2和DDR_CLK_P及DDR_CLK_N的相位关系正好满足DDR的读写时序,时序余量比较大,所以采用这种时钟系统数据的读写稳定性就比较高了。

2.2 DDR的状态控制

DDR的控制器主要有读、写、预充电、刷新、配置模式寄存器等操作。图4是各种操作的状态转化图,是指指令之间转换的可能操作。DDR在工作时主要分为两个阶段:上电初始化和读写过程。初始化很重要,主要完成时钟稳定与寄存器配置的过程,它是一些指令的顺序执行过程。本文采用的DDR是Hynix公司的产品,其初始化配置过程如下[1]:

1.上电,开启时钟,并且稳定最小200μs的时间;

2.时钟稳定后,执行空指令,并且CKE=1;

3.配置扩展模式寄存器(EMRS)来使能DLL(Delay Locked Loop,延时锁定环),等待200个周期后进行下一步操作;

4.配置模式寄存器(MRS)来重启DLL,将芯片设置到等待状态(设置A8=1来重启DLL);

5.对所有BANK进行预充电;

6.执行两次或更多自刷新命令;

7.执行一次模式寄存器配置命令,来初始化模式寄存器,设置读写操作的参数;

8.等待200个周期后,初始化完成。

其中第3,4步操作中的等待200个周期可以在第4步后等待,即需要200个周期来锁定DLL。寄存器配置等操作是通过地址线来配置参数的,即通过设置BANK地址(BA1~BA0)和行列地址(A12~A0)设置参数。第3步配置EMRS中,设置A12~A0各位为0,第4步配置MRS时,要设置A8=1,其他为0。第7步,在配置读写参数时, A2~A0决定突发长度,A3决定突发类型,A6~A4决定CAS延时,A7是测试模式,A8指示是否DLL重启,另外BA0决定配置哪个模式寄存器[1]。

不同厂家的DDR初始化过程不尽相同,其寄存器配置的参数可能也不同,为了提高控制器的通用性,可以在控制器外来配置初始化操作。

然后就是读写过程,因为DDR的地址线是有限的,读写的时候是采用时分复用技术来实现完全的寻址过程的。DDR的地址线有15根,其中2根是BANK地址(BA1~BA0),剩下的是行列地址(13根,A12~A0),其中行地址为A12~A0,列地址为A8~A0,行地址与列地址分时复用,这样等效寻址线就是24根(2+13+9),寻址空间正好是16M。在初始化完成以后就可以进行读写了,按照DDR的时序要求,先进行行锁定(ACT命令),然后经过tRCD的时间,再执行读/写操作,同时锁定列地址。图5、图6分别是在modelsim仿真中的读、写时序图,突发长度为8(一次读/写8个数据),CL为3,tRCD时间大约为3个时钟周期;在ACT命令周期(CS_N=0,RAS_N=0,CAS_N=1,WE_N=1),锁定行地址,也即将图中的SA=0000H赋给A12~A0地址线;经过tRCD时间执行读/写命令,注意在读写命令时,列地址SA=0425H,实际上此时的列地址是0025H,只不过此时读写方式是带预充电的读写方式(A10=1,加上A8~A0=0025H,所以整个SA=0425H)。在图5中,写命令后开始写数据,DQ中心恰好在DQS的边沿;在图6中,读命令后需要经过CL时间才开始读数据,DQ与DQS对齐,符合DDR的时序要求。对比图5和图6,发现同一个地址写入数据与读出数据相同,表明设计的时序正确性。

2.3 DDR的读写效率

DDR需要定时刷新指令与预充电指令,所以合理地处理这两个指令可以有效地提高读写的效率。刷新是周期性操作,预充电是在地址换行的时候需要执行的操作,所以提高效率的主要方法就是合理的安排预充电命令。读写操作有两种方式:一种是带预充电的读写,一种是普通的读写。在采用普通读写时需要在地址换行的时候用预充电命令来重新进行行使能。两种读写方式在指令上的区别就是:带预充电的读写命令在ACT命令(此时,地址输入为DDR的行地址)时,将A10置高;而普通读写不需要将A10置高。

DDR的数据突发模式只有2、4、8三种,每读写一次数据都要进行ACT到READ/WRITE的过程,这样耗费了很多控制周期,效率不高。DDR的读写有一个特性,就是读写中断:一个读或者写操作可以被另一个读或者写操作中断,在一组连续的读(写)操作中,可以只在开头执行一次ACT命令,后面的读(写)命令可以不用ACT命令。针对这个特点,本文采用了突发为2的DDR读写方式,每两个数据都要进行一次读(写)地址和指令控制,只要在第一组数据时执行一个ACT命令,后面的过程都是普通读或者写命令,它可以实现任意偶数个数据的读写。例如视频领域经常对一帧图像数据进行处理(如去隔行处理[2]),存储的时候也是连续地址存储,存储器就可以连续的处理大批量的数据,时钟效率是比较高的。

当然这种方案是在一个行地址中进行数据读写的有效方法,当数据地址随机且经常跨越一行地址时就需要执行预充电命令。如果还是采用普通读写方式的话,下一个读(写)地址随机,这样需要经常在行地址变化时执行预充电命令,就会导致读写的效率下降。例如在视频编码中,预测编码是去冗余的最有效方法,预测就需要图像帧区域搜索[3],这时在存储器中表现为数据地址的随机性。这种情况下可以采用带预充电的读写命令,这样每个指令中都会进行预充电,就不必担心在地址换行的时候发生错误了。但是,每个指令之间必须有一定的间隔(突发长度/2+tRP),例如采用突发为8的读写时,每个指令之间的间隔就要最少有4+tRP个周期,所以设置突发模式为8的时候效率比较高。

4 硬件调试

在硬件调试前,软件仿真是非常重要的,一般在仿真中时序吻合的情况下是可以实现既定功能要求的,在FPGA设计尤其是高速设计中,调试前的时序分析与时序收敛至关重要,只有满足了时序收敛,设计才具有稳定性。本文代码综合阶段,采用了FPGA常用方法提高了设计的速度,比如增加流水线级数与消除亚稳态的方式[4] ,使CLK_X2达到333M,DDR时钟167M,还有时序余量,满足时序要求。

ALTERA提供一个集成于QUARTUSII软件中的FPGA片上debug工具:SignaltapII,它可以捕获和显示实时信号,观察在系统设计中的硬件和软件之间的互相作用。它的原理就是设定采样周期,实时采样数据并存储到PFGA内RAM中,然后通过JTAG接口传送到QUARTUSII来显示[5]。正是因为SignaltapII的实时性,在调试时需要注意读写验证的方法。初始化的配置过程很难观察到,只能验证后面的读写过程。因为RAM的容量有限,一次捕捉到的数据也是有限的,在板级调试时,需要以循环的方式进行读写数据指令的执行,以便在逻辑分析仪中捕捉到数据。本文采用先将数据写入一段地址中,然后在相同的地址中读出来,并且比较相同地址写入数据与读出数据是否相同的方法来验证DDR控制器是否正常工作。为了保证读写的可靠性,循环的方式采用遍历所有地址范围的方法,观察结果发现写入与读出的数据是完全吻合的。

5 结束语

本文通过对DDR时序的分析,给出了一种DDR控制器的设计方案。并且针对不同的寻址方式,给出了不同的读写方法,提高了读写效率。最终,控制器在ALTERA公司的cycloneIII系列芯片上实现,在板卡上能够控制Hynix公司的DDR芯片稳定地读写数据。存储器工作频率达到167M,数据稳定可靠,读写效率较高。

参 考 文 献

[1] hynix 16Mx16 DDR handbook[Z] Hynix Semiconductor Inc.

[2] 余兆明,査日勇,黄磊,周海骄. 图像编码标准H.264技术. 北京:人民邮电出版社,2005

[3] 毕厚杰. 新一代视频压缩编码标准——H.264/AVC. 北京:人民邮电出版社,2005

[4] (美)Steve Kilts著. 高级FPGA设计结构、实现和优化. 孟宪元译. 北京:机械工业出版社,2009

[5] Quartus II Handbook Version 9.1 [Z] San Jose,Altera Corporation

Controller Design of DDR Based on FPGA

Wang Weiping,Zhang Zhengbing

(Electronic & Information College,Yangtze University,Jingzhou 434023,China)

Abstract Base on analysing of the basic operating characteristics of DDR SDRAM,and the DDR timing requirements,this article propose a controller based on VerilogHDL language implementations.And gives a different read and write programs to improve the efficiency of the clock in different application environment.The RTL of controller logic is implemented on FPGA board,simulated in the modelsim and hardware verification take use of the logic analyzer (signaltapII) in quartusII,to ensure that the memory’s read and write are efficiency and reliability.

上一篇:战略管理复习题下一篇:那不一样的美丽作文800字