本站小编为你精心准备了计数器电路设计论文参考范文,愿这些范文能点燃您思维的火花,激发您的写作灵感。欢迎深入阅读并收藏。
1电路设计
前导0计数器电路实现的功能:从数据的高位往低位计算连续0的个数,若出现1,则停止计数.
1.1设计理论本文设计一个108位前导0计数器电路,采用2位分组的并行计数算法,电路设计原理如下:如图2所示,前导0计数电路将数据位宽平分为高半位和低半位两个部分,然后分别对两部分前导0个数进行计算,在下一级计数逻辑对上面两个计数器结果进行汇总.当n=2时,相当于4位前导0计数电路;当n>2时,相当于2n位前导0计数电路.
1.24位前导0电路设计如图3所示,Count[1:0]可以表示Data[3:0]不全为0时前导0个数;当Data[3:0]全为0时,前导0的个数为4,Count[1:0]最多也只能表示3,因此需要Z信号作为Count的拓展位[4].当Data[3:0]全为0时,前导0个数是4,拓展位Z=1,count[1:0]=2′b00,Z与Count[1:0]组成3位二进制计数值,为3′b100,正好可以表示Data[3:0]全为0时前导0的个数4.
1.38位前导0电路设计8位前导0电路是在两个4位前导0得出的计数结果后再做一次选择,对前面两个4位前导0的计数结果进行汇总.8位前导0的电路结构如图4所示.图4中,左上方电路计算高4位前导0个数,右上方电路计算低4位前导0个数.当高4位全为0时,则需将高4位前导0个数与低4位前导0个数相加;当高4位不全为0,则只需输出高4位前导0个数即可.当Data[7:0]不全为0,Count[2:0]即可表示前导0的个数;当Data[7:0]全为0,则Count[2:0]=3’b0,Z=1,构成二进制1000可以表示成8个0.从8位前导0电路结构,再结合4位前导0电路结构,由此找出前导0电路设计规律,为108位前导0电路设计提供结构的拓展.将8位前导0电路结构进行模块层次化,如图5所示.图5所示,浅灰色模块(四端口模块)是1个NR2D和1个INVD,深灰色模块(三端口模块)是1个AN2D,上一级的白色模块是3个MUX2D,下一级白色模块(五端口模块)是5个MUX2D.在大位宽前导0电路设计中,每向下增加一级模块,模块的个数就会增加一倍,白色模块的MUX2D就会增加2个,浅灰色和深灰色模块的逻辑单元不变.
1.4108前导0电路设计将64位、32位和12位这三个前导0电路进行拼接,组成的108位前导0电路结构如图6所示.如图6所示,从上到下分别是第一级模块、第二级模块、第三级模块、第四级模块、第五级模块、第六级模块、第七级模块.各个模块的内部逻辑电路如图7所示,其中白色模块n(n≥2)是指模块的级数。
2电路优化
2.1Z信号树逻辑优化图6中深灰色模块(三端口模块)是Z信号树逻辑模块,Z信号树经过优化之后如图8所示.
2.2Count树逻辑优化图6中白色模块(五端口模块)构成Count树,Count树由MUX2D逻辑单元构成.由于MUX2D标准单元存在传输管,导致标准单元延时大,以及单元驱动能力弱的情况[5].因此需要将传输管逻辑单元优化成速度快、稳定性好的CMOS互补逻辑单元。将MUX2D传输管逻辑单元通过逻辑换算,使之成为互补的CMOS逻辑单元,可以有效提高Count树的计算速度和稳定性.根据Count树中白色模块(五端口模块)所处的模块级数,分奇偶两种情况分别进行逻辑换算和重组,优化之后的逻辑结构如图9所示.从图9发现,优化后的逻辑电路中有反相器存在,并且随着模块级数增加,反相器个数也在增加.因此有必要将反相器提取出来,以一个大尺寸的反相器来代替这些分散的反相器,这样既可以满足驱动的需要,也可以用来减少面积.于是进一步优化之后的电路结构如图10所示.
2.3单元尺寸优化在同一级有关联的相邻两个模块,由于扇出不同造成负载不一样,因而不同模块内部单元尺寸的调整顺序也不一样.108位前导0电路逻辑单元尺寸调整的顺序如图11所示.从图11可以看出,首先优化第1条路径的尺寸,按照阿拉伯数字依次增大的顺序,依次进行不同路径的模块单元尺寸调整,最后优化第13条路径.每条路径都是顺着箭头的方向,对各个模块依次进行单元尺寸的调整.
3性能比较
在108位前导0电路设计完成过后,提取电路设计的网表进行PT分析,通过PT分析获得到时序和面积结果.然后分别与传统前导0计数器的RTL级代码[6]进行DC综合的结果,以及8位分组的RTL级代码进行DC综合的结果进行比较,如表1所示.通过比较发现,传统前导0的RTL级代码进行DC综合的时序和面积都太大,相对而言8位分组前导0的RTL级代码进行DC综合的时序却要比它要好得多,这也是当前一直使用8位分组前导0的RTL级代码的原因.然而本文设计的2位分组的108位前导0电路,进行PT分析的时序比8位分组DC综合的时序少了19%,但面积却比8位分组的差了20%.由于计数器的运算速度对浮点加法的运算是至关重要的,在面积相差不大的情况下这个电路设计仍然是非常成功的.
4结束语
本文通过采用二位分组并行计数算法,实现108位前导0电路设计与优化,并与当前性能最优的8位分组RTL级代码进行性能比较,通过比较发现采用2位并行分组计数的前导0电路的运算速度比8位分组RTL级代码DC综合的时序快了19%.由于前导0计数器电路处在浮点加法运算的关键路径上,因此108位前导0计数器在时序上取得的良好结果,对提高浮点加法的运算具有非常重要的意义.
作者:李勇秦海阳李振涛单位:国防科学技术大学计算机学院