无法在VHDL中拆分向量
我无法通过拆分reg_mem来更新reg_1和reg_2向量? 这是我在MODELSIM中用VHDL编写的代码: 在另一个程序中,我尝试将另一个向量分成两部分,并将它们存储到两个不同的向量中。它工作得很好。但相同的语法在这段代码中不起作用无法在VHDL中拆分向量,vhdl,modelsim,Vhdl,Modelsim,我无法通过拆分reg_mem来更新reg_1和reg_2向量? 这是我在MODELSIM中用VHDL编写的代码: 在另一个程序中,我尝试将另一个向量分成两部分,并将它们存储到两个不同的向量中。它工作得很好。但相同的语法在这段代码中不起作用 library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity Register_unit is port ( reg_read : in std_logic;
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity Register_unit is
port (
reg_read : in std_logic;
reg_write : in std_logic;
reg_mem : inout std_logic_vector(3 downto 0);
reg_start : inout std_logic_vector(3 downto 0);
reg_end : inout std_logic_vector(3 downto 0);
reg_write_comp : out std_logic;
reg_read_comp : out std_logic;
reg_1 : inout std_logic_vector(1 downto 0);
reg_2 : inout std_logic_vector(1 downto 0));
end Register_unit;
architecture Register_unit_arch of Register_unit is
begin
process (reg_read,reg_write)
begin
if (reg_read = '1' and reg_write = '0') then
reg_end <= reg_mem;
reg_read_comp <= '1';
elsif (reg_write = '1' and reg_read = '0') then
reg_mem <= reg_start;
reg_write_comp <= '1';
end if;
reg_1 <= reg_mem(1 downto 0); --reg_1 is not getting updated
reg_2 <= reg_mem(3 downto 2); --reg2 is not getting updated
end process;
end Register_unit_arch;
ieee库;
使用ieee.std_logic_1164.all;
使用ieee.numeric_std.all;
实体寄存器单元为
港口(
reg_read:在标准逻辑中;
reg_写入:在标准逻辑中;
reg_mem:inout标准逻辑向量(3到0);
reg_开始:输入标准逻辑向量(3到0);
寄存器端:输入标准逻辑向量(3到0);
寄存器写入组件:输出标准逻辑;
reg_read_comp:输出标准逻辑;
reg_1:inout标准逻辑向量(1到0);
reg_2:inout标准逻辑向量(1到0);
终端寄存器单元;
体系结构寄存器单元寄存器单元的拱门为
开始
进程(reg_读取、reg_写入)
开始
如果(reg_读取='1'和reg_写入='0'),则
reg_endreg_1
和reg_2
已更新,但它们已更新为reg_mem
的先前值。这条线
reg_mem <= reg_start;
(*)变量在进程中立即分配,您可以使用类似于编程语言变量的变量异步进程上的敏感度列表错误。一个修复方法:将拆分移到流程之外。另请阅读并注意,无法重置reg_*\u comp
信号。@HeyYOThanks非常清楚我哪里出错了,只是更改了过程变量,一切正常
reg_1 <= reg_start(1 downto 0);
reg_2 <= reg_start(3 downto 2);