EDA1111实验报告教材.docx

上传人:b****6 文档编号:5363240 上传时间:2022-12-15 格式:DOCX 页数:13 大小:471.69KB
下载 相关 举报
EDA1111实验报告教材.docx_第1页
第1页 / 共13页
EDA1111实验报告教材.docx_第2页
第2页 / 共13页
EDA1111实验报告教材.docx_第3页
第3页 / 共13页
EDA1111实验报告教材.docx_第4页
第4页 / 共13页
EDA1111实验报告教材.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

EDA1111实验报告教材.docx

《EDA1111实验报告教材.docx》由会员分享,可在线阅读,更多相关《EDA1111实验报告教材.docx(13页珍藏版)》请在冰豆网上搜索。

EDA1111实验报告教材.docx

EDA1111实验报告教材

实验38位硬件加法器VHDL设计

一、实验目的

学习8位硬件加法器的设计,进一步学习电路的仿真验证和硬件测试

二、实验内容

本实验的内容是建立一个8位硬件加法器,并在GW48试验箱上进行测试。

三、实验原理

在数字信号处理的快速运算电路中常常用到多位数字量的加法运算,这时需要用到并行加法器。

并行加法器比串行加法器快得多,电路结构不太复杂,它的原理也很容易理解。

现在普遍采用的是超前进位加法器,只是在几个全加器的基础上增加一个超前进位形成逻辑,以减少由于逐位信号的传递所造成的延迟。

四、实验步骤(VHDL文本设计)

步骤一:

为项目设计建立文件夹和工程

步骤二:

建立文本编辑文件

在创建好一个设计工程后,在QuartusII6.0Project主界面选择File->New打开新建文件对话框,在该对话框中选择VHDLFile,单击Ok建立一个空的VHDL文件。

在QuartusII6.0主界面中选择File->SaveAs改名为Adder.vhd并保存。

步骤三:

输入VHDL代码

参考实验程序。

步骤四:

最后进行器件型号选择、分配引脚、编译、时序仿真、编程下载。

建议选择实验电路的模式1,。

用键4和3(PIO15-PIO8)接输入A,用键2和1(PIO15-PIO8)接输入B,用键8(PIO49)接输入CIN,用数码管6和5(接输入S),用D1接输出COUT。

五、VHDL实验参考程序

程序清单adder8.VHDL

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

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:

STD_LOGIC_VECTOR(7DOWNTO0);

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文本设计)

步骤一:

为项目设计建立文件夹和工程

步骤二:

建立文本编辑文件

在创建好一个设计工程后,在QuartusII6.0Project主界面选择File->New打开新建文件对话框,在该对话框中选择VHDLFile,单击Ok建立一个空的VHDL文件。

在QuartusII6.0主界面中选择File->SaveAs改名为Adder.vhd并保存。

步骤三:

输入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)

begin

casecnt8is

when”000”=>bt<=”00000001”;a<=1;

when”001”=>bt<=”00000010”;a<=3;

when”010”=>bt<=”00000100”;a<=5;

when”011”=>bt<=”00001000”;a<=7;

when”100”=>bt<=”00010000”;a<=9;

when”101”=>bt<=”00100000”;a<=11;

when”110”=>bt<=”01000000”;a<=13;

when”111”=>bt<=”10000000”;a<=15;

whenothers=>null;

endcase;

endprocessp1;

p2:

process(clk)

begin

ifclk’eventandclk=’1’thencnt8<-cnt8+1;

endif;

endprocessp2;

p3:

process(a)

bengin

caseais

when0=>sg<=’0111111’;when0=>sg<=’0000110’;

when0=>sg<=’1011011’;when0=>sg<=’1001111’;

when0=>sg<=’1100110’;when0=>sg<=’1101101’;

when0=>sg<=’1111101’;when0=>sg<=’0000011’;

when0=>sg<=’1111111’;when0=>sg<=’1101111’;

when0=>sg<=’1110111’;when0=>sg<=’1111100’;

when0=>sg<=’0111001’;when0=>sg<=’1011110’;

when0=>sg<=’1111001’;when0=>sg<=’1110001’;

whenothers=>null;

endcase;

endprocessp3;

end;

六.实验结果截图

1.程序截图;

2.时序仿真波形:

 

实验7数控分频器的设计

一.实验目的

学习数控分频器的设计、分析和测试方法。

二.实验内容

CLK由clock输入,频率可选65536HZ或更高(确保分频后落在音频范围内);输出FOUT接扬声器(SPKER:

PIN3)。

改变键2/键1的输入值,可听到不同音调的声音。

三.实验原理

数控分频器的功能就是当输入端不同的数据时,产生不同的分频比,从而产生不同的频率值。

本实验是用计数值可并行置的加法器设计完成的,方法是将计数溢出位与预置位加载输入信号详解即可。

四.实验步骤(VHDL文本设计)

步骤一:

为项目设计建立文件夹和工程

步骤二:

建立文本编辑文件

在创建好一个设计工程后,在QuartusII6.0Project主界面选择File->New打开新建文件对话框,在该对话框中选择VHDLFile,单击Ok建立一个空的VHDL文件。

在QuartusII6.0主界面中选择File->SaveAs改名为Adder.vhd并保存。

步骤三:

输入VHDL代码

参考实验程序。

步骤四:

最后进行器件型号选择、分配引脚、编译、时序仿真、编程下载。

建议选实验电路模式1,键2/键1(PIO7-PIO1)负责输入8为位预置数D:

CLK由clock0输入,频率可选65536Hz或更高(确保分频后落在音频范围);输出FOUT接扬声器(SPEAk)。

改变键2/键1的输入值,可听到不同音调的声音。

五.VHDL实验参考程序

程序清单pulse.VHDL

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYpulseIS

