当前位置:   article > 正文

【S055】verilog 乘法、除法和取余_verilog 取余

verilog 取余

乘法硬件原理

结论

可以将乘法A x B转为A的移位相加。
利用 乘 2 n 就是左移 n 位的特性 乘2^n就是左移n位的特性 2n就是左移n位的特性,将数拆分为 2 n 2^n 2n表示

思路1

原始列竖式计算方法ref例2.9
在这里插入图片描述

思路2

B总是可以拆分为: B = ( a n 2 n + a n − 1 2 n − 1 + . . . + a 1 2 1 + a 0 2 0 ) B=(a_n2^n+a_{n-1}2^{n-1}+...+a_12^1+a_02^0) B=(an2n+an12n1+...+a121+a020)
  例如:B=4’d10= 1 ∗ 2 3 + 0 ∗ 2 2 + 1 ∗ 2 1 + 0 ∗ 2 0 1*2^3+0*2^2+1*2^1+0*2^0 123+022+121+020=4’b1010

举例

3 ∗ 10 = 3 ∗ ( 4 ′ b 1010 ) = 3 ∗ ( 2 3 + 2 1 ) = 3 < < 3 + 3 < < 1 = 24 + 6 = 30 3*10=3*(4'b1010)=3*(2^3+2^1)=3<<3+3<<1=24+6=30 310=3(4b1010)=3(23+21)=3<<3+3<<1=24+6=30

编码

思路1采用原始手算,列竖式思路
在这里插入图片描述

思路2采用移位思路:
在这里插入图片描述

仿真

在这里插入图片描述

综合

思路1综合如下:
在这里插入图片描述

思路2综合如下:
在这里插入图片描述
思路1原始竖式方法的资源:
在这里插入图片描述

思路2移位方法的资源:
在这里插入图片描述

搞半天,原始的方法占资源还少,离谱。

除法硬件原理

我是参考这这个博主的这篇,他写的很好可以先看。
就是手算的思路,改成了硬件方便的实现。移位相减。

verilog代码

在这里插入图片描述

仿真结果

在这里插入图片描述

资源占用

在这里插入图片描述
在这里插入图片描述
可以看到资源占不少啊!并且时序也不好。

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号