一、给固定器件,组功能电路
1.1 如果一个标准单元库只有三个cell:2输入mux(o = s ?a :b;),TIEH(输出常数1),TIEL(输出常数0),如何实现以下功能?
- 反相器inv
- 缓冲器buffer
- 两输入与门and2
- 两输入或门or2
- 四输入的mux mux4
- 一位全加器 fa
思路:因为都是组合逻辑电路,先写出逻辑表达式 && 真值表;然后根据真值表,使用选择器实现即可:
1.1.1 反相器
a. 逻辑表达式:
F
=
A
‾
F=\overline {A}
F=A
b. 真值表:
输入A | 输出F |
---|---|
0 | 1 |
1 | 0 |
c. 实现:assign o_dout = i_din ? TIEL : TIEH;
1.1.2 缓冲器
assign o_dout = i_din ? TIEH : TIEL;
1.1.3 两输入与门
assign o_dout = i_a ? i_b: TIEL;
1.1.4 两输入或门
assign o_dout = i_a ? i_b: TIEL;
1.1.5 四输入MUX
b. 真值表:
控制1 | 控制2 | 选择输出的源 |
---|---|---|
A0 | A1 | Y |
0 | 0 | D0 |
0 | 1 | D1 |
1 | 0 | D2 |
1 | 1 | D3 |
c. 实现:assign o_dout = A0 ? (A1 ? D3 : D2) : (A1 ? D1 : D0) ;
1.1.6 1-BIT全加器
a. 逻辑表达式:
S
i
=
A
i
⊕
B
i
⊕
C
i
−
1
Si=Ai \oplus Bi \oplus C_i-1
Si=Ai⊕Bi⊕Ci−1
C
=
A
i
⋅
B
i
+
(
A
i
⊕
B
i
)
⋅
C
i
−
1
C= Ai \cdot Bi + (Ai \oplus Bi ) \cdot C_i-1
C=Ai⋅Bi+(Ai⊕Bi)⋅Ci−1
根据前面的电路,就差异或门就可以实现逻辑表达式了,故可以跳过真值表。
异或门实现如下:
a. 逻辑表达式:
F
=
A
‾
B
+
A
B
‾
F=\overline {A}B + A\overline {B}
F=AB+AB
b. 真值表:
Ai | Bi | F |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
c. 实现:assign o_dout1 = Ai ? (Bi ? TIEL : TIEH) : (Bi ? TIEH : TIEL);
那么可知:
Si 等于 o_dout1 和 Ci-1 之间的异或了,故:
Si = out1 ? (Ci-1 ? TIEL:TIEH) : (Ci-1 ? TIEH:TIEL)
= (Ai ? (Bi ? TIEL:TIEH) : (Bi ? TIEH:TIEL)) ? (Ci-1 ? TIEL:TIEH) : (Ci-1 ? TIEH:TIEL)
最后就是进位Ci了:
out1为Ai与Bi:
out1 = Ai ? Bi : TIEL;
out2为:Ai与Bi的异或:
out2 = Ai ? (Bi ? TIEL:TIEH) : (Bi ? TIEH:TIEL)
out3为Ci-1与out2 :
out3 = Ci-1 ? out2 : TIEL;
out4 为out1或out3,也就是Ci:
out4 = out1 ? TIEH:out3
分别代入:
Ci = (Ai ? Bi : TIEL)? TIEH : (Ci-1 ? ( Ai ? (Bi ? TIEL:TIEH) : (Bi ? TIEH:TIEL)) : TIEL)