以下のデジタル回路の問題をやってみる。続き。
- Q: 2進加算を利用して、BCDの9の補数を計算してください。
- A: この計算自体は、$9-d$で計算される。$-d$は2の補数で計算されるので、それに対して9を加算すればよい。$-d$の計算は、すべてのビットを反転させたうえで+1をすればよいので、
XOR 1
をしてすべてのビットを反転させて、Carry-In=1として+1をすればよい。
- Q: 2つの4ビット値が同一であるかを判定する回路を作成してください。一致していなければ1を出力します。
- A: Verilogで書いた場合は
A != B
で、XORを使って表現すると|(A ^ B)
となる。どれかのビットがXORで1が立つと、それはAとBが異なっていることを意味する。
- Q: 全加算器を使って3ビットの中に1がいくつかるかをカウントする回路を設計してください。
- A: 全加算器は、2ビット入力と1つのCarry-Inをすべて加算する回路と考えることができるので、3ビットの入力ABCを加算器の入力に設定することで、1の数を数えることができる。