前提・実現したいこと
以下のベリログのコードでdecodeというmoduleをインスタンス化した時にエラーになるのですが何が原因なのでしょうか?
decodeモジュールでは16bit
のinst
をr1
とr2
に分けるという動作をしたいです
調べた所always@
の中にモジュールのインスタンス化をするとエラーが起きるそうなので、alwaysの外に移動してみたのですが、今度はPort 1 (inst) of decode expects 1 bits, got 16.
というエラーに遭遇しました。
発生している問題・エラーメッセージ
syntax error
該当のソースコード
Verilog
1`define WORD [15:0] 2`define MEMORY [65536-1:0] 3 4 5module Processor(reset, clock); 6 input reset, clock; 7 reg `WORD pc; 8 reg `WORD inst; 9 10 reg `WORD instructions `MEMORY; 11 12 wire `WORD r1; 13 wire `WORD r2; 14 15 decode d( inst, r1, r2 ); 16 always @(posedge clock) begin 17 pc = pc + 1; 18 inst = instructions[pc]; 19 20 21 $display("reg1 %d\t reg2 %d\n", r1, r2); 22 $display("pc = %d\n", pc); 23 $display("instuctions[pc] = %x\n", instructions[pc]); 24 end 25 26 27 28 29 always @(reset) begin 30 pc = 0; 31 $readmemh0(instructions, 0, 65535); 32 end 33 34 35endmodule 36 37module decode(inst, r1, r2); 38 input `WORD inst; 39 output [7:0] r1, r2; 40 41 r1 = inst[15:8]; 42 r2 = inst[7:0]; 43endmodule 44 45 46 47module testbench; 48 49 reg clock; 50 reg reset; 51 wire halt; 52 53 Processor proc(.clock(clock), .reset(reset)); 54 55 initial begin 56 reset <= 1; 57 #1; 58 reset <= 0; 59 #1; 60 repeat (1<<15) begin 61 clock <= 1; 62 #1; 63 clock <= 0; 64 #1; 65 end 66 end 67endmodule 68
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/28 17:12
2018/04/29 00:50