![](http://www.21ic.com/d/file/201106/69ec1cfdc373efa882e1aefe2abdc3cc.jpg)
Pascal三角形的数学描述
pascal三角形通常用三角形的方式来表示,如图2所示,也可以用一个二维的下三角矩阵来描述,如图3所示。
矩阵a[n,n]可以用下面的公式来描述。
a[i, j]=a[i, j-1]+(-1)a[i+1, j] (式1)
(a[n, 1]=0,a[n, 2]=a[n, 3]=...=a[n, n]=1)
i≥1,j≥2。
矩阵中第一列的0是为了方便电路实现而人为加上去的。将此二维矩阵表达式(即式1)变成含有时间的一维方程。
a[i]j=a[i]j-1+(-1)a[i+1]j (式2)
![](http://www.21ic.com/d/file/201106/ec5515face39976bd02abd68939182b6.gif)
![](http://www.21ic.com/d/file/201106/a36c99a8bcd853883bbddc0760c0b172.jpg)
此外,式2具有叠加性,可以把pascal三角形中的一行加上其余任意一行或者几行,实现任意时钟周期的延时。
Pascal三角形的基本电路
根据上面一维含时公式,先要构建补码电路,然后是一个加法电路,最后是一个延时电路。
假设一个数组a[n:0]表示数的各位,a[0]为最低位,对各位取反,然后最低位加1,得到一个新的数组b[n:0],这个数组最低位为b[0],对应的逻辑关系是:
![](http://www.21ic.com/d/file/201106/a08798dedb7905ada9c75f5470a87553.gif)
其余位按照这个规律依此类推,逻辑图如图4所示。
采用通用的全加器,逻辑表达式为:
![](http://www.21ic.com/d/file/201106/020fcec034f265d6ed7ac8b0eaba1db9.gif)
示意图参见图5。其中CI为上一级的进位,A、B为本级输入信号,S为全加和,CO是本级进位。
延时器采用带清零的D触发器来实现,见图6。CLOCK为时钟信号,CLEAR为清零信号,D是数据输入信号,Q是原量输出
。
![](http://www.21ic.com/d/file/201106/75f713ac2859709cc9aed67db1c45b53.jpg)
![](http://www.21ic.com/d/file/201106/9745fe8262e938f98767c750553b57b4.jpg)
![](http://www.21ic.com/d/file/201106/7f325658d410fb723b0eaf6db31d4a0c.jpg)
电路设计
首先构建一个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触发器的清零信号和时钟信号分别连在一起。
![](http://www.21ic.com/d/file/201106/18027c929cdc498a4a490dfb778f415f.jpg)
图7 pascal三角形实现电路 真值表
IN4 |