欢迎来到天天文库
浏览记录
ID:37125557
大小:105.00 KB
页数:11页
时间:2019-05-18
《实验报告 交通灯控制器实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、交通灯控制器实验报告------SOC课程设计一.实验功能该交通灯控制器,能完成以下功能:⒈显示交通灯的红、黄、绿的指示状态用L1、L2、L3作为绿、黄、红灯;⒉能实现正常的倒计时功能:用M2、M1作为南北方向的倒计时显示器,显示时间为红灯55秒,绿灯30秒,黄灯15秒。⒊能实现特殊状态的功能(1)按S1后,能实现特殊状态功能;(2)显示器M2M1闪烁;(3)计数器停止计数并保持在原来的状态;(4)显示红灯状态;(5)特殊状态解除后能继续计数;⒋能实现总体清零功能按S2后,系统实现总清零,计数器由初始状态计数,对应状态的指示灯亮。二、实验简介该实验模块部分用VHDL语言编写,将各模块
2、打包,画出.gdf文件,在MAX+PLUS2下编译,并下载到实验箱,模拟操作实现。⒈顶层原理图traffic.gdf为最后的总原理图,具体如下:该图为最终原理图,汇集模块有:CDU55、CDU30、CDU15、KONGZHI、XUANZHE、ZHUANHUAN、MULX2、YIMAQI,共八个模块。最后通过jiaotong文件将各个模块的功能整合到一起,实现交通灯的功能。⒉CDU55。该模块实现0~55的数字循环显示。CLEAR端置0(低有效),则数码显示到55。否则,当数码大于0时,时钟信号到来依次减1;数码显示为0时,下一时钟信号到来时,则循环跳至55,开始下一轮循环。VHDL代
3、码如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcdu55ISPORT(clk:INSTD_LOGIC;clear:INSTD_LOGIC;ena:INSTD_LOGIC;count_out:OUTINTEGERRANGE0TO55;CY:OUTstd_logic);ENDcdu55;ARCHITECTURErtlOFcdu55ISSIGNALcounter_date:INTEGERRANGE0TO55;SIGNALcy_out:std_logic;BEGINPROCESS(ena,clk,clear)BEGINIF(clear='0
4、')THENcounter_date<=55;cy_out<='0';ELSIF(clk'EVENTANDclk='1')THENif(ena='1'andcounter_date>0)thencounter_date<=counter_date-1;cy_out<='0';elsif(ena='1'andcounter_date=0)thency_out<='1';counter_date<=55;elsecounter_date<=counter_date;endif;endif;endprocess;count_out<=counter_date;cy<=cy_out;endr
5、tl;⒊CDU30。该模块实现0~30的数字循环显示。清零端置0(低有效),则数码显示0。否则,当数码大于0时,时钟信号到来依次减1;数码显示为0,下一时钟信号到来时,则循环跳至30,开始下一轮循环。VHDL代码如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcdu30ISPORT(clk:INSTD_LOGIC;clear:INSTD_LOGIC;ena:INSTD_LOGIC;count_out:OUTINTEGERRANGE0TO50;CY:OUTstd_logic);ENDcdu30;ARCHITECTURErtlOFcdu30
6、ISSIGNALcounter_date:INTEGERRANGE0TO50;SIGNALcy_out:std_logic;BEGINPROCESS(ena,clk,clear)BEGINIF(clear='0')THENcounter_date<=30;cy_out<='0';ELSIF(clk'EVENTANDclk='1')THENif(ena='1'andcounter_date>0)thencounter_date<=counter_date-1;cy_out<='0';elsif(ena='1'andcounter_date=0)thency_out<='1';count
7、er_date<=30;elsecounter_date<=counter_date;endif;endif;endprocess;count_out<=counter_date;cy<=cy_out;endrtl;⒋CDU15。该模块实现0~15的数字循环显示。清零端置0(低有效),则数码显示0。否则,当数码大于0时,时钟信号到来依次减1;数码显示为0,下一时钟信号到来时,则循环跳至15,开始下一轮循环。VHDL代码如下:USEIEEE.STD_LOGI
此文档下载收益归作者所有