基于EDA的VHDL语言设计的交通灯Word文档下载推荐.docx
- 文档编号:6110385
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:17
- 大小:396.96KB
基于EDA的VHDL语言设计的交通灯Word文档下载推荐.docx
《基于EDA的VHDL语言设计的交通灯Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于EDA的VHDL语言设计的交通灯Word文档下载推荐.docx(17页珍藏版)》请在冰点文库上搜索。
(3)A绿、B红(持续时间40s);
(4)A黄、B红(持续时间5s);
【系统总体设计原理】
50MHz
1秒分频器
交通灯控制器
4000Hz
分频器
发光二极管
显示模块
数码管
外部时钟
该系统主要由分频模块fen50m_1s、控制模块traffic_control、转换模块bin2bcd以及显示模块display电路构成。
其中分频模块fen50m_1s主要将系统输入的基准时钟信号转换为1Hz的激励信号,驱动控制模块工作。
控制模块traffic_control根据计数情况对交通灯的亮灭及持续时间进行控制。
转换模块bin2bcd将控制模块设计的亮灯时间的二进制转换为bcd码。
显示模块display主要将亮灯时间以倒计时的形式通过数码显示出来
【时钟分频模块】
系统时钟脉冲为50MHz,为满足各个模块脉冲需求,需要分频成2Hz和4000Hz的脉冲。
fen50m_1s模块设计,实现频率由50MHz到2Hz的转变,达到我们需要的1s的要求,模块如下图:
分频器一
端口说明:
clkin:
输入50MHz时钟脉冲
clkout:
输出2Hz脉冲
fen50m_1s实现Verilog语言描述如下:
modulefen50m_1s(clkin,clkout);
inputclkin;
outputclkout;
regclkout;
reg[24:
0]q;
always(posedgeclkin)
begin
if(q==24999999)
begin
q<
=0;
clkout<
=~clkout;
end
elseq<
=q+1;
endmodule
编译结果:
分频器二fen50m_4000模块设计,实现频率由50MHz到4000Hz的转变
分频器二
输出4000Hz脉冲
分频器fen50m_4000模块实现程序:
modulefen50m_4000(clkin,clkout);
if(q==12499)
endmodule
【交通灯控制及计时模块】
端口说明:
Clock:
输入时钟信号,上升沿有效。
Reset:
复位信号,高电平有效。
Red1、yellow1、green1:
分别表示A路的红灯、黄灯、绿灯显示信号,高电平有效。
Red2、yellow2、green2:
分别表示B路的红灯、黄灯、绿灯显示信号,高电平有效。
Timea:
A路绿灯亮时间,高电平有效。
Timeb:
B路红灯亮时间,高电平有效。
Alarm:
倒计时信号输出
实现程序:
moduletraffic_control(clock,reset,red1,yellow1,green1,red2,yellow2,green2,timea,timeb,alarm);
inputclock,reset;
outputred1,yellow1,green1,red2,yellow2,green2,alarm;
output[7:
0]timea,timeb;
reg[1:
0]state=2'
b00;
reg[7:
0]timea=40;
//A路绿灯亮时间
0]timeb=45;
//B路红灯亮时间
regred1=1'
b0,yellow1=1'
b0,green1=1'
b1;
//A绿灯亮
regred2=1'
b1,yellow2=1'
b0,green2=1'
b0;
//B红灯亮
regalarm=1'
always(posedgeclockorposedgereset)
begin
if(reset)begin
state<
=2'
timea<
=40;
timeb<
=45;
end
else
case(state)
2'
b00:
if(timea==0)//A绿灯亮时间40S结束
timea<
=5;
//A黄灯亮时间5S
red1<
=1'
yellow1<
green1<
//A黄灯亮
red2<
yellow2<
green2<
//B红灯继续亮
b01;
//转到A黄灯,B红灯
end
begin
=timea-1;
//A绿灯亮时间40S--
timeb<
=timeb-1;
//B红灯亮时间45S--
state<
end
b01:
if(timea==0)//A黄灯亮5S时间结束
//A红灯亮时间45S
//B绿灯亮时间40S
//A红灯亮
//B绿灯亮
alarm<
b10;
//转到A红灯,B绿灯
//A黄灯亮时间3S--
//B红灯亮时间3S--
=~alarm;
=~yellow1;
b10:
if(timeb==0)//B绿灯亮40S时间结束
//B灯黄亮时间5S
//B黄灯亮
b11;
//转到A红灯,B黄灯
else
begin
timea<
//A红灯亮时间--
timeb<
//B绿灯亮时间--
b11:
if(timeb==0)//B黄灯亮5S时间结束
//A绿灯亮时间40S
//B绿灯亮时间45S
//B红灯亮
//转到A绿灯,B红灯
else
//B黄灯亮时间--
alarm<
=~yellow2;
endcase
Endmodule
此模块是整个系统的核心部分,主要功能是完成四个状态的转换,并且在每个状态里完成相应的控制作用,即控制主干道和支干道的红黄绿灯的点亮和各自数码管倒计时显示。
【bin2bcd转换模块】
该模块将二进制语言转换为BCD码输出,模块如下图:
numin[7..0]:
输入8位二进制编码
numa[3..0]:
输出高4位BCD码
numb[3..0]:
输出低4位BCD码
bin2bcd转换模块实现程序:
modulebin2bcd(numin,numa,numb);
input[7:
0]numin;
output[3:
0]numa,numb;
reg[3:
always(numin)
if(numin>
=90)beginnuma=9;
numb=numin-90;
elseif(numin>
=80)beginnuma=8;
numb=numin-80;
=70)beginnuma=7;
numb=numin-70;
=60)beginnuma=6;
numb=numin-60;
=50)beginnuma=5;
numb=numin-50;
=40)beginnuma=4;
numb=numin-40;
=30)beginnuma=3;
numb=numin-30;
=20)beginnuma=2;
numb=numin-20;
=10)beginnuma=1;
numb=numin-10;
elsebeginnuma=0;
numb=numin;
【数码管显示译码和扫描模块】
驱动交通信号LED灯以及倒计时器数码管的显示,模块如下图:
Scanclk:
4000Hz时钟脉冲
Ewh,smh:
输入高4位BCD码
Ewl,sml:
Ledout:
数码管段选
Ledsel:
数码管位选
Verilog语言描述如下:
moduledisplay(scanclk,ewh,ewl,snh,snl,ledout,ledsel);
inputscanclk;
input[3:
0]ewh,ewl,snh,snl;
output[6:
0]ledout;
output[3:
0]ledsel;
reg[6:
reg[3:
0]bcd;
reg[2:
always(posedgescanclk)
case(q)
3'
b000:
beginledsel<
=4'
b0111;
bcd<
=ewh;
end
b001:
b1011;
=ewl;
b010:
b1101;
=snh;
b011:
b1110;
=snl;
default:
=8'
b11111111;
bzzzz;
always(bcd)
begin
case(bcd)
4'
b0000:
ledout=7'
b0111111;
b0001:
b0000110;
b0010:
b1011011;
b0011:
b1001111;
b0100:
b1100110;
b0101:
b1101101;
b0110:
b1111101;
b0111:
b0000111;
b1000:
b1111111;
b1001:
b1101111;
b0000000;
【各模块电路符号】
顶层电路图如下:
顶层文件原理图
顶层文件编译结果如下:
【硬件验证结果】
1、引脚配置如下:
2、硬件验证效果如下:
按照设计好的原理图,运行QuartusⅡ软件,运用模块化设计方法,创建图形设计文件,画出所设计的交通灯控制器总框图并连接,对其进行测试,编译,得到结果如图所示:
【总结】
本设计借助FPGA器件及其支撑软件,快速明确的验证了交通灯控制功能。
通过此次EDA课程设计,我系统的学习了课本上的相关知识,对程序设计有了一定思路;
通过实验课的学习,在程序的调试方面也学到了很多东西。
其中在编程中也出现了很多的问题,但通过老师同学的帮助下,把问题一一解决了。
其实只要我们自己认真看书,仔细分析,仔细调试,就一定会发现错误,真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中。
在这个设计过程中我深刻地体会到刻苦努力与认真对待的重要性,进一步巩固了自己所学的专业基础知识,提高了自己解决问题的能力。
本设计使得我有了一次非常好的将理论与实践结合的机会,并使我从中学到了新知识。
通过学习EDA这门课程,懂得了QuartusⅡ这个软件的基本操作、用Verilog语言编写一些简单的程序,我知道我还需要不断的学习,才能更好地掌握这一门课程。
最后我想特别的感宇宁老师,感您的悉心指导,您渊博的学识,谦虚、严谨的治学态度、灵活的思维方式、认真的工作作风和对学生的关心都令我佩服不已,谆谆教诲使我受益匪浅!
我会继续努力的!
参考文献
参考文献
[1]王金明.数字系统设计与VerilogHDL[M].:
电子工业.2011.1.
[2]昕燕,周凤臣,聂春燕.EDA技术实验与课程设计[M].:
清华.2006.5.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 EDA VHDL 语言 设计 交通灯