Я не могу обновить reg_1 и reg_2 векторы, разделив reg_mem? Это мой код в VHDL, который я написал в MODELSIM: В другой программе я попытался разделить другой вектор на две части и сохранить их в двух разных Vectors.It работал отлично. Но такой же синтаксис не работает в этом кодеНе удалось разбить вектор в 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;
Чувствительность список ошибок в процессе асинхронного. Одно исправление: переместите разделение вне процесса. Также читайте http://stackoverflow.com/questions/13954193/is-process-in-vhdl-reentrant/13956532#13956532 Также обратите внимание, что нет способа сбросить сигналы 'reg _ * _ comp'. –