我是一名学习 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;
这会按预期工作(即与上述代码块完全相同),还是会因使用使两个代码块功能不同的信号而导致某种“延迟”?