VLSI.docx

上传人:b****4 文档编号:5499277 上传时间:2022-12-17 格式:DOCX 页数:19 大小:263.94KB
下载 相关 举报
VLSI.docx_第1页
第1页 / 共19页
VLSI.docx_第2页
第2页 / 共19页
VLSI.docx_第3页
第3页 / 共19页
VLSI.docx_第4页
第4页 / 共19页
VLSI.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

VLSI.docx

《VLSI.docx》由会员分享,可在线阅读,更多相关《VLSI.docx(19页珍藏版)》请在冰豆网上搜索。

VLSI.docx

VLSI

实验一15位流水线加法器的设计与实现

一、实验类型

研究探索性实验。

二、实验目的与任务

1.实验目的:

熟悉实现流水线的VLSI结构设计思想和所采用的结构设计优化技术,并进一步熟悉有关硬件描述语言的编程和EDA软件的使用。

2.实验任务:

完成一个15位流水线加法器的FPGA设计与实现,包括系统结构设计、硬件语言逻辑描述,再进行程序调试、仿真分析等。

三、实验基本原理

在系统硬件设计中,采用流水线可提高系统的处理速度,但需增加硬件资源。

而FPGA中由于每一个逻辑单元都包含一个触发器,这个触发器或者没有用到,或者用于存储布线资源,因此将流水线应用在FPGA的设计中,在提高系统处理速度的同时,只需要极少或根本不需要额外的硬件成本。

图1.1是一个采用流水线的15位加法器的原理图,它采用流水线将一个15位的并行加法器分解成一个7位和一个8位的并行加法运算,在提高系统处理速度的同时,又充分利用了系统的有关触发器资源。

图1.115位流水线加法器原理图

四、实验仪器设备与工具软件

1.PC机(要求内存在256M以上)。

2.QuartusII/(MAX+plusII+Synplify)、Modelsim软件。

五、实验内容

完成一个如图1.1所示的15位流水线加法器的FPGA设计与实现。

具体包括:

系统体系结构的设计,主要功能电路的设计,各种VHDL源程序的设计,系统的逻辑综合与适配,系统的调试验证(包括程序调试、有关仿真及分析)。

本设计的参考程序如下:

LIBRARYLPM;

USELPM.LPM_COMPONENTS.ALL;

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

ENTITYADD_1PIS

GENERIC(WIDTH:

INTEGER:

=15;--TOTALBITWIDTH

WIDTH1:

INTEGER:

=7;--BITWIDTHOFLSBS

WIDTH2:

INTEGER:

=8;--BITWIDTHOFMSBS

ONE:

INTEGER:

=1);--1BITFORCARRYREG.

PORT(X,Y:

INSTD_LOGIC_VECTOR(WIDTH-1DOWNTO0);

--INPUTS

SUM:

OUTSTD_LOGIC_VECTOR(WIDTH-1DOWNTO0);

--RESULT

CLK:

INSTD_LOGIC);

ENDADD_1P;

ARCHITECTUREFLEXOFADD_1PIS

SIGNALL1,L2,R1,Q1--LSBSOFINPUTS

:

STD_LOGIC_VECTOR(WIDTH1-1DOWNTO0);

SIGNALL3,L4,R2,Q2,U2,H2--MSBSOFINPUTS

:

STD_LOGIC_VECTOR(WIDTH2-1DOWNTO0);

SIGNALS:

STD_LOGIC_VECTOR(WIDTH-1DOWNTO0);

--OUTPUTREGISTER

SIGNALCR1,CQ1:

STD_LOGIC_VECTOR(ONE-1DOWNTO0);

--LSBSCARRYSIGNAL

BEGIN

PROCESS--SPLITINMSBSANDLSBSANDSTOREINREGISTERS

BEGIN

WAITUNTILCLK='1';

--SPLITLSBSFROMINPUTX,Y

FORKINWIDTH1-1DOWNTO0LOOP

L1(K)<=X(K);

L2(K)<=Y(K);

