|
「簡単」な組み合わせ回路の記述はassign文で記述します。
assign文は継続処理を示し、回路でいえば、接続され常に駆動されている状態です。
assign na = ~[in1 &in2]; //2入力nand
assign out = [sel == 1]? d1 : d0; //セレクタ
assign carry = [cnt10 == 4'h9]; //カウンタの桁上がり信号
assign sum = a + b; //加算回路
assign adr14wr = wr & [addr == 8'h14]; //アドレスライトコマンド
?:を使用した組合せ回路
module SEL4TO1[in,sel,out];
input [3:0] in;
input [1:0] sel;
output out;
assign out = [sel == 2'h0]? in[0]; //if SEL=0ならばin[0]
[sel == 2'h1]? in[1]; //else if
SEL=1ならばin[1]
[sel == 2'h2]? in[2] //else if
SEL=2ならばin[2]
//上記以外ならin[3]
endmodule
ステートバッファの記述
output [7:0] data;
wire sel;
wire [7:0] dataout;
assign data = [sel]? dataout : 8'hzz;
双方向バッファの記述
inout [7:0] data;
wire sel;
wire [7:0] dataout;
assign data = (sel) ? dataout : 8'hzz;
always@(posedge
CLK) din <= data;
|
|