广东工业大学VHDL实验报告.docx

上传人:b****8 文档编号:9324548 上传时间:2023-02-04 格式:DOCX 页数:19 大小:640.85KB
下载 相关 举报
广东工业大学VHDL实验报告.docx_第1页
第1页 / 共19页
广东工业大学VHDL实验报告.docx_第2页
第2页 / 共19页
广东工业大学VHDL实验报告.docx_第3页
第3页 / 共19页
广东工业大学VHDL实验报告.docx_第4页
第4页 / 共19页
广东工业大学VHDL实验报告.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

广东工业大学VHDL实验报告.docx

《广东工业大学VHDL实验报告.docx》由会员分享,可在线阅读,更多相关《广东工业大学VHDL实验报告.docx(19页珍藏版)》请在冰豆网上搜索。

广东工业大学VHDL实验报告.docx

广东工业大学VHDL实验报告

VHDL与集成电路设计实验报告

时间:

第7周周四实验一应用QuartusII完成基本组合电路设计

一、实验目的:

熟悉QuartusⅡ的VHDL文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。

二、实验内容:

首先利用QuartusⅡ完成2选1多路选择器(例1)的文本编辑输入(mux21a.vhd)和仿真测试等步骤,给出图1-1所示的仿真波形。

最后在实验系统上进行硬件测试,验证本项设计的功能。

三、实验程序:

...

COMPONENTMUX21A

PORT(a,b,s:

INSTD_LOGIC;

y:

OUTSTD_LOGIC);

ENDCOMPONENT;

...

u1:

MUX21APORTMAP(a=>a2,b=>a3,s=>s0,y=>tmp);

u2:

MUX21APORTMAP(a=>a1,b=>tmp,s=>s1,y=>outy);

ENDARCHITECTUREBHV;

【例1】

ENTITYmux21aIS

PORT(a,b,s:

INBIT;

y:

OUTBIT);

ENDENTITYmux21a;

ARCHITECTUREoneOFmux21aIS

BEGIN

PROCESS(a,b,s)

BEGIN

IFs='0'THENy<=a;ELSEy<=b;

ENDIF;

ENDPROCESS;

ENDARCHITECTUREone;

五、实验结果及分析

仿真结果:

仿真结果分析:

这是一个选择输出功能,当s为高电平时,输出b;当s为低电平时,输出为a。

输出存在延迟。

 

VHDL与集成电路设计实验报告

时间:

第8周周四实验四:

移位相加硬件乘法器设计

一、实验目的:

学习应用移位相加原理设计8位乘法器。

二、实验内容:

(1)实验内容1:

根据给出的乘法器逻辑原理图及其各模块的VHDL描述,在QuartusII上完成全部设计,包括编辑、编译、综合和仿真操作等。

以87H乘以F5H为例,进行仿真,对仿真波形作出详细解释,包括对8个工作时钟节拍中,每一节拍乘法操作的方式和结果,对照波形图给以详细说明,根据顶层设计例9-16,结合图9-34,画出乘法器的详细电路原理框图。

(2)实验内容2:

编程下载,进行实验验证。

实验电路选择No.1,8位乘数用键2、键1输入;8位被乘数用键4和键3输入;16位乘积可由4个数码管(数码管8、7、6、5)显示;用键8输入CLK,键7输入START(注意,START由高到低是清0,由低到高电平是允许乘法计算)。

详细观察每一时钟节拍的运算结果,并与仿真结果进行比较。

(3)实验内容3:

乘法时钟连接实验系统上的连续脉冲,如clock0,设计一个此乘法器的控制模块,接受实验系统上的连续脉冲,如clock0,当给定启动/清0信号后,能自动发出CLK信号驱动乘法运算,当8个脉冲后自动停止(参考程序:

例9-15)。

(4)实验内容4:

设计一个纯组合电路的8X8等于16位的乘法器和一个LPM乘法器(选择不同的流水线方式),具体说明并比较这几种乘法器的逻辑资源占用情况和运行速度情况。

