EDA1111实验报告教材Word文档下载推荐.docx
《EDA1111实验报告教材Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《EDA1111实验报告教材Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
USEIEEE.STD_UNSIGNED.ALL;
ENTITYadder8IS
PORT(CIN:
INSTD_LOGIC;
A,B:
INSTD_LOGIC_VECTOR(7DOWNTO0);
S:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
COUT:
OUTSTD_LOGIC);
ENDadder8;
ARCHITECUTREbehaveOFadder8IS
SIGNALsint:
STD_LOGIC_VECTOR(8DOWNTO0);
SIGNALm:
STD_LOGIC_VECTOR(7DOWNTO0);
SIGNALn:
BEGIN
m<
=not(notA);
n<
=not(notB);
sint<
=(‘0’&
m)+n+CIN;
S<
=SINT(7DOWNTO0);
COUT<
=SINT(8);
ENDbehave;
六、实验结果截图
1.程序截图:
2.时序仿真波形截图:
实验6动态数码管显示
一.实验目的
学习硬件扫描显示电路的设计。
二.实验内容
本实验的内容是简历数码管动态扫描显示模块,具体内容如下:
(1)在实验箱上完成LED数码管的动态显示;
(2)放慢扫描速度演示动态显示的原理过程。
三.实验原理
图3—11所示的是8位数码扫描显示电路,其中每个数码管的8个段:
h、g、f、e、d、c、b、a(h是小数点)都分别连在一起,8个数码管分别有8个选通信号k1、k2、…k8来选择。
别选通的数码管显示数据,其余关闭。
如在某一时刻,k3为高电平,其余选通信号为低电平,这是仅k3对应的数码管显示来自段信号端的数据,而其他7个数码管呈关闭状态。
根据这种电路状况,如果在8个数码管显示希望的数据,就必须是的8个选通信号k1、k2…k8分别被单独选通,榆次同事,在短信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。
四.实验步骤(VHDL文本设计)
在本实验的程序中,clk是扫描时钟;
SG为7段控制信号,有高位至低位分别接g、f、e、d、c、b、a7个段;
BT是位选控制信号,接上途中的8个选通信号:
k1、k2、…k8.程序CNT8是一个3位计数器,作扫描据计数信号,有进程P2生成:
进程P3是7段译码查表输出程序:
进程p1是对8个数码管选通的扫描程序,例如当CNT8等于“001”时,k2对应的数码管被选通,同时,A杯赋值3,再由进程p3译码输出“100111”,显示在数码管上即为“3”;
当CNT8扫完时,将能在8个数码管上显示数据:
13579BDF。
5.VHDL实验参考程序
程序清单scan_led.VHDL
Libraryieee;
Useieee.std_logic_1164.all;
Useieee.std_logic_unsigned.all;
Entityscan_ledis
Port(clk:
instd_logic;
sg:
outstd_logic_vector(6downto0);
bt:
outstd_logic_vector(7downto0));
end;
architectureoneofscan_ledis
signalcnt8:
std_logic_vector(2downto0);
signala:
integerrange0to15;
begin
p1:
pricess(cnt8)
casecnt8is
when”000”=>
bt<
=”00000001”;
a<
=1;
when”001”=>
=”00000010”;
=3;
when”010”=>
=”00000100”;
=5;
when”011”=>
=”00001000”;
=7;
when”100”=>
=”00010000”;
=9;
when”101”=>
=”00100000”;
=11;
when”110”=>
=”01000000”;
=13;
when”111”=>
=”10000000”;
=15;
whenothers=>
null;
endcase;
endprocessp1;
p2:
process(clk)
ifclk’eventandclk=’1’thencnt8<
-cnt8+1;
endif;
endprocessp2;
p3:
process(a)
bengin
caseais
when0=>
sg<
=’0111111’;
when0=>
=’0000110’;
=’1011011’;
=’1001111’;
=’1100110’;
=’1101101’;
=’1111101’;
=’0000011’;
=’1111111’;
=’1101111’;
=’1110111’;
=’1111100’;
=’0111001’;
=’1011110’;
=’1111001’;
=’1110001’;
null;
endprocessp3;
六.实验结果截图
1.程序截图;
2.时序仿真波形:
实验7数控分频器的设计
一.实验目的
学习数控分频器的设计、分析和测试方法。
二.实验内容
CLK由clock输入,频率可选65536HZ或更高(确保分频后落在音频范围内);
输出FOUT接扬声器(SPKER:
PIN3)。
改变键2/键1的输入值,可听到不同音调的声音。
三.实验原理
数控分频器的功能就是当输入端不同的数据时,产生不同的分频比,从而产生不同的频率值。
本实验是用计数值可并行置的加法器设计完成的,方法是将计数溢出位与预置位加载输入信号详解即可。
四.实验步骤(VHDL文本设计)
建议选实验电路模式1,键2/键1(PIO7-PIO1)负责输入8为位预置数D:
CLK由clock0输入,频率可选65536Hz或更高(确保分频后落在音频范围);
输出FOUT接扬声器(SPEAk)。
五.VHDL实验参考程序
程序清单pulse.VHDL
LIBRARYIEEE;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYpulseIS
PORT(CLK:
D:
FPUT:
OUTSTD_LOGIC);
ARCHITECTUREoneOFpulseIS
SIGNALFULL:
STD_LOGIC;
BEGIN
P_REG:
PROCESS(CLK)
VARIABLECNT8:
STD_LOGIC_VECTOR(7DOWNTPO0);
IFCLK’EVENTANDCLK=‘1’THEN
IFCNT8=“11111111”THEN
CNT8:
=D;
FULL<
=’1’;
ELSECNT8:
=CNT8+1;
=’0’;
ENDIF;
ENDPROCESSP_REG;
P_DIV:
PROCESS(FULL)
VARIABLECNT2:
IFFULL’EVENTANDFULL=’1’
THENCNT2:
=NOTCNT2
IFCNT2=’1’THENFOUT<
ELSEFOUT<
ENDIF;
ENDPROCESSP_DIV;
六.实验结果截图
1.程序截图
2.时序仿真波形
(进阶实验)实验2用状态机实现序列检测器
用状态机实验序列检测器的设计,并对其进行仿真和硬件测试。
设计一序列检测器并在GW48实验箱上进行硬件测试。
利用QuartusⅡ6.0软件进行设计、仿真验证,最后进行引脚锁定并完成硬件测试。
序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0.由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置数的对应码相同。
在检测过程中,任何一位不相同都将回到初始状态重新开始检测。
本实验描述的电路完成对序列数“11100101”的检测。
当这一串行序列数高位在前(左移)串行进行检测器后,若此数与预置的密码数相同,则输出“A”,否则仍然输出“B”。
建议选择实验电路模式8,用键7(PIO11)控制复位信号CLR;
键6(PIO9)控制状态机工作时钟CLK;
待检测的串行序列数输入DIN接PIO10(左移,最高位在前);
指示输出AB接PIO39-PIO36(显示于数码管6)。
下载后,1、按实验板“系统复位”键;
2、用键2和键1输入2位十六进制数待则序列数“11100101”;
3、按键7复位(平时数码6显示“B”);
4、按键6(CLK)8次,这时若串行输入的8位二进制序列码(显示于数码2/1和发光管D8-D0)与预置码“11100101”相同,则数码6应从原来的“B”变成“A”表示序列检测正确,否则仍为“B‘
程序清单schk.VHDL
ENTITYschkIS
PORT(DIN,CLK,CLR:
AB:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDschk;
ARCHITECTUREbehaveOFschkIS
SIGNALQ:
INTEGERRANGE0TO8;
SIGNALD:
BEGIN
D<
=”11100101”;
PROCESS(CLK,CLR)
BEGIN
IFCLR=’1’THENQ<
=0;
ELSIFCLK’EVENTANDCLK=’1’THEN
CASEQIS
WHEN0=>
IFDIN=D(7)THENQ<
ELSEQ<
ENDIF
WHEN1=>
IFDIN=D(6)THENQ<
=2;
WHEN2=>
IFDIN=D(5)THENQ<
WHEN3=>
IFDIN=D(4)THENQ<
=4;
WHEN4=>
IFDIN=D(3)THENQ<
WHEN5=>
IFDIN=D
(2)THENQ<
=6;
WHEN6=>
IFDIN=D
(1)THENQ<
WHEN7=>
IFDIN=D(0)THENQ<
=8;
WHENOTHERS=>
Q<
ENDCASE;
ENDIF;
ENDPROCESS;
PROCESS(Q)
IFQ=8THENAB<
=”1010”;
ELSEAB<
=”1011”;
ENDIF;
ENDbehave;
学生实验心得
本学期我们对《EDA技术实用教程——VHDL版》一书进行了较为深入的理论学习。
同时,我们也进行进行了相关实验,将所学的理论知识与实践相结合在一起,在实践中继续学习,不断总结,不断反思,逐步完善,有所创新,并在实践中提高自己,在现有的实验条件下,我们有选择的从众多实验中挑选并进行了4项实验来检验一学期所学,这四项实验分别是8位硬件加法器VHDL设计、动态数码管显示,数控分频器的设计,用状态机实现序列检测器。
实验中结合GW48EDA/SOC试验箱,通过对实验中程序源码、仿真波形图、电路原理图的理解及实验过程中所出现的错误的分析,学生本人较好的理解了实验的原理,较为熟练的掌握了QuartusII6.0软件及开发流程,初步达到了掌握EDA技术、VHDL语言设计、可编程ASIC技术的目的。
最后在这里对任课老师及辅助教学的研究生学长表示敬意,感谢你们细心地指导和辛勤的付出。
学生(签名):
年月日
指导
教师
评语
成绩评定:
指导教师(签名):