软件:Quartus
语言:VHDL
代码功能:
交通灯控制器设计
内容及要求:
交通灯的显示有很多方式,如十字路口、丁字路口等,而对于同一个路口又有很多不同的显示要求,比如十字路口,依人们的交通常规,“红灯停,绿灯行,黄灯提醒”。
(1)十字路口,A、B两方向,红:黄:绿,亮灯维持时间、车子左右转弯可自行设计。
(2)当按下复位时,各方向上均亮红灯,倒计时停止。
(3)各个方向的红黄绿等可用发光二极管替代。
(4)黄灯可1Hz闪烁亮,亮灯时间自行设计。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. 仿真图
整体仿真图
分频模块仿真图
二进制转BCD仿真图
状态机控制模块仿真图
数码管控制模块
部分代码展示:
LIBRARY?ieee; USE?ieee.std_logic_1164.all;? LIBRARY?work; ENTITY?traffic_light?IS? PORT ( clk_20M?:??IN??STD_LOGIC;--输入20M时钟 rst_p?:??IN??STD_LOGIC;--复位信号 --A路 al?:??OUT??STD_LOGIC;--左转 ag?:??OUT??STD_LOGIC;--绿 ay?:??OUT??STD_LOGIC;--黄 ar?:??OUT??STD_LOGIC;--红 --B路 bl?:??OUT??STD_LOGIC;--左转 bg?:??OUT??STD_LOGIC;--绿 by?:??OUT??STD_LOGIC;--黄 br?:??OUT??STD_LOGIC;--红 --两个数码管显示十位和个位--一共四个数码管 SEG_ten?:??OUT??STD_LOGIC_VECTOR(3?DOWNTO?0);--十位 SEG_one?:??OUT??STD_LOGIC_VECTOR(3?DOWNTO?0)--个位 ); END?traffic_light; ARCHITECTURE?behav?OF?traffic_light?IS? --例化状态机控制模块 COMPONENT?state_machine_control PORT( ????clk?:?IN?STD_LOGIC; ?rst_p?:?IN?STD_LOGIC; ? ?al?:?OUT?STD_LOGIC; ?ag?:?OUT?STD_LOGIC; ?ay?:?OUT?STD_LOGIC; ?ar?:?OUT?STD_LOGIC; ?bl?:?OUT?STD_LOGIC; ?bg?:?OUT?STD_LOGIC; ?by?:?OUT?STD_LOGIC; ?br?:?OUT?STD_LOGIC; ? ?light_change?:?OUT?STD_LOGIC; ?current_state?:?OUT?STD_LOGIC_VECTOR(2?DOWNTO?0) ); END?COMPONENT; --例化分频模块 COMPONENT?div_to_1HZ PORT(clk_20M?:?IN?STD_LOGIC; ??clk_1Hz?:?OUT?STD_LOGIC; ??clk_1Hz2?:OUT?std_logic ); END?COMPONENT; --例化数码管显示模块 COMPONENT?SEG_8 PORT(clk?:?IN?STD_LOGIC; ????clk_20M:?IN?STD_LOGIC; ????rst_p?:?IN?STD_LOGIC; ?light_change?:?IN?STD_LOGIC; ?SEG_A?:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0); ?SEG_B?:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0); ?current_state?:?IN?STD_LOGIC_VECTOR(2?DOWNTO?0) ); END?COMPONENT;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1024
阅读全文