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

上传人:rrsccc 文档编号:8936964 上传时间:2021-01-26 格式:DOC 页数:21 大小:2.03MB
返回 下载 相关 举报
EDA课程设计报告--智能函数信号发生器&&抢答器.doc_第1页
第1页 / 共21页
EDA课程设计报告--智能函数信号发生器&&抢答器.doc_第2页
第2页 / 共21页
EDA课程设计报告--智能函数信号发生器&&抢答器.doc_第3页
第3页 / 共21页
EDA课程设计报告--智能函数信号发生器&&抢答器.doc_第4页
第4页 / 共21页
EDA课程设计报告--智能函数信号发生器&&抢答器.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《EDA课程设计报告--智能函数信号发生器&&抢答器.doc》由会员分享,可在线阅读,更多相关《EDA课程设计报告--智能函数信号发生器&&抢答器.doc(21页珍藏版)》请在三一文库上搜索。

1、江苏大学电气学院EDA课程设计报告 必选题目1:序列检测器设计一:题目要求见课本p296页二:程序编写思路:序列检测器用于检测一组或数组二进制数位是否与检测器中预置的码相同,由于检测的序列必须是连续的,所以要求检测器必须记住前一次的正确码以及正确序列,直到连续检测收到的码与预置的码完全一样。检测过程中,任意一位的不相等都会回到出事状态重新开始检测。若此数的每一位的连续检测都与预置的数完全一样,则输出A,否则输出B。三:程序见课本p296页p297页四:程序仿真波形程序仿真说明:在D中预置八位的序列,当clk时钟信号为上升沿时,开始检测,当Din中序列与预置序列D完全相同时,AB中输出A,否则输

2、出B,当RST为高电平有效时,Din从头开始检测与D中预置序列匹配。必选题目2:八位并行预置加法计数器设计一 题目要求见P276页二 题目设计思路该加法计数器含有技术使能,异步复位和计数值并行预置的八位加法计数器,其中ID,EN,CLK,RST分别是并行输入预置使能信号,计数时钟使能信号,计数时钟信号和复位信号。其中ID 并行输入预置使能信号作为高电平要保持时间必须包含一个上升沿。三 程序见课本P277页 四 程序仿真波形 程序仿真说明:D中预置两位计数初值,CLK为上升沿,RST为高电平有效时,Q置0,当SET信号为高电平时,Q置为计数初值,当EN为高电平时Q加1,EN为低电平时Q保持不变。

3、自选题目1:智能函数发生器一. 要求:函数发生器能够长生递增斜波,递减斜波,阶梯波,三角波,方波和正弦波,并可以通过选通开关选择输出的波形。 二. 设计思路:智能函数发生器可由递增斜波产生模块,递减斜波产生模块,阶梯波产生模块,三角波产生模块,方波产生模块,正弦波产生模块和一个选通模块组成。 三. 程序代码及仿真波形递增模块(icrs):LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ICRS IS PORT( CLK,CLR:IN STD_LOGIC; -时钟信号,复位信号 Q:

4、OUT STD_LOGIC_VECTOR(7 DOWNTO 0) -输出函数值 );END ICRS;ARCHITECTURE ONE OF ICRS ISBEGIN PROCESS(CLK,CLR) VARIABLE TMP:STD_LOGIC_VECTOR(7 DOWNTO 0); -中间变量 BEGIN IF CLR=1 THEN TMP:=00000000; -清0 ELSIF CLKEVENT AND CLK=0 THEN -下降沿触发 IF TMP=11111111 THEN TMP:=00000000; ELSE TMP:=TMP+1; END IF; END IF;Q=TMP;

