交通灯EDA课程设计Word下载.docx
- 文档编号:18373865
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:16
- 大小:159.08KB
交通灯EDA课程设计Word下载.docx
《交通灯EDA课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《交通灯EDA课程设计Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
Veriloghdl提供了简单实用的状态机语句,在设计时把它和实验箱结合起来控制扫描显示交通灯的运行情况。
其原理框图如图1:
图1
通过外部时钟控制整个交通灯的运行,先将外部时钟经过分频电路变为周期1HZ的时钟,以这个时钟来控制各个路口灯的亮灭及时间显示。
即和计数器结合起来,每一秒钟计数器计一次数并传送给扫描模块显示输出。
当计数器达到设定的最大值便清零,相应的灯的状态便改变,如此反复。
至于复位和特殊功能的实现皆是通过单独的时钟翻转来控制,本设计中采用置数的方法来实现。
当需要的时候直接将对应的时钟置为高电平即可,再置为低电平时从一开始的状态显示。
第二章设计流程
当控制开关打开后,主干路和支干路的灯暂时不显示,等待初始化信号。
待信号来临后,两路灯均开始显示。
其中,主干路红灯和支干路绿灯先亮,待主干路红灯显示35秒后,绿灯开始显示,20s后黄灯显示,黄灯显示5s后红灯再一次点亮,如此循环。
支干路绿灯亮了30s后黄灯点亮,5s后红灯点亮,红灯显示25s后绿灯再一次点亮,如此循环。
其流程图如下图2所示:
图2
第三章程序设计说明
3.1程序设计流程图
流程图如图3:
图3
3.2分频模块
通过提供一个60hz的外部时钟wclk,经过分频得到一个1hz的时钟clk。
其程序如下:
always@(posedgewclk)
begin
if(enn)
clk=0;
end
elsebegin
if(dout==29)
clk=~clk;
dout<
=0;
elsedout<
=dout+1;
通过计数器计数,当计数器从零计到29时clk翻转,即clk每0.5秒翻转一次,产生一个周期为1秒的时钟。
3.3特殊功能及清零模块
通过外部赋予高电平将交通灯清零或者实现特殊功能,其程序如下:
always@(posedgeclk)
if(rest)
statea<
=a;
atra<
JT1<
=3'
b000;
elseif(tclk)
b001;
当清零信号rest来临时交通灯全部灭掉,当特殊功能信号为高电平时交通灯黄灯亮,其余全灭。
3.4交通灯运行模块
利用分频得到的1hz时钟clk来控制交通灯的运行,当复位和特殊功能信号均为低电平时,通过en给系统复初值,而后en变为低电平。
此时,当检测到clk上升时钟沿时,交通灯通过状态机的选择实现各个路口红、黄、绿灯的点亮以及计时。
begin
stateb<
=d;
btra<
JT2<
elseif(en)
=8'
b00101001;
elsecase(stateb)
d:
if(btra==0)
begin
btra<
b00000100;
stateb<
=e;
b010;
end
b100;
if(btra[3:
0]==0)
btra[3:
0]<
=4'
b1001;
btra[7:
4]<
=btra[7:
4]-1;
=btra[3:
0]-1;
e:
b00100100;
=f;
f:
endcase
3.5扫描显示模块
用实验箱实现数字的扫描输出显示,SEL0和SEL1为实验箱提供的数码管显示驱动,通过原理图法从外部引一个扫描时钟(本实验用15.6khz),与74161连接控制SEL0和SEL1的分频。
其中,SEL0为2分频而SEL1为4分频,从而在一个扫描周期内SEL0和SEL1的值从00变化到10,再从10变化到00,即数码管逐个循环往复显示输出。
always@(SEL0orSEL1)
case({SEL0,SEL1})
2'
b00:
beginA<
=atra[3:
0];
b01:
=atra[7:
4];
b10:
b11:
endcase
case(A)
4'
b0000:
LED7S<
=7'
b0111111;
b0001:
LED7S<
=7'
b0000110;
b0010:
b1011011;
b0011:
b1001111;
b0100:
b1100110;
b0101:
b1101101;
b0110:
b1111101;
b0111:
b0000111;
b1000:
b1111111;
b1001:
b1101111;
endcase
第四章仿真及调试
4.1调试步骤
1.建立工作库文件夹和编辑设计文件
菜单操作:
file—new,在new窗口中,DeviceDesignFiles—VerilogHDLFile产生.v文件。
在VerilogHDL文本编辑器中输入源程序。
文件存盘:
文件名应该与模块名一致。
2.创建工程
菜单操作:
file—newprojectwizard,根据实验箱提供的器件型号选择目标器件:
EPF10K10LC84-4,创建工程产生.gpf文件。
3.全程编译
Processing—startcompilation或
4.画原理图
(1)用原理图新建顶层文件,并建立工程,file—new—BlockDiagram/SchematicFile。
(2)将jtd.vhd转换成元件符号(元件文件的后缀为.bsf)
(3).新建jtd.vhd文件
(4).File—Create/-Update—CreateSymbolFilesforCurrentFile,fx元件可以在高层次设计中调用
(5)在顶层原理图文件中调用jtd元件,并完成设计。
5.编译
6.时序仿真
7.引脚锁定
Assignments—pins,并连接线。
8.保存并编译
9.配置文件下载
Tools—Programmer或
按
弹出hardwaresetop窗口;
按
弹出addhardware窗口,按
选择下载接口,按
,选中文件*.sof,并使
有效
,按
使文件*.sof下载到目标器件中。
第五章总程序设计
modulejtd(atra,JT1,btra,JT2,en,enn,A,LED7S,clk,wclk,dout,tclk,rest,SEL0,SEL1);
output[7:
0]atra,btra,dout;
outputclk;
output[2:
0]JT1,JT2;
output[6:
0]LED7S;
output[3:
0]A;
inputtclk,rest,wclk,en,enn;
inputSEL0,SEL1;
regclk;
reg[7:
reg[6:
reg[2:
reg[3:
reg[3:
0]statea,stateb;
parametera=4'
b0001,b=4'
b0010,c=4'
b0100,d=4'
b1001,e=4'
b1010,f=4'
b1100;
b00110100;
else
case(statea)
a:
if(atra==0)
atra<
b00011001;
statea<
=b;
if(atra[3:
atra[3:
atra[7:
else
b:
=c;
if(atra[3:
end
c:
always@(SEL0orSEL1)
endmodule
参考文献
[1]Verilog数字系统设计教程北京航空航天大学出版社夏宇同编著
[2]大规模可编程逻辑器件及其应用成都电子科技大学出版社徐志军编著
[3]可编程逻辑器件原理、开发与应用西安电子科技大学出版社赵曙光编著
[4]基于EDA技术的数字频率计芯片化的实现电子科技大学出版社武卫华、陈德宏编著
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通灯 EDA 课程设计