上传者: 42168341
|
上传时间: 2021-11-18 14:44:44
|
文件大小: 526KB
|
文件类型: -
期中作业-设计文档和仿真报告
1. 算法
根据Booth算法,一个16位二进制数A可被表示为如下形式:
将上述方程应用到A*B后,我们可以得到:
因此,基于Radix-4的Booth算法,我们可以将A*B转化为9个部分积之和。应用Wallace树,每次对三个数求和,可以将九个部分积求和的过程优化成5步。优化方式和具体流程如下图:
## 2. Verilog设计代码
模块之间的调用关系如下图,顶层设计模块为multiplier。
multiplier.v
├─booth_16x16.v
└─wtree_16x16.v
├─full_adder.v
└─half_adder.v
multiplier.v
module multiplier(A, B, M, clk, rst_n);
parameter width = 16;
input