EDA课程设计报告智能函数信号发生器抢答器.docx

上传人:b****6 文档编号:5024999 上传时间:2022-12-12 格式:DOCX 页数:25 大小:1.05MB
下载 相关 举报
EDA课程设计报告智能函数信号发生器抢答器.docx_第1页
第1页 / 共25页
EDA课程设计报告智能函数信号发生器抢答器.docx_第2页
第2页 / 共25页
EDA课程设计报告智能函数信号发生器抢答器.docx_第3页
第3页 / 共25页
EDA课程设计报告智能函数信号发生器抢答器.docx_第4页
第4页 / 共25页
EDA课程设计报告智能函数信号发生器抢答器.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

EDA课程设计报告智能函数信号发生器抢答器.docx

《EDA课程设计报告智能函数信号发生器抢答器.docx》由会员分享,可在线阅读,更多相关《EDA课程设计报告智能函数信号发生器抢答器.docx(25页珍藏版)》请在冰豆网上搜索。

EDA课程设计报告智能函数信号发生器抢答器.docx

EDA课程设计报告智能函数信号发生器抢答器

 

江苏大学

电气学院EDA课程设计报告

 

 

 

必选题目1:

序列检测器设计

一:

题目要求见课本p296页

二:

程序编写思路:

序列检测器用于检测一组或数组二进制数位是否与检测器中预置的码相同,由于检测的序列必须是连续的,所以要求检测器必须记住前一次的正确码以及正确序列,直到连续检测收到的码与预置的码完全一样。

检测过程中,任意一位的不相等都会回到出事状态重新开始检测。

若此数的每一位的连续检测都与预置的数完全一样,则输出A,否则输出B\。

三:

程序见课本p296页—p297页

四:

程序仿真波形

程序仿真说明:

在D中预置八位的序列,当clk时钟信号为上升沿时,开始检测,当Din中序列与预置序列D完全相同时,AB中输出A,否则输出B,当RST为高电平有效时,Din从头开始检测与D中预置序列匹配。

必选题目2:

八位并行预置加法计数器设计

一.题目要求见P276页

二.题目设计思路

该加法计数器含有技术使能,异步复位和计数值并行预置的八位加法计数器

,其中ID,EN,CLK,RST分别是并行输入预置使能信号,计数时钟使能信号,计数时钟信号和复位信号。

其中ID并行输入预置使能信号作为高电平要保持时间必须包含一个上升沿。

三.程序见课本P277页

四.程序仿真波形

程序仿真说明:

D中预置两位计数初值,CLK为上升沿,RST为高电平有效时,Q置0,当SET信号为高电平时,Q置为计数初值,当EN为高电平时Q加1,EN为低电平时Q保持不变。

自选题目1:

智能函数发生器

一.要求:

函数发生器能够长生递增斜波,递减斜波,阶梯波,三角波,方波和正弦波,并可以通过选通开关选择输出的波形。

二.设计思路:

智能函数发生器可由递增斜波产生模块,递减斜波产生模块,阶梯波产生模块,三角波产生模块,方波产生模块,正弦波产生模块和一个选通模块组成。

三.程序代码及仿真波形

递增模块(icrs):

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYICRSIS

PORT(

CLK,CLR:

INSTD_LOGIC;--时钟信号,复位信号

Q:

OUTSTD_LOGIC_VECTOR(7DOWNTO0)--输出函数值

);

ENDICRS;

ARCHITECTUREONEOFICRSIS

BEGIN

PROCESS(CLK,CLR)

VARIABLETMP:

STD_LOGIC_VECTOR(7DOWNTO0);--中间变量

BEGIN

IFCLR='1'THENTMP:

="00000000";--清0

ELSIFCLK'EVENTANDCLK='0'THEN--下降沿触发

IFTMP="11111111"THENTMP:

="00000000";

ELSETMP:

=TMP+1;

ENDIF;

ENDIF;

Q<=TMP;

ENDPROCESS;

ENDONE;

仿真波形如下:

递减模块(dcrs):

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYDCRSIS

