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

东西,南北两个方向交通灯设计VHDL代码Quartus仿真

06/30 10:37
190
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240112094GV49.doc

共1个文件

名称:东西,南北两个方向交通灯设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

功能需求

该交通灯控制器要求能显示十字路口东西、南北两个方向的红、黄、绿灯的指示状态。用两组红、黄、绿三种颜色的灯分别作为东西、南北两个方向的红、黄、绿灯。变化规律如下:

(1)东西绿灯亮、南北红灯亮;

(2)东西黄灯亮、南北红灯亮;

(3)东西红灯亮、南北绿灯亮;

(4)东西红灯亮、南北黄灯亮;

(5)东西绿灯亮、南北红灯亮;

(6)依次循环执行……

南北方向是主干道车道,东西方向是支干道车道,要求两条交叉道路上的车辆交替运行,主干道每次通行时间设为30s、支干道每次通行时间设为20s,时间可设置修改。

在绿灯转为红灯时,要求黄灯先亮5s,才能变换运行车道。

要求交通灯控制器具有异步复位功能,在复位信号使能时,能够实现交通灯的自动复位,并要求所有交通灯的状态变化在时钟信号上升沿处。

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

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 仿真图

整体仿真图

分频模块

红绿灯控制模块

数码管显示模块

部分代码展示:

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
???USE?ieee.std_logic_arith.all;
--显示模块
ENTITY?display?IS
???PORT?(
??????clk??:?IN?STD_LOGIC;--50MHz
??????SMG1????:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);--倒计时时间
??????SMG2???:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);--倒计时时间
??????SEG??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--数码管段选
??????SEL???:?OUT?STD_LOGIC_VECTOR(2?DOWNTO?0)--数码管位选
???);
END?display;
ARCHITECTURE?behavioral?OF?display?IS
???
???SIGNAL?SMG1_ten??:?INTEGER?:=?0;?
???SIGNAL?SMG1_one??:?INTEGER?:=?0;?
???SIGNAL?SMG2_ten?:?INTEGER?:=?0;?
???SIGNAL?SMG2_one?:?INTEGER?:=?0;?
SIGNAL?SMG1_int??:?INTEGER?:=?0;?
SIGNAL?SMG2_int??:?INTEGER?:=?0;
???
???SIGNAL?display_data??:?INTEGER?:=?0;?
???SIGNAL?select_num????:?STD_LOGIC_VECTOR(31?DOWNTO?0)?:=?"00000000000000000000000000000000";
???SIGNAL?geshu?????????:?STD_LOGIC_VECTOR(15?DOWNTO?0)?:=?"0000000000000000";
BEGIN
???SMG1_int<=Conv_Integer(SMG1);--转为int类型
???SMG2_int<=Conv_Integer(SMG2);--转为int类型
???SMG1_ten?<=?SMG1_int?/?10;--时间十位
???SMG1_one?<=?SMG1_int-?SMG1_ten?*10;--时间个位
???SMG2_ten?<=?SMG2_int?/?10;--时间十位
???SMG2_one?<=?SMG2_int-?SMG2_ten?*10;--时间个位
???
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
???????????geshu?<=?geshu?+?"0000000000000001";?--扫描那个管子的指示位
??????END?IF;
???END?PROCESS;
???
???
???PROCESS?(geshu)--位选切换
???BEGIN
??????CASE?geshu(5?downto?4)?IS---仿真将geshu(15?downto?14)改为geshu(5?downto?4)
?????????WHEN?"00"?=>
????????????SEL?<=?"000";
????????????display_data?<=??SMG1_ten;--时间个位
?????????WHEN?"01"?=>
????????????SEL?<=?"001";
????????????display_data?<=??SMG1_one;--时间十位
?????????WHEN?"10"?=>
????????????SEL?<=?"010";
????????????display_data?<=??SMG2_ten;--时间个位
?????????WHEN?"11"?=>
????????????SEL?<=?"011";
????????????display_data?<=??SMG2_one;--时间十位
?????????WHEN?OTHERS?=>
??????END?CASE;
???END?PROCESS;
???
???-------段选输出--
???PROCESS?(display_data)
???BEGIN
??????CASE?display_data?IS--数字显示码
?????????WHEN?0?=>
????????????SEG?<=not"11000000";
?????????WHEN?1?=>
????????????SEG?<=?not"11111001";
?????????WHEN?2?=>
????????????SEG?<=?not"10100100";
?????????WHEN?3?=>
????????????SEG?<=?not"10110000";
?????????WHEN?4?=>
????????????SEG?<=?not"10011001";
?????????WHEN?5?=>
????????????SEG?<=?not"10010010";
?????????WHEN?6?=>
????????????SEG?<=?not"10000010";
?????????WHEN?7?=>
????????????SEG?<=?not"11111000";
?????????WHEN?8?=>
????????????SEG?<=?not"10000000";
?????????WHEN?9?=>
????????????SEG?<=?not"10010000";
?????????WHEN?OTHERS?=>
??????END?CASE;
???END?PROCESS;
???
???
END?behavioral;

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

  • 2-240112094GV49.doc
    下载

相关推荐