SoCVista位级运算架构Word格式文档下载.doc
- 文档编号:15404519
- 上传时间:2022-10-30
- 格式:DOC
- 页数:31
- 大小:6.31MB
SoCVista位级运算架构Word格式文档下载.doc
《SoCVista位级运算架构Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《SoCVista位级运算架构Word格式文档下载.doc(31页珍藏版)》请在冰豆网上搜索。
图2 几个简单的位串行设计方案,可能的方案
仔细在想想图2电路的工作情况,可以发现,根本不可实现。
问题就处在右移单元,而且是一个组合逻辑的右移单元(?
),所需要的功能是
图3 右移单元的功能示意
对于无符号数,右移之后最高位补零;
对于2C数,右移之后最高位进行符号扩展。
如果想用组合逻辑实现图3的功能,是做不到的,因为图3所示为非因果系统,也就是输入时右移单元必须给出,可是此时还未输入不可能提前输出来。
我们再来看看右移单元的反面,左移单元:
你知道左移单元实际是什么东西吗?
图4 左移单元
所谓的(无符号)左移单元其实就是一个延时器,从图4可以看出,输入到输出的确被左移了一位,当然了,延时器的初始值应该为零。
前面说到,图2的电路是不照的,比如计算时,功能上要求
图5 非因果系统,不可实现
图5的右移功能单元是实现不了,除非你能把“它”变为因果的,,最简单的方法就是对系统进行延时,也就是
图6 延时得到因果系统(实际上是插入割集流水线)
还记得前面说到的设计原则没:
这一段看起来并不非常严谨,但是结果的确是对的,大家可以验证一下图6的系统。
对于图2的其他情况有,
图7 更多无符号数位串行设计例子
大家可以体会体会这种设计的原理,为什么可以这么做?
如果你始终不能理解,那也没关系,请记住一点:
在无符号位串行的设计中,其实就是用一个延时单元(左移)来抵消左移一位(),用两个延时单元抵消左移两位,三个延时抵消左移三位,,,等等如此。
练习题:
请把图7电路的运行时的中间过程手动在草稿纸上“仿真”一遍!
对于2C数的位串行设计仍然遵循“左移和右移的抵消”,但最终电路稍微变化,如下图
图8 2C数的位串行设计电路,稍区别无符号数的位串行设计
因为2C数进行部分积累加时,需要符号对齐,也就是进行符号扩展操作,因此最终电路中要多添加一个寄存器单元,用于存储符号位,以便于在需要时输入。
正常计算开关上拨,只有在需要符合位扩展的那个周期,开关下拨,从而输入上个周期存储下来的符号位,实现符号扩展功能,开关的状态有专门的状态机控制。
图中不标出具体开关的时刻,因为这个和具体设计有关,需要根据实际情况来确定。
图9 更多2C数位串行设计例子
图9给出了其他两个2C数位串行电路设计的例子,当然了,牛人总是会挑电路的毛病,,注意观察图9的电路,符号扩展功能其实可以设计得更为简洁,以便节约寄存器,所带来的坏处可能就是控制逻辑要复杂一些,,
图10 符号位一出现就接通寄存器进行保存,之后寄存器形成自循环路径(红线)
符号位到来时,接通寄存器进行保存,之后寄存器接成自循环路径(红线所示),这样就能多次使用保留下来的符号位,而不必用多个寄存器来保存。
题外话,图10的策略有助于减少功耗,不仅仅是符号寄存器的个数变少,而且其翻转次数也减少了。
明白了以上的设计原则,设计Lyon乘法器就容易了,直接看图(4x4Lyon'
smultiplier),
图11 Lyon'
smultiplier
图11给出Lyon'
smultiplier的设计过程,注意,这只是大致的设计电路,实用化还需进行一些细微的补充:
我想这对大家来说不成问题!
上面所讨论的设计方法强大之处不仅仅在于设计一个小小的乘法器,而且能设计各种FIR和IIR的位串行结构,,下面仍以例子进行学习!
例题1、FIR位串行架构设计,假设FIR迭代公式如下
(2)
对于定点计算系统,总是能使用移位和加法来代替乘法,所以设计之前要先将迭代式的乘法转化为移位和加法(CSD编码以及子表达式共享有助于得到更省资源的实现:
以后会讨论到),如公式
(3)
字级电路如图12,
图12 基于移位和加法器的FIR字级电路
这里给出与课本上稍有不同的设计结果,这里输入输出字长均为W=8。
还有一点值得注意的是图12中的延时,指的是字级的延时,转化到位级相当于W个延时,所以有,
图13 可实现的位级FIR流水线架构
注意到图13最后电路的蓝色星号*了吗,这两个节点其实可以合并,这样就能节约3个寄存器单元,最终电路如图14,
图14 合并冗余节点,节约寄存器资源
再来看一个IIR的例子,课本上对于IIR位串行架构的设计引出两个概念:
1)环路延时同步;
2)补偿(或歪斜)。
联系第10章,流水线结构的并行自适应递归滤波器,很容易理解这一点:
因为IIR滤波器的环路可不像FIR的前向路径,能找到前馈割集插入任意多的流水线寄存器,,但也不是说IIR就不能用多级流水线。
要对IIR的环路进行流水化,“只能”采用超前计算或者M倍降速。
课本上默认并不对IIR进行超前处理或者M倍降速,也就是说IIR环路的延时总数是定值,不可改变。
假设字级架构的IIR某个环路具有个延时,转化到位级架构就变为个延时,W是字长,这个数目是固定不可变的。
——如果“你”在设计IIR位级架构的时候,像课本一样将FIR部分单独拿出来处理,最后在连接起来,那么就必须保证你所设计的IIR位串行架构的每一个环路延时数目匹配到规定的数目。
此外,还有补偿寄存器的数目,,课本上给出了一套法则,经过推导我承认这是对的。
注意:
课本上默认大家都能理解,所以也没做太多解释。
关于课本上的IIR位级架构设计方法,有点让人混乱,而且摸不着头脑,因此,现在我建议:
如果你觉得掌握不了,那就先别采用课本的方法;
当然作为补偿,我自己给出一套设计方法(OH,希望我的方法是完备的!
!
大家批判的学习学习,错误我可不会负责;
另外,当你看懂了下面将要介绍的方法,很容易就能自己推导出课本上的结论,以及作者没有说清楚的细节),,
例题2、IIR位串行架构设计,假设IIR迭代公式如下
(4)
转化为移位和加法的实现,有
(5)
字级电路如下,
图15 基于移位和加法器的IIR字级电路
将图15转为位级架构,并用重定时移动恰当数目延时与右移单元相抵消,具体过程如图16
图16 使用重定时构造的IIR位串行电路
同样的,图16最后电路也可以进行节点共享,最终可得,
图17 合并冗余节点,节约寄存器资源
这里所得的结构和课本给出的结构功能“一致”,图18对课本结果进行恰当的重定时处理,可以看出最终结果“正是”图17的电路。
这就说明,我们的设计方法和课本一致!
图18 对课本结果进行重定时优化,注意:
图中加法器的进位寄存器没画出
再来看看课本上的例13.5.1,,迭代公式如下
(6)
转化为移位和加法实现,
(7)
图19 基于移位和加法器的IIR字级电路
请注意,图19的画图方法,两条准则:
1)反相器位于右移单元之后;
2)同一变量的不同右移支路,右移数目多的支路在前,右移数目少的支路在后,比如对y(n-1)的两条右移支路,的支路在前面,而的支路在后,又比如对y(n-2)的两条支路,的支路在前,支路在后。
按照以上的准则画图,能容易观察出可以合并的节点,从而节约寄存器的使用。
请体会以下的设计过程,
先将图19字级电路转化为位级电路(加法器的进位寄存器不再画出!
你可以自己补上),
图20 基于移位和加法器的IIR位级电路(加法器的进位寄存器没有画出,可自行补上)
接下来对图20位级电路进行恰当重定时,并导出最终位级电路,如下图
图21 设计:
第一部分,重定时
图22 设计:
第二部分,合并节点
图23 更进一步的化简
图24 另一种画法,一眼就能知道为什么寄存器资源可以共享!
(推荐)
图23看起来还不是非常直观,而图24就非常明了。
如果我们熟练了,以后在进行IIR位串行架构设计,直接就能画出图24的结构,直接明了。
思考题:
会不会出现寄存器不够抵消右移操作的情况呢,如果出现应该如何处理?
如果不会出现,请证明之!
正则符号数CSD运算
一般滤波器电路中使用的都是常系数乘法器,也就是说其中一个乘数是固定的常数。
类似于BOOTH重编码思路,对乘法器的常系数进行重新编码,使得其中非零位最少,将有利于同时减少面积和功耗。
——正则符号数就是这么一种编码,使得常系数的非零位最少,下面通过几个实例先来体验一下,注意比较同一常数的2C编码和CSD编码非零位数目,思考一下:
为什么非零位数目少就意味着实现面积小和低功耗?
图25 几个CSD的编码例子,其中表示-1
通过对比图25同一个常数2C编码和CSD编码可知,CSD编码使用更少的非零比特位,另外一个区别是,CSD允许使用位集合,而2C编码只能使用位集合。
其实CSD可以看作是二进制编码的一个扩展,如下
正规二进制编码(无符号数)定义公式为
(8)
而CSD编码扩展了的取值集合,定义公式如下
(9)
但,不是每一个由公式得出的编码都是CSD编码,还必须满足一下特征要求,
lCSD数中不存在两个连续的非零位;
l一个数的CSD表示中含有的非零位是所有表示中最少的,因而被称为是正则的;
l一个数的CSD表示是唯一的;
l对于公式所定义的CSD数覆盖区间,其中最有价值的区间是;
l在区间的W位CSD数中,非零比特位数比2C编码的非零比特位数少33%。
一般情况下,我们只需知道如何将一个实数或者2C编码的串转化为CSD编码,就能用到实际中,可以不必太纠缠于CSD的一些理论讨论。
下面给出课本上CSD编码的程序实现,
代码1 课本所给的CSD编码程序实现
%
function[digits,weight,err]=csdigit(A,resolution)
s=sign(A);
ah=['
0'
dec2bin(round(abs(A)*2^resolution))];
W=length(ah);
%fromVLSI-DSP,,2ctocsd
ah=fliplr([ah
(1),ah,'
]-'
);
r=ah;
a=zeros(1,W);
fork=1:
W
r(k+1)=not(r(k))*xo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SoCVista 运算 架构