您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > ISE-IP核使用说明
ISEIP核使用说明(14.5)1.除法器.....................................................................................................................................12.CORDIC–IP核......................................................................................................................43.CORIDC-sin/cos........................................................................................................................64.CORDIC-SQRT.......................................................................................................................105.BlockMemory......................................................................................................................136.Shift-Register........................................................................................................................217.ACC累加器..........................................................................................................................258.复数乘法器..........................................................................................................................279.乘法器..................................................................................................................................2810.FFT......................................................................................................................................3011.FIFO....................................................................................................................................331.除法器1.设置使用HighRadix类型(这样会多出RDY和ND两个握手信号方便连续的除法)上面有个地方说错了,ClocksperDivision不是运算需要的时间,Latency才是需要的时钟数Radix2类型,没有RDY信号反馈运算是否完成(可能需要对时钟计数来确定是否运算完成,所用时钟是确定值)。1,除法器内核设置为Radix2时,小数位包含符号位已经补码化,小数位可以按照如下方式接在整数位后面:wire[7:0]qv_q_cp;assignqv_q_cp=fv_q[26]?(qv_q[7:0]-1'b1):qv_q[7:0];wire[33:0]v_q_div;assignv_q_div={qv_q_cp,fv_q[25:0]};assignxk_re_tmp=xk_re_quoti[26]?{xk_re_quoti-1'b1,xk_re_frac[8:0]}:{xk_re_quoti,xk_re_frac[8:0]};因为整数部分,如果为负数的时候是取反加一为对应的值,加上小数部分后,整数部分只做取反运算了,所以通过减一来实现对应的加一操作。当设置为HighRadix时,小数位也补码化但丌包含符号位,可以直接接在整数位后面。1.小数最高位为符号位,当商为0的时候,xk_re_quoti都是全0,丌管小数部分的正负,所以应该用小数部分的最高为作为判断条件-----2.因为整数部分,如果为负数的时候是取反加一为对应的值,加上小数部分后,整数部分只做取反运算了,所以通过减一来实现对应的加一操作。3.所以组合的方式为:assignxk_re_tmp=xk_re_frac[9]?{xk_re_quoti-1'b1,xk_re_frac[8:0]}:{xk_re_quoti,xk_re_frac[8:0]};//2015.4.22.模块信号的作用DIVdiv(.clk(clk),//inputclk--时钟信号,运算周期可以使一个周期也可以是多个周期.nd(nd),//inputnd---用来提示IP核,有新的数据输入,请采样。这是一个新数据的反馈信号.rdy(rdy),//outputrdy表示运算完成,请取走结果.rfd(rfd),//outputrfd--高电平表示采样,表示已经采样。需要新的数据输入。这是一个新数据的请求信号。.dividend(a),//input[11:0]dividend---被除数.divisor(b),//input[7:0]divisor---------除数.quotient(c),//output[11:0]quotient--商.fractional(d));//output[3:0]fractional余数,若RemainderType为Remainder则:3/2余数为1(整数),若为Fractional则:3/2余数为0.5(小数,用4位二迚制数表示为:1000=1*2^-1+……)由这个图,好像是要运算完成后才能输入数据,但是测试发现,每个时钟都可以输入的,只是首次延时为latency由仿真结果看只有在RDY为高的时候,输出结果才是正确的。如果错过恰当的时间去取数据可能取到的是错误的数据,所以要子啊RDY一为高就要取输出的数据2.CORDIC–IP核CORDIC:就是“广义的坐标旋转数字运算”CORIDC支持的运算:1.极坐标不直角坐标的转换2.三角函数,sin,cos3.sinh,cons4.Asin,Asinh5.平方根CORIDC的输出量化误差:1.由于输入的量化噪声的影响,误差为1/2LSB2.由于内部运算的误差,这个误差可以由输入的位宽的增大来减小。3.两种误差影响都是在小输入的时候影响较为明显,大输入的时候几乎没有影响。CORIDCarchitecturalconfigurations(核结构配置):Parallel,WordSerial(并行和字串行)WordSerial:完成一次运算要多个时钟,消耗的资源比较少。Nbit的输出需要N个时钟周期才能完成计算,只用了一个shiftAdd_Substage(一个运算模块),通过反馈计算多位的数据,没计算一位需要反馈N次,作用需要N个时钟才有一个有效的输出。Parallel:可以实现单时钟实现一次运算,但是要消耗大量的资源。由下图可知,如果输出的一个Nbit的数据需要N个串行的ShiftAdd_SubStage,所以从输入第一个数据到接收到第一个数据的输出需要N个时钟的延时,但是接下来的每个时钟都要数据输出,相当于是使用了流水线。CORIDICIP的数据表示形式。数据信号1.在函数配置为Rotate,Translate,sin,cos,Atan时,X_IN,Y_IN,X_OUT,Y_OUT数据信号的使用的是2定点二迚制的补码,且用2位来表示整数,其余的为来表示小数。Usinga10-bitwordwidth,+1and-1arerepresentedas:0100000000=01.00000000=+1.01100000000=11.00000000=-1.02.对于平方根函数,输入X_IN,和输出X_OUT,可以表示为无符号小数和无符号整数形式。若为UnsignedFractional(无符号小数),则0=X_IN+2,即输入输出都为小于2的正数,若为UsignedInteger,则0=X_IN2^N,即输入输出都为整数,没有小数部分(小数部分被舍弃)。且当为UsignedFractional的时候,数据固定第1bit为整数,其他的bit为小数部分UnsignedFractional1100000000=1.100000000=1.5UnsignedInterger0000001000=0000001000=8相位信号PHASE_INandPHASE_OUT使用的而是定点的二迚制补码,且用3bit位来表示整数,其余的为来表示小数。(有符号数)若相位设置为“Radians”-Pi=(PHASE_IN)=PiIn2Q7,orFix10_7,formatvalues,+Piand-Piarerepresentedas:01100100100=011.00100100=+3.1410011011100=100.11011100=-3.14若相位设置为“ScaledRadians”(归一化的相位)-1=(PHASE_IN)=+1In2Q7,orFix10_7formatvalues,+1and-1arerepresentedas:0010000000=001.0000000=+1.01110000000=111.0000000=-1.0QNumbersFormat---一定是有符号数,无符号数用UFix表示。一个符号位接着Xbit整数和Nbit小数,数据总长度为1+x+N.如1Q7:0010000000=001.0000000=+1.0也可以用FIX来表示:Fix(1+X+N)_N.即Fix(总位数)_小数位数。Q15表示没有整数位有一个符号位和15个小数位。用FIX表示为:Fix(16)_15.映射不同的数据格式(默认为上面的数据格式,要映射其他数据格式要手动配置)Rotate,Translate,Sin,CosandAtan,把数据信号映射到可选的数据格式(即固定的整数位数的小数格式),输入数据X_IN映射到可选的数据格式上。若输入输出位宽相同,则默认的输出也会映射到不输入相同的数据格式上(实际计算结果也就是不输入位宽相同)若输出的位宽比输入的位宽小,则会相应的减少输出数据的小数位(在实际计算结果下去掉最后面的小数位),输出位宽小于输入位宽可能找出输出数据产生较大的误差。如输出实际为FIX10_8:00.10101001若输出位宽设为8则输出数据格式为Fix8_6:00.1010110,去掉了最好两位。SquareRootFunctionalConfigurationCOREGeneratorGUIandParameters(核生成器用户界面和参数)粗旋转,即把输入输出数据的范围有第一象(-pi/4~pi/4)限扩展到了这个圆平面(-pi~pi),在运算Vectorrotation,Vectortranslation,SinandCos,andArcTan时这个功能是默认打开的,但在运算S
本文标题:ISE-IP核使用说明
链接地址:https://www.777doc.com/doc-1911526 .html