5、END PROCESS;END ONE;仿真波形如下:递减模块(dcrs):LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DCRS IS PORT(CLK,CLR:IN STD_LOGIC; Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END DCRS;ARCHITECTURE ONE OF DCRS ISBEGINPROCESS(CLK,CLR)VARIABLE TMP:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINIF CLR=

6、1 THEN TMP:=11111111; -复位为最大值ELSIF CLKEVENT AND CLK=1 THENIF TMP=00000000 THEN TMP:=11111111;ELSE TMP:=TMP-1;END IF;END IF;Q=TMP;END PROCESS;END ONE;仿真波形如下:阶梯波(ladder):通过改变阶梯常数可以改变递增的阶梯数LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY LADDER ISPORT(CLK,CLR:IN STD_LOGI

7、C; Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END LADDER;ARCHITECTURE ONE OF LADDER ISBEGINPROCESS(CLK,CLR)VARIABLE TMP:STD_LOGIC_VECTOR(7 DOWNTO 0);VARIABLE A:STD_LOGIC;BEGINIF CLR=1 THEN TMP:=00000000;ELSIF CLKEVENT AND CLK=0 THENIF A=0THENIF TMP=11111111 THEN TMP:=00000000;A:=1;ELSE TMP:=TMP+16;A:=1; -阶梯

8、常数为16END IF;ELSE A:=0;END IF;END IF;Q=TMP;END PROCESS;END ONE;仿真波形如下:三角波模块(delta):LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DELTA ISPORT(CLK,CLR:IN STD_LOGIC; Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END DELTA;ARCHITECTURE ONE OF DELTA ISBEGINPROCESS(CLK,CLR)VARIABLE

9、 TMP:STD_LOGIC_VECTOR(7 DOWNTO 0);VARIABLE A:STD_LOGIC;BEGINIF CLR=1 THEN TMP:=00000000;ELSIF CLKEVENT AND CLK=0 THENIF A=0 THEN -A=0,递增过程IF TMP=11111110 THEN TMP:=11111111;A:=1; -增到最大值后转为递减过程ELSE TMP:=TMP+1;END IF;ELSE -A=1,递减过程IF TMP=00000001 THEN TMP:=00000000;A:=0; -减到最小值后转为递增过程ELSE TMP:=TMP-1;E

10、ND IF;END IF;END IF;Q=TMP;END PROCESS;END ONE;仿真波形如下:由仿真图可以看出输出刚开始递增,增到最大值FF后转为递减,输出实现三角波波形。方波模块(square):LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SQUARE ISPORT(CLK,CLR:IN STD_LOGIC; Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END SQUARE;ARCHITECTURE ONE OF SQUARE ISSIGN

11、AL A:STD_LOGIC; -分频信号BEGINPROCESS(CLK,CLR)VARIABLE TMP:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF CLR=1 THEN A=0;ELSIF CLKEVENT AND CLK=1 THENIF TMP=1111 THEN TMP:=0000;A=NOT A;ELSE TMP:=TMP+1;END IF;END IF;END PROCESS;PROCESS(CLK,A)BEGINIF CLKEVENT AND CLK=1 THENIF A=1 THEN Q=11111111; -输出高电平ELSE Q=00000

12、000; -输出低电平END IF;END IF;END PROCESS;END ONE;仿真波形如下:正弦波模块(sin):一个周期取64个采样点,输出其函数值LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SIN ISPORT(CLK,CLR:IN STD_LOGIC; Q:OUT INTEGER RANGE 0 TO 255);END SIN;ARCHITECTURE ONE OF SIN ISBEGINPROCESS(CLK,CLR)VARIABLE TMP:INTEGER

13、 RANGE 0 TO 63;BEGINIF CLR=1 THEN QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQNULL;END CASE;END IF;END PROCESS;END ONE;仿真波形如下:由仿真图可以看出输出波形周期性递增,递减,但是并非线性增减,输出实现正弦波波形。波形选择模块(ch61a)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CH61A IS PORT(SEL:IN STD_LOGIC_VECTOR(2 DOWNTO 0); D

14、0,D1,D2,D3,D4,D5:IN STD_LOGIC_VECTOR(7 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END CH61A;ARCHITECTURE ONE OF CH61A ISBEGINPROCESS(SEL)BEGIN CASE SEL IS WHEN000=QQQQQQQ=NULL; END CASE;END PROCESS;END ONE;整体电路原理图:整体仿真波形:由仿真图可以看出输出波形由控制信号sel2.0控制输出,分别对应递增,递减,阶梯波,三角波,方波和正弦波。因面副原因不能完全显示出来。自选题目2:抢答器

15、:一、要求:1 有四位选手参赛;2 在抢答开始前如果有选手抢答,能够给出报警信号,并显示是哪一位选手提前抢答。3 在开始抢答之后能够判断是哪一位选手最先抢答,同时点亮对应选手成功抢答信号灯,此后不再接受其 他选手抢答信号。4 若选手成功抢答并且正确回答问题,给选手加1分,若回答错误则减1分。 5 若有选手达到10分则成为赢家,给出对应选手赢的信号;若有选手在已经是0分情况下回答错误,则判其输,退出之后的比赛,同时给出对应选手输的信号。 6 实时显示选手的分数情况。 二、设计思路:该抢答器可分为抢答判优,比赛计分和分数显示三个模块组成,抢答判优模块实现功能2和3,比赛计分模块实现功能4和5,显示

16、模块实现功能6;具体程序如下。三、程序代码及仿真波形抢答判优模块:其中CLR是清0控制信号,EN是抢答使能信号,A,B,C,D分别代表四位参赛选手,LEDA, LEDB , LEDC , LEDD分别表示四位选手成功抢答信号灯,FALSE3.0是提前抢答报警信号,能显示具体是哪位选手提前抢答,Q成功抢答信号,能显示具体成功抢答的选手。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY QIANGDAPANDUAN IS PORT( CLR:IN STD_LOGIC; EN: IN STD_LOGIC; A,B,C,D:IN STD_LOGIC; LE

17、DA,LEDB,LEDC,LEDD:OUT STD_LOGIC; FALSE:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );END QIANGDAPANDUAN;ARCHITECTURE RTL OF QIANGDAPANDUAN IS SIGNAL TMP:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL TAG:STD_LOGIC; -锁存标志位BEGIN TMP=A&B&C&D; PROCESS(CLR,EN,A,B,C,D,TMP) BEGIN IF CLR=1 TH

18、EN Q=0000; LEDA=0; LEDB=0; LEDC=0; LEDD=0; FALSE=0000; TAG=0; ELSIF EN=0 THEN -提前抢答,报警 IF A=1 THEN FALSE(3)=1; END IF; IF B=1 THEN FALSE(2)=1; END IF; IF C=1 THEN FALSE(1)=1; END IF; IF D=1 THEN FALSE(0)=1; END IF; ELSE -开始抢答 FALSE=0000; IF TAG=0 THEN -尚未有成功抢答者 IF TMP=1000 THEN -A抢答成功 LEDA=1; -亮灯A L

19、EDB=0; LEDC=0; LEDD=0; Q=1000; -输出A抢答成功 TAG=1; -锁存此状态 ELSIF TMP=0100 THEN LEDA=0; LEDB=1; LEDC=0; LEDD=0; Q=0100; TAG=1; ELSIF TMP=0010 THEN LEDA=0; LEDB=0; LEDC=1; LEDD=0; Q=0010; TAG=1; ELSIF TMP=0001 THEN LEDA=0; LEDB=0; LEDC=0; LEDD=1; Q=0001; TAG=1; END IF; END IF; END IF; END PROCESS;END RTL;仿

20、真波形如下:刚开始D提前抢答,输出报警信号,由FALSE信号输出0001可知是D提前抢答。清0后重新开始,抢答使能信号EN=1有效,开始抢答,C最先抢答,LEDC点亮,Q输出0010可知是C选手最先成功抢答。比赛计分模块:CHOS3.0表示成功抢答的选手,CLK是时钟信号 , ADD , SUB分别表示回答正确加分和回答错误减分信号,WINA,WINB,WINC,WIND分别表示四位选手赢信号,LOSEA,LOSEB,LOSEC.LOSED分别表示输信号,A0,B0,C0,D0分别表示四位选手的得分,A2,A1分别表示选手A得分的十位和个位数字,用于输出模块译码输出;LIBRARY IEEE;

21、USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY BISAIMOKUAI IS PORT( CHOS:IN STD_LOGIC_VECTOR(3 DOWNTO 0); ADD:IN STD_LOGIC; SUB:IN STD_LOGIC; CLK:IN STD_LOGIC; A0,B0,C0,D0:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); A2,A1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); B2,B1:OUT STD_LOGIC_VECTOR(3 DOWNT

22、O 0); C2,C1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); D2,D1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); WINA,WINB,WINC,WIND:OUT STD_LOGIC; LOSEA,LOSEB,LOSEC,LOSED:OUT STD_LOGIC );END BISAIMOKUAI;ARCHITECTURE RTL OF BISAIMOKUAI ISBEGIN PROCESS(CLK,ADD,SUB,CHOS) VARIABLE POINTS_A2:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE

23、 POINTS_A1:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_B2:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_B1:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_C2:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_C1:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_D2:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINT

24、S_D1:STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE WA,WB,WC,WD:STD_LOGIC; VARIABLE LA,LB,LC,LD:STD_LOGIC; BEGIN IF CLKEVENT AND CLK=1 THEN IF ADD=1 THEN IF CHOS=1000 THEN IF POINTS_A1=1001 THEN POINTS_A1:=0000; POINTS_A2:=POINTS_A2+1; WA:=1; ELSE POINTS_A1:=POINTS_A1+1; END IF; ELSIF CHOS=0100 THEN IF POIN

25、TS_B1=1001 THEN POINTS_B1:=0000; POINTS_B2:=POINTS_B2+1; WB:=1; ELSE POINTS_B1:=POINTS_B1+1; END IF; ELSIF CHOS=0010 THEN IF POINTS_C1=1001 THEN POINTS_C1:=0000; POINTS_C2:=POINTS_C2+1; WC:=1; ELSE POINTS_C1:=POINTS_C1+1; END IF; ELSIF CHOS=0001 THEN IF POINTS_D1=1001 THEN POINTS_D1:=0000; POINTS_D2

26、:=POINTS_D2+1; WD:=1; ELSE POINTS_D1:=POINTS_D1+1; END IF; END IF; ELSIF SUB=1 THEN IF CHOS=1000 THEN IF POINTS_A1=0000 THEN LA:=1; ELSE POINTS_A1:=POINTS_A1-1; END IF; ELSIF CHOS=0100 THEN IF POINTS_B1=0000 THEN LB:=1; ELSE POINTS_B1:=POINTS_B1-1; END IF; ELSIF CHOS=0010 THEN IF POINTS_C1=0000 THEN

27、 LC:=1; ELSE POINTS_C1:=POINTS_C1-1; END IF; ELSIF CHOS=0001 THEN IF POINTS_D1=0000 THEN LD:=1; ELSE POINTS_D1:=POINTS_D1-1; END IF; END IF; END IF; END IF; A2=POINTS_A2; A1=POINTS_A1; A0=POINTS_A2&POINTS_A1; WINA=WA; LOSEA=LA; B2=POINTS_B2; B1=POINTS_B1; B0=POINTS_B2&POINTS_B1; WINB=WB; LOSEB=LB; C

28、2=POINTS_C2; C1=POINTS_C1; C0=POINTS_C2&POINTS_C1; WINC=WC; LOSEC=LC; D2=POINTS_D2; D1=POINTS_D1; D0=POINTS_D2&POINTS_D1; WIND=WD; LOSEDDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUTDOUT=0000000; END CASE; END PROCESS;END rtl;仿真波形如下:整体电路原理图:整体仿真波形:结论:我们主要参考了EDA课程设计与VHDL语言以及相关书籍资料选取了这两个课题,参考抢答器的加分功能模块,自行添加了减分,输赢淘汰的功能,并对整体程序代码进行排错优化,在此过程中我们遇到了诸多的困难,在此过程中弥补了上课所学的不足。

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1