PORT(CLK,CLR:

INSTD_LOGIC;

Q:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDDCRS;

ARCHITECTUREONEOFDCRSIS

BEGIN

PROCESS(CLK,CLR)

VARIABLETMP:

STD_LOGIC_VECTOR(7DOWNTO0);

BEGIN

IFCLR='1'THENTMP:

="11111111";--复位为最大值

ELSIFCLK'EVENTANDCLK='1'THEN

IFTMP="00000000"THENTMP:

="11111111";

ELSETMP:

=TMP-1;

ENDIF;

ENDIF;

Q<=TMP;

ENDPROCESS;

ENDONE;

仿真波形如下:

阶梯波(ladder):

通过改变阶梯常数可以改变递增的阶梯数

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYLADDERIS

PORT(CLK,CLR:

INSTD_LOGIC;

Q:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDLADDER;

ARCHITECTUREONEOFLADDERIS

BEGIN

PROCESS(CLK,CLR)

VARIABLETMP:

STD_LOGIC_VECTOR(7DOWNTO0);

VARIABLEA:

STD_LOGIC;

BEGIN

IFCLR='1'THENTMP:

="00000000";

ELSIFCLK'EVENTANDCLK='0'THEN

IFA='0'THEN

IFTMP="11111111"THENTMP:

="00000000";A:

='1';

ELSETMP:

=TMP+16;A:

='1';--阶梯常数为16

ENDIF;

ELSEA:

='0';

ENDIF;

ENDIF;

Q<=TMP;

ENDPROCESS;

ENDONE;

仿真波形如下:

三角波模块(delta):

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYDELTAIS

PORT(CLK,CLR:

INSTD_LOGIC;

Q:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDDELTA;

ARCHITECTUREONEOFDELTAIS

BEGIN

PROCESS(CLK,CLR)

VARIABLETMP:

STD_LOGIC_VECTOR(7DOWNTO0);

VARIABLEA:

STD_LOGIC;

BEGIN

IFCLR='1'THENTMP:

="00000000";

ELSIFCLK'EVENTANDCLK='0'THEN

IFA='0'THEN--A=0,递增过程

IFTMP="11111110"THENTMP:

="11111111";A:

='1';--增到最大值后转为递减过程

ELSETMP:

=TMP+1;

ENDIF;

ELSE--A=1,递减过程

IFTMP="00000001"THENTMP:

="00000000";A:

='0';--减到最小值后转为递增过程

ELSETMP:

=TMP-1;

ENDIF;

ENDIF;

ENDIF;

Q<=TMP;

ENDPROCESS;

ENDONE;

仿真波形如下:

由仿真图可以看出输出刚开始递增,增到最大值FF后转为递减,输出实现三角波波形。

方波模块(square):

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYSQUAREIS

PORT(CLK,CLR:

INSTD_LOGIC;

Q:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDSQUARE;

ARCHITECTUREONEOFSQUAREIS

SIGNALA:

STD_LOGIC;--分频信号

BEGIN

PROCESS(CLK,CLR)

VARIABLETMP:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

IFCLR='1'THENA<='0';

ELSIFCLK'EVENTANDCLK='1'THEN

IFTMP="1111"THENTMP:

="0000";A<=NOTA;

ELSETMP:

=TMP+1;

ENDIF;

ENDIF;

ENDPROCESS;

PROCESS(CLK,A)

BEGIN

IFCLK'EVENTANDCLK='1'THEN

IFA='1'THENQ<="11111111";--输出高电平

ELSEQ<="00000000";--输出低电平

ENDIF;

ENDIF;

ENDPROCESS;

ENDONE;

仿真波形如下:

正弦波模块(sin):

一个周期取64个采样点,输出其函数值

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYSINIS

PORT(CLK,CLR:

INSTD_LOGIC;

Q:

OUTINTEGERRANGE0TO255);

ENDSIN;

ARCHITECTUREONEOFSINIS

BEGIN

PROCESS(CLK,CLR)

VARIABLETMP:

INTEGERRANGE0TO63;

BEGIN

IFCLR='1'THENQ<=0;

ELSIFCLK'EVENTANDCLK='0'THEN

IFTMP=63THENTMP:

=0;ELSETMP:

=TMP+1;

ENDIF;

CASETMPIS

WHEN0=>Q<=255;WHEN1=>Q<=254;WHEN2=>Q<=252;

WHEN3=>Q<=249;WHEN4=>Q<=245;WHEN5=>Q<=239;

WHEN6=>Q<=233;WHEN7=>Q<=225;WHEN8=>Q<=217;

WHEN9=>Q<=207;WHEN10=>Q<=197;WHEN11=>Q<=186;

WHEN12=>Q<=174;WHEN13=>Q<=162;WHEN14=>Q<=150;

WHEN15=>Q<=137;WHEN16=>Q<=124;WHEN17=>Q<=112;

WHEN18=>Q<=99;WHEN19=>Q<=87;WHEN20=>Q<=75;

WHEN21=>Q<=64;WHEN22=>Q<=53;WHEN23=>Q<=43;

WHEN24=>Q<=34;WHEN25=>Q<=26;WHEN26=>Q<=19;

WHEN27=>Q<=13;WHEN28=>Q<=8;WHEN29=>Q<=4;

WHEN30=>Q<=1;WHEN31=>Q<=0;WHEN32=>Q<=0;

WHEN33=>Q<=1;WHEN34=>Q<=4;WHEN35=>Q<=8;

WHEN36=>Q<=13;WHEN37=>Q<=19;WHEN38=>Q<=26;

WHEN39=>Q<=34;WHEN40=>Q<=43;WHEN41=>Q<=53;

WHEN42=>Q<=64;WHEN43=>Q<=75;WHEN44=>Q<=87;

WHEN45=>Q<=99;WHEN46=>Q<=112;WHEN47=>Q<=124;

WHEN48=>Q<=137;WHEN49=>Q<=150;WHEN50=>Q<=162;

WHEN51=>Q<=174;WHEN52=>Q<=186;WHEN53=>Q<=197;

WHEN54=>Q<=207;WHEN55=>Q<=217;WHEN56=>Q<=225;

WHEN57=>Q<=233;WHEN58=>Q<=239;WHEN59=>Q<=245;

WHEN60=>Q<=249;WHEN61=>Q<=252;WHEN62=>Q<=254;

WHEN63=>Q<=255;

WHENOTHERS=>NULL;

ENDCASE;

ENDIF;

ENDPROCESS;

ENDONE;

仿真波形如下:

由仿真图可以看出输出波形周期性递增,递减,但是并非线性增减,输出实现正弦波波形。

波形选择模块(ch61a)

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYCH61AIS

PORT(SEL:

INSTD_LOGIC_VECTOR(2DOWNTO0);

D0,D1,D2,D3,D4,D5:

INSTD_LOGIC_VECTOR(7DOWNTO0);

Q:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDCH61A;

ARCHITECTUREONEOFCH61AIS

BEGIN

PROCESS(SEL)

BEGIN

CASESELIS

WHEN"000"=>Q<=D0;--递增

WHEN"001"=>Q<=D1;--递减

WHEN"010"=>Q<=D2;--阶梯波

WHEN"011"=>Q<=D3;--三角波

WHEN"100"=>Q<=D4;--方波

WHEN"101"=>Q<=D5;--正弦波

WHENOTHERS=>Q<=NULL;

ENDCASE;

ENDPROCESS;

ENDONE;

整体电路原理图:

整体仿真波形:

由仿真图可以看出输出波形由控制信号sel[2...0]控制输出,分别对应递增,递减,阶梯波,三角波,方波和正弦波。

因面副原因不能完全显示出来。

自选题目2:

抢答器:

一、要求:

1有四位选手参赛;

2在抢答开始前如果有选手抢答,能够给出报警信号,并显示是哪一位选手提前抢答。

3在开始抢答之后能够判断是哪一位选手最先抢答,同时点亮对应选手成功抢答信号灯,此后不再接受其他选手抢答信号。

4若选手成功抢答并且正确回答问题,给选手加1分,若回答错误则减1分。

5若有选手达到10分则成为赢家,给出对应选手赢的信号;若有选手在已经是0分情况下回答错误,则判其输,退出之后的比赛,同时给出对应选手输的信号。

6实时显示选手的分数情况。

二、设计思路:

该抢答器可分为抢答判优,比赛计分和分数显示三个模块组成,抢答判优模块实现功能2和3,比赛计分模块实现功能4和5,显示模块实现功能6;具体程序如下。

三、程序代码及仿真波形

抢答判优模块:

其中CLR是清0控制信号,EN是抢答使能信号,A,B,C,D分别代表四位参赛选手,LEDA,LEDB,LEDC,LEDD分别表示四位选手成功抢答信号灯,FALSE[3...0]是提前抢答报警信号,能显示具体是哪位选手提前抢答,Q成功抢答信号,能显示具体成功抢答的选手。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYQIANGDAPANDUANIS

PORT(

CLR:

INSTD_LOGIC;

EN:

INSTD_LOGIC;

A,B,C,D:

INSTD_LOGIC;

LEDA,LEDB,LEDC,LEDD:

OUTSTD_LOGIC;

FALSE:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

Q:

OUTSTD_LOGIC_VECTOR(3DOWNTO0)

);

ENDQIANGDAPANDUAN;

ARCHITECTURERTLOFQIANGDAPANDUANIS

SIGNALTMP:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALTAG:

STD_LOGIC;--锁存标志位

BEGIN

TMP<=A&B&C&D;

PROCESS(CLR,EN,A,B,C,D,TMP)

BEGIN

IFCLR='1'THEN

Q<="0000";

LEDA<='0';

LEDB<='0';

LEDC<='0';

LEDD<='0';

FALSE<="0000";

TAG<='0';

ELSIFEN='0'THEN--提前抢答,报警

IFA='1'THEN

FALSE(3)<='1';

ENDIF;

IFB='1'THEN

FALSE

(2)<='1';

ENDIF;

IFC='1'THEN

FALSE

(1)<='1';

ENDIF;

IFD='1'THEN

FALSE(0)<='1';

ENDIF;

ELSE--开始抢答

FALSE<="0000";

IFTAG='0'THEN--尚未有成功抢答者

IFTMP="1000"THEN--A抢答成功

LEDA<='1';--亮灯A

LEDB<='0';

LEDC<='0';

LEDD<='0';

Q<="1000";--输出A抢答成功

TAG<='1';--锁存此状态

ELSIFTMP="0100"THEN

LEDA<='0';

LEDB<='1';

LEDC<='0';

LEDD<='0';

Q<="0100";

TAG<='1';

ELSIFTMP="0010"THEN

LEDA<='0';

LEDB<='0';

LEDC<='1';

LEDD<='0';

Q<="0010";

TAG<='1';

ELSIFTMP="0001"THEN

LEDA<='0';

LEDB<='0';

LEDC<='0';

LEDD<='1';

Q<="0001";

TAG<='1';

ENDIF;

ENDIF;

ENDIF;

ENDPROCESS;

ENDRTL;

仿真波形如下:

刚开始D提前抢答,输出报警信号,由FALSE信号输出0001可知是D提前抢答。

清0后重新开始,抢答使能信号EN=1有效,开始抢答,C最先抢答,LEDC点亮,Q输出0010可知是C选手最先成功抢答。

比赛计分模块:

CHOS[3...0]表示成功抢答的选手,CLK是时钟信号,ADD,SUB分别表示回答正确加分和回答错误减分信号,WINA,WINB,WINC,WIND分别表示四位选手赢信号,LOSEA,LOSEB,LOSEC.LOSED分别表示输信号,A0,B0,C0,D0分别表示四位选手的得分,A2,A1分别表示选手A得分的十位和个位数字,用于输出模块译码输出;

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYBISAIMOKUAIIS

PORT(

CHOS:

INSTD_LOGIC_VECTOR(3DOWNTO0);

ADD:

INSTD_LOGIC;

SUB:

INSTD_LOGIC;

CLK:

INSTD_LOGIC;

A0,B0,C0,D0:

OUTSTD_LOGIC_VECTOR(7DOWNTO0);

A2,A1:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

B2,B1:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

C2,C1:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

D2,D1:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

WINA,WINB,WINC,WIND:

OUTSTD_LOGIC;

LOSEA,LOSEB,LOSEC,LOSED:

OUTSTD_LOGIC

);

ENDBISAIMOKUAI;

ARCHITECTURERTLOFBISAIMOKUAIIS

BEGIN

PROCESS(CLK,ADD,SUB,CHOS)

VARIABLEPOINTS_A2:

STD_LOGIC_VECTOR(3DOWNTO0);

VARIABLEPOINTS_A1:

STD_LOGIC_VECTOR(3DOWNTO0);

VARIABLEPOINTS_B2:

STD_LOGIC_VECTOR(3DOWNTO0);

VARIABLEPOINTS_B1:

STD_LOGIC_VECTOR(3DOWNTO0);

VARIABLEPOINTS_C2:

STD_LOGIC_VECTOR(3DOWNTO0);

VARIABLEPOINTS_C1:

STD_LOGIC_VECTOR(3DOWNTO0);

VARIABLEPOINTS_D2:

STD_LOGIC_VECTOR(3DOWNTO0);

VARIABLEPOINTS_D1:

STD_LOGIC_VECTOR(3DOWNTO0);

VARIABLEWA,WB,WC,WD:

STD_LOGIC;

VARIABLELA,LB,LC,LD:

STD_LOGIC;

BEGIN

IFCLK'EVENTANDCLK='1'THEN

IFADD='1'THEN

IFCHOS="1000"THEN

IFPOINTS_A1="1001"THEN

POINTS_A1:

="0000";

POINTS_A2:

=POINTS_A2+'1';

WA:

='1';

ELSE

POINTS_A1:

=POINTS_A1+'1';

ENDIF;

ELSIFCHOS="0100"THEN

IFPOINTS_B1="1001"THEN

POINTS_B1:

="0000";

POINTS_B2:

=POINTS_B2+'1';

WB:

='1';

ELSE

POINTS_B1:

=POINTS_B1+'1';

ENDIF;

ELSIFCHOS="0010"THEN

IFPOINTS_C1="1001"THEN

POINTS_C1:

="0000";

POINTS_C2:

=POINTS_C2+'1';

WC:

='1';

ELSE

POINTS_C1:

=POINTS_C1+'1';

ENDIF;

ELSIFCHOS="0001"THEN

IFPOINTS_D1="1001"THEN

POINTS_D1:

="0000";

POINTS_D2:

=POINTS_D2+'1';

WD:

='1';

ELSE

POINTS_D1:

=POINTS_D1+'1';

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1