• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

交通灯控制器的设计Verilog代码Quartus 实验箱

05/19 09:18
1258
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-2505161J034109.doc

共1个文件

名称:交通灯控制器的设计Verilog代码Quartus? 实验箱

软件:Quartus

语言:VHDL

代码功能:

交通灯控制器的设计

1.系统设计任务及要求

(1)能显示十字路口东西、南北两个方向的红、黄、绿灯的指示状态。用两组红、黄、绿灯表示分别作为东西、南北两个方向的红、黄、绿灯。变化规律为:东西绿灯亮,南北红灯→东西黄灯亮,南北红灯亮→东西红灯亮,南北绿灯亮→东西红灯亮,南北黄灯亮→东西绿灯亮,南北红灯亮……,这样依次循环。

(2)用两组数码管作为东西、南北方向的倒计时显示,时间可以预置,如时间为红灯35s、绿灯32s、黄灯3s。

(3)使用一个按键能实现特殊状态的功能:计数器停止计数并保持在原来的状态;东西、南北、路口均显示红灯状态;特殊状态解除后能继续计数。

(4)要求交通灯控制器具有复位功能,在复位信号的控制下能够实现交通灯的复位,计数器由初始状态计数,对应状态的指示灯亮。

(5)用VHDL语言设计符合上述功能要求的交通灯控制器,并用层次化设计方法设计该电路

(6)控制器、置数器的功能用功能仿真的方法验证,可通过有关波形确认电路设计是否正确。

(7)完成电路全部设计后,下载到实验开发系统验证设计的正确性。

要求 (3).jpg

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

本代码已在实验箱验证,实验箱如下,其他开发板可以修改管脚适配:实验箱 (1).jpg

演示视频:

设计文档:

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

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1530

  • 2-2505161J034109.doc
    下载

相关推荐