数字电路课程设计交通灯控制FPGA 纯硬件电路综述.docx
《数字电路课程设计交通灯控制FPGA 纯硬件电路综述.docx》由会员分享,可在线阅读,更多相关《数字电路课程设计交通灯控制FPGA 纯硬件电路综述.docx(19页珍藏版)》请在冰豆网上搜索。
![数字电路课程设计交通灯控制FPGA 纯硬件电路综述.docx](https://file1.bdocx.com/fileroot1/2023-7/19/15dc2561-7756-4e47-8c3b-d1592443d814/15dc2561-7756-4e47-8c3b-d1592443d8141.gif)
数字电路课程设计交通灯控制FPGA纯硬件电路综述
数电课内实验报告
课程名称:
数字电子技术基础
项目名称:
交通灯控制(实验箱+CPLD)
学院:
电子信息学院
专业:
电子信息工程
学号:
13061223
学生姓名:
罗飞
完成时间:
2015.6.20
1、实验目的
1、问题重述:
本实验为综合实验。
要求设计一个十字交叉路口的交通灯控制电路,使交通灯符合交通规则,保证路口交通通畅。
任务1:
交通灯控制器设计,设计一个十字交叉路口(分别为A,B通道)的交通灯控制电路。
设A,B通道各有红绿黄三种灯,交通灯显示情况为:
(1)A通道绿灯,B通道红灯;
(2)A通道黄灯,B通道红灯;
(3)A通道红灯,B通道绿灯;
(4)A通道红灯,B通道黄灯。
要求交通灯自动显示:
(1)—>
(2)—>(3)—>(4),其中
(1),(3)持续20秒,
(2),(4)持续4秒。
任务2:
设A,B通道各有红绿(包括直行和右转G1,左转G2)黄四种灯,交通灯显示情况为:
(1)A通道绿灯,G1持续20秒,然后G2持续20秒,B通道红灯,共40秒;
(2)A通道黄灯闪烁,闪烁频率1Hz,B通道红灯,共4秒;
(3)A通道红灯,B通道绿灯,G1持续20秒,然后G2持续20秒,共40秒;
(4)A通道红灯,B通道黄灯闪烁,闪烁频率1Hz。
要求交通灯自动显示:
(1)—>
(2)—>(3)—>(4),并且A,B通道有数码管进行倒计时计数。
提示:
数码管倒计时可以采用LPM参数库里面的计数器,也可以采用一般计数器结构模型。
2、问题剖析:
在这个实验中,分为两个任务:
按照任务要求实时控制A,B通道的红黄绿三种交通灯的亮灭;用数码管对AB通道进行倒计时计数。
二、项目构思
任务一:
其中,AG为A通道绿灯,AY为A通道黄灯,AR为A通道红灯,BG为B通道绿灯,BY为B通道黄灯,BR为B通道红灯。
①,采用DFF实现周期为1秒的时钟信号变成4秒的时钟分频电路。
②,采用74LS290或74LS160(注:
可以多块芯片)计数器实现计数分频电路(输入信号为CLK4S,输出为Y1和Y2)。
其中CLK4S,Y1,Y2的波形如下:
③,根据Y1和Y2信号及其A,B通道各个指示灯的时序,采用与非门实现AG,AY,AR,BG,BY,BR。
假设每个指示灯都为高电平时才亮。
④,A,B通道的黄灯应有闪烁功能,闪烁频率1Hz。
修改AY,BY的电路。
任务二:
方案一:
使用case语句实现
分为三个倒计时计数模块,模分别为24,20,4,在从中提取个位,十位信号输出数码管显示。
方案二:
使用74LS192逆序计数芯片实现
运用74192芯片搭建预置数分别为9,3,3的逆序计数(实际计数中对应的模分别为20,4,24)采用低电平置数LDN信号在计数到0时进行置数进入下一倒计时环节。
2、方案设计与仿真结果
1.系统简介:
该系统运用74LS161,74LS192等数字电路基本计数器芯片和quartusII软件的verilog语句设计了一个十字交叉路口的交通灯控制电路,并且对A,B通道有数码管进行倒计时计数。
2.各模块具体设计:
任务一:
①采用DFF实现周期为1秒的时钟信号变成4秒的时钟分频电路。
仿真结果:
②采用4LS161计数器实现计数分频电路(输入信号为CLK4S,输出为Y1和Y2)。
I.输出信号Y1电路原理图:
II.输出信号Y2电路原理图:
仿真结果:
③,根据Y1和Y2信号及其A,B通道各个指示灯的时序,采用与非门实现AG,AY,AR,BG,BY,BR。
假设每个指示灯都为高电平时才亮。
AG=Y1’Y2’AY=Y1Y2’AR=Y2
BG=Y1’Y2BY=Y1Y2BR=Y2’
实验原理图:
其中,黄灯闪烁是通过1s时钟信号和结果实现与运算的方法得到。
仿真结果:
任务二:
方案一:
case语句实现
通过两级宏模块实现:
1.顶层电路:
2.交通灯倒计时A通道模块
其中,DAOJISHI模块源程序为:
moduleDAOJISHI(A,Reg);
input[7:
0]A;
output[7:
0]Reg;
reg[7:
0]Reg;
always@(A,Reg)
case(A)
8'B01000101:
Reg<=8'B01000100;
8'B01000100:
Reg<=8'B01000011;
8'B01000011:
Reg<=8'B01000010;
8'B01000010:
Reg<=8'B00100000;
8'B00100000:
Reg<=8'B00011001;
8'B00011001:
Reg<=8'B00011000;
8'B00011000:
Reg<=8'B00010111;
8'B00010111:
Reg<=8'B00010110;
8'B00010110:
Reg<=8'B00010101;
8'B00010101:
Reg<=8'B00010100;
8'B00010100:
Reg<=8'B00010011;
8'B00010011:
Reg<=8'B00010010;
8'B00010010:
Reg<=8'B00010001;
8'B00010001:
Reg<=8'B00010000;
8'B00010000:
Reg<=8'B00001001;
8'B00001001:
Reg<=8'B00001000;
8'B00001000:
Reg<=8'B00000111;
8'B00000111:
Reg<=8'B00000110;
8'B00000110:
Reg<=8'B00000101;
8'B00000101:
Reg<=8'B00000100;
8'B00000100:
Reg<=8'B00000011;
8'B00000011:
Reg<=8'B00000010;
8'B00000010:
Reg<=8'B00000001;
8'B00000001:
Reg<=8'B11000100;
8'B11000100:
Reg<=8'B11000011;
8'B11000011:
Reg<=8'B11000010;
8'B11000010:
Reg<=8'B11000001;
8'B11000001:
Reg<=8'B10100100;
8'B10100100:
Reg<=8'B10100011;
8'B10100011:
Reg<=8'B10100010;
8'B10100010:
Reg<=8'B10100001;
8'B10100001:
Reg<=8'B10100000;
8'B10100000:
Reg<=8'B10011001;
8'B10011001:
Reg<=8'B10011000;
8'B10011000:
Reg<=8'B10010111;
8'B10010111:
Reg<=8'B10010110;
8'B10010110:
Reg<=8'B10010101;
8'B10010101:
Reg<=8'B10010100;
8'B10010100:
Reg<=8'B10010011;
8'B10010011:
Reg<=8'B10010010;
8'B10010010:
Reg<=8'B10010001;
8'B10010001:
Reg<=8'B10010000;
8'B10010000:
Reg<=8'B10001001;
8'B10001001:
Reg<=8'B10001000;
8'B10001000:
Reg<=8'B10000111;
8'B10000111:
Reg<=8'B10000110;
8'B10000110:
Reg<=8'B10000101;
8'B10000101:
Reg<=8'B10000100;
8'B10000100:
Reg<=8'B10000011;
8'B10000011:
Reg<=8'B10000010;
8'B10000010:
Reg<=8'B10000001;
8'B10000001:
Reg<=8'B00100000;
defaultReg<=8'B01000101;
endcase
endmodule
注:
其中A[7],A[6]位用来表示的交通灯的颜色,A[5..0]用来表示交通灯的倒计时显示数值B,作为系统的输出,其中A[5,4]输出十位数码管,A[3..0]输出个位数码管。
A[7]
A[6]
交通灯
0
0
AG
1
1
AY
1
0
AR
A[5..0]状态图为:
1
···
4
1
···
19
20
23
24
···
1
DFF8的电路图为:
3.交通灯倒计时B通道模块
原理图:
DAOJISHIB源程序:
moduleDAOJISHIB(B,RegB);
input[7:
0]B;
output[7:
0]RegB;
reg[7:
0]RegB;
always@(B,RegB)
case(B)
8'B01000101:
RegB<=8'B01000100;
8'B01000100:
RegB<=8'B01000011;
8'B01000011:
RegB<=8'B01000010;
8'B01000010:
RegB<=8'B10100100;
8'B10100100:
RegB<=8'B10100011;
8'B10100011:
RegB<=8'B10100010;
8'B10100010:
RegB<=8'B10100001;
8'B10100001:
RegB<=8'B10100000;
8'B10100000:
RegB<=8'B10011001;
8'B10011001:
RegB<=8'B10011000;
8'B10011000:
RegB<=8'B10010111;
8'B10010111:
RegB<=8'B10010110;
8'B10010110:
RegB<=8'B10010101;
8'B10010101:
RegB<=8'B10010100;
8'B10010100:
RegB<=8'B10010011;
8'B10010011:
RegB<=8'B10010010;
8'B10010010:
RegB<=8'B10010001;
8'B10010001:
RegB<=8'B10010000;
8'B10010000:
RegB<=8'B10001001;
8'B10001001:
RegB<=8'B10001000;
8'B10001000:
RegB<=8'B10000111;
8'B10000111:
RegB<=8'B10000110;
8'B10000110:
RegB<=8'B10000101;
8'B10000101:
RegB<=8'B10000100;
8'B10000100:
RegB<=8'B10000011;
8'B10000011:
RegB<=8'B10000010;
8'B10000010:
RegB<=8'B10000001;
8'B10000001:
RegB<=8'B00100000;
8'B00100000:
RegB<=8'B00011001;
8'B00011001:
RegB<=8'B00011000;
8'B00011000:
RegB<=8'B00010111;
8'B00010111:
RegB<=8'B00010110;
8'B00010110:
RegB<=8'B00010101;
8'B00010101:
RegB<=8'B00010100;
8'B00010100:
RegB<=8'B00010011;
8'B00010011:
RegB<=8'B00010010;
8'B00010010:
RegB<=8'B00010001;
8'B00010001:
RegB<=8'B00010000;
8'B00010000:
RegB<=8'B00001001;
8'B00001001:
RegB<=8'B00001000;
8'B00001000:
RegB<=8'B00000111;
8'B00000111:
RegB<=8'B00000110;
8'B00000110:
RegB<=8'B00000101;
8'B00000101:
RegB<=8'B00000100;
8'B00000100:
RegB<=8'B00000011;
8'B00000011:
RegB<=8'B00000010;
8'B00000010:
RegB<=8'B00000001;
8'B00000001:
RegB<=8'B11000100;
8'B11000100:
RegB<=8'B11000011;
8'B11000011:
RegB<=8'B11000010;
8'B11000010:
RegB<=8'B11000001;
8'B11000001:
RegB<=8'B10100100;
defaultRegB<=8'B01000101;
endcase
endmodule
状态转移图:
注:
其中B[7],B[6]位用来表示的交通灯的颜色,B[5..0]用来表示交通灯的倒计时显示数值B,作为系统的输出,其中B[5,4]输出十位数码管,B[3..0]输出个位数码管。
B[7]
B[6]
交通灯
0
0
BG
1
1
BY
1
0
BR
B[5..0]状态图为:
1
···
20
1
···
13
24
3
4
···
1
仿真结果:
其中,A1表示A通道十位数码管显示数值
A2表示A通道个位数码管显示数值
B1表示B通道十位数码管显示数值
B2表示B通道个位数码管显示数值
方案二:
在方案二中完全采用中规模数字电路器件,实现交通灯的倒计时显示,运用到74LS192逆序计数芯片。
电路设计:
A通道个位用一块74LS192实现模分别为20,4,24的逆序计数的计数器,用LDN脉冲序列作为置数信号每隔20,4,24秒产生一个低电平脉冲选通置数。
LDN选通置数信号产生电路(模为48的计数器):
个位显示仿真结果如下:
十位显示思路同个位,从略。
B通道逆序计数的模为24=>20=>4,原理同A,从略。
3、实验结果分析
任务一中,按照要求实现了十字交叉路口A,B两个通道的交通灯控制显示。
A通道绿灯持续亮20秒,然后黄灯闪烁4秒,然后红灯亮持续24秒。
B通道红灯持续亮24秒,然后绿灯持续亮20秒,然后黄灯闪烁4秒。
任务二中,方案一中通过verilog组建倒计时宏模块的方法实现了A,B两个通道的交通灯倒计时显示功能,并在数电实验箱和CPLD板上得到实现。
方案二采用74ls192逆序计数芯片实现。
A通道倒计时显示:
20—>···1—>4—>···—>1—>24—>···—>1
B通道倒计时显示:
24—>···1—>20—>···—>1—>4—>···—>1