交通灯控制电路数电课程设计.docx
《交通灯控制电路数电课程设计.docx》由会员分享,可在线阅读,更多相关《交通灯控制电路数电课程设计.docx(20页珍藏版)》请在冰点文库上搜索。
![交通灯控制电路数电课程设计.docx](https://file1.bingdoc.com/fileroot1/2023-5/27/e3065148-801e-4e02-9d1c-ab6ef299bfa0/e3065148-801e-4e02-9d1c-ab6ef299bfa01.gif)
交通灯控制电路数电课程设计
第一章设计指标……………………………………....2
设计指标……………………………………………………………
第二章系统概述……………………………………..
2.1设计思想…………………………………………………………..
2.2可行性论证…………………………………………….
2.3各功能的组成………………………………………………………
2.4总体工作过程………………………………………………………
第三章单元电路设计与分析……………………………
3.1各单元电路的选择………………………………………………
3.2设计及工作原理分析………………………………………………
第四章电路的组构与调试…………………………………...
4.1遇到的主要问题…………………………………………………..
4.2现象记录及原因分析…………………………………………….
4.3解决措施及效果…………………………………………………
4.4功能的测试方法、步骤、设备、记录的数据……………………
第五章结束语……………………………………………………
5.1对设计题目的结论性意见及进一步改进的意向说明…………..
5.2总结设计的收获与体会………………………………………….
附图(电路总图)………………………………………………………
参考文献……………………………………………………………
第一章设计指标:
时序逻辑电路具有记忆功能,含有有限状态的时序电路被称为“状态机”,其特点是电路状态按一定的规律周期性循环变化。
交通灯控制电路是一个典型的有限状态机控制电路,交通干路道口的红、绿、黄三色灯根据不同的控制要求有规律周期性亮灭变化,各灯的亮灭持续时间也因干道的繁忙程度有所不相同。
所以交通灯控制电路必须对状态变化规律和状态持续。
设计一个十字路口交通灯控制电路,要求东西、南北两条干道的红、绿、黄三色的交通灯按如下表的要求循环变化,并以倒计时的方式指示干道通行(或禁行)的维持时间。
设计的控制部分以FPGA实现,用6个发光二极管模拟东西、南北两个方向的红、绿、黄交通灯。
用2个七段数码显示器显示干道的通行(禁行)时间。
表一交通灯控制要求
东西(I)
绿灯亮
绿灯闪
黄灯亮
红灯亮
红、黄灯亮
南北(J)
红灯亮
红、黄灯亮
绿灯亮
绿灯闪
黄灯亮
时间/s
16
3
3
10
3
3
附加实验:
在原有基本实验的基础上,增加东西转弯、南北转弯的红、绿、黄三色的交通灯,其逻辑如下表所示,按照下表的要求循环变化。
设计的控制部分以FPGA实现,用12个发光二极管模拟东西、南北、东西转弯、南北转弯的红、绿、黄交通灯。
用2个七段数码显示器显示干道的通行(禁行)时间。
表二转弯灯控制要求
东西(I)
绿灯亮
绿灯闪
黄灯亮
绿转弯灯亮
黄转弯灯亮
红灯亮
红黄灯亮
红灯亮
红灯亮
南北(J)
红灯亮
红黄灯亮
红灯亮
红灯亮
绿灯亮
绿灯闪
黄灯亮
绿转弯灯亮
黄转弯灯亮
时间/s
16
3
3
7
3
10
3
3
7
3
第二章系统概述
2.1设计思想
基于FPGA的交通灯系统控制设计包括4大模块,分别为脉冲发生、状态定时、交通灯闪烁的控制、闪烁时间的控制,基本原理如图1所示。
2.2可行性论证
该设计的交通灯控制分为6个状态。
由于各状态持续时间不同,所以电路的核心控制部分是状态机和定时器,状态机在定时器触发下周期性循环,状态码控制6个灯以一定的规律变化。
变化情况如图2所示。
系统脉冲由FPGA开发板晶振经过分频电路实现。
状态定时由74190可逆十进制计数器和T’触发器实现,只要置数合理,翻转信号到位,就可以使电路在东西(I)、南北(J)两个控制状态间翻转。
红、黄、绿灯的闪烁由7485数字比较器和组合逻辑控制,其中7485数字比较器用于比较计数器当前持续状态和所需要的状态全部时间,并做出相应的变化。
组合逻辑控制由AHDL文件编写真值表实现。
时间显示由AHDL文件编写真值表实现,输入正确的逻辑,七段译码电路即能得到正确的时间显示。
2.3各功能的组成
整个电路可以分为4大部分,包括脉冲发生、状态定时、时间显示和数字比较一组合逻辑控制。
2.3.1脉冲发生
脉冲发生器为整个系统提供驱动,将输入端分配给FPGA实验板的PIN55引脚,则会由实验板上产生频率为10MHz的输入脉冲,用7片7490,每一级都构成10分频电路产生1MHZ,100KHZ,10KHZ,1KHZ,100HZ,10HZ,1HZ7种占空比为50%的脉冲信号,根据不同的需要连接不同的频率。
2.3.2状态定时
状态定时可由预置BCD码初值的74190级联实现,构成减计数器。
级联原则是:
低位计数器从全0状态变为最大码值状态时可使高位计数器减1。
级联方式分为异步和同步两种,本文采取的是异步级联方式,即低位计数器溢出信号控制高位计数器的记数脉冲输入端。
可根据计数器的时钟触发方式,在低位计数器状态码从全“0”变为最大码值的瞬间,为高位计数器提供有效的计数脉冲边沿。
具体做法是将低片位的溢出信号RCON端口接到高片位的计数脉冲CLK,实现两位BCD码的置数、翻转和借位,使系统表示的数字能在22~16之间循环。
74190功能说明:
(1)GN为计数器使能控制端,低电平有效。
当GN为高电平时,禁止计数。
(2)DNUP为计数方式控制,接高电平为减计数,接低电平为加计数。
(3)LDN为异步预置数控制。
当LDN为低电平时,计数器状态QD,QC,QB,QA分别等于D,C,B,A。
(4)计数器位序由高至低顺序为QD,QC,QB,QA。
QD为最高位MSB,QA为最低位LSB。
(5)计数脉冲CLK上升沿有效。
(6)当计数器输出QDQCQBQA为十进制加计数的最大状态码“1001”或为减计数的最小状态码全“0”时,极值状态码指示MAX/MIN输出为高电平。
(7)当极值状态码指示MAX/MIN为高电平且CLK为低电平时,溢出信号RCON为低电平,即RCON与计数脉冲同步。
2.3.3时间显示
时间显示模块主要运用的是动态扫描显示技术。
动态扫描显示主要用到的模块有数据选择,分频器,计数器以及七段显示译码。
本实验中数据选择用的是74153M选择器,分频器是本实验开头设计的多分频模块。
74153M:
GN为使能端,C0,C1,C2,C3为四个输入端,A,B为地址控制端,Y输出的为C0C1C2C3中的其中一个,A,B端与分配器相连接。
2.3.4数字比较器
该模块将状态定时模块输出的时间与时间节点进行比较,从而确定电路处于22s或者16s的具体的某个状态。
由表1可知,东西(I)或南北(J)的控制状态都有3个阶段的控制逻辑,分别对应3个时间段:
1~3s,4~6s和大于6s,因此,采用数字比较器进行比较,确定定时值小于4s或大于6s,方法如图3所示,采用4片7485数字比较器,两两级联,其中一个由状态定时模块的输出与4即二进制0100比较;另一个由状态定时模块的输出与6即二进制0110比较。
图3
4总体工作状态
系统脉冲由FPGA开发板晶振经过分频电路实现。
状态定时由74190可逆十进制计数器和T’触发器实现,置数合理,翻转信号到位,电路在东西(I)、南北(J)两个控制状态间翻转。
红、黄、绿灯的闪烁由7485数字比较器和组合逻辑控制,其中7485数字比较器用于比较计数器当前持续状态和所需要的状态全部时间,并做出相应的变化。
组合逻辑控制由AHDL文件编写真值表实现。
时间显示由AHDL文件编写真值表实现,输入正确的逻辑,七段译码电路得到正确的时间显示。
第三章单元电路设计与分析
3.1脉冲发生
电路的选择:
7490的介绍:
7490是二-五-十进制加数器,片上有一个二进制计数器和一个异步五进制计数器,其器件符号如图4所示。
图中QA是二进制计数器的输出,QB~QD为五进制计数器输出,位序从高到低是D、C、B。
图4
图5
设计原理及分析:
CLKA和CLKB分别是两个计数器的脉冲输入端,下降沿触发有效。
CLRA和CLRB是两个计数器的复位清零端,同为高电平有效;SET9A和SET9B分别是两个计数器的置9控制端,当同为高电平时,QD、QC、QB、QA被预置为“1001”。
74LS90逻辑功能表如图5所示。
十分频的线路连接:
根据7490的逻辑功能表,我们按照图6所示连接线路,即可实现倍率为10,占空比为50%的脉冲信号。
图6
用QuartusII仿真波形如图7所示
图7
多状态分频器的实现:
将图6的十分频线路用QuartusII打包做成一个模块,通过级联能够分别形成1HZ,10HZ,100HZ,1KHZ,10KHZ,100KHZ,1MHZ,10MHZ共8种脉冲信号。
具体在QuartusII的线路连接如图8所示
图8
3.2状态定时
电路的选择:
图9
图10
利用QuartusII仿真1622计数器后的波形如图10所示:
运用2片74190级联,一个接1HZ的时钟脉冲,用两片74190的溢出信号MAX/MIN来控制2个芯片的LDN端,利用高位的MAX/MIN端充当T’触发器的时钟脉冲信号,用触发器的输出S来控制要预置的数的BCD码,实现跳跃。
T’触发器用T触发器来实现,T触发器的特征方程为:
Q(N+1)=TQ’(N)+T’Q(N).只需要在T端上链接一个VCC高电平,就能做成一个T’触发器。
1.下片的74190代表的是高4位,MX/MN输出经过反相器,再经过T触发器,分别到高位的B,A和低位的C,当S为0时,预置的是22,计数的是16;当S为1时,预置的是16,计数的是22.
2.两片74190都接高电位VCC,表明是减计数。
3.高低片的MX/MN端的与非门输出作为LDN的控制信号时,只有到2个74190的MX/MN端都是1时才有效,实现异步预置数。
设计原理及分析:
系统记数脉冲为1Hz时,如表2所示,当I状态(东西控制状态)的定时时间为22s,计数器应该先预置22的BCD码;同理,J状态(南北控制状态)之前应该预置16的BCD码。
状态计时电路由两片74190级联而成,构成22和16自翻转的电路。
其要解决的核心问题包括置数,翻转和借位。
根据74190芯片的特点,可分析其实现原理如图4所示,通过溢出信号RCON的上升沿实现借位,使得数字能够从20到19,个位向十位借位,顺利过渡。
置数和翻转之间有先后关系,即须先置数后翻转。
如表3所示,分析两个BCD码各位特点,可知两者D7D6D3D0位均为1,D1位均为0,而D5D4D2位不同,如图5,D5D4D2位由状态电平S来控制,当为I状态时,计数器的预置的数为D5=0,D4=D2=1,而为J状态时,计数器的预置的数为D5=1,D4=D2=0,根据74190的功能,将2片74190的MAX/MIN引出,通过与非门,分别连在高位和低位的LDN置数端,通过分析可知,当计数器从01减到00时候,高低位的MAX/MIN均为高电平,经过与非门以后为低电平,74190被置数,其置数值由状态S来决定,S是由LDN端信号经过一个T’触发器决定的,即LDN信号每置数一次,S翻转1次,从而区分16和22状态。
按这个结构,可分别置数16和22,使其实现自翻转。
3.3时间显示
电路的选择:
设计原理及分析:
从图11中可以看到,输入的10MHZ经过分频器之后输送到4个74153M的A端,B端和接地端接GND,8个0,1输入来控制输入的数据大学,7448译码器的ABCD端将得到“0000,0001,0010,0011,0100,0101,0110,0111,1000,1001,1010,1011,1100,1101,1110,1111”这16个状态,而因为本实验只需要0000到1001这10个数字灯状态码,所以只需要讲这10个状态码经过7448译码器,输入到FPGA上已经设置好的芯片接脚即可。
3.4数字比较一组合逻辑控制
电路的选择:
设计原理及分析:
该模块讲状态定时模块输出的时间与时间节点进行比较,从而确定电路出于22s或者16s的具体的某个状态。
如图1所示,东西(I)或者南北(J)的控制状态都有3个阶段的控制逻辑,分别对应3个时间段:
1~3s,4~6s已经大于6s的,因此,采用数字比较器进行比较,确定比较数分别为4和6。
因出现大于10的数,所以采用的是两位BCD码的状态码,即8位二进制码,采用四位4位数字比较器7485级联进行比较。
此实验中,因为需要比较的是4和6,所以高位的4位全置为“0”,低位分别置为4的BCD码(0100)和6的BCD码(0110)。
输出译码器的编译:
输出编码器的功能是将状态码译为6个开关量信号控制两个干道的6个交通灯。
当状态码按六进制加计数码分配时,译码电路应实现如下图的3输入、6输出的组合逻辑函数,当采用6个触发器实现一对一码(单位码、独热吗)状态机时,可由各位状态码输出直接综合实现6个灯的控制。
根据实验要求,分别取ER,EY,EG,SR,SY,SG代表I红,I黄,I绿,J红,J黄,J绿。
编写组合逻辑真值表,讲状态信号S,两个数字比较器的输出Y1,Y2和1HZ,脉冲作为输入,各灯的状态作为输出。
从逻辑关系得出对应时间电路的状态,控制红、黄、绿灯处于不同的状态。
S判断电路处于22S状态还是16s状态,Y1,Y2区分东西、南北六个阶段,1HZ时间绿灯的闪烁。
利用CLK来控制灯的闪烁。
逻辑真值表如下
SUBDESIGNRGY
(
data_in[3..0]:
INPUT;
ER,EY,EG,SR,SY,SG:
OUTPUT;
)
BEGIN
TABLE
data_in[3..0]=>ER,EY,EG,SR,SY,SG;
b"0011"=>0,0,1,1,0,0;
b"1011"=>0,0,1,1,0,0;
b"0001"=>0,0,0,1,0,0;
b"1001"=>0,0,1,1,0,0;
b"0101"=>0,1,0,1,1,0;
b"1101"=>0,1,0,1,1,0;
b"0010"=>1,0,0,0,0,1;
b"1010"=>1,0,0,0,0,1;
b"0000"=>1,0,0,0,0,0;
b"1000"=>1,0,0,0,0,1;
b"0100"=>1,1,0,0,1,0;
b"1100"=>1,1,0,0,1,0;
ENDTABLE;
END;
第四章电路的组构与调试
4.1遇到的主要问题
1在使用7490器件连线制作十分频时,在进行仿真的时候,没有波形输出。
2在使用多个十分频器件制作分频器时,8个脉冲输出在打包完的器件上不是按从大到小的顺序依次排列的。
3不知道如何使16—22计数器自动翻转。
4在仿真16—22计数器的时候发现,波形没有进行16—22的翻转,一直维持在16.
5在最后下载好之后,进行检查发现有几个发光二级管都不亮。
6七段共阴显示器上的时间的倒数计时,从22,21,20,19,18…变成了22,21,20,12,11..仔细观察了之后发现,所有应该显示9的都显示2,8变成了1,而其他的数都是正确的。
7采用AHDL的真值表方式设计一个输出译码逻辑,仿真不成功。
4.2现象记录及原因分析
1问题:
在使用7490器件连线制作十分频时,在进行仿真的时候,没有波形输出。
原因分析:
在重新复习了数电书及有关7490的知识后,我发现是自己搞错了哪个是二进制计数器的输出,哪些是五进制计数器的输出,将脉冲输入端CLKB连接到了输出端QA上。
2问题:
在使用多个十分频器件制作分频器时,8个脉冲输出在打包完的器件上不是按从大到小的顺序依次排列的。
原因分析:
输出端的排序不是按照大小排序的,而是按照电路图上的输出端的物理位置的高低排序的。
3问题:
不知道如何使16—22计数器自动翻转。
原因分析:
在仔细看了实验书P123页的图3-2-4后发现T’触发器能使计数器不断翻转。
4问题:
在仿真16—22计数器的时候发现,波形没有进行16—22的翻转,一直维持在16.
原因分析:
计数器的预制操作必须先于触发器的状态转换,我设计是没有注意两者的时序问题。
5问题:
在最后下载好之后,进行检查发现有几个发光二级管都不亮。
原因分析:
我发现有反应的发光二极管都是对的,那么我的设计思路大致是没问题,连线也因准确的。
再仔细检查之后发现,和总线相连的几个引线的[括号打成了{,没有注意。
6原因:
七段共阴显示器上的时间的倒数计时,从22,21,20,19,18…变成了22,21,20,12,11..仔细观察了之后发现,所有应该显示9的都显示2,8变成了1,而其他的数都是正确的。
原因分析:
在检查了16-22计数器后发现,将定时器的两条引脚搞反
7问题:
采用AHDL的真值表方式设计一个输出译码逻辑,编译错误。
原因分析:
编写ADHL时候,编写的文件名要和里面的命名一样,不然会出现编译错误。
4.3解决措施及效果
1在使用7490器件连线制作十分频时,在进行仿真的时候,没有波形输出。
解决措施:
将7490的五进制计数器的位序最高端输出连接到计时器的脉冲输出端CLKB上。
CLKA为输入,QA为输出。
效果:
仿真时果真形成了倍率为10,占空比为50%的脉冲信号。
2在使用多个十分频器件制作分频器时,8个脉冲输出在打包完的器件上不是按从大到小的顺序依次排列的。
解决措施:
将分别标有1HZ,10HZ,100HZ,1KHZ,10KHZ,100KHZ,1MHZ,10MHZ的脉冲输入端在电路图上按照大小,大的放在上面,小的在下面。
效果:
打包完的分频器果然按照大小顺序输出。
3不知道如何使16—22计数器自动翻转。
解决措施:
S由LDN端信号经过一个T’触发器决定的,即LDN信号每置数一次,S翻转一次,从而区分16和22两个数。
按这个结构,可分别置数16和22,而且能够自动翻转切换。
4在仿真16—22计数器的时候发现,波形没有进行16—22的翻转,一直维持在16.
解决措施:
7490置数和翻转之间有先后关系,即须先置数后翻转。
分析后可知,两者D7D6D3D0位均为1,D1位均为0,只有D5D4D2不同。
D5D4D2位由状态电平S来控制,当为I状态时,计数器的预置数为D5=0,D4=D2=1,而当为J状态时,计数器的预置数为D5=1,D4=D2=0,根据74190的功能,将2片74190的MAX/MIN引出,通过与非门,分别连在高低位的LDN置数端,通过分析可知,当计数器从01见到00时候,高低点位的MAX/MIN均为高电平,经过与非门以后是低电平,74190被置数,其置数值由状态S来决定,S是由LDN端信号经过一个T’触发器决定的,即LDN信号每置数一次,S翻转一次,从而区分16和22两个数。
按这个结构,可分别置数16和22,而且能够自动翻转切换。
5在最后下载好之后,进行检查发现有几个发光二级管都不亮。
解决措施:
将和总线相连的引脚上标的字母仔细检查一下。
6七段共阴显示器上的时间的倒数计时,从22,21,20,19,18…变成了22,21,20,12,11..仔细观察了之后发现,所有应该显示9的都显示2,8变成了1,而其他的数都是正确的。
解决措施:
搞清楚定时器的输出端QA~QD哪个是高位,哪个是低位。
7问题:
采用AHDL的真值表方式设计一个输出译码逻辑,仿真不成功。
解决措施:
编写ADHL时候,编写的文件名和里面的命名一样
4.4功能的测试方法、步骤、设备、记录的数据
第五章结束语
总结设计的收获与体会
这次课程设计历时整整一个星期。
通过这一个星期的课程设计,我发现了自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。
其次,我感到自己对知识的一知半解或者说不够细致,对于器件的输出的高低位序,不够了解,总是要查阅书本,在设计电路图的时候大大减慢了速度。
第三,此需要了解多个芯片的功能,各引脚的连接方法.不同的芯片起到不同的功能,但是更要注意,将芯片改装连接,会有不同的功能。
附图(电路总图)
附加试验转弯灯
第一章设计指标
在原有基本实验的基础上,增加东西转弯、南北转弯的红、绿、黄三色的交通灯,其逻辑如下表所示,按照下表的要求循环变化。
设计的控制部分以FPGA实现,用12个发光二极管模拟东西、南北、东西转弯、南北转弯的红、绿、黄交通灯。
用2个七段数码显示器显示干道的通行(禁行)时间。
表二转弯灯控制要求
东西(I)
绿灯亮
绿灯闪
黄灯亮
绿转弯灯亮
黄转弯灯亮
红灯亮
红黄灯亮
红灯亮
红灯亮
南北(J)
红灯亮
红黄灯亮
红灯亮
红灯亮
绿灯亮
绿灯闪
黄灯亮
绿转弯灯亮
黄转弯灯亮
时间/s
16
3
3
7
3
10
3
3
7
3
第二章设计概述
2.1设计思想同上
2.2可行性论证
该设计的交通灯控制分为8个状态。
由于各状态持续时间不同,所以电路的核心控制部分是状态机和定时器,状态机在定时器触发下周期性循环,状态码控制6个灯以一定的规律变化。
变化情况如图2所示。
系统脉冲由FPGA开发板晶振经过分频电路实现。
状态定时由74190可逆十进制计数器和T’触发器实现,只要置数合理,翻转信号到位,就可以使电路在东西(I)、南北(J)两个控制状态间翻转。
红、黄、绿灯的闪烁由7485数字比较器和组合逻辑控制,其中7485数字比较器用于比较计数器当前持续状态和所需要的状态全部时间,并做出相应的变化。
组合逻辑控制由AHDL文件编写真值表实现。
时间显示由AHDL文件编写真值表实现,输入正确的逻辑,七段译码电路即能得到正确的时间显示。
.