Pascal三角形的基本电路
根据上面一维含时公式,先要构建补码电路,然后是一个加法电路,最后是一个延时电路。
假设一个数组a[n:0]表示数的各位,a[0]为最低位,对各位取反,然后最低位加1,得到一个新的数组b[n:0],这个数组最低位为b[0],对应的逻辑关系是:
其余位按照这个规律依此类推,逻辑图如图4所示。
采用通用的全加器,逻辑表达式为:
示意图参见图5。其中CI为上一级的进位,A、B为本级输入信号,S为全加和,CO是本级进位。
延时器采用带清零的D触发器来实现,见图6。CLOCK为时钟信号,CLEAR为清零信号,D是数据输入信号,Q是原量输出
。
电路设计
首先构建一个4级pascal三角形电路,其中CLOCK是时钟信号,IN1、IN2、IN3、IN4分别对应于pascal三角形的前4行,CLEAR是清零信号。IN1、IN2、IN3、IN4输入之前将触发器清零,防止输出不定态。D0、D1、D2、D3是从低到高的四位输出,SIGN是符号位,这五位构成输出。值得注意的是,IN4经过与自己直接相连的D触发器产生的数只有一位,然而它的补码需要4位,只好在高位加零,这样补码电路就可以简化,图7就是经过简化的电路图。为了增加电路的直观性,这里省略了电路中所有D触发器的时钟信号和清零信号,所有D触发器的清零信号和时钟信号分别连在一起。
图7 pascal三角形实现电路
真值表
IN4 | IN3 | IN2 | IN1 | CP1 | CP2 | CP3 | CP4 |
0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 | -1 | 0 | 0 |
0 | 0 | 1 | 1 | 2 | -1 | 0 | 0 |
0 | 1 | 0 | 0 | 1 | -2 | 1 | 0 |
0 | 1 | 0 | 1 | 2 | -2 | 1 | 0 |
0 | 1 | 1 | 0 | 2 | -3 | 1 | 0 |
1 | 0 | 0 | 0 | 1 | -3 | 3 | -1 |
1 | 0 | 0 | 1 | 2 | -3 | 3 | -1 |
1 | 0 | 1 | 0 | 2 | -4 | 3 | -1 |
1 | 0 | 1 | 1 | 3 | -4 | 3 | -1 |
1 | 1 | 0 | 0 | 2 | -5 | 4 | -1 |
1 | 1 | 0 | 1 | 3 | -5 | 4 | -1 |
1 | 1 | 1 | 0 | 3 | -6 | 4 | -1 |
1 | 1 | 1 | 1 | 4 | -6 | 4 | -1 |
电路的验证与扩展
取IN1、IN2、IN3、IN4从0001到1111,并且给每组值以足够的变化周期,可以得到下面的真值表。在viewlogic用XILINX公司的XC4000库进行模拟,除了可以忽略的毛刺和初始时无关紧要的不定态之外,得到的波形图与真值表完全一致,其中CP1、CP2、CP3、CP4分别对应于第1、2、3、4时钟,周期波形图如图8所示。
图8 波形图
三级的电路得到验证之后,根据同样的原理,可以在四级的基础上进行任意级的构建。
小结
本文给出了pascal三角形运算电路的设计思想与实现方法,以及在viewlogic下的验证,并且还可以根据需要进行任意级的扩展。Pascal三角形在版图布局布线优化等方面的具体应用可以参考有关文献,在此不再赘述。
文章评论(0条评论)
登录后参与讨论