带闯红灯抓拍的PLC交通灯控制系统课程设计正文.docx
- 文档编号:25341203
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:22
- 大小:971.03KB
带闯红灯抓拍的PLC交通灯控制系统课程设计正文.docx
《带闯红灯抓拍的PLC交通灯控制系统课程设计正文.docx》由会员分享,可在线阅读,更多相关《带闯红灯抓拍的PLC交通灯控制系统课程设计正文.docx(22页珍藏版)》请在冰豆网上搜索。
带闯红灯抓拍的PLC交通灯控制系统课程设计正文
第1章摘要
本次EDA课程设计,我设计的是16路数显示报警器,基于设计要求,本文从verilogHDL语言入手。
首先简单介绍一下EDA,VHDL等的有关知识,其次介绍了一下设计要求和整体设计思想,随后我对所使用的程序模块功能进行了介绍,再运用VHDL语言写出程序代码,还附上各个模块的仿真波形图,最后是此次设计的心得体会和参考资料。
第2章引言
数字电路主要是基于两个信号,用数字信号完成对数字量进行算术运算和逻辑运算的电路我们称之为数字电路,它具有逻辑运算和逻辑处理等功能,数字电路可以分为组合逻辑电路和时序逻辑电路。
EDA简介
20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。
在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。
这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。
这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。
EDA是电子设计自动化(ElectronicDesignAutomation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可行性,减轻了设计者的劳动强度。
VerilogHDL简介
VerilogHDL是一种硬件描述语言(HDL:
HardwareDiscriptionLanguage),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。
VerilogHDL有如下特点:
1)能够在不同的抽象层次上,如系统级、行为级、RTL级、门级和开关级,对设计系统进行精确而简练的描述。
2)能够在每个抽象层次的描述上对设计进行仿真验证,及时发现可能存在的错误,缩短设计周期,并保存整个设计过程的正确性。
3)由于代码描述与工艺过程实现无关,便于设计标准化,提高设计的可重用性。
如果有C语言的基础,只需很短时间就能学会和掌握VerilogHDL语言,因此,VerilogHDL语言可以作为学习HDL设计方法的入门和基础。
第3章设计说明
3.1设计要求
(1)设计16路数显报警器,用16个拨码开关控制16路16路中某一断开时(可用高低电平表示断开和接通),产生报警信号。
(2)当多路报警时,具有优先级,并降低优先级的报警存储,处理完成(手动拨为0),高优先级报警后,再处理之。
(3)在动态数码管上显示断路编号。
(4)报警时间持续11秒,用蜂鸣器发出蜂鸣,显示方式为响1s停1s
(5)在双色点阵上显示图形,没有断开时,双色点阵显示“O”,有断开时显示“×”。
3.2设计思路
本设计是一个具有优先级的定时报警系统,为达成目标需要设计四个子模块:
信号输入模块,动态数码管显示模块,双色点着显示模块,蜂鸣器报警模块。
然后用一个顶
层模块将其调用完成程序的编译。
若出现断路,信号输入模块对输入信号做出响应,并对断路输出信号进行编码,优先级最高的断路信号编码经过7段译码后送入动态数码管显示输出断路编号,与此同时报警信号被传给双色点阵模块和蜂鸣报警模块。
双色点阵显示“O”,蜂鸣器发出蜂鸣报警。
若无断路,即无开关输入,信号输入模块不产生报警信号。
动态数码管不显示数字,双色点阵显示“×”,蜂鸣器不发出蜂鸣。
实验现象举例:
(1)不报警
(2)报警
3.3模块介绍
(1)信号输入模块
此模块共有16个拨码开关作为输入信号,用S[0]-S[15]表示,当开关无输入时,都处于低电平状态,当有断路则输入高电平,产生一个四位二进制编码输出,用A表示,经过七段译码作为动态数码管显示模块的输入信号。
同时ENA为高电平作为报警信号,作为蜂鸣器模块和双色点阵的报警鉴别信号。
(2)动态数码管显示模块
动态数码管显示模块共有三个输入信号A,ENA和CLK1。
A和ENA是信号输入模块的输出的A和ENA作为动态数码管显示模块的输入,A为断路编码信号,设为A[3:
0],ENA为报警信号。
CLK作为扫描数码管的频率信号,采用750KHZ的高频信号。
动态数码管显示模块有两个输出,一是位选信号SS[2:
0],用来选择第几位数码管工作,当SS2,SS1,SS0为000时选中1管,为001时,选中2管,时钟信号交替的选中1,2两个管子,;二是将短路编码信号译码成动态数码管的七段显示信号(COUT0—COUT6),用来显示优先级最高的断路编号。
(3)双色点阵显示模块
双色点阵显示模块有两个输入信号,报警信号ENA和频率信号CLK1,当信号输入模块对输入做出响应产生或不产生报警信号,双色点阵会显示相应图形。
CLK1的作用也是高频扫描,让人看上去图形静止不动。
ROW、RA、GA为点阵行列的输出,都为8位。
当有报警信号时,双色点阵显示红色“×”,没有报警信号时显示绿色“O”。
(4)蜂鸣器报警模块
蜂鸣器报警模块共有两个输入信号ENA和CLK2,一个输出信号F。
CLK为低频1HZ,用于蜂鸣器计时。
当从信号输入模块检测到有开关输入时,ENA信号以置1,CLK上升沿来临时,程序将F置1,蜂鸣器发出报警信号,下一个CLK2来临时,程序将F置1,并且进入一个11秒的循环周期,时间到达后,跳出循环,蜂鸣器停止报警。
(4)顶层模块
顶层模块的作用是将各个模块组合到一起,从而实现最终的功能。
其输入极为总的输入(不考虑中间量),三个时钟信号,还有16个拨码开关的输入,其输出为数码管显示,双色点阵显示和蜂鸣报警器
第4章 真值表
1、七段译码真值表
输入
000
001
0000
011111
0000110
0001
111111
1011011
0010
111111
1001111
0011
111111
1100110
0100
111111
1101101
0101
111111
1111101
0110
111111
0000111
0111
111111
1111111
1000
111111
1101111
1001
000011
0111111
1010
0000110
0000110
1011
0000110
1011011
1100
0000110
1001111
1101
0000110
1100110
1110
0000110
1101101
1111
0000110
1111101
2、双色点阵真值表:
(1)显示“×”真值表
case
ROW1ROW2ROW3ROW4
ROW5ROW6ROW7ROW8
R1R2R3R4
R5R6R7R8
G1G2G3G4
G5G6G7G8
0
11111101
01000100
00000000
1
11111011
00101000
00000000
2
11110111
00010000
00000000
3
11101111
00101000
00000000
4
11011111
01000100
00000000
(2)显示“O”真值表
case
ROW1ROW2ROW3ROW4
ROW5ROW6ROW7ROW8
G1G2G3G4
G5G6G7G8
R1R2R3R4
R5R6R7R8
0
11111101
00111000
00000000
1
11111011
01000100
00000000
2
11110111
01000100
00000000
3
11101111
01000100
00000000
4
11011111
00111000
00000000
3、蜂鸣器真值表
t
0001
0010
0011
0100
0101
0110
0100
1000
1001
1010
1011
...
F
1
0
1
0
1
0
1
0
1
0
1
...
第5章VerilongHDL设计源程序
1.信号输入模块
modulein(S,ENA,A);//ENA作为蜂鸣器和双色点阵报警信号信号。
input[15:
0]S;
outputENA;
output[3:
0]A;//四位二进制输出信号,作为动态显示模块的输入信号。
regENA;
reg[3:
0]A;
always@(S)
begin
if(S[15])beginA='b1111;ENA=1;end//有报警则ENA输出高电平,A输出对应的标号
elseif(S[14])beginA='b1110;ENA=1;end
elseif(S[13])beginA='b1101;ENA=1;end
elseif(S[12])beginA='b1100;ENA=1;end
elseif(S[11])beginA='b1011;ENA=1;end
elseif(S[10])beginA='b1010;ENA=1;end
elseif(S[9])beginA='b1001;ENA=1;end
elseif(S[8])beginA='b1000;ENA=1;end
elseif(S[7])beginA='b0111;ENA=1;end
elseif(S[6])beginA='b0110;ENA=1;end
elseif(S[5])beginA='b0101;ENA=1;end
elseif(S[4])beginA='b0100;ENA=1;end
elseif(S[3])beginA='b0011;ENA=1;end
elseif(S[2])beginA='b0010;ENA=1;end
elseif(S[1])beginA='b0001;ENA=1;end
elseif(S[0])beginA='b0000;ENA=1;end
elsebeginA='b0000;ENA=0;end//无报警则ENA输出低电平,A输出高阻状
态
end
endmodule
2)动态数码管显示模块:
moduleshumaguan(A,ENA,CLK1,COUT,SS);
input[3:
0]A;
inputCLK1;//CLK扫描数码管频率信号。
inputENA;
output[6:
0]COUT;
output[2:
0]SS;
reg[6:
0]COUT;
regM;
reg[2:
0]SS;
always@(posedgeCLK1)/
begin
M=~M;
if(ENA==1)
begin
if(M=='b0)
begin
SS='b001;
case(A)
'b0000:
COUT='b0000110;
'b0001:
COUT='b1011011;
'b0010:
COUT='b1001111;
'b0011:
COUT='b1100110;
'b0100:
COUT='b1101101;
'b0101:
COUT='b1111101;
'b0110:
COUT='b0000111;
'b0111:
COUT='b1111111;
'b1000:
COUT='b1101111;
'b1001:
COUT='b0111111;
'b1010:
COUT='b0000110;
'b1011:
COUT='b1011011;
'b1100:
COUT='b1001111;
'b1101:
COUT='b1100110;
'b1110:
COUT='b1101101;
'b1111:
COUT='b1111101;
endcase
end
elseif(M=='b1)
begin
SS='b000;
case(A)
4'b0000:
COUT='b0111111;
4'b0001:
COUT='b0111111;
4'b0010:
COUT='b0111111;
4'b0011:
COUT='b0111111;
4'b0100:
COUT='b0111111;
4'b0101:
COUT='b0111111;
4'b0110:
COUT='b0111111;
4'b0111:
COUT='b0111111;
4'b1000:
COUT='b0111111;
4'b1001:
COUT='b0000110;
4'b1010:
COUT='b0000110;
4'b1011:
COUT='b0000110;
4'b1100:
COUT='b0000110;
4'b1101:
COUT='b0000110;
4'b1110:
COUT='b0000110;
4'b1111:
COUT='b0000110;
endcase
end
end
else
COUT='b0000000;
end
endmodule
3、双色点阵显示模块
moduledianzhen(CLK1,ENA,ROW,RA,GA);
inputCLK1,ENA;
outputROW,RA,GA;
reg[7:
0]ROW;
reg[7:
0]RA;
reg[7:
0]GA;
reg[2:
0]i;
always@(posedgeCLK1)
begin
i=i+1;//当遇到CLK1上升沿时,i自加,当大于4时为0,实现循环
if(i>4)i=0;
if(ENA==0)
beginRA='b00000000;
case(i)
0:
beginROW='b11111101;GA='b00111000;end//通过i的循环,显示出字母o
1:
beginROW='b11111011;GA='b01000100;end
2:
beginROW='b11110111;GA='b01000100;end
3:
beginROW='b11101111;GA='b01000100;end
4:
beginROW='b11011111;GA='b00111000;end
endcase
end
elseif(ENA==1)
beginGA='b00000000;
case(i)
0:
beginROW='b11111101;RA='b01000100;end//通过i的循环,显示出字母x
1:
beginROW='b11111011;RA='b00101000;end
2:
beginROW='b11110111;RA='b00010000;end
3:
beginROW='b11101111;RA='b00101000;end
4:
beginROW='b11011111;RA='b01000100;end
endcase
end
end
endmodule
4、蜂鸣器报警模块
modulefengmingqi(CLK2,ENA,F);
inputCLK2,ENA;
outputF;
regF;
reg[3:
0]t;
always@(posedgeCLK2)
begin
if(ENA)
begin
if(t<4'b1011)
begin
F=~F;
t=t+1;
end
else
begin
F=0;
t=4'b1111;
end
end
else
begin
t=4'b0000;
F=0;
end
end
endmodule
5、顶层模块
moduledingceng(S,CLK1,COUT,SS,,ROW,RA,GA,CLK2,F);
input[15:
0]S;
inputCLK1,CLK2;
output[6:
0]COUT;
output[2:
0]SS;
output[7:
0]ROW;
output[7:
0]RA;
output[7:
0]GA;
outputF;
wire[3:
0]W1;
wireW2;
inu1(.S(S),.ENA(W2),.A(W1[3:
0]));
shumaguanu2(.A(W1[3:
0]),.CLK1(CLK1),.ENA(W2),.COUT(COUT),.SS(SS));
dianzhenu3(.CLK1(CLK1),.ENA(W2),.ROW(ROW),.RA(RA),.GA(GA));
fengmingqiu4(.CLK2(CLK2),.ENA(W2),.F(F));
endmodule
第6章波形仿真
1、输入模块仿真波形
2.数码显示模块仿真波形
3、双色点阵显示模块仿真波形
4、蜂鸣器报警模块仿真波形
5、顶层模块仿真波形
第7章管脚锁定及硬件连接
1、管脚锁定
Clk1>;inputpin=74
Clk2>inputpin=8
COUT0>outputpin=111
COUT1>outputpin=112
COUT2>outputpin=113
COUT3>outputpin=114
COUT4>outputpin=115
COUT5>outputpin=116
COUT6>outputpin=117
S[0]>inputpin=39
S[1]>inputpin=40
S[2]>inputpin=41
S[3]>inputpin=44
S[4]>inputpin=45
S[5]>inputpin=46
S[6]>inputpin=47
S[7]>inputpin=53
S[8]>inputpin=68
S[9]>inputpin=69
S[10]>inputpin=70
S[11]>inputpin=71
S[12]>inputpin=73
S[13]>inputpin=74
S[14]>inputpin=170
S[15]>inputpin=172
SS0>outputpin=122
SS1>outputpin=125
SS2>outputpin=126
ROW0>outputpin=190
ROW1>outputpin=191
ROW2>outputpin=192
ROW3>outputpin=193
ROW4>outputpin=195
ROW5>outputpin=196
ROW6>outputpin=197
ROW7>outputpin=198
RA0>outputpin=173
RA1>outputpin=174
RA2>outputpin=175
RA3>outputpin=176
RA4>outputpin=177
RA5>outputpin=179
RA6>outputpin=187
RA7>outputpin=189
GA0>outputpin=85
GA1>outputpin=86
GA2>outputpin=87
GA3>outputpin=88
GA4>outputpin=89
GA5>outputpin=90
GA6>outputpin=92
GA7>outputpin=94
F>outputpin=38
2、硬件连接
Pin=190连接双色点阵ROW1
Pin=191连接双色点阵ROW2
Pin=192连接双色点阵ROW3
Pin=193连接双色点阵ROW4
Pin=195连接双色点阵ROW5
Pin=196连接双色点阵ROW6
Pin=197连接双色点阵ROW7
Pin=198连接双色点阵ROW8
Pin=173连接双色点阵RA1
Pin=174连接双色点阵RA2
Pin=175连接双色点阵RA3
Pin=176连接双色点阵RA4
Pin=177连接双色点阵RA5
Pin=179连接双色点阵RA6
Pin=187连接双色点阵RA7
Pin=189连接双色点阵RA8
Pin=85连接双色点阵GA1
Pin=96连接双色点阵GA2
Pin=87连接双色点阵GA3
Pin=88连接双色点阵GA4
Pin=89连接双色点阵GA5
Pin=90连接双色点阵GA6
Pin=92连接双色点阵GA7
Pin=93连接双色点阵GA8
PIN172->SW1PIN170->SW15;
PIN74->SW14PIN73->SW13;
PIN71->SW12PIN70->SW11;
PIN69->SW10PIN68->SW9;
PIN189->CLOCK信号引脚21PIN187->CLOCK信号引脚15
PIN119->动态数码管段位引线G;PIN116->动态数码管段位引线F;
PIN115->动态数码管段位引线E;PIN114->动态数码管段位引线D;
PIN113->动态数码管段位引线C;PIN112->动态数码管段位引线B;
PIN111->动态数码管段位引线A;PIN122->动态数码管位选信号ss0;
PIN125->动态数码管位选信号ss1;PIN136->动态数码管位选信号ss2;
第8章心得体会
这次EDA课程设计让我收益匪浅,在这之前,我并没有学习过EDA,甚至对EDA这个名词都感觉很陌生。
这次EDA课程设计使我有以下收获:
1)使我对原本在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 闯红灯 抓拍 PLC 交通灯 控制系统 课程设计 正文