旋转因子乘法器

旋转因子乘法器

ID:41492434

大小:70.24 KB

页数:6页

时间:2019-08-26

旋转因子乘法器_第1页
旋转因子乘法器_第2页
旋转因子乘法器_第3页
旋转因子乘法器_第4页
旋转因子乘法器_第5页
资源描述:

《旋转因子乘法器》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、旋转因子乘法器的设计2008年10月16日星期四一、高效乘法器设计原理:复数旋转因子乘法R+j*I=(X+j*I)*(C+j*S)是可以化简的,因为C和S可以预先计算,并存储在一个表中。而且还可以存储下面的3个系数:C、C+S和C・S有了这3个预先计算的因子,我们首先可以计算:E=X-Y和Z二C*E=C*(X・Y)然后用:R二(C・S)*Y+ZI=(C+S)*X-Z计算最后的乘积。检验:R=(C-S)*Y+C*(X-Y)=C*Y・S*Y+C*X・C*Y二C*X・S*YI=(C+S)*X・C*(X・Y)二C*X+S*X・C*X+C*Y二C*Y+S*X这种算法使用的3次乘法,1次加法和2次

2、减法,其代价是额外的第三个表。二、实现过程:首先给旋转因子乘法器选择一些具体的设计参数。假设有8位二进制数据,系数就应该有8位(也就是7位数字和一位符号位),并且乘以exp(j*pi/9)=exp(j*20°)。量化成8位,旋转因子就变成了:C+j*S=128*exp(j*pi/9)=l21+j*39如果输入值是70+j*50,则所期望的结果是:(70+j*50)*exp(j*pi/9)=(70+j*50)*(121+j*39)/128=(6520+j*8780)/128=50+j*68这样,3个因子就变成了:0121,C+S二160和C・S二82从上面可以看到,一般情况下C+S和C-

3、S的表必须比C和S的表多一位精度。下面是VHDL代码实现了旋转因子乘法器:程序说明—程序名:ccmul.vhd—-程序作用:旋转因子乘法器,实现两个复数相乘,--输入、输出均为8位数据。--编写时间:2008/10/16-librarylpm;use1pm」pm_componentSeall;libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;实体entityccmulisgeneric(W2:integer:=17;一乘法器的宽度Wl:integer:=9;一c+s的宽度W:integer:=8);-输

4、入数据的宽度port(clk:std」ogic;x_in,y_in,c_in:instd_logic_vector(W-1downto0);一数据输入端口cps_in,cms_in:instd_logic_vector(W1-1downto0);一数据输入端Ur_out,i_out:outstd_logic_vector(W-1downto0));一结果输出端口endccmul;结构体architectureflexofccmulissignalx,y,c:std_logic_vector(W-1downto0);一输入屮间信号signalr,i,cmsy,cpsx,xmyc:std_

5、logic_vector(W2-ldownto0);signalxmy,cps,cms,sxtx,sxty:std_logic_vector(Wl-ldownto0);beginX<=x_in;—xy<=yjn;-j*ycv=c_in;-ccps<=cps_in;—c+sems<=cms_in;--C-Sprocessbeginwaituntilelk-I1;r_out<=r(W2-3downtoW-l);■■去符号位,取8位输出i_out<=i(W2-3downtoW-l);endprocess;sxtxv=x(x*high)&x;一符号扩展sxty<=y(y'high)&y;3个乘

6、法器,2个减法器,1个加法器sub_l:lpm_add_sub一减法器1,实现:x-ygenericmap(LPM_WIDTH二〉W1,LPM_DIRECTION二〉”SUB”,LPM_REPRESENTATION二『SIGNED”)portmap(dataa=>sxtx,datab=>sxty,result=>xmy);mul_I:lpm_mult■■乘法器1,实现:(x・y)*c二xmycgenericmap(LPM_WIDTHA=>Wl,LPM_WIDTHB=>W,LPM_WIDTHP=>W2,LPM_WIDTHS=>W2,LPM_REPRESENTATION=>HSIGNEDH

7、)portmap(dataa=>xmy,datab=>c,result=>xmyc);mul_2:lpm_mult一乘法器2,实现:(c・s)*y二cmsygenericmap(LPM_WIDTHA=>Wl,LPM_WIDTHB=>W,LPM_WIDTHP=>W2,LPM_WIDTHS=>W2,LPM_REPRESENTATI0N=>”SIGNED”)portmap(dataa=>cms,datab=>y,result=>cmsy);mul_3

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。