FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

DIGITAL ELECTRONICS NOTESをやってみる (8. 組み合わせ回路)

以下のデジタル回路の問題をやってみる。続き。

lancamentomerlo.my.canva.site

  • Q: 2進加算を利用して、BCDの9の補数を計算してください。
  • A: この計算自体は、$9-d$で計算される。$-d$は2の補数で計算されるので、それに対して9を加算すればよい。$-d$の計算は、すべてのビットを反転させたうえで+1をすればよいので、XOR 1をしてすべてのビットを反転させて、Carry-In=1として+1をすればよい。
  • Q: 2つのBCDを加算して、BCD値を出力する回路を設計してください。
  • A: 加算結果が9を超える場合は、結果に対して6を加算する回路を追加する必要がある。
    • まず、BCDの値を加算する。オーバーフローを検出するために、以下の回路を追加する。K = Cout + S3S2 + S3S1
    • オーバーフローが検出されたら、2段目の加算回路に6を追加してBCDに調整する。
  • 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の数を数えることができる。

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com