您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > VHDL交通灯信号控制器的设计
交通灯信号控制器的设计1.实验目的(1)熟悉MAX+plusⅡ软件的基本使用方法。(2)熟悉GW48—CKEDA实验开发系统的基本使用发放。(3)学习VHDL基本逻辑电路和状态机电路的综合设计应用。2.实验内容设计并调试好一个十字交叉路口的交通灯控制器,具体要求如下:(1)东西、南北方向有红、黄、绿指示灯,两个显示数码管。(2)当南北方向允许通行亮绿灯时,东西方向亮红灯,而东西方向允许通行亮绿灯时,南北方向亮红灯。(3)工作顺序为东西方向红灯亮45秒,前40秒南北方向绿灯亮,后5秒黄灯亮。然后南北方向红灯亮45秒,前40秒东西方向绿灯亮,后5秒黄灯亮。整个设计包括计时信号发生器、交通灯控制器以及译码显示电路的设计。用GW48—CKEDA实验开发系统进行硬件验证。3.实验条件(1)开发软件:MAX+plusⅡ。(2)实验设备:GW48—CKEDA实验开发系统。(3)拟用芯片:EPF10K10-OLCC84。4.实验设计(1)系统的原理框图(2)VHDL源程序LIBRARYieee;USEieee.std_logic_1164.ALL;USEieee.std_logic_unsigned.ALL;ENTITYnclightISPort(clk:instd_logic;--xsh1:outstd_logic_vector(5downto0);--xsh2:outstd_logic_vector(5downto0);ra,rb,ya,yb,ga,gb:outstd_logic);ENDnclight;Architectureaofnclightistypestateis(S0,S1,S2,S3);signalpresentstate,nextstate:state;--signaltmp40:integerrange0to40:=0;--signaltmp5:integerrange0to5:=0;signaltmp40:std_logic_vector(5downto0):=101000;signaltmp5:std_logic_vector(2downto0):=101;signaltimeout40,timeout5:std_logic;signalrst40,rst5:std_logic:='0';signalen40,en5:std_logic:='0';signalq:std_logic_vector(1downto0);signalsec:std_logic;Begin----get1hzclockpulsehz1:process(clk)beginifclk'eventandclk='1'thenq=q+1;endif;sec=q(1);--get1hzclockpulseendprocess;---reg:process(sec)beginifsec'eventandsec='1'thenpresentstate=nextstate;endif;endprocessreg;---------------------------changestate:process(presentstate)BegincasepresentstateiswhenS0=ra='0';ya='0';ga='1';rb='1';yb='0';gb='0';whenS1=ra='0';ya='1';ga='0';rb='1';yb='0';gb='0';whenS2=ra='1';ya='0';ga='0';rb='0';yb='0';gb='1';whenS3=ra='1';ya='0';ga='0';rb='0';yb='1';gb='0';whenothers=ra='1';ya='0';ga='0';rb='1';yb='0';gb='0';endcase;endprocess;--------------------------timing:process(presentstate,timeout40,timeout5)begincasepresentstateiswhenS0=rst40='0';en40='1';rst5='1';en5='0';iftimeout40='1'thennextstate=s1;elsenextstate=s0;endif;whenS1=rst5='0';en5='1';rst40='1';en40='0';iftimeout5='1'thennextstate=s2;elsenextstate=s1;endif;whenS2=rst40='0';en40='1';rst5='1';en5='0';iftimeout40='1'thennextstate=s3;elsenextstate=s2;endif;whenS3=rst5='0';en5='1';rst40='1';en40='0';iftimeout5='1'thennextstate=s0;elsenextstate=s3;endif;whenothers=nextstate=s0;rst40='0';en40='0';rst5='0';en5='0';endcase;endprocess;-----------------------cnt40:process(sec,rst40,en40)beginifrst40='1'thentmp40=101000;elsifsec'eventandsec='1'thenifen40='1'theniftmp40=000001thentmp40=101000;elsetmp40=tmp40-1;endif;--endif;endif;iftmp40=000001thentimeout40='1';elsetimeout40='0';endif;endprocess;------------------------cnt5:process(sec,rst5,en5)beginifrst5='1'thentmp5=101;elsifsec'eventandsec='1'thenifen5='1'theniftmp5=001thentmp5=101;elsetmp5=tmp5-1;endif;--endif;endif;iftmp5=001thentimeout5='1';elsetimeout5='0';endif;--endprocess;---------------enda;(3)管脚锁定文件设计实体I/O标识插座序号芯片可用资源序号芯片管脚序号RAPIO8I/O817YAPIO9I/O916GAPIO10I/O1019RBPIO11I/O1121TBPIO12I/O1222GBPIO13I/O1323TMP40(6TO4)PIO22-20I/O22-2037,36,35TMP40(3TO0)PIO19-16I/O19-1630,29,28,27TMP5(2TO0)PIO46-44I/O46-4478,73,72备注验证设备:GW48—CK;实验模式:NO.5实验芯片:EPF10K10-OLCC84;5.实验结果及总结(1)系统仿真情况从系统仿真结果(本仿真结果可通过同时按下“ALT+PrtSc”键抓取当前屏幕信息放入剪贴板中,再在WORD文档中通过粘贴的方法获得)可以看出,本系统完全符合设计要求。(2)硬件测试情况接好后,计时开始,RA亮时YB,GB先后亮,然后RB亮时,YA,GA先后亮;绿灯,黄灯亮的同时,数显器计数情况为40,39,38……40;5,4,3,2,1,5……。从实验结论可以看出,本系统满足设计要求。(3)实验体会总结这次一整天的EDA课程设计,可以说是苦多于甜,但是不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。在程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示:在设定输入的时钟信号后,计时开始,但是始终看不到红黄绿灯的变化。后来,在几次的调试之后,才发现是因为输入的时钟信号对于器件的延迟时间来说太短了。经过屡次调试,终于找到了比较合适的输入数值:Endtime的值需要设置的长一点:1000us左右,这样就可以观察到完整的仿真结果。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,最后在老师的辛勤的指导下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的。最后,对给过我帮助的同学和老师再次表示忠心的感谢!
本文标题:VHDL交通灯信号控制器的设计
链接地址:https://www.777doc.com/doc-2854714 .html