无法在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;

我无法通过拆分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;
  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_end
reg_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);