第10章 数字电子系统综合设计实例

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第10章数字电子系统综合设计实例【学习目标】本章对交通灯设计与实现、多功能信号发生器的设计与实现和4位十进制频率计设计与实现三个综合的数字电子系统实例的分析与设计,使读者通过学习掌握综合电子系统的设计与开发方法,掌握和巩固EDA软件设计流程和可编程逻辑器件的使用技术,为综合应用CPLD/FPGA打下坚实基础。10.1交通灯设计与实现10.1.1设计要求1.设计任务设计一个十字路口交通控制器,如图10.1所示。A方向和B方向分别设置左拐(L)、绿(G)、黄(Y)和红(R)四盏灯,以及倒计时显示器,用以指挥车辆和行人有序的通行。左拐灯(L)亮表示左转车辆可以通行;绿灯(G)亮表示直行车辆可以通行;黄灯(Y)亮表示左转或直行车辆即将禁行;红灯(R)亮表示左转和直行车辆禁行;倒计时显示器用来显示允许通行或禁止通行的时间。A方向的显示灯分别用al、ay、ag、ar表示;B方向的显示灯分别用bl、by、bg。10.1交通灯设计与实现图10.1交通灯示意图10.1.1设计要求10.1交通灯设计与实现2.设计要求(1)在十字路口A和B两个方向各设一组左拐、绿灯黄灯和红灯。显示顺序:左拐→绿灯→黄灯→红灯。(2)在A和B两个方向各设一组倒计时显示器。A方向左拐、绿灯、黄灯和红灯显示时间分别为15s、40s、5s和55s。B方向左拐、绿灯、黄灯和红灯显示时间分别为15s、30s、5s和65s。10.1.1设计要求10.1交通灯设计与实现(3)控制器有五种工作方式。可通过方式开关的控制进行切换。其中,前四种方式用于特殊情况,第五种方式为正常情况下的工作方式。①A方向左拐灯长时间亮,B方向红灯亮,允许A方向左转车辆通行。②A方向绿灯长时间亮,B方向红灯亮,允许A方向车辆直行。③B方向左拐灯长时间亮,A方向红灯亮,允许B方向左转车辆通行。10.1.1设计要求10.1交通灯设计与实现④B方向绿灯长时间亮,A方向红灯亮,允许B方向车辆直行。⑤自动工作方式,两个方向的灯按照显示顺序,交替循环显示。(4)控制器设有工作方式状态显示,以指示系统运行的工作状态。(5)系统设有总复位开关,可在任意时间内对系统进行复位。10.1.1设计要求10.1交通灯设计与实现10.1.2交通灯系统组成根据设计要求和系统所具有的功能,交通灯控制器系统框图如图10.2所示。图10.2交通灯控制器系统框图10.1交通灯设计与实现系统五种工作方式由M2~M0设定。具体设定见表10.1所示:表10.1工作方式选择状态表10.1.2交通灯系统组成10.1交通灯设计与实现当系统处于自动运行(方式五)时,其交通灯的状态转换表如表10.2所示。A和B两个方向的左拐、黄灯、绿灯和红灯分别用al、ay、ag、ar和bl、by、bz、br表示。从状态转换表可以看出,每个方向的四盏信号灯依次顺序点亮,并不断循环:左拐→黄灯→绿灯→黄灯→红灯。亮灯的状态由s1→S1→s3→S4→S5→s6→S7→s0→S1不断循环。10.1.2交通灯系统组成10.1交通灯设计与实现显示的时间要求:al+ay+ag+ay=br=65s,bl+by+bg+by=a=55s。当出现特殊情况时,可选择方式一到方式四中的任何一种方式,停止正常运行,进入特殊运行状态。此时交通灯按工作方式显示,计时电路停止计时,计时时间闪烁显示。当特殊运行结束后,系统继续正常工作。当系统总复位时,控制电路和计时电路复位,信号灯全部熄灭。10.1.2交通灯系统组成10.1交通灯设计与实现表10.2交通灯的状态转换表10.1.2交通灯系统组成10.1交通灯设计与实现10.1.3交通灯模块电路设计与仿真(1)计时模块的设计计时模块用来设定A方向和B方向计时器的初值,并为显示模块提供倒计时时间。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYJTD_TIMEISPORT(CLK,CLR:INSTD_LOGIC;M,S:INSTD_LOGIC_VECTOR(2DOWNTO0);AT,BT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDJTD_TIME;ARCHITECTUREJTD_2OFJTD_TIMEIS--接下页10.1交通灯设计与实现SIGNALATI,BTI:STD_LOGIC_VECTOR(7DOWNTO0);--接上页SIGNALART,AGT,ALT,ABYT:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALBRT,BGT,BLT:STD_LOGIC_VECTOR(7DOWNTO0);BEGINART=X55;AGT=X40;ALT=X15;ABYT=X05;BRT=X65;BGT=X30;BLT=X15;PROCESS(CLK,CLR,M,S)BEGINIFCLR='1'THENATI=X01;BTI=X01;ELSIF(CLK‘EVENTANDCLK=’1‘)THEN;--接下页10.1.3交通灯模块电路设计与仿真10.1交通灯设计与实现IFM=000THENATI=X01;BTI=X51;--接上页ENDIF;IFM=001THENATI=X01;BTI=X06;ENDIF;IFM=010THENATI=X41;BTI=X01;ENDIF;IFM=011THENATI=X06;BTI=X01;ENDIF;IFM=100THENIF(ATI=X01)OR(BTI=X01)THENCASESISWHEN000=ATI=ALT;BTI=BRT;WHEN001=ATI=ABYT;WHEN010=ATI=AGT;WHEN011=ATI=ABYT;WHEN100=ATI=ART;BTI=BLT;WHEN101=BTI=ABYT;--接下页10.1.3交通灯模块电路设计与仿真10.1交通灯设计与实现WHEN“110”=BTI=BGT;--接上页WHEN111=BTI=ABYT;WHENOTHERS=ATI=ATI;BTI=BTI;ENDCASE;ENDIF;IFATI/=X01THENIFATI(3DOWNTO0)=0000THENATI(3DOWNTO0)=1001;ATI(7DOWNTO4)=ATI(7DOWNTO4)-1;ELSEATI(3DOWNTO0)=ATI(3DOWNTO0)-1;ATI(7DOWNTO4)=ATI(7DOWNTO4);ENDIF;ENDIF;IFBTI/=X01THENIFBTI(3DOWNTO0)=0000THENBTI(3DOWNTO0)=1001;BTI(7DOWNTO4)=BTI(7DOWNTO4)-1;--接下页10.1.3交通灯模块电路设计与仿真10.1交通灯设计与实现ELSEBTI(3DOWNTO0)=BTI(3DOWNTO0)-1;BTI(7DOWNTO4)=BTI(7DOWNTO4);ENDIF;ENDIF;ENDIF;ENDIF;ENDPROCESS;AT=ATI;BT=BTI;ENDJTD_2;10.1.3交通灯模块电路设计与仿真10.1交通灯设计与实现计时模块的时序仿真波形如图10.3所示图10.3计时模块的时序仿真波形10.1.3交通灯模块电路设计与仿真10.1交通灯设计与实现(2)译码驱动模块的设计译码驱动模块根据控制信号,驱动交通灯的显示。输出ABL[7..0]分别对应al、ay、ag、ar、bl、by、bz、br。该模块的源文件程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYJTD_LIGHTISPORT(CLR:INSTD_LOGIC;M,S:INSTD_LOGIC_VECTOR(2DOWNTO0);ABL:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDJTD_LIGHT;--接下页10.1.3交通灯模块电路设计与仿真10.1交通灯设计与实现ARCHITECTUREJTD_3OFJTD_LIGHTIS--接上页SIGNALLT:STD_LOGIC_VECTOR(7DOWNTO0);BEGINPROCESS(CLR,S,M)BEGINIFCLR='1'THENLT=00000000;ELSEIFM=000THENLT=10000001;ENDIF;IFM=001THENLT=00100001;ENDIF;IFM=010THENLT=00011000;ENDIF;IFM=“011”THENLT=“00010010”;ENDIF;--接下页10.1.3交通灯模块电路设计与仿真10.1交通灯设计与实现IFM=“100”THEN--接上页CASESISWHEN000=LT=00010100;WHEN001=LT=10000001;WHEN010=LT=01000001;WHEN011=LT=00100001;WHEN100=LT=01000001;WHEN101=LT=00011000;WHEN110=LT=00010100;WHEN111=LT=00010010;WHENOTHERS=LT=LT;ENDCASE;ENDIF;ENDIF;ENDPROCESS;ABL=LT;ENDJTD_3;--接下页10.1.3交通灯模块电路设计与仿真10.1交通灯设计与实现译码驱动模块的时序仿真波形如图10.4所示:图10.4译码驱动模块的时序仿真波形10.1.3交通灯模块电路设计与仿真10.1交通灯设计与实现(3)显示模块的设计显示模块用来显示倒计时时间和系统的工作状态。其输出用来驱动六位共阴数码管,其中四位用于显示倒计时时间,两位显示工作状态,采用动态扫描显示。该模块的源程序如下:10.1.3交通灯模块电路设计与仿真10.1交通灯设计与实现LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYJTD_DISISPORT(CLK,CLK1K,CLR:INSTD_LOGIC;M1,M2,M0:INSTD_LOGIC;AT,BT:INSTD_LOGIC_VECTOR(7DOWNTO0);LED:OUTSTD_LOGIC_VECTOR(6DOWNTO0);SEL:OUTSTD_LOGIC_VECTOR(5DOWNTO0));ENDJTD_DIS;ARCHITECTUREJTD_4OFJTD_DISISSIGNALOU,STL,STH,MM:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALDIS,DS:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALSL:STD_LOGIC_VECTOR(2DOWNTO0);SIGNALSQ:STD_LOGIC_VECTOR(5DOWNTO0);BEGIN--接下页10.1.3交通灯模块电路设计与仿真10.1交通灯设计与实现MM=“0”&M2&M1&M0;--接上页STH=XA;PROCESS(CLK1K,CLR)BEGINIFCLR='1'THENSL=000;ELSIF(CLK1K'EVENTANDCLK1K='1')THENIFSL=101THENSL=000;ELSESL=SL+1;ENDIF;ENDIF;ENDPROCESS;PROCESS(SL)BEGINCASESLISWHEN000=SQ=000001;WHEN001=SQ=000010;WHEN010=SQ=000100;WHEN011=SQ=001000;--接下页10.1.3交通灯模块电路设计与仿真10.1交通灯设计与实现WHEN“100”=SQ=“010000”;--接上页WHEN101=SQ=100000;W

1 / 96
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功