0
これはVerilogを使用する私の最初の試みです。 私は8ビットの双方向ポート、以下の方法でデータ・レジスタとデータ方向レジスタ定義している:それは完璧に動作Verilogでのベクトル割り当て
inout [7:0] pa; // 8-bit bidirectional parallel port
reg [7:0] data_reg;
reg [7:0] data_dir_reg; // 0 --> input; 1 --> output
assign pa [7] = (data_dir_reg [7]) ? data_reg [7] : 1'bZ;
assign pa [6] = (data_dir_reg [6]) ? data_reg [6] : 1'bZ;
assign pa [5] = (data_dir_reg [5]) ? data_reg [5] : 1'bZ;
assign pa [4] = (data_dir_reg [4]) ? data_reg [4] : 1'bZ;
assign pa [3] = (data_dir_reg [3]) ? data_reg [3] : 1'bZ;
assign pa [2] = (data_dir_reg [2]) ? data_reg [2] : 1'bZ;
assign pa [1] = (data_dir_reg [1]) ? data_reg [1] : 1'bZ;
assign pa [0] = (data_dir_reg [0]) ? data_reg [0] : 1'bZ;
を私は確信している、しかし、実現するための簡単な方法がなければなりません同じ結果。
Iは、サイクルのために用いて試みた:
integer i;
for (i = 0; i < 8; i = i + 1)
begin
assign pa [i] = (data_dir_reg [i]) ? data_reg [i] : 1'bZ;
end
を同様に一度に全体ベクトルを割り当てるように:
assign pa [7:0] = (data_dir_reg [7:0]) ? data_reg [7:0] : {8{1'bZ}}[7:0];
任意結果なし。 ありがとうございました。
ルカ
ありがとうございました。私はgenerate-forループについては知らなかったが、あなたの答えともう少し読んだところでは、コンパイル時と実行時に評価されるループの違いがあると思う。 – Luca