14日目 ~多ビット、多入力化~
こんにちは!今日はデジタル回路の話題について紹介します。
まずは論理ゲートの多ビット化!
といっても、入出力の本数を増やすだけなので、直感的に理解できるものかもしれません。
まず図を見てもらうと、
![](https://cdn-ak.f.st-hatena.com/images/fotolife/I/In_Reality/20220620/20220620230206.png)
![](https://cdn-ak.f.st-hatena.com/images/fotolife/I/In_Reality/20220620/20220620230606.png)
となるだけです。
要するに、1本の信号線ではなくて、N本束ねてゲートを扱うというだけです。例えばN=16本としてをソースコードにすると、
module Or16 ( input wire [15:0] a, b, output wire [15:0] out ); Or U0(a[0], b[0], out[0]); Or U1(a[1], b[1], out[1]); Or U2(a[2], b[2], out[2]); Or U3(a[3], b[3], out[3]); Or U4(a[4], b[4], out[4]); Or U5(a[5], b[5], out[5]); Or U6(a[6], b[6], out[6]); Or U7(a[7], b[7], out[7]); Or U8(a[8], b[8], out[8]); Or U9(a[9], b[9], out[9]); Or U10(a[10], b[10], out[10]); Or U11(a[11], b[11], out[11]); Or U12(a[12], b[12], out[12]); Or U13(a[13], b[13], out[13]); Or U14(a[14], b[14], out[14]); Or U15(a[15], b[15], out[15]); endmodule
となります。
次に、多入力化も紹介します。これは、複数bitの入力結果から出力を求めるゲートとなります。
例えば、以下の図のような8入力のORを考えてみます。
![](https://cdn-ak.f.st-hatena.com/images/fotolife/I/In_Reality/20220620/20220620231934.png)
この場合、8つの入力のうちどれか一つでも1(ON)になれば、出力は1になります。そして、すべての入力が0の時のみ出力は0になります。
つまり、8つの入力に対してそれぞれORを取っていかなくてはならないので、以下のようなverilogコードになります。
module Or8Way ( input wire [7:0] in, output out ); wire w1,w2,w3,w4,w5,w6; Or U1(in[1], in[0], w1); Or U2(in[3], in[2], w2); Or U3(in[5], in[4], w3); Or U4(in[7], in[6], w4); Or U5(w1, w2, w5); Or U6(w3, w4, w6); Or U7(w5, w6, out); endmodule
このコードでは、U1~U4により8つの入力のORをそれぞれ取り、それを4本の出力に、それらをさらにORで処理して最終的に1つの出力になるように段階的に書き表しています。
今日は論理ゲートの多ビット、多入力化の記述を書きました。次回は、マルチプレクサで同様の処理を行っていきます。
複雑な処理系まではまだ遠い...。
参考書籍