电子设计自动化.docx
《电子设计自动化.docx》由会员分享,可在线阅读,更多相关《电子设计自动化.docx(15页珍藏版)》请在冰点文库上搜索。
电子设计自动化
电子设计自动化
电子设计自动化
实习报告
实习题目:
多人表决器设计
实习时间:
2015年3月30日至2015年4月5日
班级学号:
电子信息科学与技术12级2班
姓名:
李明
指导老师:
赵玉刚董胜
一.…………………………设计题目与指标要求
二.…………………………………设计平台及器件
三.…………………………………………….设计方案
四.………………………………………………..实验步骤
五.………………………………………………………..结论
六.………………………………….................心得体会
一.设计题目与指标要求
(1)、设计题目:
多人表决器的设计(设计9人表决器)。
(2)、指标要求:
9人投票表决,如果同意人数过半,LED灯亮,表示通过;否则,小灯不亮,行为无效。
将两次表决结果相应的支持和反对人数同时用数码管显示,行为的有无有效性用LED灯的亮灭来显示。
可以进行多个议案表决(题目中:
2个议案)。
使用液晶显示多人表决器题目字母,可以实现通过开关选择A或B议案(选择时,对应A或B的LED亮红灯),通过9秒倒计时对表决结果进行锁存,通过复位清零。
二、设计平台及器件
(1)、设计平台:
QuartusII软件、DE2-70实验板;
(2)、实验器件:
5个数码显示管(2位输出A议案,2位输出B议案,1个9秒计时),14个拉动开关键(9个输入表决结果开关,2个复位开关、1个信号选择开关、1个倒计时使能)4个led小灯(2个信号选择显示灯——red、2个议案通过显示灯——green)。
三.设计方案:
(1)设计分析图:
(2)通过以上设计分析对多人表决器进行代码编写,以下是模拟工作原理图:
打开复位开关,通过1个议案选择开关对议案进行选择(被选者对应LED灯亮红灯),打开计时使能开关进行9秒到计时,在此期间进行投票(超过半数对应LED灯亮绿灯,表示议案通过,否则不亮灯,表示议案被否决)。
10秒过后,投票结束,结果被锁存,通过重新复位给使能信号对结果清零。
通过此图可以看出本方案以两位数码管显示一个议案,共表示两个议案结果
四.实验步骤:
(1)程序代码:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYZHUTIIS
PORT(
SEL:
INSTD_LOGIC;
VOTE:
INSTD_LOGIC_VECTOR(8DOWNTO0);
RESET_A:
INSTD_LOGIC;
RESET_B:
INSTD_LOGIC;
LED_APPROVE1_A:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
LED_APPROVE2_A:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
LED_OBJECT1_A:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
LED_OBJECT2_A:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
LED_APPROVE1_B:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
LED_APPROVE2_B:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
LED_OBJECT1_B:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
LED_OBJECT2_B:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
LED_PASS_A:
OUTSTD_LOGIC;
LED_PASS_B:
OUTSTD_LOGIC;
LED_A:
OUTSTD_LOGIC;
LED_B:
OUTSTD_LOGIC
);
ENDENTITYZHUTI;
ARCHITECTUREbhvOFZHUTIIS
COMPONENTbjq
PORT(
RESET:
INSTD_LOGIC;
VOTE_X:
INSTD_LOGIC_VECTOR(8DOWNTO0);
LED_PASS:
OUTSTD_LOGIC;
LED_APPROVE1:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
LED_APPROVE2:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
LED_OBJECT1:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
LED_OBJECT2:
OUTSTD_LOGIC_VECTOR(7DOWNTO0)
);
ENDCOMPONENT;
COMPONENTMUX21
PORT(
VOTE:
INSTD_LOGIC_VECTOR(8DOWNTO0);
SEL:
INSTD_LOGIC;
VOTE_1:
OUTSTD_LOGIC_VECTOR(8DOWNTO0);
VOTE_2:
OUTSTD_LOGIC_VECTOR(8DOWNTO0);
LED_1:
OUTSTD_LOGIC;
LED_2:
OUTSTD_LOGIC
);
ENDCOMPONENT;
SIGNALNET1,NET2:
STD_LOGIC_VECTOR(8DOWNTO0);
BEGIN
U1:
MUX21PORTMAP(VOTE=>VOTE,SEL=>SEL,VOTE_1=>NET1,VOTE_2=>NET2,LED_1=>LED_A,LED_2=>LED_B);
U2:
bjqPORTMAP(RESET=>RESET_A,VOTE_X=>NET1,LED_PASS=>LED_PASS_A,LED_APPROVE1=>LED_APPROVE1_A,LED_APPROVE2=>LED_APPROVE2_A,LED_OBJECT1=>LED_OBJECT1_A,LED_OBJECT2=>LED_OBJECT2_A);
U3:
bjqPORTMAP(RESET=>RESET_B,VOTE_X=>NET2,LED_PASS=>LED_PASS_B,LED_APPROVE1=>LED_APPROVE1_B,LED_APPROVE2=>LED_APPROVE2_B,LED_OBJECT1=>LED_OBJECT1_B,LED_OBJECT2=>LED_OBJECT2_B);
ENDARCHITECTUREbhv;
=====================================================================
--表决功能实现
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYbjqIS
PORT(
RESET:
INSTD_LOGIC;
VOTE_X:
INSTD_LOGIC_VECTOR(8DOWNTO0);
LED_PASS:
OUTSTD_LOGIC;
LED_APPROVE1:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
LED_APPROVE2:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
LED_OBJECT1:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
LED_OBJECT2:
OUTSTD_LOGIC_VECTOR(7DOWNTO0)
);
ENDENTITYbjq;
ARCHITECTUREbhvOFbjqIS
SIGNALq:
STD_LOGIC;
SIGNALq1:
STD_LOGIC_VECTOR(7DOWNTO0);
SIGNALq2:
STD_LOGIC_VECTOR(7DOWNTO0);
SIGNALq3:
STD_LOGIC_VECTOR(7DOWNTO0);
SIGNALq4:
STD_LOGIC_VECTOR(7DOWNTO0);
BEGIN
PROCESS(RESET,VOTE_X)
VARIABLEA:
INTEGER;
BEGIN
A:
=0;
IFRESET='0'THEN
q<='0';
q1<="11000000";
q2<="11000000";
q3<="11000000";
q4<="11000000";
ELSE
IFVOTE_X(0)='1'THENA:
=A+1;ENDIF;
IFVOTE_X
(1)='1'THENA:
=A+1;ENDIF;
IFVOTE_X
(2)='1'THENA:
=A+1;ENDIF;
IFVOTE_X(3)='1'THENA:
=A+1;ENDIF;
IFVOTE_X(4)='1'THENA:
=A+1;ENDIF;
IFVOTE_X(5)='1'THENA:
=A+1;ENDIF;
IFVOTE_X(6)='1'THENA:
=A+1;ENDIF;
IFVOTE_X(7)='1'THENA:
=A+1;ENDIF;
IFVOTE_X(8)='1'THENA:
=A+1;ENDIF;
CASEAIS
WHEN0=>q<='0';q1<="11000000";q2<="11000000";q3<="10010000";q4<="11000000";
WHEN1=>q<='0';q1<="11111001";q2<="11000000";q3<="10000000";q4<="11000000";
WHEN2=>q<='0';q1<="10100100";q2<="11000000";q3<="11111000";q4<="11000000";
WHEN3=>q<='0';q1<="10110000";q2<="11000000";q3<="10000010";q4<="11000000";
WHEN4=>q<='0';q1<="10011001";q2<="11000000";q3<="10010010";q4<="11000000";
WHEN5=>q<='1';q1<="10010010";q2<="11000000";q3<="10011001";q4<="11000000";
WHEN6=>q<='1';q1<="10000010";q2<="11000000";q3<="10110000";q4<="11000000";
WHEN7=>q<='1';q1<="11111000";q2<="11000000";q3<="10100100";q4<="11000000";
WHEN8=>q<='1';q1<="10000000";q2<="11000000";q3<="11111001";q4<="11000000";
WHEN9=>q<='1';q1<="10010000";q2<="11000000";q3<="11000000";q4<="11000000";
WHENOTHERS=>q<='Z';q1<="ZZZZZZZZ";q2<="ZZZZZZZZ";q3<="ZZZZZZZZ";q4<="ZZZZZZZZ";
ENDCASE;
ENDIF;
LED_APPROVE1<=q1;
LED_APPROVE2<=q2;
LED_OBJECT1<=q3;
LED_OBJECT2<=q4;
LED_PASS<=q;
ENDPROCESS;
ENDARCHITECTUREbhv;
=============================================================
--输入信号选择
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYMUX21IS
PORT(
VOTE:
INSTD_LOGIC_VECTOR(8DOWNTO0);
SEL:
INSTD_LOGIC;
VOTE_1:
OUTSTD_LOGIC_VECTOR(8DOWNTO0);
VOTE_2:
OUTSTD_LOGIC_VECTOR(8DOWNTO0);
LED_1:
OUTSTD_LOGIC;
LED_2:
OUTSTD_LOGIC
);
ENDENTITY;
ARCHITECTUREbhvOFMUX21IS
BEGIN
PROCESS(SEL)
BEGIN
IFSEL='0'THEN
VOTE_1<=VOTE;
LED_1<='1';LED_2<='0';
ELSE
VOTE_2<=VOTE;
LED_2<='1';LED_1<='0';ENDIF;
ENDPROCESS;
ENDARCHITECTUREbhv;
(2)编译仿真:
部分波形
选择信号仿真:
通过sel信号的高低,选择该信号输出端为哪一通道。
可以看出复位开关输入0有效,对程序复位,程序清零,显示输入1时,对程序进行选择方案有效。
表决单个议案仿真:
9人投票,5人赞成,绿灯亮通过,输出数码码序。
对数码管输入0有效数码亮,为1不亮,为共阴。
说明:
9人投票,5人赞成。
当sel=1时选通B议案决议,将b复位端置1,进行表决。
当sel=0时选通A议案决议,a复位端置1,进行表决。
相应得出信号选通灯的亮灭、LED显示码型和表决结果的亮灭情况。
显示赞成超过半数LED_pass亮,表示通过,显示不赞成未超过半数LED_pass不亮。
(3)综合生成的RLT图:
(4)锁定引脚:
以上仿真确认无误,则可设计编程锁定到目标芯片引脚下,做进一步的引脚测试,以便了解程序最终正确性。
(5)硬件测试:
经过检查没有错误后下载到实验开发板上,按照方案要求进行测试,如下图:
五.结论
。
经过,对多人表决器的实习,实现了对两个议案九人投票表决功能的实显。
如上图所示通过左边第一位数码管实现了九秒倒计锁存时,由左起第四个开关控制。
第3,4位数码管表示议案A;第7,8位数码管表示议案B,由左起2,3开关控制A与B投票。
Wh1至10表示参与投票人(不包括Wh7,未使用),左起第一开关,总复位。
通过本次实习,使得我对VHDL语言有了更进一步的了解。
六.实习心得
这次实习感触颇多,收获颇深。
大三的我,在这次的实习中学到了许多东西。
虽然,我最后成绩并不高,但是,这是我第一次认真的去融入是实习去,这使我对实习使用的的软件有了跟进一步的了解。
我与同组同学们一起查资料,一起改程序,对VHDL有了跟深刻的理解,对自己的VHDL重修有了很大的帮助.在学习期间,不断的学习和总结经验,巩固了所学的知识,提高了对实际问题的处理能力,并且经过辅导老师组织的实习答辩,为毕业设计总结了经验。
本次实习不仅培养了我们的动手能力,也让我们对课本上的知识有了跟灵活的应用,理论联系实际,独立自主进行设计,这不仅仅是一个好的学习方法,跟让我们了解了我们的缺陷在哪,从而查漏补缺,进一步完善自己,让学生学以致用。
通过这次的实习,也让我积累了一些经验,对以后从事相关工作有了一定的帮助。
在这里,非常感谢我的辅导老师赵老师和董老师对我的帮助和指导。