




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖南大学电气与信息工程学院本科生课程设计题目:交通信号灯控制器设计课程:数字电子技术课程设计专业:电气工程及其自动化班级:电自1104学号:姓名:指导 老师:苏娟、何洪英、周冰航、曾文海设计时间:2014.4-5月数电课程设计by ZY目录1课题概述21.1设计任务及要求21.2设计方案32系统模块划分和源程序42.1分频模块42.2 交通灯控制模块 52.3 BCD码转换模块72.4接口模块102.5 LCD显示模块142.6其他模块153逻辑原理图及仿真163.1 逻辑原理图163.2波形仿真164实验板下载及运行结果204.1 约束文件204.2可下载的原理图204.3运行效果图及说明
2、215 心得体会226 答辩老师提问237 参考文献241. 课题概述1.1设计任务及要求1. 运用电子技术基础数字部分所学内容,使用Altium designer进行设计,使用vhdl编写模块,制作原理图进行仿真,并通过老师提供的接口模块下载到Nano board开发板上运行;2. 由主干道A和支干道的汇合点形成十字交叉路口 ,在交叉路口的每个入口处设置有红、 绿、黄三色信号灯。红灯亮禁止通行;绿灯亮允许通行,黄灯亮则使行驶到路口的车辆有时间 行驶到禁止线之外;3. 用红、绿、黄三色发光二极管作信号灯,主干道A为东西向,设红、绿、黄三色灯为AR、 AG、AY; 支干道B为南北向,设红、绿、黄
3、三色灯为 BR、BG、BY;4. 主干道车辆较多,所以亮绿灯的时间设为50秒,支干道亮绿灯的时间设为 30秒。当主干道允许通行亮绿灯时则支干道亮红灯;相反,支干道允许通行亮绿灯时则主干道亮红灯。每次由绿灯转变为红灯时,其间要亮5秒的黄灯作为过渡,以便行驶的车辆有时间行驶到禁止线 外;5. 交通灯正常运行时,用LCD显示屏显示主干道和支干道的倒计时时间,交通灯状态。即在LCD上按格式显示交通灯的2个2位BCD码,红绿黄灯。输入:EW7.O、SN7.O为东西、 南北向的2个2位BCD码,EWRYG2.O、SNRYG2.O东西南北的红绿灯信号,顺序为红黄绿;6. 具有一定的扩展功能,它能实现特殊状态
4、的功能显示,用开关S作为特殊信号传感器,S为1时进入特殊状态并实现下列特殊状态功能:(1) 显示器数字部分闪烁,即在全 0和当前计时时间中交替显示;(2) 计数器停止计数并保持原来的时间数据;(3) 东西,南北方向的三色灯全显红色状态;(4) 特殊状态解除后能继续返回正常工作状态。LCD显示屏显示格式如下:EWSNR35G2501234561S9ABCDEF1.2设计方案状态图如下:真值表如下,时间在0-90S循环:时间(S)EWSNRYGRYG0-5000110051-5501010056-8510000186-90100010总体方案:所要设计的红绿灯 EW SN方向各有红、黄、绿三种灯,
5、两路口时间不相同,红灯直接切 换为绿灯,绿灯则需要先亮5秒黄灯再变为红灯。根据设计要求,除了需要正确的点亮灯以外, 还需要将计时的数转换为8421码送入LCD显示屏显示为数字,另外由于需要红绿灯有保持显 示和闪烁功能。综上,本人决定把控制器分为以下几个模块:分频器、交通灯控制模块、BCD转换模块。其中闪烁功能本人决定通过控制器的一个特定输出控制一个一分频(即为分频)的分频器的使能端来控制闪烁。2. 模块划分和源程序2.1分频模块本次设计输入的脉冲为10MHz而红绿灯控制器的计数要求一秒变换一次,即需要得到1Hz的脉冲。因此经计算需要分频5000000次。模块如下,其中10MHz脉冲从clkin
6、输入,分频后 输出为clkout。U dMderldhiderl ATid clkiiiclkout I )VHDLENTITY: dndderl源代码如下:library ieee ;use ieee . std_logic_1164 en tity divider1 is port clkout:end divider1;architecture(clki n:inoutstd_logicstdo gic);-时钟信号输入-时钟信号输出arcdivider1of dividedissig nalsig nal begin process beginif risin g_edge(clk i
7、n)if (data=5000000) then data=0;Q= not Q;elsein tegerrangeQ: std_logic :=0;data:(clki n)0 to 5000000;the n-想要的分频比data=data+1; end if ;end if ; clkout=Q; end process ;end arcdivider1;另外由于需要实现闪烁功能,因此通过控制器的一个特定输出控制一个一分频 (即为分频) 的分频器的使能端来控制闪烁。其中输入为分频后的 1Hz脉冲,en为使能信号,由灯控制器 的flash输出口输入en (后面会详细说明),若en为1,输出
8、为1Hz脉冲。U clklCLKlATid31VHDLENTITY: clkl源代码如下:library ieee ;.all ;std_logic ;-时钟信号输入std_logic );-时钟信号输出en tityclk1isport(clk in ,e n:inclkout:outuse ieee . std_logic_1164 end clkl;architecture arcclk1 of clk1 issignal Q: std_logic:=O:beginprocess (clk in)beginifrisin g_edge(clk in)the nif en=0thenQ=0
9、:elseQ= not Q;end if ;end if ;clkout=Q;end process ;end arcclk1;2.2交通灯控制模块本次设计的核心模块,控制器的作用是通过一个变量在 0-90间进行循环计数,在clock 输入的脉冲作用下,每一个上升沿计数值加 1,同时numa7.O ,numb7.O分别输出东西、 南北向的倒计时值。当计数为不同的区间时,EWRYG2.O, SNRYG2.O输出红绿灯代表的数字。若reset为1,红绿灯重新开始计数,即从东西向为绿灯,南北向为红灯开始。若hold为 1,输出 numa7.O,numb7.O保持不变,EWRYG2.O, SNRYG2
10、.O输出为 4 (红灯) flash为1,通过一个分频器的使能让 BCD专换模块在0和当前数值之间变化,从而达到闪烁 的效果。U controDercontroller. VTidclockEWRYG2.SNRYG2+.O nuina7.O numb70flash |;VHDLENTITY: controller源代码如下:library ieee ;use ieee . std_logic_1164 use ieee . std_logic_unsigned en titycon trollerisport ( clock,reset,hold:flash:out.all ;.allin s
11、td_logicnuma,nu mb:EWRYG,SNRYG :std_logic ;out STD_LOGIC_VECTOR (7STD LOGIC VECTORoutDOWNTC0); (2 DOWNTO0);end controller; architecturearcc on trollerof controllerissig nalcountnum:in tegerbegin process (clock) begin if reset=1range 0 to 90:=0;the ncountnum=0;elsif risin g_edgeif hold=1(clock)the nt
12、he nflash=1;elseflash=0;if countnum=89the ncountnum=0; elsecountnum =co untnu m+1; end if ;end if ;end if ;end process ;process (clock)beginif risin g_edge(clock)the nif hold=1the nEWRYG=100;SNRYG=100;elseif countnum =49the n-49nu ma=00110010-cou ntn um;EWRYG=001;elsifcountnum =54the n-54numa=001101
13、11-cou ntnum;EWRYG=010;elsenuma=01011010-cou ntnum;EWRYG=100;end if ;if countnum =54the n-54numb=00110111-cou ntnum;SNRYG=100;elsifcountnum =84the n-84nu mb=01010101-cou ntn um;SNRYG=001;elsenumb=01011010-cou ntnum;SNRYG=010;end if ;end if ;end if ;end process ;end arccontroller;2.3 BCD码转换模块需要将控制器输出
14、的numa7.O ,numb7.O转换为8421码送入LCD显示屏显示为数字,由于vhdl语言的功能和实验所用板的限制,本人目前未找到用算式可以正确、及时转化BCD码并能成功下载到板子的源程序,只能运用case语句穷举。输入为七位二进制,输出为转换好的BCD码,reset为1时,输出为0。U_tobcd TOBCDATidXTIDLENTITY: tobcd源代码如下:library ieeeuse ieee . std_logic_1164.alluse ieee . std_logic_unsigned. allentity TOBCD isport (D: in STD_LOGIC_VE
15、CTOR (7 DOWNTC0);reset:in std_logic ;SEG:out STD_LOGIC_VECTOR (7 DOWNTO0);end TOBCD;architectureARCTOBCD of TOBCD isbeginprocess (reset,D)beginif reset=1the nSEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SE
16、G SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG SEG EW7.,0二 EWRYG20 n R=SN7.,0二 SNRYG2.OVHDLENTITY: jtdlcd源代码如下:-File name JTDLCD -目的:在LCD上按格式显示交通灯的2个2位BCD码,红绿黄灯-编程 周冰航2008年11月-输入:EW7.0、SN7.0东西、南北向的2个2位BCD码-EWRYG2.0、SNRYG2.0东西南北的红绿灯信号,顺序为红黄绿-CPIN 时钟脉冲输入 按10MHz设计
17、;复位R-注意:每个总线形式的输入均为LOGIC_VECTOR形式,因此,相应电路的输出要定义为LOGIC -VECTOR 形式,整型形式不能使用。LIBRARY IEEE ;USE IEEE . STD_LOGIC_1164 . ALL;USE IEEE . STD_LOGIC_UNSIGNED . ALL ;en tity JTDLCD isport (CPINRBUSY :IN STD_LOGIC ;EW,SN :IN STD_LOGIC_VECTOR (7 DOWNTO0);EWRYG,SNRYG :IN STD_LOGIC_VECTOR (2 DOWNTO0);CLK,RST,STR
18、OBE,OUTLINE :OUT STD_LOGIC ;DATA :OUT STD_LOGIC_VECTOR (7 DOWNTO0);ADDR :);OUT STD_LOGIC_VECTOR (3 DOWNTO0)end en tityarchitectureJGT of JTDLCD isTYPE STATES IS (S0,S1,S2,S3,S4);SIGNAL S: STATES;SIGNAL LCDPT :INTEGER RANGE 0 TO 10;SIGNAL CPCT :INTEGER RANGE0 TO 65535;SIGNAL CP: STD_LOGIC ;SIGNAL ASC
19、EW,ASCSN :STD_LOGIC_VECTOR (7 DOWNTO0);beginPROCESS(CPIN,R) BEGINCLK=CPIN;IF R=1 THENCPCT=65535;ELSIF CPIN=1 AND CPIN EVENT THENIF CPCT=0 THENCPCT=65535;CP=NOT CP;ELSECPCTS2-:Y:转 S3-;N; NULL-S2: 给出STROBE信号。转S1-S1,S2 完成初始化固定显示的功能PROCESS(CP,R)BEGINIF R=1 THENS=S0;LCDPT=0;RST S=S1;LCDPT=0;RST RST=0;STR
20、OBE=0:IF BUSY=O THENLCDPT=LCDPT+1;IF LCDPT=5 THENS=S3;ELSES S=S1;STR0BE STROBE=0:IF BUSY=0 THENIF LCDPT=10 THENLCDPT=5;ELSELCDPT=LCDPT+1;END IF ;S STROBE=1;S NULL;END CASE;END IF ;END PROCESS;-选择输出进程(LCDPT)-LCDPT=0,NULL-=14显示 EW SN E 45H,5 W57H,6 S53H,9 N4EH,10PROCESS(LCDPT)BEGINCASE LCDPT ISWHEN0 =
21、 NULL;WHEN1= DATA=01000101;ADDR=0101;OUTLINE DATA=01010111;ADDR=0110;OUTLINE DATA=01010011;ADDR=1001;OUTLINE DATA=01001110;ADDR=1010;OUTLINEDATA=0011&EW(7DOWNTC4);ADDR=0101;OUTLINEDATA=0011&EW(3DOWNTC0);ADDR=0110;OUTLINEDATA=ASCEW;ADDR=0100;OUTLINEDATA=0011&SN(7DOWNTC4);ADDR=1001;OUTLINEDATA=0011&SN
22、(3DOWNTC0);ADDR=1010;OUTLINEDATA=ASCSN;ADDR=1000;OUTLINE NULL;END CASE;END PROCESS;PROCESS(EWRYG)BEGINCASE EWRYG ISWHEN100 = ASCEW ASCEW ASCEW NULL;END CASE;END PROCESS;PROCESS(SNRYG)BEGINCASE SNRYG ISWHEN100 = ASCSN ASCSN ASCSN NULL;END CASE;END PROCESS;end architecture JGT;2.5 LCD显示模块显示模块在FPGA Na
23、noBoard Port-Plugi n.l ntLib库中,作用是接受前面用户自己的逻辑单 元送来的ASCII码数据和控制信号,然后与外部的 LCD显示器通讯,显示相应字符。数据总 线使用输入输出分离模式,IP核后面需要增加双向BUF控制单元(U8)。LCD控制器端口说 明如下:用户控制逻辑接口:CLK :控制器工作时钟,上升沿有效RST:复位信号,高电平有效DATA7.O : ASCII 码数据总线ADDR3.O:字符在LCD屏幕上的地址(共两行,每行16个字符)LINE : LCD屏幕上的行选择信号BUSY:控制器忙信号STROBE:数据输入有效使能LCD显示器接口:LCD_E: LCD
24、显示器使能LCD_RW: LCD读写方向控制9LCD_RS: LCD命令,数据选择LCD_DATA_TRI : LCD数据高阻态控制LCD_DATAO : LCD数据输出总线LCD_DATAI : LCD数据输入总线实际上用户只需关心用户控制逻辑接口的控制操作,至于LCD显示器接口,是由该IP核自动控制的,用户不许干涉。控制器工作原理如下:A控制器复位当RST信号有效时(高电平),控制器进入LCD复位与初始化操作,此时,BUSY信号 持续高电平,表示控制器忙,LCD不能进行用户请求的操作。RST信号由高变低后的大约80us之后,LCD控制器初始化完成,可以响应用户的操作请 求,此时,BUSY信
25、号变低。LCD处于显示模式。B字符显示上电后的LCD必须初始化一次,之后LCD控制器停留于“ WAIT FOR DATA ”状态。在 用户向LCD控制器申请字符显示操作时,ADDR、DATA、LINE信号必须保持稳定,同时使 用STROBE信号触发显示操作。具体步骤如下:表示字符显示位置的4bit地址信号加载到ADDR信号线上;表示字符显示行号的1bit选择信号加载到LINE信号线上;字符ASCII编码加载到DATA总线上并保持稳定;用户送入STROBE的有效电平,LCD控制器进入与LCD显示器通讯的过程,显示相应地 址和行位置的ASCII码对应字符,同时BUSY信号变为高电平,表示控制器忙。
26、此时,用户需要等待寸。一定时间后,LCD字符显示稳定,BUSY信号变为低电平,等待用户下一次操作申请。如此循环U2CLKRST CLKRSTDATA?.J|ADDRILINErDATA7.OADDR3.OLINEBUSY STROBELCD_ELCD_Rfl-PLCD1.RSLCD_DATA_TR1Lt D_DATA07.OljCD_nATAI7.OLCDliXlALIGI1J.11E1=LCD R.WLCD_L1GHT LCD Eita:. LCD_DB7.D)G21ey 1 PEE占F21,G22,G21 ;G 1 &.K20;K22JC211222.6其他模块其他模块包括拨盘开关和脉冲输
27、入CLKAll3. 逻辑原理图及仿真3.1逻辑原理图逻辑原理图为了通过仿真验证自己所编模块是否正确,这里未验证resetU caairlxT灯IDLEETY: tabcd3.2波形仿真1. 从原理图创建VHDL程序。电路图画好后保存,选择:DesignNetlist For Doucoument VHDL File,然后在弹出的对话框中,钩选“ Gen erate mutiple VHDL files ”和“转换参数为属 性”两项。产生的VHDL文件保存在系统自动建立的项目中子文件夹“ Gen erated中。2. 创建VHDL测试平台。将上述创建的VHDL文件打开,使其处于当前窗口,选择:D
28、esign Create VHDL Testbench系统自动创建一个VHDTST类型的测试平台文件。3. 在 vhdtst文件中写入如下(改写 process之中的内容,用 5ns脉冲):-VHDL Testbe nch for fpga_project1-2014 5 13 21 32 53-Created by EditVHDL-Copyright (c) 2002 Altium LimitedLibraryIEEE ;UseIEEE . std_logic_1164.all ;UseIEEE . stdogic_textio.allUseSTD. textio . all ;en ti
29、ty Testfpga_project1isend Testfpga_project1;architecture stimulus of Testfpga_project1isfile RESULTS: TEXT openWRITE._MODEis results.txtprocedureWRITE_RESULTS(CLK:std_logic;EWRYG:std_logic_vector(2dow nto0);HOLD:std_logic;SEGA:stdo gic_vector(7dow nto0);SEGB:stdo gic_vector(7dow nto0);SNRYG:isstd_lo
30、gic_vector(2dow nto0)variablel_out :line ;beginwrite(l_out,now,right ,15);write(l_out, CLK,right ,2);write(l_out, EWRYG,right,4);write(l_out, HOLD,right,2);write(l_out, SEGA,right,9);write(l_out, SEGB,right,9);write(l_out, SNRYG,right,4);writeline (RESULTS, l_out); end procedure ;comp onent fpga_pro
31、ject1port (CLK:instdo gic;EWRYG:out std_logic_vectorHOLD:in std_logic ;SEGA:out std_logic_vectorSEGB:out std_logic_vectorSNRYG:out std_logic_vector(2 dow nto 0);(7 dow nto 0);(7 dow nto 0);(2 dow nto 0);end comp onentsig nalEWRYG:std_logic_vector(2dow nto0);sig nalHOLD:std_logic;sig nalSEGA:stdo gic
32、_vector(7dow nto0);sig nalSEGB:stdo gic_vector(7dow nto0);sig nalCLK: std_logicsig nalSNRYG: stdo gic_vector(2 dow nto 0);beginDUT:fpga_project1port map (CLK = CLK,EWRYG = EWRYG,HOLD = HOLD,SEGA = SEGA,SEGB = SEGB,SNRYG = SNRYG);STIMULUS0:processbegin-in sert stimulus herehold = 0;waitfor 150 ns;hol
33、d = 1;waitfor 50 ns ;hold = 0;wait ;end process ;CLK2:processbeginCLK = 0;waitfor 5 ns ;CLK 222Q43凹 sese413 X2 XSl JffiO 浙 9 X4 Xi7 X4S X4-5 .x.4-4 X13 X42 抽 1h xdo joojm烁 xjs畑4HOLD1ri&OLK1TTTJ-LJ-LTTTTJ-LrLrLrLrLrLrLTTTTTTTT-nLnLnLnLnLTTJ-LnLrLr0 EWFTO11国 SEGA142田 SNRY54 3SEGEI13皿旳烦滋 Z2E XT X25 沁畑
34、X22 X21 湖乂1B 紂;乂怖幻 劝4 幻3 幻2 幼1 X1Q 畑畑畑诫HOLD0BCLK1-TTTTTTTTTTTTTJ-LTTTTTTTTTT_rT_n_n_rT_rT_rT_rL_rT_rT_rT_rL_rL_rT_rQ EWHYG04Z)1B SEGA24MnrSS删瀚 x3x3t idb 廳曲册涵 x2fe 魁也 x2i力i x?b浙厂VI& xl7 xlt X15 刑13 浓 Xil、2B SNRW1Z3Z4B SBjBHOLDn Q5ixsa)grgBgr5rg5x?r)gr)grjogaxirxirxiK7rxirxirxi3xiFxrixiToa5xiirXFrx)5a
35、KlaJ-LTLrLTTTTTTTTTTTTTLnLJLJ-LrTTTTTTTTm-rLrLnLnLrLrLrLJr0宙 EWRY1G1:1国 SBGA47mnjgro厂xw 飆Fas 紳飞聘 xExbo 沟9 畑 畑 畑 45 ; 超耳试垃 xq 熬0 述9 汨a xr 烁 X35 或2田 SNRYG4X3X3-3田 SEGB2D5 XDJ MQJ M2 刈一 X&5 XCj XD3 XD2 XD1 X55 S4XB2 X51X50 X帖 X4E X47KiS XaJ 也 3 谢2 XJ1 XdO X34 JHOLD0f|CLK1_TTTTTTTTTTTTTTTJ_LJ_LTTTTJ_LJ_
36、LJ_LJ_LJ_Ln_TT_n_n_rT_rT_n_n_rLr4. 实验板下载及运亍结果4.1约束文件在下载时选择 NB1_6_XC3S1000-FG456.Constrain。4.2可下载的原理图丄 II JI IL JL JI 1阖严I唯尸彥MWHQ詡i.Li层尸U斗IZlAjx =1 -.s-J4.3运行效果图及说明拨动拨盘开关04,显示器重新开始显示,拨动拨盘开关 05,显示器中的数字在0和当前 数字之间闪烁,SN, EW均显示为R。5. 心得体会在两个多星期课程设计的时间中,我受益匪浅。在这里首先感谢周冰航老师和曾文海老师 的细心指导和认真负责,以及提供各类资料的老师和网友们,帮我
37、们解决了制作过程中的许多 困难。这次选择的课题是红绿灯,相对其他课题而言较简单,但是看似简单其中却蕴含着很多 细节需要去注意。对于我来说,VHDL是一种全新的语言,在设计的过程中,也是一个不断的 学习的过程,由于时间和水平所限,这次设计还有更多的功能可以去完善。通过本次课程设计,我们学习了许多宝贵的编程和设计经验:首先,把我们掌握的理论运 用于实践,并且灵活运用,在这其中深刻认识到了牢固掌握知识和灵活运用知识的重要性;其次,对于一个新的编程语言和编程环境,必须去适应其格式和约束,不然会变得很被动。而要 实现这一点,需要不断的去练习和尝试。这次设计中,我一开始用了 conv语句转化数字成BCD 码,但是却无法下载到实验板,无法解决只能更改算法重新编写。再次编写的过程中,我尝试 用循环转换BCD码,但是开发环境和 VHDL的限制对循环支持不是很好,导致一次运算需要一 次脉冲的时间,转换需要多个脉冲,依然无法
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防疫程序与管理制度
- 隔离场饲养管理制度
- 集团车钥匙管理制度
- 非住宿人员管理制度
- 驾校招生员管理制度
- 骨密度检查管理制度
- 高岭土企业管理制度
- 2024-2025学年天津市河北区高一(下)期中数学试卷含答案
- 工业废水处理与回用技术分析
- 工业机器人应用案例分享
- 2025至2030中国成人用品行业产业运行态势及投资规划深度研究报告
- 2025年重庆市九年级中考语文试题卷及答案解析
- 公安院校公安学科专业招生政治考察表
- 2024年内蒙古锡林郭勒职业学院招聘真题
- 民航招飞驾驶测试题及答案
- 北京税务筹划课件
- 内燃机技术协议书
- 数字智慧方案数字乡村信息化建设及精细化治理平台建设方案
- 2024年陇南市事业单位专业技术人才引进笔试真题
- 2025届浙江省精诚联盟高三下学期适应性联考生物试题
- 《中央银行数字货币基本知识》课件
评论
0/150
提交评论