ENDLOOP;

--SPLITMSBSFROMINPUTX,Y

FORKINWIDTH2-1DOWNTO0LOOP

L3(K)<=X(K+WIDTH1);

L4(K)<=Y(K+WIDTH1);

ENDLOOP;

ENDPROCESS;

--------------FIRSTSTAGEOFTHEADDER------------------

ADD_1:

LPM_ADD_SUB--ADDLSBSOFXANDY

GENERICMAP(LPM_WIDTH=>WIDTH1,

LPM_REPRESENTATION=>"UNSIGNED",

LPM_DIRECTION=>"ADD")

PORTMAP(DATAA=>L1,DATAB=>L2,

RESULT=>R1,COUT=>CR1(0));

REG_1:

LPM_FF--SAVELSBSOFX+YANDCARRY

GENERICMAP(LPM_WIDTH=>WIDTH1)

PORTMAP(DATA=>R1,Q=>Q1,CLOCK=>CLK);

REG_2:

LPM_FF

GENERICMAP(LPM_WIDTH=>ONE)

PORTMAP(DATA=>CR1,Q=>CQ1,CLOCK=>CLK);

ADD_2:

LPM_ADD_SUB--ADDMSBSOFXANDY

GENERICMAP(LPM_WIDTH=>WIDTH2,

LPM_REPRESENTATION=>"UNSIGNED",

LPM_DIRECTION=>"ADD")

PORTMAP(DATAA=>L3,DATAB=>L4,RESULT=>R2);

REG_3:

LPM_FF--SAVEMSBSOFX+Y

GENERICMAP(LPM_WIDTH=>WIDTH2)

PORTMAP(DATA=>R2,Q=>Q2,CLOCK=>CLK);

------------SECONDSTAGEOFTHEADDER--------------------

--ONEOPERANDISZERO

H2<=(OTHERS=>'0');

--ADDRESULTFROMMSBS(X+Y)ANDCARRYFROMLSBS

ADD_3:

LPM_ADD_SUB

GENERICMAP(LPM_WIDTH=>WIDTH2,

LPM_REPRESENTATION=>"UNSIGNED",

LPM_DIRECTION=>"ADD")

PORTMAP(CIN=>CQ1(0),DATAA=>Q2,

DATAB=>H2,RESULT=>U2);

PROCESS--BUILDASINGLEREGISTEREDOUTPUT

BEGIN--WORDOFWIDTH=WIDTH1+WIDTH2

WAITUNTILCLK='1';

FORKINWIDTH1-1DOWNTO0LOOP

S(K)<=Q1(K);

ENDLOOP;

FORKINWIDTH2-1DOWNTO0LOOP

S(K+WIDTH1)<=U2(K);

ENDLOOP;

ENDPROCESS;

SUM<=S;--CONNECTSTOOUTPUTPINS

ENDFLEX;

六、实验步骤

1.系统体系结构及主要功能电路的设计。

2.各种VHDL源程序的设计。

3.源程序的编辑和编译。

4.逻辑综合和逻辑适配。

5.系统主要模块仿真和系统总体仿真以及有关结果分析

七、实验报告

图1实验一的时序图

图2实验一的RTL图

仿真结果分析

如图1中2+5=7,4+10=14,6+15=21……,但是值得注意的是7在经过3个延时后出现,分析图2可见,数据进来的时候先经过一个触发器,但来一个有效的脉冲的时候数据才能送过去,当经过寄存器1,2,3时又有一个延时,最后经过最后一个触发器的时候,又来一个有效的脉冲才能将数据送过去,故经过三个周期后才出现相加后的数值。

实验二可编程FIR滤波器的设计与实现

一、实验类型

研究探索性实验

二、实验目的与任务

1.实验目的:

熟悉实现可编程FIR滤波器的VLSI结构设计思想和所采用的结构设计优化技术,并进一步熟悉有关硬件描述语言的编程和EDA软件的使用。

2.实验任务:

