EDA技术与应用课程交通灯控制器的设计.docx
《EDA技术与应用课程交通灯控制器的设计.docx》由会员分享,可在线阅读,更多相关《EDA技术与应用课程交通灯控制器的设计.docx(18页珍藏版)》请在冰豆网上搜索。
EDA技术与应用课程交通灯控制器的设计
课程设计说明书
名称EDA技术与应用课程—交通灯控制器的设计
2011年6月20日至2011年6月24日共1周
院 系
班级
姓名
学号
系 主 任
教研室主任
目录
第一章绪论1
1.1EDA技术的概述1
1.1.1EDA技术发展历史1
1.1.2EDA技术的基本特征1
1.2VHDL硬件描述语言2
VHDL设计的特点2
第二章系统设计要求与内容4
2.1课程设计交通灯控制系统要求4
2.2设计思路4
2.2.1交通灯控制器原理框图4
2.2.2控制情况表5
2.2.3设计电路原理图6
第三章系统设计方案7
3.1设计模块与程序7
3.1.1交通灯控制器JTDKZ设计模块与程序7
3.1.2显示控制单元CSKZ设计模块与程序9
3.1.3倒计时45s——CNT45s设计模块与程序10
3.1.4倒计时25s——CNT25s设计模块与程序12
3.1.5倒计时5s——CNT05s的设计模块与程序13
3.2管脚定义15
3.3时序仿真结果15
3.4实验调试结果16
第四章心得体会17
参考文献18
第一章绪论
1.1EDA技术的概述
EDA是在电子电路CAD(ComputerAidedDesign,计算机辅助设计)的基础上发展起来的计算机软件系统。
EDA技术就是依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL(HardwareDescriptionLanguage)为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、逻辑化简、逻辑分割、逻辑综合、结构综合(布局布线),以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。
EDA技术使得设计者的工作仅限于利用软件的方式,即利用硬件描述语言和EDA软件来完成对系统硬件功能的实现,这是电子设计技术的一个巨大进步。
1.1.1EDA技术发展历史
①20世纪70年代为计算机辅助设计(CAD,ComputerAidedDesign)阶段。
人们开始用计算机辅助进行IC版图编辑、PCB布局布线,取代了手工操作。
②20世纪80年代为计算机辅助工程CAE,ComputerAidedEn出neering)阶段。
与CAD相比,CAE除了有纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并且通过电气连接网络表将两者结合在一起,实现了工程设计。
CAE的主要功能是:
原理图输入、逻辑仿真、电路分析、自动布局布线、PCB后分析。
③20世纪90年代为电子设计自动化(EDA)阶段。
1.1.2EDA技术的基本特征
EDA代表了当今电子设计技术的最新发展方向。
它的基本特征是:
设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分。
系统的关键电路用一片或几片专用集成电路(ASIC,ApplicationSpecificIntegratedCircnit)实现,然后采用硬件描述语言(HDlHardwareDescriptionLanguage)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件,这样的设计方法被称为高层次的电子设计方法。
1.2VHDL硬件描述语言
美国国防部在1981年提出了一种新的HDL,称为VHSICHardwareDe—scriptionLanguage,简称为VHDL。
VHDL是超高速集成电路硬件描述语言(Very—High-SpeedIntegratedCircuitHardwareDescriptionLanguage)的缩写。
VHDL符合美国电气和电子工程师协会标准(IEEE1076标准),它可以用一种形式化的方法来描述数字电路和设计数字逻辑系统。
利用VHDL进行自顶向下的电路设计,并结合一些先进的EDA工具软件(例如MAXPLUSII、EWB和Protel等),可以极大地缩短产品的设计周期,加快产品进入市场的步伐,在当前高速发展的信息时代,可以更好地把握商机。
14.1VHDL编程思想VHDL必须适应实际电路系统的工作方式,以并行和顺序的多种语句方式来描述在同一时刻中所有可能发生的事件。
可以认为,VHDL具有描述由相关和不相关的多维时空组合的复合体系统的功能。
因此,要求系统设计人员摆脱一维的思维模式,以多维并发的思路来完成VHDL的程序设计。
一个成功的VHDL工程设计,对其评判的标准包括:
是否能完成功能要求、满足速度要求,并考虑其可靠性以及资源的占用情况。
在具体的工程设计中,必须清楚软件程序和硬件构成之间的联系,在考虑语句能够实现的功能的同时,要考虑实现这些功能可能付出的硬件代价。
在编程过程中,某个不恰当的语句、算法或可省去的操作都可能带来硬件资源的浪费。
因此,在保证完成功能的情况下,应该尽量合理且有效地利用VHDL语言所提供的各种有利的语法条件,尽量地优化算法,从而节约硬件资源。
VHDL设计的特点
①用VHDL代码而不是原理图进行设计,意味着整个电路板的模型及其性能可用计算机模拟进行验证。
②VHDL元件的设计与工艺无关,与工艺独立,方便工艺转换。
设计出来的元件放在库中,想用时可以随时调用。
在传统的原理图设计中,设计者在设计时必须手工检查与工艺有关的因素,如时序、面积、驱动强度、元件选择和扇出。
有了VHDL后,无需考虑电路的功能、需求说明中的需求、电路的驱动能力和延时等与工艺有关的因素,使设计者可
计算机系统设计注重其功能,即需求的实现,而不必对不影响功能但与工艺有关的因素花费过多的精力去排除。
③VHDL支持各种设计方法,自顶向下、自底向上或混合的都可以。
VHDL还支持高层次设计,使设计生命周期延长。
④可进行从系统级到逻辑级即最抽象的到最精确的跨越多层次的描述,即混合描述。
⑤VHDL区别于其他的HDL,已形成标准,其代码在不同的EDA系统中可交换建模。
第二章系统设计要求与内容
2.1课程设计交通灯控制系统要求
设计一个由一条主干道和一条支干道的汇合点形成的十字交叉路口的交通灯控制器,具体求如下:
1、主、支干道各设一个绿、黄、红指示灯用于指示状态,两位显示数码管用于显示倒计时时间。
2、当主、支道均有车时,两者交替允许通行,主干道每次放行45s,支干道次每放行25s,在每次由绿灯转换为红灯时,要有5s的黄灯作为过渡。
应有倒计时显示。
3、特殊功能,智能交通灯控制:
若支干道无车时,主干道处于常允许通行状态。
4、用vhdl语言设计上述功能的交通灯控制器,并用层次化设计方法该电路。
5、完成电路全部设计后,通过系统实验箱下载验证设计课题的正确性。
2.2设计思路
2.2.1交通灯控制器原理框图
交通灯控制器原理框图如下图所示,包括置数模块、计数模块、主控制器模块和译码器模块。
置数模块将交通灯的点亮时间预置到置数电路中,计数模块以秒为单位倒计时,当计数值减为零时,主控电路改变输出状态,电路进入下一个状态的倒计时。
其中,核心部分是主控制模块。
2.2.2控制情况表
状态
主干道
主干道倒时
支干道
主干道倒计时
1
绿灯亮
45
红灯亮
50
2
黄灯亮
5
红灯亮
3
红灯亮
30
绿灯亮
25
4
红灯亮
黄灯亮
5
2.2.3设计电路原理图
第三章系统设计方案
3.1设计模块与程序
3.1.1交通灯控制器JTDKZ设计模块与程序
交通灯控制器JTDKZ原理图模块
libraryieee;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYJTDKZIS
PORT(CLK,SM,SB:
INSTD_LOGIC;
MR,MY,MG,BR,BY,BG:
OUTSTD_LOGIC);
ENDJTDKZ;
ARCHITECTUREARTOFJTDKZIS
TYPESTATE_TYPEIS(A,B,C,D);
SIGNALSTATE:
STATE_TYPE;
BEGIN
CNT:
PROCESS(CLK)IS
VARIABLES:
INTEGERRANGE0TO45;
VARIABLECLR,EN:
BIT;
BEGIN
IF(CLK'EVENTANDCLK='1')THEN
IFCLR='0'THEN
S:
=0;
ELSIFEN='0'THEN
S:
=S;
ELSE
S:
=S+1;
ENDIF;
CASESTATEIS
WHENA=>MR<='0';MY<='0';MG<='1';
BR<='1';BY<='0';BG<='0';
IF(SBANDSM)='1'THEN
IFS=45THEN
STATE<=B;CLR:
='0';EN:
='0';
ELSE
STATE<=A;CLR:
='1';EN:
='1';
ENDIF;
ELSIF(SBAND(NOTSM))='1'THEN
STATE<=B;CLR:
='0';EN:
='0';
ELSE
STATE<=A;CLR:
='1';EN:
='1';
ENDIF;
WHENB=>MR<='0';MY<='1';MG<='0';
BR<='1';BY<='0';BG<='0';
IFS=5THEN
STATE<=C;CLR:
='0';EN:
='0';
ELSE
STATE<=B;CLR:
='1';EN:
='1';
ENDIF;
WHENC=>MR<='1';MY<='0';MG<='0';
BR<='0';BY<='0';BG<='1';
IF(SMANDSB)='1'THEN
IFS=25THEN
STATE<=D;CLR:
='0';EN:
='0';
ELSE
STATE<=C;CLR:
='1';EN:
='1';
ENDIF;
ELSIFSB='0'THEN
STATE<=D;CLR:
='0';EN:
='0';
ELSE
STATE<=C;CLR:
='1';EN:
='1';
ENDIF;
WHEND=>MR<='1';MY<='0';MG<='0';
BR<='0';BY<='1';BG<='0';
IFS=5THEN
STATE<=A;CLR:
='0';EN:
='0';
ELSE
STATE<=D;CLR:
='1';EN:
='1';
ENDIF;
ENDCASE;
ENDIF;
ENDPROCESSCNT;
ENDARCHITECTUREART;
3.1.2显示控制单元CSKZ设计模块与程序
显示控制单元CSKZ原理图模块
源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCSKZIS
PORT(EN45,EN25,EN05M,EN05B:
INSTD_LOGIC;
AIN45M,AIN45B:
INSTD_LOGIC_VECTOR(7DOWNTO0);
AIN25M,AIN25B,AIN05:
INSTD_LOGIC_VECTOR(7DOWNTO0);
DOUTM,DOUTB:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDENTITYCSKZ;
ARCHITECTUREARTOFCSKZIS
BEGIN
PROCESS(EN45,EN25,EN05M,EN05B)IS
BEGIN
IFEN45='1'THEN
DOUTM<=AIN45M(7DOWNTO0);DOUTB<=AIN45B(7DOWNTO0);
ELSIFEN05M='1'THEN
DOUTM<=AIN05(7DOWNTO0);DOUTB<=AIN05(7DOWNTO0);
ELSIFEN25='1'THEN
DOUTM<=AIN25M(7DOWNTO0);
DOUTB<=AIN25B(7DOWNTO0);
ELSIFEN05B='1'THEN
DOUTM<=AIN05(7DOWNTO0);DOUTB<=AIN05(7DOWNTO0);
ENDIF;
ENDPROCESS;
ENDARCHITECTUREART;
3.1.3倒计时45s——CNT45s设计模块与程序
倒计时45s——CNT45s的原理图模块:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT45SIS
PORT(SB,CLK,EN45:
INSTD_LOGIC;
DOUT45M,DOUT45B:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDCNT45S;
ARCHITECTUREARTOFCNT45SIS
SIGNALCNT6B:
STD_LOGIC_VECTOR(5DOWNTO0);
BEGIN
PROCESS(SB,CLK,EN45)IS
BEGIN
IFSB='0'THENCNT6B<=CNT6B-CNT6B-1;
ELSIF(CLK'EVENTANDCLK='1')THEN
IFEN45='1'THENCNT6B<=CNT6B+1;
ELSIFEN45='0'THENCNT6B<=CNT6B-CNT6B-1;
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(CNT6B)IS
BEGIN
CASECNT6BIS
WHEN"000000"=>DOUT45M<="01000101";DOUT45B<="01010000";
WHEN"000001"=>DOUT45M<="01000100";DOUT45B<="01001001";
WHEN"000010"=>DOUT45M<="01000011";DOUT45B<="01001000";
WHEN"000011"=>DOUT45M<="01000010";DOUT45B<="01000111";
WHEN"000100"=>DOUT45M<="01000001";DOUT45B<="01000110";
WHEN"000101"=>DOUT45M<="01000000";DOUT45B<="01000101";
WHEN"000110"=>DOUT45M<="00111001";DOUT45B<="01000100";
WHEN"000111"=>DOUT45M<="00111000";DOUT45B<="01000011";
WHEN"001000"=>DOUT45M<="00110111";DOUT45B<="01000010";
WHEN"001001"=>DOUT45M<="00110110";DOUT45B<="01000001";
WHEN"001010"=>DOUT45M<="00110101";DOUT45B<="01000000";
WHEN"001011"=>DOUT45M<="00110100";DOUT45B<="00111001";
WHEN"001100"=>DOUT45M<="00110011";DOUT45B<="00111000";
WHEN"001101"=>DOUT45M<="00110010";DOUT45B<="00110111";
WHEN"001110"=>DOUT45M<="00110001";DOUT45B<="00110110";
WHEN"001111"=>DOUT45M<="00110000";DOUT45B<="00110101";
WHEN"010000"=>DOUT45M<="00101001";DOUT45B<="00110100";
WHEN"010001"=>DOUT45M<="00101000";DOUT45B<="00110011";
WHEN"010010"=>DOUT45M<="00100111";DOUT45B<="00110010";
WHEN"010011"=>DOUT45M<="00100110";DOUT45B<="00110001";
WHEN"010100"=>DOUT45M<="00100101";DOUT45B<="00110000";
WHEN"010101"=>DOUT45M<="00100100";DOUT45B<="00101001";
WHEN"010110"=>DOUT45M<="00100011";DOUT45B<="00101000";
WHEN"010111"=>DOUT45M<="00100010";DOUT45B<="00100111";
WHEN"011000"=>DOUT45M<="00100001";DOUT45B<="00100110";
WHEN"011001"=>DOUT45M<="00100000";DOUT45B<="00100101";
WHEN"011010"=>DOUT45M<="00011001";DOUT45B<="00100100";
WHEN"011011"=>DOUT45M<="00011000";DOUT45B<="00100011";
WHEN"011100"=>DOUT45M<="00010111";DOUT45B<="00100010";
WHEN"011101"=>DOUT45M<="00010110";DOUT45B<="00100001";
WHEN"011110"=>DOUT45M<="00010101";DOUT45B<="00100000";
WHEN"011111"=>DOUT45M<="00010100";DOUT45B<="00011001";
WHEN"100000"=>DOUT45M<="00010011";DOUT45B<="00011000";
WHEN"100001"=>DOUT45M<="00010010";DOUT45B<="00010111";
WHEN"100010"=>DOUT45M<="00010001";DOUT45B<="00010110";
WHEN"100011"=>DOUT45M<="00010000";DOUT45B<="00010101";
WHEN"100100"=>DOUT45M<="00001001";DOUT45B<="00010100";
WHEN"100101"=>DOUT45M<="00001000";DOUT45B<="00010011";
WHEN"100110"=>DOUT45M<="00000111";DOUT45B<="00010010";
WHEN"100111"=>DOUT45M<="00000110";DOUT45B<="00010001";
WHEN"101000"=>DOUT45M<="00000101";DOUT45B<="00010000";
WHEN"101001"=>DOUT45M<="00000100";DOUT45B<="00001001";
WHEN"101010"=>DOUT45M<="00000011";DOUT45B<="00001000";
WHEN"101011"=>DOUT45M<="00000010";DOUT45B<="00000111";
WHEN"101100"=>DOUT45M<="00000001";DOUT45B<="00000110";
WHENOTHERS=>DOUT45M<="01000110";DOUT45B<="01010001";
ENDCASE;
ENDPROCESS;
ENDARCHITECTUREART;
3.1.4倒计时25s——CNT25s设计模块与程序
倒计时25s——CNT25s的原理图模块:
源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCNT25SIS
PORT(SB,SM,CLK,EN25:
INSTD_LOGIC;
DOUT25M,DOUT25B:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDENTITYCNT25S;
ARCHITECTUREARTOFCNT25SIS
SIGNALCNT5B:
STD_LOGIC_VECTOR(4DOWNTO0);
BEGIN
PROCESS(SB,SM,CLK,EN25)IS
BEGIN
IFSB='0'ORSM='0'THENCNT5B<=CNT5B-CNT5B-1;
ELSIFSM='0'THENCNT5B<=CNT5B-CNT5B-1;
ELSIF(CLK'EVENTANDCLK='1')THEN
IFEN25='1'THENCNT5B<=CNT5B+1;
ELSIFEN25='0'THENCNT5B<=CNT5B-CNT5B-1;
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(CNT5B)IS
BEGIN
CASECNT5BIS
WHEN"00000"=>DOUT25B<="00100101";DOUT25M<="00110000";
WHEN"00001"=>DOUT25B<="00100100";DOUT25M<="00101001";
WHEN"00010"=>DOUT25B<="00100011";DOUT25M<="00101000";
WHEN"00011"=>DOUT25B<="00100010";DOUT25M<="00100111";
WHEN"00100"=>DOUT25B<="00100001";DOUT25M<="00100110";
WHEN"00101"=>DOUT25B<="00100000";DOUT25M<="00100101";
WHEN"00110"=>DOUT25B<="00011001";DOUT25M<="00100100";
WHEN"00111"=>DOUT25B<="00011000";DOUT25M<="00100011";
WHEN"01000"=>DOUT25B<="00010111";DOUT25M<="00100010";
WHEN"01001"=>DOUT25B<="00010110";DOUT25M<="00100001";
WHEN"01010"=>DOUT25B<="00010101";DOUT25M<="00100000";
WHEN"01011"=>DOUT25B<="00010100";DOUT25M<="00011001";
WHEN"01100"=>DOUT25B<="00010011";DOUT25M<="00011000";
WHEN"01101"=>DOUT25B<="00010010";DOUT25M<="00010