こんにちは私はこのコマンドを置き換える方法を見つけようとしています:Bus_S <= "0000000000000000000000000000000" & Ne;
より便利なもの。ゼロを1つずつカウントすることは、あまり洗練されていません。プログラムは、mipsのALUのSLTユニットに関するものです。 SLTは1ビット(ADDSU32のMSB)のみを取得し、32ビットの出力はすべてゼロですが、ADDSU32のNe = MSBに依存する最初のビットです。 (plzはとりあえずALUopを無視します)
entity SLT_32x is
Port ( Ne : in STD_LOGIC;
ALUop : in STD_LOGIC_VECTOR (1 downto 0);
Bus_S : out STD_LOGIC_VECTOR (31 downto 0));
end SLT_32x;
architecture Behavioral of SLT_32x is
begin
Bus_S <= "0000000000000000000000000000000" & Ne;
end Behavioral;
(30 downto 0)= '0'またはそのようなものを使用する方法はありますか?ありがとう。
これを試してください:bus_S <= (0 => Ne, others => '0')
つまり、ビット0をNe
に設定し、他のビットを「0」に設定します。
与えられた答えの代わりに:
architecture Behavioral of SLT_32x is
begin
Bus_S <= (others => '0');
Bus_S(0) <= ne;
end Behavioral;
常に、組み合わせプロセスの最後の割り当てが考慮されます。これにより、ほとんどの場合にデフォルトの割り当てがあり、その後に特殊なケースを追加する場合、つまり、階層ブロックを介してワイドバス(レコードとして定義)に給電し、一部の信号を変更する場合に、コードが非常に読みやすくなります。