完成一个可编程FIR滤波器的FPGA设计与实现,包括系统结构设计、硬件语言逻辑描述,再进行程序调试、仿真分析等。

三、实验基本原理

转置结构的FIR滤波器如图2.1所示,该滤波器的优点在不再需要给x[n]提供额外的移位寄存器,而且也没有必要为达到高通过量给乘积的加法器(树)添加额外的流水线级。

图2.1转置结构的FIR滤波器

四、实验仪器设备与工具软件

1.PC机(要求内存在256M以上)。

2.QuartusII/(MAX+plusII+Synplify)、Modelsim软件。

五、实验内容

根据图2.1所示的转置FIR滤波器的原理,完成一个滤波器长度为4的可编程转置FIR滤波器的FPGA设计与实现,具体包括:

系统体系结构的设计,主要功能电路的设计,各种VHDL源程序的设计,系统的逻辑综合与适配,系统的调试验证(包括程序调试、有关仿真及分析)。

其中系统的仿真与分析,选用DaubechiesDB4滤波器,该滤波器的系数为G(Z)=0.48301+0.8365Z-1+0.2241Z-2-0.1294Z-3。

若将系数成8位(加上符号位)精度模式,则G(Z)=124/256+214Z-1/256+57Z-2/256-33Z-3/256。

这时需注意变换后的结果要除以256才是实际的输出。

本设计的参考程序如下:

--THISISAGENERICFIRFILTERGENERATOR

--ITUSESW1BITDATA/COEFFICIENTSBITS

LIBRARYLPM;--USINGPREDEFINEDPACKAGES

USELPM.LPM_COMPONENTS.ALL;

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYFIR_GENIS------>INTERFACE

GENERIC(W1:

INTEGER:

=9;--INPUTBITWIDTH

W2:

INTEGER:

=18;--MULTIPLIERBITWIDTH2*W1

W3:

INTEGER:

=19;--ADDERWIDTH=W2+LOG2(L)-1

W4:

INTEGER:

=11;--OUTPUTBITWIDTH

L:

INTEGER:

=4;--FILTERLENGTH

MPIPE:

INTEGER:

=3--PIPELINESTEPSOFMULTIPLIER

);

PORT(CLK:

INSTD_LOGIC;

LOAD_X:

INSTD_LOGIC;

X_IN:

INSTD_LOGIC_VECTOR(W1-1DOWNTO0);

C_IN:

INSTD_LOGIC_VECTOR(W1-1DOWNTO0);

Y_OUT:

OUTSTD_LOGIC_VECTOR(W4-1DOWNTO0));

ENDFIR_GEN;

ARCHITECTUREFLEXOFFIR_GENIS

SUBTYPEN1BITISSTD_LOGIC_VECTOR(W1-1DOWNTO0);

SUBTYPEN2BITISSTD_LOGIC_VECTOR(W2-1DOWNTO0);

SUBTYPEN3BITISSTD_LOGIC_VECTOR(W3-1DOWNTO0);

TYPEARRAY_N1BITISARRAY(0TOL-1)OFN1BIT;

TYPEARRAY_N2BITISARRAY(0TOL-1)OFN2BIT;

TYPEARRAY_N3BITISARRAY(0TOL-1)OFN3BIT;

SIGNALX:

N1BIT;

SIGNALY:

N3BIT;

SIGNALC:

ARRAY_N1BIT;--COEFFICIENTARRAY

SIGNALP:

ARRAY_N2BIT;--PRODUCTARRAY

SIGNALA:

ARRAY_N3BIT;--ADDERARRAY

BEGIN

LOAD:

PROCESS------>LOADDATAORCOEFFICIENT

BEGIN

WAITUNTILCLK='1';

IF(LOAD_X='0')THEN

C(L-1)<=C_IN;--STORECOEFFICIENTINREGISTER

FORIINL-2DOWNTO0LOOP--COEFFICIENTSSHIFTONE

C(I)<=C(I+1);

ENDLOOP;

ELSE

