0
我有以下的輸入信號:VHDL DOWNTO不正確MSB
addr : IN STD_LOGIC_VECTOR(9 DOWNTO 0);
據我所知,這意味着地址(9)是最顯著位。 但是,當運行模擬和分配,比如說,128吧,我得到如下:
0(9) 0(8) 0(7) 0(6) 0(5) 0(4) 0(3) 1(2) 0(1) 0(0)
含義,最顯著位實際上是地址(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
, 分別。
'9 downto 0'使位0成爲最右邊的位。如果你認爲最右邊的位是最重要的位,那麼'9 downto 0'也會使位0成爲MSB。如果你想讓位9成爲最右邊的位,使用'0到9'。 – godel9
我想最右邊的位是0,但也是LSB。假設我給這個向量位賦值2,我想要的結果是0000000010,最左邊的位是9,最右邊的是0. –
你如何賦值128? – Paebbels