VHDL downto错误的MSB

时间:2015-05-27 23:07:51

标签: vhdl

我有以下输入信号:

addr : IN STD_LOGIC_VECTOR(9 DOWNTO 0);

据我所知,这意味着addr(9)是最重要的一点。 但是当运行模拟并为其分配128时,我得到以下结果:

0(9) 0(8) 0(7) 0(6) 0(5) 0(4) 0(3) 1(2) 0(1) 0(0)

意味着最重要的位实际上是addr(0)。

通过Quartus 9.1中的矢量波形模拟完成分配。我为它分配了一个任意值。

这是.vhd文件的一部分,我使用它:

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

ENTITY ram_256x4B IS
PORT(clk, wr_en : IN STD_LOGIC; -- clock, write control signal
    addr : IN STD_LOGIC_VECTOR(9 DOWNTO 0); -- read and write addresses
    d : IN STD_LOGIC_VECTOR(31 DOWNTO 0); -- data to be written
    q : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); -- memory read output
END ram_256x4B;

ARCHITECTURE comportamental OF ram_256x4B IS

SIGNAL addr_validation_bits : STD_LOGIC;

BEGIN
addr_validation_bits <= addr(9) & addr(8);

END comportamental;

如果addr的值为2,我希望addr(9)addr(8)都是0,而是0和{{1}分别。

1 个答案:

答案 0 :(得分:1)

这将为STD_LOGIC_VECTOR指定128。

architecture ...
  signal addr : STD_LOGIC_VECTOR(9 downto 0);
begin
  addr <= std_logic_vector(to_unsigned(128, addr'length));
end;

addr(7)为'1',其他所有位均为'0'。