交通灯控制电路Word文档格式.docx
- 文档编号:18485189
- 上传时间:2022-12-17
- 格式:DOCX
- 页数:11
- 大小:187.48KB
交通灯控制电路Word文档格式.docx
《交通灯控制电路Word文档格式.docx》由会员分享,可在线阅读,更多相关《交通灯控制电路Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
四﹑硬件电路设计
(1)分频器
分频器实现的是将高频时钟信号转换成底频的时钟信号,用于触发控制器、计数器和扫描显示电路。
该分频器实现的是一千分频,将一千赫兹的时钟信号分频成一赫兹的时钟信号。
(2)控制器设计
控制器的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段数码管的分位译码电路。
此外,当检测到特殊情况(HOLD=‘1’)发生时,无条件点亮红灯的二极管。
本控制器可以有两种设计方法,一种是利用时钟沿的下降沿读取前级计数器的计数值,然后作出反应;
另一种则是将本模块设计成纯组合逻辑电路,不需要时钟驱动。
这两种方法各有所长,必须根据所用器件的特性进行选择:
比如有些FPGA有丰富的寄存器资源,而且可用与组合逻辑的资源则相对较少,那么使用第一种方法会比较节省资源;
而有些CPLD的组合逻辑资源则比较多,用第二种方法可能更好。
(3)计数器设计
这里需要的计数器的计数范围为0-90。
计到90后,下一个时钟沿回复到0,开始下一轮计数。
此外,当检测到特殊情况(HOLD=‘1’)发生是,计数器暂停计数,而系统复位信号RESET则使计数器异步清零。
(4)分位译码电路设计--1
因为控制器输出的到计时数值可能是1位或者2位十进制数,所以在七段数码管的译码电路前要加上分位电路(即将其分为2个1位的十进制数,如25分为2和5,7分为0和7)。
与控制器一样,分位电路同样可以由时钟驱动,也可以设计成纯组合逻辑电路。
控制器中,引入了寄存器。
为了让读者开拓眼界,分位电路就用组合逻辑电路实现。
(6)数码管驱动设计
串行连接,即每个数码管对应的引脚都接在一起(如每个数码管的a引脚都接到一起,然后再接到CPLD/FPGA上的一个引脚上),通过控制公共端为高电平控制相应数码管的亮、灭(共阴极数码管的公共端为高电平时,LED不亮;
共阳极的公共端为低电平时,LED不亮)。
串行法的优点在于消耗的系统资源少,占用的I/O口少,N个数码管只需要(7+N)个引脚(如果需要小数点,则是(8+N)个引脚)。
其缺点是控制起来不如并行法容易。
(7)下图为交通灯控制器的顶层文件连接图
(八)下图为仿真波形图
五、程序设计
(1)分频器的设计
LIBRARYIEEE;
USEIEEE.Std_Logic_1164.ALL;
ENTITYFreDeviderIS
PORT
(Clkin:
INStd_Logic;
Clkout:
OUTStd_Logic);
END;
ARCHITECTUREDeviderOFFreDeviderIS
CONSTANTN:
Integer:
=499;
signalcounter:
Integerrange0toN;
signalClk:
Std_Logic;
BEGIN
PROCESS(Clkin)
begin
IFrising_edge(Clkin)THEN
IFCounter=Nthen
counter<
=0;
Clk<
=notclk;
else
=counter+1;
endif;
endprocess;
clkout<
=clk;
end;
(2)控制设计
控制器的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段译管的分译码电路。
此外,当检测到特殊情况(Hold=‘1’)发生时,无条件点亮红色的发光二极管。
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYcountrollerIS
PORT(Clock:
INSTD_LOGIC;
Hold:
instd_logic;
CountNum:
inINTEGERRANGE0TO49;
NumA,NumB:
outINTEGERRANGE0TO25;
RedA,GreenA,YellowA:
outstd_logic;
RedB,GreenB,YellowB:
outstd_logic);
ARCHITECTUREbehaviorOFCountrollerIS
BEGIN
process(Clock)
IFfalling_edge(Clock)THEN
IFHold='
1'
THEN
RedA<
='
;
RedB<
GreenA<
0'
YellowA<
YellowB<
ELSIFCountNum<
=19THEN
NumA<
=20-CountNum;
YellowA<
ELSIFCountNum<
=24THEN
=25-CountNum;
YellowA<
ELSE
=50-CountNum;
ENDIF;
IFCountNum<
NumB<
GreenB<
=44THEN
45-CountNum;
RedB<
ELSE
RedB<
GreenB<
ENDPROCESS;
(3)计数器的设计
这里计数器的计数范围为0—45S。
计到45后,下一个时钟沿回复到0,开始下一轮计数.此外,当检测到特殊情况(Hold=‘1‘)发生时,计数器暂停计数,而系统复位号Reset则使计数器异步清0。
程序如下:
ENTITYcounterIS
PORT(clock:
reset:
countNum:
BuFFeRINTEGERRANGE0TO50);
ARCHITECTUREbehaviorOFcounterIS
process(reset,Clock)
IFReset='
countNum<
ELSIFrising_edge(Clock)THEN
then
=countNum;
ELSIFcountNum=50THEN
=countNum+1;
ENTITYFenweiIS
(Numin:
INintegerRANGE0TO25;
NumA,NumB:
OUTIntegerRANGE0to9);
ARCHITECTUREbehaviorOFFenweiIS
process(Numin)
IFNumin>
=20THEN
NumA<
=2;
NumB<
=Numin-20;
ELSIFNumin>
=10THEN
=1;
=Numin-10;
ELSENumA<
=Numin;
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYliangxieliangIS
PORT(A:
INSTD_LOGIC_VECTOR(3DOWNTO0);
LED7S:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
END;
ARCHITECTUREoneOFliangxieliangIS
PROCESS(A)
BEGIN
CASEA(3DOWNTO0)IS
WHEN"
0000"
=>
LED7S<
="
1000000"
;
0001"
1111001"
0010"
0100100"
0011"
0110000"
0100"
0011001"
0101"
0010010"
0110"
0000010"
0111"
1111000"
1000"
0000000"
1001"
0010000"
1010"
0001000"
1011"
0000011"
1100"
1000110"
1101"
0100001"
1110"
0000110"
1111"
0001110"
WHENOTHERS=>
NULL;
ENDCASE;
ENDPROCESS;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通灯 控制电路