X<=X_IN;--GETONEDATASAMPLEATATIME

ENDIF;

ENDPROCESSLOAD;

SOP:

PROCESS(CLK)------>COMPUTESUM-OF-PRODUCTS

BEGIN

IFCLK'EVENTAND(CLK='1')THEN

FORIIN0TOL-2LOOP--COMPUTETHETRANSPOSED

A(I)<=(P(I)(W2-1)&P(I))+A(I+1);--FILTERADDS

ENDLOOP;

A(L-1)<=P(L-1)(W2-1)&P(L-1);--FIRSTTAPHAS

ENDIF;--ONLYAREGISTER

Y<=A(0);

ENDPROCESSSOP;

--INSTANTIATELPIPELINEDMULTIPLIER

MULGEN:

FORIIN0TOL-1GENERATE

MULS:

LPM_MULT--MULTIPLYP(I)=C(I)*X;

GENERICMAP(LPM_WIDTHA=>W1,LPM_WIDTHB=>W1,

LPM_PIPELINE=>MPIPE,

LPM_REPRESENTATION=>"SIGNED",

LPM_WIDTHP=>W2,

LPM_WIDTHS=>W2)

PORTMAP(CLOCK=>CLK,DATAA=>X,

DATAB=>C(I),RESULT=>P(I));

ENDGENERATE;

Y_OUT<=Y(W3-1DOWNTOW3-W4);

ENDFLEX;

六、实验步骤

1.系统体系结构及主要功能电路的设计。

2.各种VHDL源程序的设计。

3.源程序的编辑和编译。

4.逻辑综合和逻辑适配。

5.系统主要模块仿真和系统总体仿真以及有关结果分析。

七、实验报告

图3实验二的时序图

 

图4实验二的RTL图

 

仿真结果分析

其中系统的仿真与分析,选用DaubechiesDB4滤波器,该滤波器的系数为G(Z)=0.48301+0.8365Z-1+0.2241Z-2-0.1294Z-3。

若将系数成8位(加上符号位)精度模式,则G(Z)=124/256+214Z-1/256+57Z-2/256-33Z-3/256。

这时需注意变换后的结果要除以256才是实际的输出。

以图3为例,

Y(0)=124/256X(0)=124/256*100=48;

Y

(1)=124/256*X

(1)+214/256*X(0)=124/256*150+214/256*100=156;

Y

(2)=124/256*X

(2)+214/256*X

(1)+57/256*X(0)=124/256*200+214/256*150+57/25*100

=244;

Y(3)=124/256*X(3)+214/256*X

(2)+57/256*X

(1)-33/256*X(0)=124/256*250+214/256*200+57/256*150-33/256*100=308

 

实验三FFT的旋转因子乘法器、蝶形处理器的设计与实现

一、实验类型

研究探索性实验。

二、实验目的与任务

1.实验目的:

熟悉实现FFT的旋转因子乘法器、蝶形处理器的VLSI结构设计思想和所采用的结构设计优化技术,并进一步熟悉有关硬件描述语言的编程和EDA软件的使用。

2.实验任务:

完成实现FFT的旋转因子乘法器、蝶形处理器的FPGA设计与实现,包括系统结构设计、硬件语言逻辑描述,再进行程序调试、仿真分析等。

三、实验基本原理

FFT方法是信号处理领域核心的算法之一,广泛应用于雷达处理、观测,定时定位处理,数字通信、无线通讯、声纳、图像处理等领域。

radix-2FFT可以用蝶形处理器有效的实现,这种处理器除了蝶形本身外,还包括额外的旋转因子复数乘法器。

radix-2蝶形处理器由一个复数加法器、一个复数减法器和一个旋转因子的复数乘法器组成。

旋转因子的复数乘法器通常由4次实数乘法和2次加/减法运算实现。

但是也可3次实数乘法和3次加/减法运算实现,具体算法如下:

高效复数乘法器算法:

