音遊び日記

ハードウェアとソフトウェアの両面から”音”で遊んだ事を備忘録として書いています。

FPGAセレクタ回路の記述法による違い

process文外にif elseでセレクタ回路を記述した場合と、process文内でcase when文で記述した場合に組まれる回路をRTL Viewerで見てみた記録です。

 

・同時処理文(process文外)

LED0 <= DIPSW0 when(sel = "00"else
        DIPSW1 when(sel = "01"else
        DIPSW2 when(sel = "10"else
        DIPSW3 when(sel = "11"else
        '0';

f:id:hsy221:20200302232035p:plain

 

・process文

process(sel) begin
    case sel is
    when "00"   => LED0 <= DIPSW0;
    when "01"   => LED0 <= DIPSW1;
    when "10"   => LED0 <= DIPSW2;
    when "11"   => LED0 <= DIPSW3;
    when others => LED0 <= '0';
    end case;
end process;

f:id:hsy221:20200302232126p:plain

 

やっぱり両方とも記述そのままの回路って感じですね。ソースの可読性もRTLの見やすさとしてもセレクタ信号が2bit以上であればprocess文で書いたほうが良さそうです。ちなみにロジック規模は両方とも2LEで同じでした。

脱初心者のために、どういう記述をしたらどういう回路が合成されるかまで意識して設計していきたいです。