我试图模拟一个简单的Register和shift功能。这里是我使用的代码:
entity shift is port (
CLK : in bit );
end shift ;
architecture BEHAV of shift is
signal REG: bit_vector(9 downto 0) ;
signal WORD: bit:='1';
begin
SYS :process (CLK)
begin
if CLK'event and CLK='1' then
REG <= REG(9 downto 0) & WORD; -- line cause the error
end if;
end process SYS;
end BEHAV ;
我使用do文件来模拟时钟,但是我收到错误,说:
# ** Fatal: (vsim-3420) Array lengths do not match. Left is 10 (9 downto 0). Right is 11 (0 to 10).
并了解我在这里做错了什么? 提前致谢 !
答案 0 :(得分:2)
REG
的大小为10位(9 downto 0
),在此您尝试放置REG(9 downto 0) & WORD
。该表达式的总大小为10 + 1 = 11位。这不适合REG
,它本身就是10位长。
您可能需要REG <= REG(8 downto 0) & WORD;