软件:ISE
语言:VHDL
代码功能:
交通灯控制器设计要求
1.控制对象为单个十字路口的南北向交通灯,具体包含一个左转箭头灯(可以显示红色,绿色)和一个圆形指示灯(可以显示红色,绿色,以及黄色);
2.圆形指示灯:当接收到东西向左转箭头灯的左转完成信号(外界输入)后,经过3次黄灯闪烁(一秒闪烁一次)后由原本的红灯跳转为绿灯,绿灯维持24秒,经过3次黄灯闪烁跳转回红灯,并输出一个左转允许信号;
3.左转箭头灯:当接收到圆形指示灯的左转允许信号后,由红色跳转为绿色,维持15秒后跳转回红色,并输出一个左转完成信号;
4.设置一个交通管制按钮,该按钮按下后,所有信号灯亮起红色;
5.需要分别完成以下两个模块的VHDL设计并分别进行仿真测试:圆灯控制器和箭头灯控制器;
6.按照合理逻辑将上述两个模块进行连接,必要时适当添加周边电路,完成整体的VHDL设计,再进行仿真测试。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. Testbench
5. 仿真图
部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; --顶层模块 ENTITY light IS PORT ( clk : IN STD_LOGIC;--时钟 rst_p : IN STD_LOGIC;--复位,高电平有效 traffic_control : IN STD_LOGIC;--交通管制信号输入 EW_left : IN STD_LOGIC;--东西向左转完成输入 round_red : OUT STD_LOGIC;--圆灯红色 round_yellow : OUT STD_LOGIC;--圆灯黄色 round_green : OUT STD_LOGIC;--圆灯绿色 arrow_red : OUT STD_LOGIC;--箭头红灯 arrow_green : OUT STD_LOGIC;--箭头绿灯 arrow_left_done : OUT STD_LOGIC--南北方向输出左转完成信号 ); END light; ARCHITECTURE RTL OF light IS --圆灯控制器 COMPONENT Round_controller IS PORT ( clk : IN STD_LOGIC;--时钟 rst_p : IN STD_LOGIC;--复位,高电平有效 traffic_control : IN STD_LOGIC;--交通管制信号输入 EW_left : IN STD_LOGIC;--东西向左转完成输入 left_allow : OUT STD_LOGIC;--输出左转允许信号 round_red : OUT STD_LOGIC;--圆灯红色 round_yellow : OUT STD_LOGIC;--圆灯黄色 round_green : OUT STD_LOGIC--圆灯绿色 ); END COMPONENT; --箭头灯控制模块 COMPONENT Arrow_controller IS PORT ( clk : IN STD_LOGIC;--时钟 rst_p : IN STD_LOGIC;--复位 traffic_control : IN STD_LOGIC;--交通管制信号输入 arrow_allow : IN STD_LOGIC;--圆灯左转允许 arrow_red : OUT STD_LOGIC;--箭头红灯 arrow_green : OUT STD_LOGIC;--箭头绿灯 arrow_left_done : OUT STD_LOGIC--南北方向输出左转完成信号 ); END COMPONENT; SIGNAL left_allow : STD_LOGIC;--圆灯左转允许 BEGIN --圆灯控制器 U1: Round_controller PORT MAP( clk => clk,--时钟 rst_p => rst_p,--复位,高电平有效 traffic_control => traffic_control,--交通管制信号输入 EW_left => EW_left,--东西向左转完成输入 left_allow => left_allow,--输出左转允许信号 round_red => round_red,--圆灯红色 round_yellow => round_yellow,--圆灯黄色 round_green => round_green--圆灯绿色 ); --箭头灯控制模块 U2: Arrow_controller PORT MAP( clk => clk,--时钟 rst_p => rst_p,--复位 traffic_control => traffic_control,--交通管制信号输入 arrow_allow => left_allow,--圆灯左转允许 arrow_red => arrow_red,--箭头红灯 arrow_green => arrow_green,--箭头绿灯 arrow_left_done =>arrow_left_done--南北方向输出左转完成信号 ); END RTL;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=803
488