设万维读者为首页 广告服务 技术服务 联系我们 关于万维
简体 繁体 手机版
分类广告
版主:
万维读者网 > 灵机一动 > 帖子
除法器设计的一个解
送交者: 粱远声 2010年10月23日09:13:37 于 [灵机一动] 发送悄悄话
有一个芯片能做8位除以4位的计算(无符号)。请利用上8位除以4位
这个结果(商和余数)完成16位除以8位的计算(无符号)。写出算法即可。

假设有乘法器。

解:

设被除数是B3*2^12 + B2*2^8 + B1*2^4 + B0
设除数是A1*2^4 + A0
Ai,Bi 都是4位2进制数。A1,A0都不是零。所有的数都用符号量值表示。

(1)讨论 A1*2^4 + A0 除 B3*2^12 + B2*2^8
为了用8位除以4位结果
先讨论 A1*2^4 除 B3*2^12 + B2*2^8 = A1 除 ( B3*2^4 + B2 )2^4

根据假定,A1 除 ( B3*2^4 + B2 ),商为Q2,余数为R2。
从而,

( B3*2^4 + B2 )2^8 = (A1*2^4)*Q2*2^4 + R2*2^8
也就是说,当前的商是 Q2*2^4,把它放到累加累减商寄存器中。

考虑到除数的另一部分 A0,总余数为
-A0*Q2*2^4 + R2*2^8 + B1*2^4 + B0
无论正负,总余数的绝对值比被除数小。

(2)讨论 A1*2^4 + A0 除 (1)的总余数。
应用类似的过程,得到商Q1 和 更小的总余数。
把商Q1 累加累减到商寄存器中。

......

(N)当总余数的绝对值是8位数的时候,假定是C1*2^4 + C0 且符号为正
讨论 A1*2^4 + A0 除 C1*2^4 + C0
用 A1*2^4 除 C1*2^4 = A1 除 C1。这是8位除以4位的特殊形式。

根据假定,A1 除 C1,商为Q0,余数为R0。
这样,
C1*2^4 = (A1*2^4)*Q0 + R0*2^4
也就是说,当前的商是 Q0,把它放到累加累减商寄存器中。
考虑到除数的另一部分 A0,总余数为
-A0*Q0 + R0*2^4 + C0

当总余数的绝对值小于A1*2^4 + A0的时候,如果总余数大于等于零,这个
总余数就是结果余数,商寄存器中的数就是商。如果总余数小于零,商寄
存器减1,结果余数 = 总余数 + A1*2^4 + A0,商寄存器中的数就是商。
0%(0)
0%(0)
标 题 (必选项):
内 容 (选填项):
实用资讯
回国机票$360起 | 商务舱省$200 | 全球最佳航空公司出炉:海航获五星
海外华人福利!在线看陈建斌《三叉戟》热血归回 豪情筑梦 高清免费看 无地区限制
一周点击热帖 更多>>
一周回复热帖
历史上的今天:回复热帖
2009: 华尔街的数学(9)四两拨千斤
2006: 也来个数字题
2006: 圆问题:OA不一定等於OB