2016-10-05 4 views
-2

私はR3000 MIPSプロセッサを設計しています。命令デコーダでは、命令ADI、ANDIのような命令の場合、ビット6:0をzとして提供するようなcasezを与えたいと考えています。私はちょうどここで知りたいのですが(opcode、func)ケースがzのときに高インピーダンスのオープン接続に合成されますか?casezは合成中にzを高インピーダンスとして割り当てられていると考えていますか?

module Instr_decoder (
    input logic [31:0] instr, 
    output logic   regDest, 
    output logic   jump, 
    output logic   branch, 
    output logic   memtoReg, 
    output logic   memRead, 
    output logic   memWrite, 
    output logic   ALUSrc, 
    output logic   signExtendInstruction, 
    output logic   immediateInstruction, 
    output logic   regWrite); 

    logic immediate_i; 
    logic [5:0] opcode; 
    logic [4:0] rs; 
    logic [4:0] rt; 
    logic [4:0] rd; 
    logic [15:0] immediate_data; 
    logic [4:0] shamt; 
    logic [5:0] func; 
    logic [25:0] target; 

    assign opcode = instr[31:26]; 
    assign shamt = instr[10:6]; 
    assign func = instr[5:0]; 
    assign target = instr[25:0]; 
    assign immediate_i = (opcode == (ADDI || ANDI || ORI || SLTI || XORI)); 

    always_comb 
    begin 
     casez({opcode, func} 

      {6'h00, 6'h20} : ADD = 1; 
      {6'h08, 6'dz} : ANDI = 1; 
+0

あなたは簡単に自分の質問に答えることができます。 – toolic

+0

確かに、私はできます。しかし、Modelsimでシミュレーションを実行しているので、残念ながら合成レポートが表示されないため、私は理解できません。もう1つの選択肢は、この小さなブロックのコードを合成し、すべてのサブブロックで同様に処理することですが、これは不要な処理になります。これは設計全体のごく一部に過ぎないためです。 –

+0

また、私はzがオープン(no)接続に合成されていることを知っていますが、casezを考慮に入れることは私の質問でした。 –

答えて

1

シミュレータでコンパイルして実行できるものは、合成可能である可能性があります。これは、使用しているツールがコードを認識し、ハードウェア実装にマップするアルゴリズムを持っているかどうかになります。

はところで、1は、一般的にcasez文で値を気にしないを表現するためにVerilogの数値リテラルに?文字の代わりに、zを使用しています。

関連する問題