我有以下输入信号:
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}分别。
答案 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'。