复数旋转因子乘法R+jI=(X+jY)(C+jS)=CX-SY+j(SX+CY)=[(C-S)*Y+C*(X-Y)]+j[(C+S)*X-C*(X-Y)],令E=X-Y,Z=C*E=C*(X-Y),则R=(C-S)*Y+Z,I=(C+S)*X-Z,由于C、C+S和C-S可以预先计算并存储,因此先计算E,Z,然后再计算R、I计算最后的乘积。

为了防止运算中的溢出,蝶形处理器需要计算两个蝶形方程:

Dre+jDim=((Are+jAim)+Bre+jBim))/2;Ere+jEim=((Are+jAim)-Bre+jBim))/2;

临时结果Ere+jEim必须乘以旋转因子。

四、实验仪器设备与工具软件

1.PC机(要求内存在256M以上)。

2.QuartusII/(MAX+plusII+Synplify)、Modelsim软件。

五、实验内容

完成实现FFT的旋转因子乘法器、蝶形处理器的FPGA设计与实现。

具体包括:

系统体系结构的设计,主要功能电路的设计,各种VHDL源程序的设计,系统的逻辑综合与适配,系统的调试验证(包括程序调试、有关仿真及分析)。

本设计的参考程序如下:

--旋转因子乘法器的VHDL程序

LIBRARYLPM;

USELPM.LPM_COMPONENTS.ALL;

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

ENTITYCCMULIS

GENERIC(W2:

INTEGER:

=17;--MULTIPLIERBITWIDTH

W1:

INTEGER:

=9;--BITWIDTHC+SSUM

W:

INTEGER:

=8);--INPUTBITWIDTH

PORT(CLK:

STD_LOGIC;--CLOCKFORTHEOUTPUTREGISTER

X_IN,Y_IN,C_IN--INPUTS

:

INSTD_LOGIC_VECTOR(W-1DOWNTO0);

CPS_IN,CMS_IN--INPUTS

:

INSTD_LOGIC_VECTOR(W1-1DOWNTO0);

R_OUT,I_OUT--RESULTS

:

OUTSTD_LOGIC_VECTOR(W-1DOWNTO0));

ENDCCMUL;

ARCHITECTUREFLEXOFCCMULIS

SIGNALX,Y,C:

STD_LOGIC_VECTOR(W-1DOWNTO0);

--INPUTSANDOUTPUTS

SIGNALR,I,CMSY,CPSX,XMYC--PRODUCTS

:

STD_LOGIC_VECTOR(W2-1DOWNTO0);

SIGNALXMY,CPS,CMS,SXTX,SXTY--X-YETC.

:

STD_LOGIC_VECTOR(W1-1DOWNTO0);

BEGIN

X<=X_IN;--X

Y<=Y_IN;--J*Y

C<=C_IN;--COS

CPS<=CPS_IN;--COS+SIN

CMS<=CMS_IN;--COS-SIN

PROCESS

BEGIN

WAITUNTILCLK='1';

R_OUT<=R(W2-3DOWNTOW-1);--SCALINGANDFF

I_OUT<=I(W2-3DOWNTOW-1);--FOROUTPUT

ENDPROCESS;

----------CCMULWITH3MUL.AND3ADD/SUB---------------

SXTX<=X(X'HIGH)&X;--POSSIBLEGROWTHFOR

SXTY<=Y(Y'HIGH)&Y;--SUB_1->SIGNEXTENSION

SUB_1:

LPM_ADD_SUB--SUB:

X-Y;

GENERICMAP(LPM_WIDTH=>W1,LPM_DIRECTION=>"SUB",

LPM_REPRESENTATION=>"SIGNED")

PORTMAP(DATAA=>SXTX,DATAB=>SXTY,RESULT=>XMY);

MUL_1:

LPM_MULT--MULTIPLY(X-Y)*C=XMYC

GENERICMAP(LPM_WIDTHA=>W1,LPM_WIDTHB=>W,

LPM_WIDTHP=>W2,LPM_WIDTHS=>W2,

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

当前位置:首页 > 医药卫生 > 临床医学

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

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