您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > Virtex-4-DSP48简介及使用
Virtex-4FPGAXtremeDSP简介及简单使用前言:随着应用需求的增加,算法复杂度也提高了.为了处理这些新的算法,需要有高性能的信号处理引擎.典型的固定加构DSP处理器不能独立穷完成处理任务,通常还需要一个DSP协处理器,来处理不断增加的,复杂算法的高性能部分.而FPGA非常适合弥补这些性能的差距.采用革命性_XtremeDSPTMSlice,Xilinx的Virtex4FPGA可以为高性能的数字信号处理提供理想的解决方案.简介:1.XtremeDSPSlice具有最高的性能、最低的功耗和最佳的经济性;级联逻辑的简单性和有效性;极低的功耗;增加成本效益灵活性;易用性。2.每个XtremeDSPtile都包含两个DSP48slices来构成一种能用粗精度DSP架构的基础。许多DSP的设计在乘法运算后要进行加法运算,这些功能在V4中都采用专用电路进行支持。3.DSP48Slice支持多种独立的功能,包括乘法器、乘累加器(MAC)、后接加法器的乘法器、三输入加法器、桶型移位器、宽总线多路利用器、大小比较器或宽计数器。还支持多个DSP48Slice的连接以形成多种算术函数、DSP48滤波器以及不使用能用FPGA结构的复数算法。4.DSP48Slice是一个18*18位2进制补码乘法器,跟随一个48位符号扩展加法器/减法器/累加器(这是其主要应用)5.操作数输入、中间积和累加器输出的可编程流水线操作提高了吞吐量。48位内部总线几乎可以实现DSPSlice的无限制集合。6.可以将一个XtremeDSPSlice的输出结果与下一个XtremeDSPSlice的输入级联而无需使用一般的结构布线。该通路为许多具有任意罐头长度的DSP滤波器功能提供了高性能和低功耗的后加法功能。对于多精度算法,该通路可支持右引线移位,故一个XtremeDSPSlice的部分积可以进行右对齐,与下一个相邻的Slice计算的部分积相加。用该技术XtremeDSPSlice可以被设置为支持任意大小的操作数。Virtex-4DSPSlice架构亮点:每个_DSP48Slice具有一个后接多路复用器的2输入乘法器和一个3输入加法器/减法器。乘法器接受两个18位2进制补码操作数,产生一个36位2进制补码结果。该结果数可符号扩展至48位,并且可以馈至加法/减法器。加法/减法器接受三个48位2进制补码操作数(这其中有级联数据和累加减的结果数据),产生一个48位2进制补码结果。进行级联后还可以支持更高级别的DSP功能(级联B输入总线和DSP48的级联P输出总线提供了级联能力)。主要亮点归纳:18位*18位2进制补码乘法器,具有全精度36位结果,可符号扩展至48位带有寄存式累加反馈的灵活的3输入48位加法/减法器动态的用户控制操作模式(OPMODE),以便在时钟周期改变时调整DSP48的功能级联18位B总线支持输入采样传输级联48位P总线支持部分结果的输出传输支持多精度乘法器和算法,可将17位操作数右移来对齐宽位数乘法器部分积支持对称智能舍入以获取更高的计算精度控制和数据信号的性能增强流水线选项,可在配置位进行设置输入端口C一般情况下用于乘法-加法运算、大型3操作数加法或灵活的舍入模式控制和数据寄存器具有各自的复位和时钟使能I/O寄存器在不增加面积成本的情况下可保证最大的时钟性能和可能的最高采样率OPMODE多路复用器下表给出了几种Virtex4器件内DSP48的数量下图表明了其器件端口图,关于具体的设置将在后面介绍关于DSP48的常规算术功能:(累)加减法DSP48Slice包含一个加/减法单元,可以在单个DSPSlice上实现不同的加/减逻辑组合。其格式为Out=Z_(X+Y+CIN)公式中的X、Y和Z是多路复用器。可能根据OPMODE的设置来选择X、Y、Z的选择结果。CIN项是加/减法单元的进位输入。确定是加法还是减法是由SUBTRACT输入来控制的,将其设置为0则为加法,为1为减法。下表给出了OPMODE中关于X、Y、Z的设置(OPMODE设置里先后顺序是Z、Y、X)。注:其中A:B是将A输入的18位和B的18位组合成36位作为一个36位有符号数作为一个输入的。如果将Y设成01即A*B,则X也应该这样设置。见下面乘累加。(累加)乘法将X、Y均设置成01,则可实现乘法。其表达式为Out=C±(A×B+CIN)其他相关参数设置和加法设置相似。FPGA主要参数设置:下面给出的是在Verilog编程语句中的一个例化语段格式,真正使用时要做一定修改。DSP48#(//各线路流水线寄存器等参数的配置.AREG(1),//NumberofpipelineregistersontheAinput,0,1or2.BREG(1),//NumberofpipelineregistersontheBinput,0,1or2.B_INPUT(DIRECT),//BinputDIRECTfromfabricorCASCADEfromanotherDSP48.CARRYINREG(1),//NumberofpipelineregistersfortheCARRYINinput,0or1.CARRYINSELREG(1),//NumberofpipelineregistersfortheCARRYINSEL,0or1.CREG(1),//NumberofpipelineregistersontheCinput,0or1.LEGACY_MODE(MULT18X18S),//Backwardcompatibility,NONE,MULT18X18orMULT18X18S.MREG(1),//Numberofmultiplierpipelineregisters,0or1.OPMODEREG(1),//NumberofpipelineregsitersonOPMODEinput,0or1.PREG(1),//NumberofpipelineregistersonthePoutput,0or1.SUBTRACTREG(1)//NumberofpipelineregistersontheSUBTRACTinput,0or1)DSP48_inst(//这个是例化的名字,下面是一个例化的接口参数设置.BCOUT(BCOUT),//18-bitBcascadeoutput.P(P),//48-bitproductoutput.PCOUT(PCOUT),//48-bitcascadeoutput.A(A),//18-bitAdatainput.B(B),//18-bitBdatainput.BCIN(BCIN),//18-bitBcascadeinput.C(C),//48-bitcascadeinput.CARRYIN(CARRYIN),//Carryinputsignal.CARRYINSEL(CARRYINSEL),//2-bitcarryinputselect.CEA(CEA),//Adataclockenableinput.CEB(CEB),//Bdataclockenableinput.CEC(CEC),//Cdataclockenableinput.CECARRYIN(CECARRYIN),//CARRYINclockenableinput.CECINSUB(CECINSUB),//CINSUBclockenableinput.CECTRL(CECTRL),//ClockEnableinputforCTRLregsiters.CEM(CEM),//ClockEnableinputformultiplierregsiters.CEP(CEP),//ClockEnableinputforPregsiters.CLK(CLK),//Clockinput.OPMODE(OPMODE),//7-bitoperationmodeinput.PCIN(PCIN),//48-bitPCINinput.RSTA(RSTA),//ResetinputforApipelineregisters.RSTB(RSTB),//ResetinputforBpipelineregisters.RSTC(RSTC),//ResetinputforCpipelineregisters.RSTCARRYIN(RSTCARRYIN),//ResetinputforCARRYINregisters.RSTCTRL(RSTCTRL),//ResetinputforCTRLregisters.RSTM(RSTM),//Resetinputformultiplierregisters.RSTP(RSTP),//ResetinputforPpipelineregisters.SUBTRACT(SUBTRACT)//SUBTRACTinput);要点(注释之外应该注意的部分):第一个括号内的配置,主要是器件流水线及级联参数的设置①AREG,BREG的属性值可取0、1或2。属性值规定了A和B输入通路中流水线寄存器的数量。②CREG、MREG和PREG的属性值可取0或1。属性值规定了乘法器(MREG)输出端和加法器(PREG)输出端的流水线寄存器数量。CREG的属性用来选择C输入端的流水线寄存器。③如果这些通路中没有流水线寄存器,则CARRYINREG、CARRYINSELREG、OPMODEREG和SUBTRACTREG属性值均取值为0,如果在其中通路中有一个流水线寄存器,则取值为1。(这是为了保证对数据操作的一致性,其实个人认为不必受其约束,如果在初始化时强制加减,则不需要将SUBTRACTREG的属性值也设为1,应该设为0,反而是设为1后会导致不会执行初始化的运算,如初始要其执行减法)④B_INPUT属性规定了到B端口的输入是来自于并行输入(DIRECT),还是来自前面Slice的级联输入(CASCADE)。⑤LEGACY_MODE的属性具有两个作用。第一个本质上与MREG的属性类似。它规定了实际上是否“直通”乘法器(MULT18*18),或者在乘法器的中间包含一个单独的流水线寄存器(MULT18*18S,与MREG的值(等于1)相同)。MREG的属性和LEGACY_MODE的属性出现任何不一致的设置都将被标记为软件设计规则校验(DRC)错误。属性的第二个作用是告诉时序工具,在时序计算中应该使用通过组合乘法器通路的A和B端口(较慢时序),还是使用时序更快的A:B的X多路复用器旁路通道。由于OPMODE可以动态变化,如果没有属性,时序工具就不能确定这些信息。(NONE时,时序分析/仿真将绕过乘法器,以获得最好的性能,在CEM的输入接地时,通过设定MREG的值为1,可以获得最低的功耗;MULT18*18时,则时序分析/仿真将使用通过乘法器的组合通路,在此情况下MREG必须设为0,否则会发生DRC错误;MULT18*18S时,时序分析/仿真将使用一个流水线乘法器,此情况下MREG必须设为1,否则会发生DRC错误)第二个括号内的配置,主要是信号输入输出及计算的操作类型的设置:信号名称Direction位宽功能AI18Themultiplier'sAinput.Thissignalcanalsobeusedastheadder'sMostSignificantWord(MSW)input.BI18Themultiplier'sBinput.Thissignalcanalsobeusedastheadder'sLeastSignificantWord(LSW)input.CI48Theadder'sCinput.OPMODEI7ControlstheinputtotheX,Y,andZmultiplexersintheDSP48slices(第2页有简要设置,后面也会详述).SUBTRACTI10=add,1=subtract.CARRYINI1Thecarryinputtothecarryselectlogic.CAR
本文标题:Virtex-4-DSP48简介及使用
链接地址:https://www.777doc.com/doc-5052952 .html