第 四 章
[题 4.1] $ Y=ABC'+AB'C+A'BC+A'B'C' $
真值表如表 A4.1 所示。这是一个三变量的奇偶检测电路,当输入变量中有偶数个 1 和全为 0 时输出为 1,否则输出为 0。
[题 4.3] $ Y_{1}=ABC+AB'C'+A'BC'+A'B'C $
$$ Y_{2}=AB+BC+AC $$
这是一个全加器电路。(真值表略去。)
[题4.5] 见图 A4.5。
[题 4.9] 见图 A4.9。图中以 $ A_{1}^{\prime} $、 $ A_{2}^{\prime} $、 $ A_{3}^{\prime} $、 $ A_{4}^{\prime} $ 分别表示按下一、二、三、四号病室按钮给出的低电平信号,以 $ Z_{1} $、 $ Z_{2} $、 $ Z_{3} $、 $ Z_{4} $ 表示一、二、三、四号灯亮的信号。
| A | B | C | Y |
| 0 | 0 | 0 | 1 |
| 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 0 |
| 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 1 |
| 1 | 1 | 1 | 0 |


[题4.12] 见图 A4.12
[题 4.16] $ Z=DC'B'A'+DC'B'A+DCB'A'+DCB'A+D'CBA'+C'BA' $
[题 4.18] 见图 A4.18。


[题4.23] 见图 A4.23
[题 4.25] 见图 A4.25。M=0 时执行 $ a_{3}a_{2}a_{1}a_{0}+b_{3}b_{2}b_{1}b_{0} $; M=1 时执行 $ a_{3}a_{2}a_{1}a_{0}-b_{3}b_{2}b_{1}b_{0} $。输出的和为补码形式, $ S_{F} $ 为输出和 $ S_{3}S_{2}S_{1}S_{0} $ 的符号位。
[题4.29] 见图 A4.29。
[题 4.31] 只有加入余 3 循环码时输出端不会产生尖峰脉冲。(理由从略。)



【题4.34】用 Verilog HDL 语言描述一个 4 选 1 数据选择器。
解:4选1数据选择器的功能如图A4.34所示。

$$ \begin{aligned}out=&(sel[1])^{\prime}(sel[0])^{\prime}\cdot data[0]+(sel[1])^{\prime}(sel[0])\cdot data[1]+\\&(sel[1])(sel[0])^{\prime}\cdot data[2]+(sel[1])(sel[0])\cdot data[3]\end{aligned} $$
module mux_4_to_1(data,out,outnot,sel);
//这是一个4选1数据选择器,名为mux_4_to_1
input[3 : 0]data; //定义模块的数据输入端口为 date[0]-date[3]
input[1 : 0]sel; //定义模块的数据选择输入端口 sel[1],sel[0]
output out,outnot; //定义该模块的输出端口为 out 和 outnot
reg out;
always@ (data or sel)
begin
case(sel) //分支控制语句开始
2'b00:out=data[0];
//如果 sel[1]sel[0]=00,将 data[0]赋值给 out
2'b01:out=data[1];
//如果 sel[1]sel[0]=01,将 data[1]赋值给 out
2'b10:out=data[2];
//如果 sel[1]sel[0]=10,将 data[2]赋值给 out
2'b11:out=data[3];
//如果 sel[1]sel[0]=11,将 data[3]赋值给 out
endcase //分支控制语句结束
end
assign outnot = ~out; //将 out 取后赋值给 outnot
endmodule //模块描述结束
[题 4.36] 对应的逻辑电路图如图 A4.36 所示。