三、实验程序(部分)

【例9-11】

LIBRARYIEEE;--8位右移寄存器

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYSREG8BIS

PORT(CLK,LOAD:

INSTD_LOGIC;

DIN:

INSTD_LOGIC_VECTOR(7DOWNTO0);

QB:

OUTSTD_LOGIC);

ENDSREG8B;

ARCHITECTUREbehavOFSREG8BIS

SIGNALREG8:

STD_LOGIC_VECTOR(7DOWNTO0);

BEGIN

PROCESS(CLK,LOAD)

BEGIN

IFCLK'EVENTANDCLK='1'THEN

IFLOAD='1'THENREG8<=DIN;

ELSEREG8(6DOWNTO0)<=REG8(7DOWNTO1);

ENDIF;

ENDIF;

ENDPROCESS;

QB<=REG8(0);--输出最低位

ENDbehav;

COMPONENTREG16B

PORT(CLK,CLR:

INSTD_LOGIC;

D:

INSTD_LOGIC_VECTOR(8DOWNTO0);

Q:

OUTSTD_LOGIC_VECTOR(15DOWNTO0));

ENDCOMPONENT;

SIGNALGNDINT,INTCLK,RSTALL,NEWSTART,QB:

STD_LOGIC;

SIGNALANDSD:

STD_LOGIC_VECTOR(7DOWNTO0);

SIGNALDTBIN:

STD_LOGIC_VECTOR(8DOWNTO0);

SIGNALDTBOUT:

STD_LOGIC_VECTOR(15DOWNTO0);

BEGIN

DOUT<=DTBOUT;GNDINT<='0';

PROCESS(CLKK,START)

BEGIN

IFSTART='1'THENNEWSTART<='1';

ELSIFCLKK='0'THENNEWSTART<='0';ENDIF;

ENDPROCESS;

U1:

ARICTLPORTMAP(CLK=>CLKK,START=>NEWSTART,CLKOUT=>INTCLK,RSTALL=>RSTALL);

U2:

SREG8BPORTMAP(CLK=>INTCLK,LOAD=>RSTALL,DIN=>B,QB=>QB);

U3:

ANDARITHPORTMAP(ABIN=>QB,DIN=>A,DOUT=>ANDSD);

U4:

ADDER8BPORTMAP(CIN=>GNDINT,A=>DTBOUT(15DOWNTO8),B=>ANDSD,

S=>DTBIN(7DOWNTO0),COUT=>DTBIN(8));

U5:

REG16BPORTMAP(CLK=>INTCLK,CLR=>RSTALL,D=>DTBIN,Q=>DTBOUT);

ENDstruc;

【例9-14】

LIBRARYIEEE;--16位锁存器/右移寄存器

USEIEEE.STD_LOGIC_1164.ALL;

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYREG16BIS--16位锁存器

PORT(CLK,CLR:

INSTD_LOGIC;

D:

INSTD_LOGIC_VECTOR(8DOWNTO0);

Q:

OUTSTD_LOGIC_VECTOR(15DOWNTO0));

ENDREG16B;

ARCHITECTUREbehavOFREG16BIS

SIGNALR16S:

STD_LOGIC_VECTOR(15DOWNTO0);

BEGIN

PROCESS(CLK,CLR)

BEGIN

IFCLR='1'THENR16S<="0000000000000000";--时钟到来时,锁存输入值,并右移低8位

ELSIFCLK'EVENTANDCLK='1'THEN

R16S(6DOWNTO0)<=R16S(7DOWNTO1);--右移低8位

R16S(15DOWNTO7)<=D;--将输入锁到高8位

ENDIF;

ENDPROCESS;

Q<=R16S;

ENDbehav;

四、实验结果及分析

结果分析:

次此实验功能为十六进制的乘法运算功能,注意其时钟信号频率不能太高,要不然来不及计算,则不会出结果,还有就是该功能只能计算结果是四位及以下的十六进制乘法,该仿真经过8个脉冲后得到C7*FE=C572

 

