EDA湘潭大学职业技术学院.docx
- 文档编号:26433994
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:19
- 大小:153.32KB
EDA湘潭大学职业技术学院.docx
《EDA湘潭大学职业技术学院.docx》由会员分享,可在线阅读,更多相关《EDA湘潭大学职业技术学院.docx(19页珍藏版)》请在冰豆网上搜索。
EDA湘潭大学职业技术学院
湘潭大学职业技术学院
机电系
EDA技术基础课程设计报告
课题名称:
十字路口交通灯控制器
姓名:
田湘
学号:
20119201117
专业班级:
应用电子技术1班
系(院):
机电系
指导老师:
冷爱莲
完成时间:
2013年12月15日
目录
1.总体设计3
1.1设计总体思路3
1.2总体框图4
2.单元电路设计4
2.1控制模块4
2.2计数模块7
2.2.15进制递减计数器的VHDL源文件7
2.2.235进制递减计数器的VHDL源文件9
2.2.330进制递减计数器的VHDL源文件11
2.3显示模块13
3.总电路设计16
3.1仿真结果16
3.2仿真结果分析17
4.总结与体会18
5.参考文献19
1.总体设计
1.1设计总体思路
用FPGA为核心器件,用VHDL为设计手段设计制作一个十字路口交通管理器。
该管理器控制甲、乙两道(乙道为主干道)的左转灯、直行灯和等待黄灯,用以指挥车辆有序安全通过。
交通管理器示意图如图所示:
图1-1交通管理示意图
图中R1、G1、Y1分别表示甲道左转、直行、等待灯(灭表示通行,亮表示禁止);R2、Y2、G2分别表示乙道左转、直行、等待灯(灭表示通行,亮表示禁止)。
定时器分别确定甲道和乙道左转及直行的通行时间和等待黄灯亮的时间。
具体设计要求如下:
用四位数码显示器分别显示甲乙两道左转、直行、等待时间(每边两位);其计时间隔为1S。
交通灯控制器工作流程如下:
甲道左转通行(甲道直行禁止,乙道全禁止)30S-等待(甲黄灯亮)5S-甲道直行通行(甲道左转禁止,乙道全禁止)35S--等待(甲黄灯亮)5S-乙道左转通行(乙道直行禁止,甲道全禁止)30S-等待(乙黄灯亮)5S-乙道直行通行(乙道左转禁止,甲道全禁止)5S-重复……因此,我设置7个状态,用w0到w4控制状态的转换。
c1到c5、b1到b5控制计数器计数。
同时,c1到c5控制数码管显示方式。
1.2总体框图
图1-2总体框图
2.单元电路设计
2.1控制模块
控制模块是整个模块的核心。
控制着各种状态之间的转换,从而实现设计要求实现的功能。
控制模块的VHDL源文件如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYjiaotongIS
PORT(
clk:
INSTD_LOGIC;
c1,c2,c3,c4,c5,b1,b2,b3,b4,b5:
OUTSTD_LOGIC;
w0,w1,w2,w3,w4:
INSTD_LOGIC;
R1,R2:
OUTSTD_LOGIC;
Y1,Y2:
OUTSTD_LOGIC;
G1,G2:
OUTSTD_LOGIC;
reset:
INSTD_LOGIC);
ENDjiaotong;
ARCHITECTUREaOFjiaotongIS
TYPESTATE_SPACEIS(S0,S1,S2,S3,s4,s5,s6,s7);
SIGNALstate:
STATE_SPACE;
BEGIN
PROCESS(clk)
BEGIN
IF(reset='1')THEN
state<=S0;
ELSIF(clk'eventandclk='1')THEN
CASEstateis
WHENs0=>IF(w0='1')THENstate<=s1;--30s
ENDIF;
b1<='0';IF(w0='0')THENb1<='1';
ENDIF;
WHENs1=>IF(w1='1')THENstate<=s2;--5s
ENDIF;
b2<='0';IF(w1='0')THENb2<='1';
ENDIF;
WHENs2=>IF(w2='1')THENstate<=s3;--35s
ENDIF;
b3<='0';IF(w2='0')THENb3<='1';
ENDIF;
WHENs3=>IF(w1='1')THENstate<=s4;--5s
ENDIF;
b2<='0';IF(w1='0')THENb2<='1';
ENDIF;
WHENs4=>IF(w3='1')THENstate<=s5;--30s
ENDIF;
b4<='0';IF(w3='0')THENb4<='1';
ENDIF;
WHENs5=>IFw1='1'THENstate<=s6;--5s
ENDIF;
b2<='0';IF(w1='0')THENb2<='1';
ENDIF;
WHENs7=>IF(w1='1')THENstate<=s0;--5s
ENDIF;
b2<='0';IF(w1='0')THENb2<='1';
ENDIF;
ENDCASE;
ENDIF;
ENDPROCESS;
c1<='1'whenstate=s0else'0';
c2<='1'whenstate=s1orstate=s3orstate=s5orstate=s7else'0';
c3<='1'whenstate=s2else'0';
c4<='1'whenstate=s4else'0';
c5<='1'whenstate=s6else'0';
R1<='0'whenstate=s0else'1';
G1<='0'whenstate=s2else'1';
Y1<='0'whenstate=s1orstate=s3else'1';
R2<='0'whenstate=s4else'1';
G2<='0'whenstate=s6else'1';
Y2<='0'whenstate=s5orstate=s7else'1';
ENDa;
2.2计数模块
计数模块主要是为实现各种状态的计数时间。
这里需要的计数器的计数范围为0-35。
计到35后,下一个时钟沿回复到0,开始下一轮计数。
此外,当检测到特殊情况(EMI=‘1’)发生是,计数器暂停计数,而系统复位信号RESET则使计数器异步清零。
图2.1计数器模块
2.2.15进制递减计数器的VHDL源文件
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
ENTITYjcnt5IS
PORT
(clk:
INSTD_LOGIC;
cr:
INSTD_LOGIC;
EN2:
INSTD_LOGIC;
J1:
OUTSTD_LOGIC;
q1:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDjcnt3;
ARCHITECTUREaOFjcnt5IS
SIGNALbcd1n:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(clk,cr)
BEGIN
IF(cr='0')THEN
bcd1n<="0101";
ELSIF(EN2='1')THEN
IF(clk'EVENTANDclk='1')THEN
IF(bcd1n=0)THEN
bcd1n<="0000";
ELSE
bcd1n<=bcd1n-1;
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS;
q1<=bcd1n;
PROCESS(bcd1n)
BEGIN
J1<='0';
if(bcd1n=0)THEN
J1<='1';
ENDIF;
ENDPROCESS;
enda;
2.2.235进制递减计数器的VHDL源文件
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
ENTITYjcnt35IS
PORT
(clk:
INSTD_LOGIC;
cr:
INSTD_LOGIC;
EN3:
INSTD_LOGIC;
J2:
OUTSTD_LOGIC;
q1:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
y10:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDjcnt35;
ARCHITECTUREaOFjcnt35IS
SIGNALbcd1n:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALvcd10n:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(clk,cr)
BEGIN
IF(cr='0')THEN
bcd1n<="0101";--J1<='1';
ELSIF(EN3='1')THEN
IF(clk'EVENTANDclk='1')THEN
IF(bcd1n=0andvcd10n/=0)THEN
bcd1n<="1001";
ELSif(bcd1n=0andvcd10n=0)THEN
bcd1n<="0000";
ELSE
bcd1n<=bcd1n-1;
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS;
q1<=bcd1n;
y10<=vcd10n;
PROCESS(clk,cr)
BEGIN
IF(cr='0')THEN
vcd10n<="0011";--J1<='1';
ELSIF(EN3='1')THEN
IF(clk'EVENTANDclk='1')THEN
IF(bcd1n=0)THEN
IF(vcd10n=0)THEN
vcd10n<="0000";
ELSE
vcd10n<=vcd10n-1;
ENDIF;
ENDIF;
ENDIF;ENDIF;
ENDPROCESS;
PROCESS(bcd1n,vcd10n)
BEGIN
J2<='0';
if(bcd1n=0andvcd10n=0)THEN
J2<='1';
ENDIF;
ENDPROCESS;
enda;
2.2.330进制递减计数器的VHDL源文件
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
ENTITYjcnt30IS
PORT
(clk:
INSTD_LOGIC;
cr:
INSTD_LOGIC;
EN4:
INSTD_LOGIC;
J3:
OUTSTD_LOGIC;
q1:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
y10:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDjcnt30;
ARCHITECTUREaOFjcnt30IS
SIGNALbcd1n:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALvcd10n:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(clk,cr)
BEGIN
IF(cr='0')THEN
bcd1n<="0000";--J1<='1';
ELSIF(EN4='1')THEN
IF(clk'EVENTANDclk='1')THEN
IF(bcd1n=0andvcd10n/=0)THEN
bcd1n<="1001";
ELSif(bcd1n=0andvcd10n=0)THEN
bcd1n<="0000";
ELSE
bcd1n<=bcd1n-1;
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS;
q1<=bcd1n;
y10<=vcd10n;
PROCESS(clk,cr)
BEGIN
IF(cr='0')THEN
vcd10n<="0011";--J1<='1';
ELSIF(EN4='1')THEN
IF(clk'EVENTANDclk='1')THEN
IF(bcd1n=0)THEN
IF(vcd10n=0)THEN
vcd10n<="0000";
ELSE
vcd10n<=vcd10n-1;
ENDIF;
ENDIF;
ENDIF;ENDIF;
ENDPROCESS;
PROCESS(bcd1n,vcd10n)
BEGIN
J3<='0';
if(bcd1n=0andvcd10n=0)THEN
J3<='1';
ENDIF;
ENDPROCESS;
enda;
2.3显示模块
显示模块是把计数模块传过来的数字转变成对应的十进制数显示出来。
显示模块的VHDL源文件如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYsm1IS
PORT(
b1,b2,b3,b4,b5:
INSTD_LOGIC;
Q0:
INSTD_LOGIC_VECTOR(3DOWNTO0);
Q1:
INSTD_LOGIC_VECTOR(3DOWNTO0);
Q2:
INSTD_LOGIC_VECTOR(3DOWNTO0);
Q3:
INSTD_LOGIC_VECTOR(3DOWNTO0);
Q4:
INSTD_LOGIC_VECTOR(3DOWNTO0);
Q5:
INSTD_LOGIC_VECTOR(3DOWNTO0);
Q6:
INSTD_LOGIC_VECTOR(3DOWNTO0);
Q7:
INSTD_LOGIC_VECTOR(3DOWNTO0);
Q8:
INSTD_LOGIC_VECTOR(3DOWNTO0);
CLK:
INSTD_LOGIC;
SG:
OUTSTD_LOGIC_VECTOR(6DOWNTO0);--段控制信号输出
BT:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));--位控制信号输出
END;
ARCHITECTUREoneOFsm1IS
SIGNALCN:
integerrange0to4;
SIGNALCNT2:
STD_LOGIC_VECTOR(1DOWNTO0);
SIGNALA:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
P1:
PROCESS(CN)
BEGIN
IF(b1='1')THENCN<=0;ENDIF;
IF(b2='1')THENCN<=1;ENDIF;
IF(b3='1')THENCN<=2;ENDIF;
IF(b4='1')THENCN<=3;ENDIF;
IF(b5='1')THENCN<=4;ENDIF;
CASECNIS
WHEN0=>
CASECNT2IS
WHEN"00"=>BT<="00000001";A<=Q0;
WHEN"01"=>BT<="00000010";A<=Q1;
WHENOTHERS=>NULL;
ENDCASE;
WHEN1=>BT<="10000000";A<=Q2;
WHEN2=>
CASECNT2IS
WHEN"00"=>BT<="00000001";A<=Q3;
WHEN"01"=>BT<="00000010";A<=Q4;
WHENOTHERS=>NULL;
ENDCASE;
WHEN3=>
CASECNT2IS
WHEN"00"=>BT<="00000100";A<=Q5;
WHEN"01"=>BT<="00001000";A<=Q6;
WHENOTHERS=>NULL;
ENDCASE;
WHEN4=>
CASECNT2IS
WHEN"00"=>BT<="00000100";A<=Q7;
WHEN"01"=>BT<="00001000";A<=Q8;
WHENOTHERS=>NULL;
ENDCASE;
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESSP1;
P2:
PROCESS(A)
BEGIN
CASEAIS
WHEN"0000"=>SG<="0111111";WHEN"0001"=>SG<="0000110";
WHEN"0010"=>SG<="1011011";WHEN"0011"=>SG<="1001111";
WHEN"0100"=>SG<="1100110";WHEN"0101"=>SG<="1101101";
WHEN"0110"=>SG<="1111101";WHEN"0111"=>SG<="0000111";
WHEN"1000"=>SG<="1111111";WHEN"1001"=>SG<="1101111";
WHENOTHERS=>NULL;
ENDCASE;
ENDPROCESSP2;
P3:
PROCESS(CLK)
BEGIN
IF(clk'EVENTANDclk='1')THEN
CNT2<=CNT2+1;
ENDIF;
ENDPROCESSP3;
END;
3.总电路设计
3.1仿真结果
总电路作为顶层模块,将计数模块、控制模块和显示模块(sm1)连接起来,加入输入输出,构成顶层文件。
电路图如下:
图3-1总体电路图
仿真波形如下:
图3-2电路总体仿真
如图3-1和图3-2所示,在clk端输入2ns的信号,在clk1端输入1ns的扫描频率,在reset端输入按钮低电平信号,仿真得到图3-2波形,计时器开始计时,指示灯轮流变换。
3.2仿真结果分析
通过设定clk值以及start和EMI的初值,就可以得到如上所示的仿真波形图。
由仿真波形图可以看出波形是由start初值信号触发而显示出各个状态的。
EMI高电平信号输入时,所有交通灯都变为红灯状态(符合任务书的要求)。
由仿真波形图还可以清楚的看出各时间段每个交通灯的状态。
要得到正确的仿真波形图就不许设定合适的时间信号clk值。
如果clk值设置的太小则交通灯状态变化得太快无法分辨,如果clk值设置得太大则交通灯状态转换缓慢,效果不明显。
其次,要设定start初值,如果没有设定start初值就不可能触发而得到仿真图。
最后,就是要设置一EMI高电平信号来检测紧急情况下的交通灯的状态。
4.总结与体会
经过这两周EDA课程设计以后,我发现我们在课本里学到的知识是很少的,若想学到很多的知识必须自己去查阅大量的书籍。
虽然这次课程设计中我们要用到自己以前熟悉的软件,但是时间较久,自己必须重新了解和学习软件的用法。
这次课程设计的目的,就是用所学的知识设计一个实用的系统,熟悉MAX+plusII软件使用,提高EDA技术的实际应用能力。
它培养学生综合运用所学知识,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
通过这次课程设计,不仅让我了解怎么去设计程序,更重要的还让我学会了怎么样和别人合作。
课程设计虽然很难做,其实最重要的是你去不去做的问题,再难做的事情只要你努力了就会有结果,开始,我没有查找资料,对软件也不熟悉,也没有和同学一起讨论。
而是一下子就开始去设计,单打独斗。
每一天自己打开软件弄个半天,然而总是得不出想要的结果,也不知道接下来要干什么。
后来,和同学一起讨论,找资料。
终于我自己的思路也慢慢清晰了。
最后经过不断努力,终于完成了任务,也许做得不是很完美,但我觉得经过这两周,我得到了很大的收获。
5.参考文献
1.康华光主编.电子技术基础(数字部分),高等教育出版社。
2.阎石主编.电子技术基础(数字部分),清华大学出版社。
3.陈大钦主编,电子技术基础实验,高等教育出版社。
4.彭介华主编,电子技术课程设计指导,高等教育出版社。
5.张原编著,可编程逻辑器件设计及应用,机械工业出版社。
6.荀殿栋,徐志军编著,数字电路设计实用手册,电子工业出版社。
7.MAX+plusⅡ入门
8.刘洪喜,陆颖编著.VHDL电路设计实用教程清华大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 湘潭 大学 职业技术学院