基于EDA的VHDL语言设计的交通灯(2020年10月整理).pptx

上传人:摩西的****12 文档编号:148840839 上传时间:2020-10-22 格式:PPTX 页数:16 大小:182.62KB
返回 下载 相关 举报
基于EDA的VHDL语言设计的交通灯(2020年10月整理).pptx_第1页
第1页 / 共16页
基于EDA的VHDL语言设计的交通灯(2020年10月整理).pptx_第2页
第2页 / 共16页
基于EDA的VHDL语言设计的交通灯(2020年10月整理).pptx_第3页
第3页 / 共16页
基于EDA的VHDL语言设计的交通灯(2020年10月整理).pptx_第4页
第4页 / 共16页
基于EDA的VHDL语言设计的交通灯(2020年10月整理).pptx_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《基于EDA的VHDL语言设计的交通灯(2020年10月整理).pptx》由会员分享,可在线阅读,更多相关《基于EDA的VHDL语言设计的交通灯(2020年10月整理).pptx(16页珍藏版)》请在金锄头文库上搜索。

1、学 海 无 涯,玉林师范学院本科生课程设计论文,- 1 -,基于 Verilog HDL 的 RS 编码器设计,学 海 无 涯 【摘要】 随着社会上特别是城市中机动车辆保有量的不断增加,在现代城市的日常 运行控制中,车辆的交通控制越来越重要,在十字交叉路口,越来越多的使用 红绿灯进行交通指挥和管理。本文以VHDL硬件描述语言为设计手段,完成了交 通信号灯控制电路的设计,其中交通信号灯控制电路的开发目的是设计一个适 用于主、支干道十字交叉路口的红黄绿交通灯的控制系统,通过合理设计系统 功能,使红黄绿灯的转换有一个准确的时间间隔和转换顺序。所设计的交通信 号灯控制电路经过在Quartus 软件下进

2、行模拟仿真,观察其波形,证明所设 计的交通信号灯控制电路完全可以实现预定的功能,并有一定的实用性。 【关键词】 VHDL; Quartus; 交通灯 【题目要求】 用有限状态机设计一个交通灯控制器,设计要求:A 路和 B 路,每路都有 红、黄、绿三种灯,持续时间为:红灯 45s、黄灯 5s、绿灯 40s。A、B 路交 通灯的转换状态是: (1)A 红、B 绿 (持续时间40s); (2)A 红、B 黄 (持续时间5); (3)A 绿、B 红 (持续时间40s); (4)A 黄、B 红 (持续时间5s); 【系统总体设计原理】,外部时钟,50MHz 1 秒分频 器,交通 灯控 制器,4000Hz

3、 分频器,发光二极 管,显示模 块,数码管,- 2 -,学 海 无 涯,该系统主要由分频模块 fen50m_1s、控制模块 traffic_control、转换模 块 bin2bcd 以及显示模块 display 电路构成。其中分频模块 fen50m_1s 主要将 系统输入的基准时钟信号转换为 1Hz 的激励信号,驱动控制模块工作。控制模 块 traffic_control 根据计数情况对交通灯的亮灭及持续时间进行控制。转换 模块 bin2bcd 将控制模块设计的亮灯时间的二进制转换为 bcd 码。显示模块 display 主要将亮灯时间以倒计时的形式通过数码显示出来 【时钟分频模块】 系统时

4、钟脉冲为50MHz,为满足各个模块脉冲需求,需要分频成2Hz 和 4000Hz 的脉冲。 fen50m_1s 模块设计,实现频率由 50MHz 到 2Hz 的转变,达到我们需要的 1s 的要求,模块如下图:,分频器一,- 3 -,端口说明: clkin:输入 50MHz 时钟脉冲 clkout:输出 2Hz 脉冲 fen50m_1s 实现 Verilog 语言描述如下: module fen50m_1s(clkin,clkout); input clkin; output clkout; reg clkout; reg 24:0 q;,学 海 无 涯 always (posedge clkin

5、) begin if (q=24999999) begin q=0; clkout=clkout; end else q=q+1; end endmodule 编译结果:,分频器二 fen50m_4000 模块设计,实现频率由 50MHz 到 4000Hz 的转变,分频器二,- 4 -,端口说明: clkin:输入 50MHz 时钟脉冲 clkout:输出 4000Hz 脉冲,学 海 无 涯 分频器 fen50m_4000 模块实现程序: module fen50m_4000(clkin,clkout); input clkin; output clkout; reg clkout; reg

6、24:0 q; always (posedge clkin) begin if (q=12499) begin q=0; clkout=clkout; end else q=q+1; end endmodule 编译结果:,- 5 -,【交通灯控制及计时模块】,学 海 无 涯,端口说明: Clock:输入时钟信号,上升沿有效。 Reset:复位信号,高电平有效。 Red1、yellow1、green1:分别表示 A 路的红灯、黄灯、绿灯显示信号,高电 平有效。 Red2、yellow2、green2:分别表示 B 路的红灯、黄灯、绿灯显示信号,高电 平有效。 Timea:A 路绿灯亮时间,高电

