・Verilog HDLで組み合わせ回路を記述するのにifやcase文を使用する場合、ファンクションとして別に定義する必要がある。
・C言語でいう関数に相当する。
・always記述も可能。
・ファンクション内で一時的に使用するローカル信号はreg宣言したものを使用する。
・ファンクションの入力信号を省略すると大変!
・入力信号と返却値のビット幅には要注意!
・引数の記述順はfunction内での入力信号定義順!
//呼び出し側
assign out = mux(sel,in0,in1,in2,in3);//入力信号全て記述のコト!!
//マルチプレクサ(case文記述)
function [3:0] mux;
input [1:0] sl;
input [3:0] d0,d1,d2,d3;
begin
case(sel)
0 : mux=d0;
1 : mux=d1;
2 : mux=d2;
3 : mux=d3;
default : mux=4'bxxxx;
endcase
end
endfunction
//マルチプレクサ(if文記述)
function [3:0] mux;
input [1:0] sl;
input [3:0] d0,d1,d2,d3;
begin
if(sel==0) mux=d0;
else if(sel==1) mux=d1;
else if(sel==2) mux=d2;
else if(sel==3) mux=d3;
else mux=4'bxxxx;
end
endfunction
0 件のコメント:
コメントを投稿