私は VHDL を学んでいる学生で、かなり基本的な質問があります。
シグナルの割り当てがすぐに行われないことを読みました。したがって、以下は期待どおりに機能しません。
x <= y;
z <= not x;
したがって、割り当てが即時に行われない/順番に発生しないことは理解していますが、エンティティにシグナルを渡すことについて質問があります。次のコードがあるとします。
architecture struct of mips is
begin
controller: entity work.controller port map(opD => instrD(31 downto 26),
functD => instrD(5 downto 0));
datapath: entity work.dataPath port map(opD => instrD(31 downto 26),
functD => instrD(5 downto 0));
end;
私はコードの重複や他の言語でのハードコーディングを避けることに慣れているため、上記のコードのopD
とfunctD
の値をハードコーディングするのは面倒です。
私が疑問に思っているのは、これらの値を次のように内部信号に割り当てることができるかどうかです:
architecture struct of mips is
signal opD: STD_LOGIC;
signal functD: STD_LOGIC;
begin
signal opD <= instrD(31 downto 26);
signal functD <= instrD(5 downto 0);
controller: entity work.controller port map(opD => opD,
functD => functD);
datapath: entity work.dataPath port map(opD => opD,
functD => functD);
end;
それは期待どおりに動作しますか (つまり、上記のコード ブロックとまったく同じように動作します)、または 2 つのコード ブロックの機能を異なるものにするシグナルの使用によって何らかの「遅延」が発生しますか?