7、平有效。 Timeb:B 路红灯亮时间,高电平有效。 Alarm:倒计时信号输出 实现程序: module traffic_control(clock,reset,red1,yellow1,green1,red2,yellow2,green2 ,timea,timeb,alarm); input clock,reset; output red1,yellow1,green1,red2,yellow2,green2,alarm; output 7:0 timea,timeb; reg 1:0 state=2b00; reg 7:0 timea=40; /A 路绿灯亮时间 reg 7:0 time

8、b=45; /B 路红灯亮时间 reg red1=1b0,yellow1=1b0,green1=1b1; /A 绿灯亮 reg red2=1b1,yellow2=1b0,green2=1b0; /B 红灯亮 reg alarm=1b0; always (posedge clock or posedge reset) begin if (reset) begin,- 6 -,- 7 -,学 海 无 涯 else begin case (state) 2b00: begin if (timea=0) /A 绿灯亮时间 40S 结束 begin,timea=5; /A 黄灯亮时间 5S red1=1

9、b0; yellow1=1b1; green1=1b0; /A 黄灯亮,red2=1b1; yellow2=1b0; green2=1b0; /B 红灯继续,亮,state=2b01; /转到 A 黄灯,B 红灯 end else,2b01: begin if (timea=0) /A 黄灯亮 5S 时间结束,- 8 -,学 海 无 涯,state=2b01;,end,end 2b10: begin if (timeb=0) /B 绿灯亮 40S 时间结束 begin,timeb=5; /B 灯黄亮时间 5S red1=1b1; yellow1=1b0; green1=1b0; /A 红灯亮,

10、red2=1b0; yellow2=1b1; green2=1b0; /B 黄灯亮 state=2b11; /转到 A 红灯,B 黄灯,end 2b11: begin if (timeb=0) /B 黄灯亮 5S 时间结束 begin,timea=40; /A 绿灯亮时间 40S timeb=45; /B 绿灯亮时间 45S red1=1b0; yellow1=1b0; green1=1b1; /A 绿灯亮,red2=1b1; yellow2=1b0; green2=1b0; /B 红灯亮 alarm=1b0; state=2b00; /转到 A 绿灯,B 红灯,学 海 无 涯,end end

11、case end end Endmodule 编译结果:,此模块是整个系统的核心部分,主要功能是完成四个状态的转换,并且在 每个状态里完成相应的控制作用,即控制主干道和支干道的红黄绿灯的点亮和 各自数码管倒计时显示。 【bin2bcd 转换模块】 该模块将二进制语言转换为 BCD 码输出,模块如下图:,- 9 -,学 海 无 涯,端口说明: numin7.0:输入 8 位二进制编码 numa3.0:输出高 4 位 BCD 码 numb3.0:输出低 4 位 BCD 码 bin2bcd 转换模块实现程序: module bin2bcd(numin,numa,numb); input7:0 num

12、in; output3:0 numa,numb; reg3:0 numa,numb; always (numin) begin if (numin=90) begin numa=9; numb=numin-90; end else if (numin=80) begin numa=8; numb=numin-80; end else if (numin=70) begin numa=7; numb=numin-70; end else if (numin=60) begin numa=6; numb=numin-60; end else if (numin=50) begin numa=5;

13、numb=numin-50; end else if (numin=40) begin numa=4; numb=numin-40; end else if (numin=30) begin numa=3; numb=numin-30; end else if (numin=20) begin numa=2; numb=numin-20; end else if (numin=10) begin numa=1; numb=numin-10; end else begin numa=0; numb=numin; end end endmodule 编译结果:,- 10 -,学 海 无 涯,【数码

14、管显示译码和扫描模块】 驱动交通信号 LED 灯以及倒计时器数码管的显示,模块如下图:,端口说明: Scanclk:4000Hz 时钟脉冲 Ewh,smh:输入高 4 位 BCD 码 Ewl,sml:输入高 4 位 BCD 码 Ledout:数码管段选 Ledsel:数码管位选 Verilog 语言描述如下: module display(scanclk,ewh,ewl,snh,snl,ledout,ledsel); input scanclk; input 3:0 ewh,ewl,snh,snl; output 6:0 ledout; output 3:0 ledsel; reg 6:0 l

15、edout;,- 11 -,- 12 -,学 海 无 涯 reg 3:0 ledsel; reg 3:0 bcd; reg 2:0 q; always (posedge scanclk) begin q=q+1; case(q) 3b000:begin ledsel=4b0111;bcd=ewh;end 3b001:begin ledsel=4b1011;bcd=ewl;end 3b010:begin ledsel=4b1101;bcd=snh;end 3b011:begin ledsel=4b1110;bcd=snl;end default:begin ledsel=8b11111111;b

16、cd=4bzzzz;end endcase end always (bcd) begin case(bcd) 4b0000:ledout=7b0111111; 4b0001:ledout=7b0000110; 4b0010:ledout=7b1011011; 4b0011:ledout=7b1001111; 4b0100:ledout=7b1100110; 4b0101:ledout=7b1101101; 4b0110:ledout=7b1111101; 4b0111:ledout=7b0000111; 4b1000:ledout=7b1111111; 4b1001:ledout=7b1101111; defau

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号