EDA1111实验报告.docx
- 文档编号:27301148
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:15
- 大小:471.63KB
EDA1111实验报告.docx
《EDA1111实验报告.docx》由会员分享,可在线阅读,更多相关《EDA1111实验报告.docx(15页珍藏版)》请在冰豆网上搜索。
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技术的目的。
最后在这里对任课老师及辅助教学的研究生学长表示敬意,感谢你们细心地指导和辛勤的付出。
学生(签名):
年月日
指导
教师
评语
成绩评定:
指导教师(签名):
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA1111 实验 报告