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