VLSIWord格式文档下载.docx
《VLSIWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《VLSIWord格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
![VLSIWord格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-12/17/f4025211-5653-4a9b-8bd7-01fc70564106/f4025211-5653-4a9b-8bd7-01fc705641061.gif)
ONE:
=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);
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
WIDTH1)
PORTMAP(DATA=>
R1,Q=>
Q1,CLOCK=>
CLK);
REG_2:
LPM_FF
ONE)
CR1,Q=>
CQ1,CLOCK=>
ADD_2:
LPM_ADD_SUB--ADDMSBSOFXANDY
WIDTH2,
PORTMAP(DATAA=>
L3,DATAB=>
L4,RESULT=>
R2);
REG_3:
LPM_FF--SAVEMSBSOFX+Y
WIDTH2)
R2,Q=>
Q2,CLOCK=>
------------SECONDSTAGEOFTHEADDER--------------------
--ONEOPERANDISZERO
H2<
=(OTHERS=>
'
0'
);
--ADDRESULTFROMMSBS(X+Y)ANDCARRYFROMLSBS
ADD_3:
LPM_ADD_SUB
PORTMAP(CIN=>
CQ1(0),DATAA=>
Q2,
DATAB=>
H2,RESULT=>
U2);
PROCESS--BUILDASINGLEREGISTEREDOUTPUT
BEGIN--WORDOFWIDTH=WIDTH1+WIDTH2
FORKINWIDTH1-1DOWNTO0LOOP
S(K)<
=Q1(K);
FORKINWIDTH2-1DOWNTO0LOOP
S(K+WIDTH1)<
=U2(K);
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滤波器的设计与实现
研究探索性实验
熟悉实现可编程FIR滤波器的VLSI结构设计思想和所采用的结构设计优化技术,并进一步熟悉有关硬件描述语言的编程和EDA软件的使用。
完成一个可编程FIR滤波器的FPGA设计与实现,包括系统结构设计、硬件语言逻辑描述,再进行程序调试、仿真分析等。
三、实验基本原理
转置结构的FIR滤波器如图2.1所示,该滤波器的优点在不再需要给x[n]提供额外的移位寄存器,而且也没有必要为达到高通过量给乘积的加法器(树)添加额外的流水线级。
图2.1转置结构的FIR滤波器
根据图2.1所示的转置FIR滤波器的原理,完成一个滤波器长度为4的可编程转置FIR滤波器的FPGA设计与实现,具体包括:
其中系统的仿真与分析,选用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
--USINGPREDEFINEDPACKAGES
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYFIR_GENIS------>
INTERFACE
GENERIC(W1:
=9;
--INPUTBITWIDTH
W2:
=18;
--MULTIPLIERBITWIDTH2*W1
W3:
=19;
--ADDERWIDTH=W2+LOG2(L)-1
W4:
=11;
--OUTPUTBITWIDTH
L:
=4;
--FILTERLENGTH
MPIPE:
=3--PIPELINESTEPSOFMULTIPLIER
);
PORT(CLK:
INSTD_LOGIC;
LOAD_X:
X_IN:
INSTD_LOGIC_VECTOR(W1-1DOWNTO0);
C_IN:
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
IF(LOAD_X='
)THEN
C(L-1)<
=C_IN;
--STORECOEFFICIENTINREGISTER
FORIINL-2DOWNTO0LOOP--COEFFICIENTSSHIFTONE
C(I)<
=C(I+1);
ELSE
X<
=X_IN;
--GETONEDATASAMPLEATATIME
ENDIF;
ENDPROCESSLOAD;
SOP:
PROCESS(CLK)------>
COMPUTESUM-OF-PRODUCTS
IFCLK'
EVENTAND(CLK='
FORIIN0TOL-2LOOP--COMPUTETHETRANSPOSED
A(I)<
=(P(I)(W2-1)&
P(I))+A(I+1);
--FILTERADDS
A(L-1)<
=P(L-1)(W2-1)&
P(L-1);
--FIRSTTAPHAS
--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,
SIGNED"
LPM_WIDTHP=>
W2,
LPM_WIDTHS=>
W2)
PORTMAP(CLOCK=>
CLK,DATAA=>
X,
C(I),RESULT=>
P(I));
ENDGENERATE;
Y_OUT<
=Y(W3-1DOWNTOW3-W4);
5.系统主要模块仿真和系统总体仿真以及有关结果分析。
图3实验二的时序图
图4实验二的RTL图
以图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的旋转因子乘法器、蝶形处理器的设计与实现
研究探索性实验。
熟悉实现FFT的旋转因子乘法器、蝶形处理器的VLSI结构设计思想和所采用的结构设计优化技术,并进一步熟悉有关硬件描述语言的编程和EDA软件的使用。
完成实现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必须乘以旋转因子。
完成实现FFT的旋转因子乘法器、蝶形处理器的FPGA设计与实现。
--旋转因子乘法器的VHDL程序
ENTITYCCMULIS
GENERIC(W2:
=17;
--MULTIPLIERBITWIDTH
W1:
--BITWIDTHC+SSUM
W:
=8);
--INPUTBITWIDTH
PORT(CLK:
STD_LOGIC;
--CLOCKFORTHEOUTPUTREGISTER
X_IN,Y_IN,C_IN--INPUTS
INSTD_LOGIC_VECTOR(W-1DOWNTO0);
CPS_IN,CMS_IN--INPUTS
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);
--X
=Y_IN;
--J*Y
C<
--COS
CPS<
=CPS_IN;
--COS+SIN
CMS<
=CMS_IN;
--COS-SIN
PROCESS
WAITUNTILCLK='
R_OUT<
=R(W2-3DOWNTOW-1);
--SCALINGANDFF
I_OUT<
=I(W2-3DOWNTOW-1);
--FOROUTPUT
----------CCMULWITH3MUL.AND3ADD/SUB---------------
SXTX<
=X(X'
HIGH)&
X;
--POSSIBLEGROWTHFOR
SXTY<
=Y(Y'
Y;
--SUB_1->
SIGNEXTENSION
SUB_1:
LPM_ADD_SUB--SUB:
X-Y;
W1,LPM_DIRECTION=>
SUB"
)
SXTX,DATAB=>
SXTY,RESULT=>
XMY);
MUL_1:
LPM_MULT--MULTIPLY(X-Y)*C=XMYC
W,
W2,LPM_WIDTHS=>