VHDL与集成电路设计实验报告

时间:

第9周周三实验五:

8位16进制频率计设计

一、实验目的:

设计8位16进制频率计,学习较复杂的数字系统设计方法。

二、实验内容:

分别仿真测试模块例7-7、例7-8和例7-9,再结合例7-10完成频率计的完整设计和硬件实现,并给出其测频时序波形及其分析。

建议选实验电路模式5;8个数码管以16进制形式显示测频输出;待测频率输入FIN由clock0输入,频率可选4Hz、256HZ、3Hz...50MHz等;1HZ测频控制信号CLK1HZ可由clock2输入(用跳线选1Hz)。

注意,这时8个数码管的测频显示值是16进制的。

将频率计改为8位10进制频率计,注意此设计电路的计数器必须是8个4位的10进制计数器,而不是1个。

此外注意在测频速度上给予优化。

用LPM模块取代例7-8和例7-9,再完成同样的设计任务。

用嵌入式锁相环PLL的LPM模块对实验系统的50MHz或20MHz时钟源分频率,PLL的输出信号作为频率计的待测信号。

注意PLL的输入时钟必须是器件的专用时钟输入脚,且输入频率不能低于16MHz。

三、实验程序(部分)

【例7-7】

LIBRARYIEEE;--测频控制电路

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYFTCTRLIS

PORT(CLKK:

INSTD_LOGIC;--1Hz

CNT_EN:

OUTSTD_LOGIC;--计数器时钟使能

RST_CNT:

OUTSTD_LOGIC;--计数器清零

Load:

OUTSTD_LOGIC);--输出锁存信号

ENDFTCTRL;

ARCHITECTUREbehavOFFTCTRLIS

SIGNALDiv2CLK:

STD_LOGIC;

BEGIN

PROCESS(CLKK)

BEGIN

IFCLKK'EVENTANDCLKK='1'THEN--1Hz时钟2分频

Div2CLK<=NOTDiv2CLK;

ENDIF;

ENDPROCESS;

PROCESS(CLKK,Div2CLK)

BEGIN

IFCLKK='0'ANDDiv2CLK='0'THENRST_CNT<='1';--产生计数器清零信号

ELSERST_CNT<='0';ENDIF;

ENDPROCESS;

Load<=NOTDiv2CLK;CNT_EN<=Div2CLK;

ENDbehav;

【例7-10】

LIBRARYIEEE;--频率计顶层文件

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYFREQTESTIS

PORT(CLK1HZ:

INSTD_LOGIC;

FSIN:

INSTD_LOGIC;

DOUT:

OUTSTD_LOGIC_VECTOR(31DOWNTO0));

ENDFREQTEST;

ARCHITECTUREstrucOFFREQTESTIS

COMPONENTFTCTRL

PORT(CLKK:

INSTD_LOGIC;--1Hz

CNT_EN:

OUTSTD_LOGIC;--计数器时钟使能

RST_CNT:

OUTSTD_LOGIC;--计数器清零

Load:

OUTSTD_LOGIC);--输出锁存信号

ENDCOMPONENT;

COMPONENTCOUNTER32B

PORT(FIN:

INSTD_LOGIC;--时钟信号

CLR:

INSTD_LOGIC;--清零信号

ENABL:

INSTD_LOGIC;--计数使能信号

DOUT:

OUTSTD_LOGIC_VECTOR(31DOWNTO0));--计数结果

ENDCOMPONENT;

COMPONENTREG32B

PORT(LK:

INSTD_LOGIC;

DIN:

INSTD_LOGIC_VECTOR(31DOWNTO0);

DOUT:

OUTSTD_LOGIC_VECTOR(31DOWNTO0));

ENDCOMPONENT;

SIGNALTSTEN1:

STD_LOGIC;

SIGNALCLR_CNT1:

STD_LOGIC;