PORT(CLK:

INSTD_LOGIC;

D:

INSTD_LOGIC;

FPUT:

OUTSTD_LOGIC);

ARCHITECTUREoneOFpulseIS

SIGNALFULL:

STD_LOGIC;

BEGIN

P_REG:

PROCESS(CLK)

VARIABLECNT8:

STD_LOGIC_VECTOR(7DOWNTPO0);

BEGIN

IFCLK’EVENTANDCLK=‘1’THEN

IFCNT8=“11111111”THEN

CNT8:

=D;

FULL<=’1’;

ELSECNT8:

=CNT8+1;

FULL<=’0’;

ENDIF;

ENDIF;

ENDPROCESSP_REG;

P_DIV:

PROCESS(FULL)

VARIABLECNT2:

STD_LOGIC;

BEGIN

IFFULL’EVENTANDFULL=’1’

THENCNT2:

=NOTCNT2

IFCNT2=’1’THENFOUT<=’1’;

ELSEFOUT<=’0’;

ENDIF;

ENDIF;

ENDPROCESSP_DIV;

六.实验结果截图

1.程序截图

2.时序仿真波形

 

(进阶实验)实验2用状态机实现序列检测器

一、实验目的

用状态机实验序列检测器的设计,并对其进行仿真和硬件测试。

二、实验内容

设计一序列检测器并在GW48实验箱上进行硬件测试。

利用QuartusⅡ6.0软件进行设计、仿真验证,最后进行引脚锁定并完成硬件测试。

三、实验原理

序列检测器可用于检测一组或多组由二进制码组成的脉冲序列信号,当序列检测器连续收到一组串行二进制码后,如果这组码与检测器中预先设置的码相同,则输出1,否则输出0.由于这种检测的关键在于正确码的收到必须是连续的,这就要求检测器必须记住前一次的正确码及正确序列,直到在连续的检测中所收到的每一位码都与预置数的对应码相同。

在检测过程中,任何一位不相同都将回到初始状态重新开始检测。

本实验描述的电路完成对序列数“11100101”的检测。

当这一串行序列数高位在前(左移)串行进行检测器后,若此数与预置的密码数相同,则输出“A”,否则仍然输出“B”。

四、实验步骤(VHDL文本设计)

步骤一:

为项目设计建立文件夹和工程

步骤二:

建立文本编辑文件

在创建好一个设计工程后,在QuartusII6.0Project主界面选择File->New打开新建文件对话框,在该对话框中选择VHDLFile,单击Ok建立一个空的VHDL文件。

在QuartusII6.0主界面中选择File->SaveAs改名为Adder.vhd并保存。

步骤三:

输入VHDL代码

参考实验程序。

步骤四:

最后进行器件型号选择、分配引脚、编译、时序仿真、编程下载。

建议选择实验电路模式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‘

五、VHDL实验参考程序

程序清单schk.VHDL

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYschkIS

PORT(DIN,CLK,CLR:

INSTD_LOGIC;

AB:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDschk;

ARCHITECTUREbehaveOFschkIS

SIGNALQ:

INTEGERRANGE0TO8;

SIGNALD:

STD_LOGIC_VECTOR(7DOWNTO0);

BEGIN

D<=”11100101”;

PROCESS(CLK,CLR)

BEGIN

IFCLR=’1’THENQ<=0;

ELSIFCLK’EVENTANDCLK=’1’THEN

CASEQIS

WHEN0=>IFDIN=D(7)THENQ<=1;ELSEQ<=0;ENDIF

WHEN1=>IFDIN=D(6)THENQ<=2;ELSEQ<=0;ENDIF

WHEN2=>IFDIN=D(5)THENQ<=3;ELSEQ<=0;ENDIF

WHEN3=>IFDIN=D(4)THENQ<=4;ELSEQ<=0;ENDIF

WHEN4=>IFDIN=D(3)THENQ<=5;ELSEQ<=0;ENDIF

WHEN5=>IFDIN=D

(2)THENQ<=6;ELSEQ<=0;ENDIF

WHEN6=>IFDIN=D

(1)THENQ<=7;ELSEQ<=0;ENDIF

WHEN7=>IFDIN=D(0)THENQ<=8;ELSEQ<=0;ENDIF

WHENOTHERS=>Q<=0;

ENDCASE;

ENDIF;

ENDPROCESS;

PROCESS(Q)

BEGIN

IFQ=8THENAB<=”1010”;

ELSEAB<=”1011”;

ENDIF;

ENDPROCESS;

ENDbehave;

六.实验结果截图

1.程序截图:

2.时序仿真波形

 

学生实验心得

本学期我们对《EDA技术实用教程——VHDL版》一书进行了较为深入的理论学习。

同时,我们也进行进行了相关实验,将所学的理论知识与实践相结合在一起,在实践中继续学习,不断总结,不断反思,逐步完善,有所创新,并在实践中提高自己,在现有的实验条件下,我们有选择的从众多实验中挑选并进行了4项实验来检验一学期所学,这四项实验分别是8位硬件加法器VHDL设计、动态数码管显示,数控分频器的设计,用状态机实现序列检测器。

实验中结合GW48EDA/SOC试验箱,通过对实验中程序源码、仿真波形图、电路原理图的理解及实验过程中所出现的错误的分析,学生本人较好的理解了实验的原理,较为熟练的掌握了QuartusII6.0软件及开发流程,初步达到了掌握EDA技术、VHDL语言设计、可编程ASIC技术的目的。

最后在这里对任课老师及辅助教学的研究生学长表示敬意,感谢你们细心地指导和辛勤的付出。

学生(签名):

年月日

指导

教师

评语

 

成绩评定:

指导教师(签名):

年月日

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

当前位置:首页 > 高等教育 > 其它

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

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