在VHDL中使用矢量

时间:2015-11-03 14:31:22

标签: vhdl

我试图模拟一个简单的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).

并了解我在这里做错了什么? 提前致谢 !

1 个答案:

答案 0 :(得分:2)

REG的大小为10位(9 downto 0),在此您尝试放置REG(9 downto 0) & WORD。该表达式的总大小为10 + 1 = 11位。这不适合REG,它本身就是10位长。

您可能需要REG <= REG(8 downto 0) & WORD;