交通灯控制器的设计VHDL代码Quartus 实验箱
名称:交通灯控制器的设计VHDL代码Quartus 实验箱
软件:Quartus
语言:VHDL
代码功能:
交通灯控制器的设计
1.系统设计任务及要求
(1)能显示十字路口东西、南北两个方向的红、黄、绿灯的指示状态。用两组红、黄、绿灯表示分别作为东西、南北两个方向的红、黄、绿灯。变化规律为:东西绿灯亮,南北红灯→东西黄灯亮,南北红灯亮→东西红灯亮,南北绿灯亮→东西红灯亮,南北黄灯亮→东西绿灯亮,南北红灯亮……,这样依次循环 (2)用两组数码管作为东西、南北方向的倒计时显示,时间可以预置,如时间为红灯35s、绿灯32s、黄灯3s。
(3)使用一个按键能实现特殊状态的功能:计数器停止计数并保持在原来的状态;东西、南北、路口均显示红灯状态;特殊状态解除后能继续计数。
(4)要求交通灯控制器具有复位功能,在复位信号的控制下能够实现交通灯的复位,计数器由初始状态计数,对应状态的指示灯亮。
(5)用VHDL语言设计符合上述功能要求的交通灯控制器,并用层次化设计方法设计该电路。
(6)控制器、置数器的功能用功能仿真的方法验证,可通过有关波形确认电路设计是否正确
(7)完成电路全部设计后,下载到实验开发系统验证设计的正确性。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在实验箱验证,实验箱如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
1、工程文件
2、程序文件
3、程序编译
4、管脚分配
5、RTL图
6、仿真图
整体仿真图
分频模块
控制模块
显示模块
部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; --交通灯 ENTITY Traffic_Light_Control IS PORT ( clk : IN STD_LOGIC;--50Mhz reset_n : IN STD_LOGIC;--复位--K2 control : IN STD_LOGIC;--特殊功能--K1 R1 : OUT STD_LOGIC;--高电平亮,主路红灯 G1 : OUT STD_LOGIC;--高电平亮,主路绿灯 Y1 : OUT STD_LOGIC;--高电平亮,主路黄灯 R2 : OUT STD_LOGIC;--高电平亮,支路红灯 G2 : OUT STD_LOGIC;--高电平亮,支路绿灯 Y2 : OUT STD_LOGIC;--高电平亮,支路黄灯 bit_select : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);--数码管位选 seg_select : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管段选 ); END Traffic_Light_Control; ARCHITECTURE behave OF Traffic_Light_Control IS --分频模块 COMPONENT CLOCK IS-- Divide 50MHz to 1Hz GENERIC(D : INTEGER := 50000000);--仿真时改小为500加快仿真速度,实际上板验证时改为50000000 PORT(CLK: IN STD_LOGIC; DAV: OUT STD_LOGIC); END COMPONENT; --显示模块 COMPONENT HEX IS PORT ( clk : IN STD_LOGIC; SMG_1 : IN STD_LOGIC_VECTOR(7 DOWNTO 0); SMG_2 : IN STD_LOGIC_VECTOR(7 DOWNTO 0); bit_select : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);--数码管位选 seg_select : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管段选 ); END COMPONENT; --交通灯控制模块 COMPONENT RGY IS PORT ( clk_1 : IN STD_LOGIC; clk : IN STD_LOGIC; reset_n : IN STD_LOGIC;--复位 control : IN STD_LOGIC;----特殊功能 G1_time : IN STD_LOGIC_VECTOR(7 DOWNTO 0); Y1_time : IN STD_LOGIC_VECTOR(7 DOWNTO 0); G2_time : IN STD_LOGIC_VECTOR(7 DOWNTO 0); Y2_time : IN STD_LOGIC_VECTOR(7 DOWNTO 0); R1 : OUT STD_LOGIC; G1 : OUT STD_LOGIC; Y1 : OUT STD_LOGIC; R2 : OUT STD_LOGIC; G2 : OUT STD_LOGIC; Y2 : OUT STD_LOGIC; SMG1 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--输出数码管显示数 SMG2 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--输出数码管显示数 ); END COMPONENT; SIGNAL clk_1 : STD_LOGIC; SIGNAL SMG1 : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL SMG2 : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL R1_led : STD_LOGIC; SIGNAL G1_led : STD_LOGIC; SIGNAL Y1_led : STD_LOGIC; SIGNAL R2_led : STD_LOGIC; SIGNAL G2_led : STD_LOGIC; SIGNAL Y2_led : STD_LOGIC; SIGNAL G1_time : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL Y1_time : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL G2_time : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL Y2_time : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN R1 <= R1_led;--主路红灯 G1 <= G1_led;--主路绿灯 Y1 <= Y1_led;--主路黄灯 R2 <= R2_led;--支路红灯 G2 <= G2_led;--支路绿灯 Y2 clk, dav => clk_1 ); --主、支干道均有车时,两者交替允许通行, --主干道每次放行60秒,支干道每次放行45秒, --设立60秒、45秒计时、显示电路 --设置时间,可自行修改时间, --主路红灯时间等于支路绿灯加黄灯 --支路红灯时间等于主路绿灯加黄灯 G1_time <= "00100000";--主路绿灯32s Y1_time <= "00000011";--主路黄灯3s G2_time <= "00100000";--支路绿灯32s Y2_time <= "00000011";--支路黄灯3s
代码文件(付费下载):
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 交通灯控制器的设计VHDL代码Quartus 实验箱
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 交通灯控制器的设计VHDL代码Quartus 实验箱
发表评论