web-dev-qa-db-ja.com

VHDLで複数のゼロを含む出力を宣言する方法

こんにちは私はこのコマンドを置き換える方法を見つけようとしています: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'またはそのようなものを使用する方法はありますか?ありがとう。

12
BugShotGG

これを試してください:bus_S <= (0 => Ne, others => '0')つまり、ビット0をNeに設定し、他のビットを「0」に設定します。

29
Philippe

与えられた答えの代わりに:

architecture Behavioral of SLT_32x is
begin
  Bus_S <= (others => '0');
  Bus_S(0) <= ne;
end Behavioral;

常に、組み合わせプロセスの最後の割り当てが考慮されます。これにより、ほとんどの場合にデフォルトの割り当てがあり、その後に特殊なケースを追加する場合、つまり、階層ブロックを介してワイドバス(レコードとして定義)に給電し、一部の信号を変更する場合に、コードが非常に読みやすくなります。

3
iterationbound