SIGNALLoad1:

STD_LOGIC;

SIGNALDTO1:

STD_LOGIC_VECTOR(31DOWNTO0);

SIGNALCARRY_OUT1:

STD_LOGIC_VECTOR(6DOWNTO0);

BEGIN

U1:

FTCTRLPORTMAP(CLKK=>CLK1HZ,CNT_EN=>TSTEN1,

RST_CNT=>CLR_CNT1,Load=>Load1);

U2:

REG32BPORTMAP(LK=>Load1,DIN=>DTO1,DOUT=>DOUT);

U3:

COUNTER32BPORTMAP(FIN=>FSIN,CLR=>CLR_CNT1,

ENABL=>TSTEN1,DOUT=>DTO1);

ENDstruc;

四、实验结果:

结果分析:

给出不同频率的时钟则是不同的计数方式,测定信号的频率必须有一个脉宽为1秒的输入信号脉冲计数允许的信号;1秒计数结束后,计数值被锁入锁存器,计数器清0,为下一测频计数周期作好准备。

测频控制信号可以由一个独立的发生器来产生。

 

VHDL与集成电路设计实验报告

时间:

第10周周三实验六:

数控分频器与乐曲硬件演奏电路设计

一、实验目的:

学习利用数控分频器设计硬件乐曲演奏电路。

二、实验内容:

实验内容1:

定制例3-4的NoteTabs模块中的音符数据ROM“music”。

该ROM中的音符数据已列在例3-5中。

注意该例数据表中的数据位宽、深度和数据的表达类型。

此外,为了节省篇幅,例中的数据都横排了,实用中应该以每一分号为一行来展开,否则会出错。

最后对该ROM进行仿真,确认例3-5中的音符数据已经进入ROM中。

实验内容2:

根据给出的乘法器逻辑原理图及其各模块的VHDL描述,在QuartusII上完成全部设计,包括编辑、编译、综合和仿真操作等。

给出仿真波形,并作出详细说明。

实验内容3:

硬件验证。

先将引脚锁定,使CLK12MHz与clock9相接,接受12MHz时钟频率(用短路帽在clock9接“12MHz”);CLK8Hz与clock2相接,接受4Hz频率;发音输出SPKOUT接Speaker;与演奏发音相对应的简谱码输出显示可由CODE1在数码管5显示;HIGH1为高八度音指示,可由发光管D5指示,最后向目标芯片下载适配后的SOF逻辑设计文件。

实验电路结构图为NO.1。

三:

实验程序(部分)

(节选)CASEIndexIS--译码电路,查表方式,控制音调的预置数

WHEN"0000"=>Tone<="11111111111";CODE<="0000";HIGH<='0';--2047

WHEN"0001"=>Tone<="01100000101";CODE<="0001";HIGH<='0';--773;

WHEN"0010"=>Tone<="01110010000";CODE<="0010";HIGH<='0';--912;

WHEN"0011"=>Tone<="10000001100";CODE<="0011";HIGH<='0';--1036;

WHEN"0101"=>Tone<="10010101101";CODE<="0101";HIGH<='0';--1197;

WHEN"0110"=>Tone<="10100001010";CODE<="0110";HIGH<='0';--1290;

WHEN"0111"=>Tone<="10101011100";CODE<="0111";HIGH<='0';--1372;

WHEN"1000"=>Tone<="10110000010";CODE<="0001";HIGH<='1';--1410;

WHEN"1001"=>Tone<="10111001000";CODE<="0010";HIGH<='1';--1480;

WHEN"1010"=>Tone<="11000000110";CODE<="0011";HIGH<='1';--1542;

WHEN"1100"=>Tone<="11001010110";CODE<="0101";HIGH<='1';--1622;

WHEN"1101"=>Tone<="11010000100";CODE<="0110";HIGH<='1';--1668;

WHEN"1111"=>Tone<="11011000000";CODE<="0001";HIGH<='1';--1728;

