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)
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)