有段VHDL描述,不是很懂 高手进来指点下 谢谢

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY MULT IS
  GENERIC(N:INTEGER:=8; --ADD的控制位数          -- GENERIC :类属说明
          M:INTEGER:=3;
          CST_MULT:INTEGER:=4
          );
PORT(I:IN STD_LOGIC_VECTOR(N-1 DOWNTO 0);
     O:OUT STD_LOGIC_VECTOR(N+M-1 DOWNTO 0)
     );
END MULT;
ARCHITECTURE ONE OF MULT IS
CONSTANT OUT_SIZE:INTEGER:=N+M;
BEGIN
O<=CONV_STD_LOGIC_VECTOR(CONV_UNSIGNED(CST_MULT,M)*UNSIGNED(I),OUT_SIZE);
END ONE;


谢谢给解释下这句: O<=CONV_STD_LOGIC_VECTOR(CONV_UNSIGNED(CST_MULT,M)*UNSIGNED(I),OUT_SIZE);

假如I值为1的情况下,赋值后的O是多少,  为什么??谢谢
我也来说两句 查看全部回复

最新回复

  • YHL20701343 (2008-11-17 12:24:58)

    CONV_UNSIGNED(CST_MULT,M),将CST_MULT转换成M位(代码中为3)无符号整数
         UNSIGNED(I),I为vecor类型,unsigned代表无符号的数值,不过在综合器中,后面括号内的数值被解释为一个二进制数,如十进制的8可表示为unsigned(“1000”);
         OUT_SIZE就是指N+M位了。
         CONV_STD_LOGIC_VECTOR(CONV_UNSIGNED(CST_MULT,M)*UNSIGNED(I),OUT_SIZE)是将CONV_UNSIGNED(CST_MULT,M)*UNSIGNED(I)得到的数转换成OUT_SIZE位的std_logic_vector的数值。
         具体的含义就是这样了,你自己来算了。
  • geshaowei (2008-11-17 13:51:07)

    知道一点了  谢谢