五人多数表决器.docx
- 文档编号:12819153
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:16
- 大小:347.42KB
五人多数表决器.docx
《五人多数表决器.docx》由会员分享,可在线阅读,更多相关《五人多数表决器.docx(16页珍藏版)》请在冰豆网上搜索。
五人多数表决器
湖南科技大学
《VHDL语言》
课程设计报告
题目:
VHDL语言课程设计
专业:
通信工程
班级:
002班
姓名:
谭芳芳
学号:
0954040220
题目
VHDL语言课程设计
设计时间
2011.12.19-2011.12.30
设计目的:
选题一:
设计一个五人多数表决器
系统地学习了EDA工程概论,VHDL描述语言和设计应用方面的基础知识
选题二:
数字式竞赛抢答器
能够较熟练地使用MAX_PLUSⅡ软件进行设计开发,用原理图输入及VHDL语言等设计输入并编译仿真,同时我们对以往学过的理论知识有了更加透彻的理解。
设计要求:
选题一:
五人多数表决逻辑:
多数通过;在主持人控制下,10秒内表决有效;用数码管显示表决10秒倒计时;表决结束后用发光二极管及数码管显示表决结果,数码管显示结果形式:
通过,不通过;设主持人控制键,复位键:
控制键:
启动表决;
选题二:
设计一个可容纳四组参赛者同时抢答的数字抢答器,可判断第一抢答者并报警指示抢答成功,其他组抢答均无效。
若提前抢答则对相应的抢答组发出警报。
同时还具有计分功能,若抢答成功并回答正确增加1分,答错不扣分。
总体方案实现:
选题一方案:
五人多数表决,只要在规定时间内,赞成人数大于或等于三,则表决通过。
因此,只需将每位表决人的结果相加,判断结果值。
设五个开关作为表决器的五个输入变量,输入变量为逻辑“1”时,表示表决者“赞成”;输入变量为“0”时,表示表决者“不赞成”。
输出逻辑“1”时,表示表决“通过”;输出逻辑“0”时,表示表决“不通过”。
当表决器的五个输入变量中有3个以上(含3个)为“1”时。
则表决器输出为“1”;否则为“0”。
选题二方案:
将整个系统分为三个主要模块:
抢鉴别模块QDJB;抢答计分模块JFQ;译码器YMQ,对于需显示的信息,需增加或外接译码器,进行显示译码。
指导教师评语:
VHDL课程设计报告
一、课程设计的目的
选题一五人多数表决器
五人多数表决逻辑:
多数通过;在主持人控制下,10秒内表决有效;用数码管显示表决10秒倒计时;表决结束后用发光二极管及数码管显示表决结果,数码管显示结果形式:
通过,不通过;设主持人控制键,复位键:
控制键:
启动表决
选题二数字式竞赛抢答器设计
1.可容纳四组参赛者进行抢答,每组设置一个抢答按钮供抢答者使用。
2.电路具有第一抢答信号的鉴别和锁存功能。
在主持人交系统复位并发出抢答指令后,若有一组先按下抢答开关,可判断第一抢答者并报警指示抢答成功,其他组抢答均无效。
若提前抢答则对相应的抢答组发出警报。
3.具有计分功能,抢答后由主持人计分,答对一次加1分,答错不加分。
二、设计方案的论证。
选题一:
提出至少两种设计方案,做出最优选择
方案一:
五人多数表决,只要在规定时间内,赞成人数大于或等于三,则表决通过。
因此,只需将每位表决人的结果相加,判断结果值。
设五个开关作为表决器的五个输入变量,输入变量为逻辑“1”时,表示表决者“赞成”;输入变量为“0”时,表示表决者“不赞成”。
输出逻辑“1”时,表示表决“通过”;输出逻辑“0”时,表示表决“不通过”。
当表决器的五个输入变量中有3个以上(含3个)为“1”时。
则表决器输出为“1”;否则为“0”。
方案二:
主持人说开始后,按下倒计时键,设五个开关作为表决器的五个输入变量,输入变量为逻辑“1”时,表示表决者“赞成”;输入变量为“0”时,表示表决者“不赞成”。
在规定时间内,如果赞成人数大于等于三,则表决通过,否则不通过。
最优方案:
方案一。
选题二数字式竞赛抢答器设计
我们可将整个系统分为三个主要模块:
抢鉴别模块;抢答计分模块;译码器.对于需显示的信息,需增加或外接译码器,进行显示译码。
考虑到FPGA、CPLD的可用接口及一般EDA实验开发系统的输出显示资源的限制,这里我们将组别显示和计时显示的译码器内设,而将各组的计分显示的译码器外接。
三、设计仿真及结果分析
方案一五人多数表决器:
仿真波形
复位时的模拟结果
规定时间外的结果
表决通过的波形
选题二数字式竞赛抢答器设计
1.抢答鉴别
2.计分器
3.译码器
4.总体实现
.系统的输入信号有:
各组的抢答按钮A、B、C、D,系统清零信号CLR,系统时钟信号CLK,计分复位端RST,加分按钮端ADD,计时预置控制端LDN,计时使能端EN,计时预置数据调整按钮TA、TB;
.系统的输出信号有:
四个组抢答成功与否的指示灯控制信号输出口LED_A、LES_B、LED_C、LED_D,四个组抢答时的计时数码显示控制信号若干,抢答成功组别显示的控制信号若干,各组计分动态显示的控制信号若干。
.本系统应具有的功能有:
第一抢答信号的鉴别和锁存功能;抢答计时功能;各组得分的累加和动态显示功能。
四、在设计及仿真中的体会
我选择的课题为数字式四路竞赛抢答器,根据电路的特点,采用层次化结构化设计,将此项设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,然后再将各模块合起来调试。
在设计的过程中,遇到问题我们先独立思考,查找资料。
到自己不能解决的时候就和其他同学研究讨论,向指导老师请教。
这样既提高了独立发现问题、分析问题、解决问题的能力,又很好地培养了交流合作的精神。
虽然在程序的编写方面还不是很完善,我们还是设计出了我们需要的模块。
此次实习前我们对于数字电子技术这门课程的学习仅是纸上谈兵,在头脑中抽象地记忆理解那些课本上的理论知识,有些理论知识晦涩难懂,甚至要靠自己死记硬背。
而这次的实习就提供机会让我们在实践中灵活运用知识。
在设计过程中,由于对于VHDL语言的了解不多,在变量的定义,以及过程(process)的定义与应用等方面遇到了很大的阻力,也让我吃了不少的苦头,但是在大家齐心协力,以及在老师的耐心指导下,最终还是克服了重重难关。
虽然在程序的编写方面还不是很完善,还是设计出了需要的模块。
在这次设计中,应该说从功能的实现到流程图的绘制,从程序的编写到程序的检查,从程序的调试到实验报告的写作,其间每一个过程都凝聚着辛苦和汗水。
五、对本次课程设计的体会和建议
编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。
所以认真仔细就是非常重要的了。
开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。
经过两星期的EDA实习,成功地设计出了数字式四路竞赛抢答器。
回首这两周,虽然因为初次涉及EDA技术及MAX_PLUSⅡ软件,对相关知识知之甚少,也遇到了很多困难,但是在这次实习的过程中都受益匪浅。
在这次课程设计的前期,先系统地学习了EDA工程概论,VHDL描述语言和设计应用方面的基础知识,使得后期能够较熟练地使用MAX_PLUSⅡ软件进行设计开发,用原理图输入及VHDL语言等设计输入并编译仿真,同时对以往学过的理论知识有了更加透彻的理解。
六、参考文献
[1]候伯亨,刘凯,VHDL硬件描述语言与数字逻辑电路设计;西安:
电子科技大学出版社
[2]曾繁泰,陈美金, VHDL程序设计, 北京:
清华大学出版社
[3]谭会生,张昌凡, EDA技术及应用,西安:
西安电子科技大学出版社
[4]李国丽,朱维勇. EDA与数字系统设计, 北京:
机械工业出版社
附录一:
选题一五人多数表决器
LIBRARYIEEE;
useieee.std_logic_1164.all;
useieee.std_logic_ARITH.all;
useieee.std_logic_UNSIGNED.all;
ENTITYBIAOJUEis
PORT(FF:
INSTD_LOGIC_VECTOR(1TO5);
QQ:
OUTBIT;
QALL:
OUTSTD_LOGIC_VECTOR(3DOWNTO1);
SHIJIAN:
BUFFERSTD_LOGIC_VECTOR(3DOWNTO0);
FUWEI,KAISHI,CLK:
INSTD_LOGIC);
ENDBIAOJUE;
ARCHITECTUREFUNGofBIAOJUEis
BEGIN
PROCESS(FF,CLK,KAISHI,FUWEI)
VARIABLESUO:
BOOLEAN;
VARIABLESUM:
STD_LOGIC_VECTOR(1TO3);
BEGIN
IF(FUWEI='0')THEN
QQ<='0';
SUM:
="000";
QALL<="000";
ELSIF(CLK'EVENTANDCLK='1')THEN
IF(KAISHI='1')THEN
SUO:
=FALSE;
IF(NOTSUO)THEN
SHIJIAN<="1010";
IFSHIJIAN<="0000"THEN
SUO:
=TRUE;
FORNIN1TO5LOOP
SUM:
=FF(N)+SUM;
ENDLOOP;
ELSE
SHIJIAN<=SHIJIAN-1;
ENDIF;
ENDIF;
QALL<=SUM;
IF(SUM>=3)THEN
QQ<='1';
ELSEQQ<='0';ENDIF;
ENDIF;ENDIF;
ENDPROCESS;
ENDFUNG;
附录二
选题二数字式竞赛抢答器设计
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityfouris
port(CLK1,EN1,KAISHI:
instd_logic;
A,B,C,D:
instd_logic;---------QDJB
A1,B1,C1,D1,RING:
outstd_logic;
STATES:
outstd_logic_vector(3DOWNTO0);
RST1:
INSTD_LOGIC;
ADD:
INSTD_LOGIC;
CHOS:
INSTD_LOGIC_VECTOR(3DOWNTO0);------JFQ
AA2,AA1,AA0,BB2,BB1,BB0:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
CC2,CC1,CC0,DD2,DD1,DD0:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
AIN4:
INSTD_LOGIC_VECTOR(3DOWNTO0);
DOUT7:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));--------YMQ
endentityfour;
architectureoneoffouris
signalsinor,ringf,tmp,two:
std_logic;---------QDJB.VHD
signalcnt:
std_logic_vector(5DOWNTO0);
-----------------------------------------------
begin
sinor<=(AXORB)XOR(CXORD);--------QDJB.VHD
two<=AandB;
p1:
process(A,B,C,D,KAISHI,tmp)
begin
ifKAISHI='1'then
tmp<='1';STATES<="0000";
elsiftmp='1'then
if(A='1'ANDB='0'ANDC='0'ANDD='0')then
A1<='1';B1<='0';C1<='0';D1<='0';STATES<="0001";tmp<='0';
ELSIF(A='0'ANDB='1'ANDC='0'ANDD='0')THEN
A1<='0';B1<='1';C1<='0';D1<='0';STATES<="0010";tmp<='0';
ELSIF(A='0'ANDB='0'ANDC='1'ANDD='0')THEN
A1<='0';B1<='0';C1<='1';D1<='0';STATES<="0011";tmp<='0';
ELSIF(A='0'ANDB='0'ANDC='0'ANDD='1')THEN
A1<='0';B1<='0';C1<='0';D1<='1';STATES<="0100";tmp<='0';
elsetmp<='1';STATES<="0000";
endif;
endif;
endprocessp1;
p2:
process(CLK1,EN1,KAISHI,cnt)
begin
ifKAISHI='1'then
cnt<="000000";ringf<='0';
elsifCLK1'eventandCLK1='1'then
ifEN1='0'andsinor='1'then
iftwo='0'then
ifcnt<="111111"then
ringf<=notringf;cnt<=cnt+1;
elseringf<='0';
endif;
endif;
endif;
endif;
endprocessp2;
RING<=ringf;
-------------------------------------------------------------------
PROCESS(RST1,ADD,CHOS)IS--------JFQ
VARIABLEPOINTS_A2,POINTS_A1,POINTS_A0:
STD_LOGIC_VECTOR(3DOWNTO0);
VARIABLEPOINTS_B2,POINTS_B1,POINTS_B0:
STD_LOGIC_VECTOR(3DOWNTO0);
VARIABLEPOINTS_C2,POINTS_C1,POINTS_C0:
STD_LOGIC_VECTOR(3DOWNTO0);
VARIABLEPOINTS_D2,POINTS_D1,POINTS_D0:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
IF(ADD'EVENTANDADD='1')THEN
IFRST1='1'THEN
POINTS_A2:
="0000";POINTS_A1:
="0000";POINTS_A0:
="0000";
POINTS_B2:
="0000";POINTS_B1:
="0000";POINTS_B0:
="0000";
POINTS_C2:
="0000";POINTS_C1:
="0000";POINTS_C0:
="0000";
POINTS_D2:
="0000";POINTS_D1:
="0000";POINTS_D0:
="0000";
ELSIFCHOS="0001"THEN
IFPOINTS_A0="1001"THEN
POINTS_A0:
="0000";
IFPOINTS_A1="1001"THEN
POINTS_A1:
="0000";
IFPOINTS_A2="1001"THEN
POINTS_A2:
="0000";
ELSE
POINTS_A2:
=POINTS_A2+'1';
ENDIF;
ELSE
POINTS_A1:
=POINTS_A1+'1';
ENDIF;
ELSE
POINTS_A0:
=POINTS_A0+'1';
ENDIF;
ELSIFCHOS="0010"THEN
IFPOINTS_B0="1001"THEN
POINTS_B0:
="0000";
IFPOINTS_B1="1001"THEN
POINTS_B1:
="0000";
IFPOINTS_B2="1001"THEN
POINTS_B2:
="0000";
ELSE
POINTS_B2:
=POINTS_B2+'1';
ENDIF;
ELSE
POINTS_B1:
=POINTS_B1+'1';
ENDIF;
ELSE
POINTS_B0:
=POINTS_B0+'1';
ENDIF;
ELSIFCHOS="0011"THEN
IFPOINTS_C0="1001"THEN
POINTS_C0:
="0000";
IFPOINTS_C1="1001"THEN
POINTS_C1:
="0000";
IFPOINTS_C2="1001"THEN
POINTS_C2:
="0000";
ELSE
POINTS_C2:
=POINTS_C2+'1';
ENDIF;
ELSE
POINTS_C1:
=POINTS_C1+'1';
ENDIF;
ELSE
POINTS_C0:
=POINTS_C0+'1';
ENDIF;
ELSIFCHOS="0100"THEN
IFPOINTS_D0="1001"THEN
POINTS_D0:
="0000";
IFPOINTS_D1="1001"THEN
POINTS_D1:
="0000";
IFPOINTS_D2="1001"THEN
POINTS_D2:
="0000";
ELSE
POINTS_D2:
=POINTS_D2+'1';
ENDIF;
ELSE
POINTS_D1:
=POINTS_D1+'1';
ENDIF;
ELSE
POINTS_D0:
=POINTS_D0+'1';
ENDIF;
ENDIF;
ENDIF;
AA2<=POINTS_A2;AA1<=POINTS_A1;AA0<=POINTS_A0;
BB2<=POINTS_B2;BB1<=POINTS_B1;BB0<=POINTS_B0;
CC2<=POINTS_C2;CC1<=POINTS_C1;CC0<=POINTS_C0;
DD2<=POINTS_D2;DD1<=POINTS_D1;DD0<=POINTS_D0;
ENDPROCESS;
---------------------------------------------------------------------
PROCESS(AIN4)
BEGIN--------YMQ
CASEAIN4IS
WHEN"0000"=>DOUT7<="0111111";--0
WHEN"0001"=>DOUT7<="0000110";--1
WHEN"0010"=>DOUT7<="1011011";--2
WHEN"0011"=>DOUT7<="1001111";--3
WHEN"0100"=>DOUT7<="1100110";--4
WHEN"0101"=>DOUT7<="1101101";--5
WHEN"0110"=>DOUT7<="1111101";--6
WHEN"0111"=>DOUT7<="0000111";--7
WHEN"1000"=>DOUT7<="1111111";--8
WHEN"1001"=>DOUT7<="1101111";--9
WHENOTHERS=>DOUT7<="0000000";
ENDCASE;
ENDPROCESS;
endone;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多数 表决器