WHENOTHERS=>NULL;

ENDCASE;

ENDPROCESS;

END;

【例3-5】

WIDTH=4;--“梁祝”乐曲演奏数据

DEPTH=256;

ADDRESS_RADIX=DEC;

DATA_RADIX=DEC;

CONTENTBEGIN--注意,以下的数据排列方法只是为了节省空间,实用文件中要展开以下数据,每一组占一行

00:

3;01:

3;02:

3;03:

3;04:

5;05:

5;06:

5;07:

6;08:

8;09:

8;

10:

8;11:

9;12:

6;13:

8;14:

5;15:

5;16:

12;17:

12;18:

12;19:

15;

20:

13;21:

12;22:

10;23:

12;24:

9;25:

9;26:

9;27:

9;28:

9;29:

9;

30:

9;31:

0;32:

9;33:

9;34:

9;35:

10;36:

7;37:

7;38:

6;39:

6;

40:

5;41:

5;42:

5;43:

6;44:

8;45:

8;46:

9;47:

9;48:

3;49:

3;

50:

8;51:

8;52:

6;53:

5;54:

6;55:

8;56:

5;57:

5;58:

5;59:

5;

60:

5;61:

5;62:

5;63:

5;64:

10;65:

10;66:

10;67:

12;68:

7;69:

7;

70:

9;71:

9;72:

6;73:

8;74:

5;75:

5;76:

5;77:

5;78:

5;79:

5;

80:

3;81:

5;82:

3;83:

3;84:

5;85:

6;86:

7;87:

9;88:

6;89:

6;

90:

6;91:

6;92:

6;93:

6;94:

5;95:

6;96:

8;97:

8;98:

8;99:

9;

100:

12;101:

12;102:

12;103:

10;104:

9;105:

9;106:

10;107:

9;108:

8;109:

8;

110:

6;111:

5;112:

3;113:

3;114:

3;115:

3;116:

8;117:

8;118:

8;119:

8;

120:

6;121:

8;122:

6;123:

5;124:

3;125:

5;126:

6;127:

8;128:

5;129:

5;

130:

5;131:

5;132:

5;133:

5;134:

5;135:

5;136:

0;137:

0;138:

0;

END;

LIBRARYIEEE;--硬件演奏电路顶层设计

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYSongerIS

PORT(CLK12MHZ:

INSTD_LOGIC;--音调频率信号

CLK8HZ:

INSTD_LOGIC;--节拍频率信号

CODE1:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);--简谱码输出显示

HIGH1:

OUTSTD_LOGIC;--高8度指示

SPKOUT:

OUTSTD_LOGIC);--声音输出

END;

ARCHITECTUREoneOFSongerIS

COMPONENTNoteTabs

PORT(clk:

INSTD_LOGIC;

ToneIndex:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDCOMPONENT;

COMPONENTToneTaba

PORT(Index:

INSTD_LOGIC_VECTOR(3DOWNTO0);

CODE:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

HIGH:

OUTSTD_LOGIC;

Tone:

OUTSTD_LOGIC_VECTOR(10DOWNTO0));

ENDCOMPONENT;

COMPONENTSpeakera

PORT(clk:

INSTD_LOGIC;

Tone:

INSTD_LOGIC_VECTOR(10DOWNTO0);

SpkS:

OUTSTD_LOGIC);

ENDCOMPONENT;

SIGNALTone:

STD_LOGIC_VECTOR(10DOWNTO0);

SIGNALToneIndex:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

u1:

NoteTabsPORTMAP(clk=>CLK8HZ,ToneIndex=>ToneIndex);

u2:

ToneTabaPORTMAP(Index=>ToneIndex,Tone=>Tone,CODE=>CODE1,HIGH=>HIGH1);

u3:

SpeakeraPORTMAP(clk=>CLK12MHZ,Tone=>Tone,SpkS=>SPKOUT);

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

当前位置:首页 > 医药卫生 > 预防医学

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

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