csd编码乘法器的fpga实现.docxVIP

  • 12
  • 0
  • 约1.86千字
  • 约 2页
  • 2023-10-20 发布于广东
  • 举报
csd编码乘法器的fpga实现 0 值域的下域 正统计算法中的csd消息码表示法不同于传统的二进制消息码表示法。它有三个值,即数字的值范围为{0.1,1},并且通常写11。二进制代码, 从最低的有效位开始, 用10?01ˉ10?01ˉ。取代所有大于或等于2的1序列, 可得到CSD代码, 应用CSD表示法, 可以降低非零元素的数量, 在乘法运算中能减少加法器的数量, 有利于提高运算速度和减少资源的占用。 1 csd编码钩子的设计 1.14 y接lut的地址单元 在CSD编码算法的基础上, 4×N位CSD编码乘法器的结构如图1所示, 两个输入信号X(N位) ,Y(4位) , 相乘的结果为Z(4+N位) ,N为任意大小的整数。在CSD编码乘法器中, 引入了一个4位输入的查找表Look-Up-Table (LUT) 和两个CSD编码位选择开关SW0、SW1。图1中, 输入信号Y接LUT的输入端作为LUT的地址, LUT中共有16个地址单元, 每一个地址单元中存放6位的数字, 如表1所示。 4位×N位CSD编码乘法器的操作与常系数乘法器的操作相似, 利用查找表LUT中的值设置开关SW1、SW2的位置, 决定“移位-相加/相减”算法中的移位操作及每一位开关的输出是正还是负, 进而实现相加或相减。具体是Y输入的CSD码的高两位决定开关SW1的位置, 低两位决定开关SW2的位置, 在CSD码中, 相连两位不可能同时为非零值, 故开关SW1、SW2各有3种可能的位置, 考虑到非零值可能是1或1ˉ1ˉ, 故每个开关有6种可能的输出组合。例如:当输入Y=0111时, 其CSD码的加权表达为20-2-3, LUT该单元中的内容为010111, 开关SW1输出X(N) ·20, 开关SW2输出-X(N) ·2-3, 加法器的输出结果为: Z(N+4)=X(N)?20+(?X(N)?2?3)(1)Ζ(Ν+4)=X(Ν)?20+(-X(Ν)?2-3)(1) 1.28 csd码乘法器的结构 在4×N位CSD码乘法器的基础上, 很容易扩展更高位的乘法器。其中输入Y每增加两位, 在4×N位CSD码乘法器的结构上只需要增加一个开关和一个加法器。输入Y为8位时, 8×N位CSD码乘法器的结构如图2所示。在图中, 查找表LUT的容量按Y输入的位数的平方位增长, 其容量为256×12位。 24 8个乘法器的f实现 2.1 输出设备的“位移-叠加”运算 按照两位二进制数相乘的“移位-相加”算法, 在VHDL语言程序设计中, 采用状态机的设计方法, 将乘法的执行过程分3个状态完成。在第1个状态S0中, 下载操作数并重置乘积寄存器;在第2个状态S1中, 进行实际的“移位-相加”乘法运算;在第3个状态S2中, 乘积传送到输出寄存器Y中。VHDL语言程序, MAX+PLUSⅡ中编译、综合后下载到EPF10K10中, 占用了576个逻辑单元中90个, 约为15%, 乘积的仿真时序如图3所示。从图中可以看出完成一次乘积运算, 所需的时间约为2.3μs。 2.2 csd编码实现乘子运算 在利用VHDL语言设计CSD编码乘法器中, 按照2.1节中介绍的CSD编码乘法的实现过程, 设计了一个16×6位的存储器ROM作为查找表LUT, 并将其配置到嵌入式阵列EAB中。设计中采用状态机模式, 分3个状态完成整个乘法的执行过程, 第1个状态S0, 完成操作数的下载, 并查表;第2个状态S1, 按“移位-相加/相减”算法实现乘法运算;第3个状态S2, 将乘积传送到输出寄存器Y中。程序经MAX+PLUSⅡ编译、综合后下载到EPF10K10中, 占用了576个逻辑单元中46个约为7%和占用了24个EAB单元中的6个为25%, 乘积的仿真时序如图4所示。从图中可以看出完成一次乘积运算, 所需的时间约为0.9μs。 从上面的分析中可以看出, FPGA中采用CSD编码实现乘法运算, 在逻辑单元的占用和运算速度方面的优势是明显的。根据实验统计, 在FPGA中采用CSD编码乘法, 可以减少33%的资源占用。 3 csd编码乘法 CSD编码乘法运算, 在FPGA中实现被证明是最有效的方法之一。在数字信号处理的乘—累加MAG运算中, 对于12位宽的数据, 采用CSD编码乘法比采用二进制乘法可减少16%的加法器数量。在数字滤波器、傅里叶变换等其他数字信号处理中, 极大地提高了系统的吞吐量, 在现代数字信号处理中具有较高的研究和应用价值。

文档评论(0)

1亿VIP精品文档

相关文档