vhdl语言实例练习 交通灯控制器

vhdl语言实例练习 交通灯控制器

ID:14015245

大小:53.00 KB

页数:4页

时间:2018-07-25

vhdl语言实例练习 交通灯控制器_第1页
vhdl语言实例练习 交通灯控制器_第2页
vhdl语言实例练习 交通灯控制器_第3页
vhdl语言实例练习 交通灯控制器_第4页
资源描述:

《vhdl语言实例练习 交通灯控制器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一、课程设计的目的与要求1.设计目的l熟悉MAXPLUS2/QuartusII软件,掌握软件的VHDL程序输入、程序编译和程序仿真操作;l学习利用VHDL语言设计交通灯控制器电路程序。2.设计要求根据设计正文提出的交通灯控制器功能,实现交通灯控制器设计。l分析交通灯控制器的基础功能(见设计正文),在此基础上完善该交通灯控制器功能。l根据提出的真值表编写相应的VHDL程序。l对编写的程序说明其实现的功能和编程思路,描述程序中出现的端口含义。l设计者根据设计的复杂度,可以斟酌省去黄灯状态。二、设计正文设计一个交通灯控制器,实现高速公路与乡间小路的交叉路口红绿灯的控制

2、。基础功能如下:l只有在小路上发现汽车时,高速公路的交通灯才变为红灯,小路交通灯变为绿灯,但变为绿灯的持续时间为S时间。l高速公路变为绿灯之后,即使小路上再有汽车出现,而公路上无汽车,也要等待时间L公路交通灯才能变为红灯。VHDL源程序:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_UNSIGNED.all;——包含库与程序包entitytrafconisport(request,CLK,clk_fast:instd_logic;big_hl,little_hl:outstd_logic_vec

3、tor(0to1));——定义端口表:输入clk,request,输出big_hl,little_hlendtrafcon;architecturertloftrafconistypestatetypeis(normal,red,green);signalpresent_state,next_state:statetype;signalcount:std_logic_vector(4downto0);——定义信号present_state,next_statesignalclk_s,clk_l:std_logic;count,clk_s,clk_lbig_hl1

4、,little_hl1signalbig_hl1,little_hl1:std_logic_vector(0to1);beginbig_hl<=big_hl1;little_hl<=little_hl1;p1:process(present_state,clk_s,clk_l,request)——进程P1开始begincasepresent_stateiswhennormal=>big_hl1<="01";little_hl1<="10";——正常状态下大路绿灯亮,小路红灯亮ifrequest='1'then——小路有车requst=1,状态转变。next_st

5、ate<=red;elsenext_state<=normal;——否则保持endif;whenred=>big_hl1<="10";little_hl1<="01";ifclk_s='1'thennext_state<=green;——当持续S时间后状态恢复正常elsenext_state<=red;——否则继续保持大路红灯状态endif;whengreen=>big_hl1<="01";little_hl1<="10";——当持续L时间后状态恢复正常ifclk_l='1'then——否则继续保持大路绿灯状态next_state<=normal;elsenex

6、t_state<=green;endif;endcase;endprocessp1;p2:process(clk)——进程P2开始beginifclk'eventandclk='1'thenpresent_state<=next_state;——脉冲上升沿引起状态改变endif;endprocessp2;p3:process(clk_fast,present_state)——进程P3开始beginifclk_fast'eventandclk_fast='1'then——在脉冲作用下进行计时ifrequest='1'then——发生请求信号,开始清零计时count

7、<="00000";endif;ifpresent_state=redthenifcount/="00010"thencount<=count+'1';clk_s<='0';elseclk_s<='1';——当计时达到S后,发出结束信号clk_s=1,endif;elsifpresent_state=greenthenifcount/="00100"then--4count<=count+'1';clk_l<='0';else——当计时达到S后,发出结束信号clk_l=1,clk_l<='1';endif;endif;endif;endprocessp3;——进

8、程结束endrtl;跳转

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。