나는 numeric_std 사용하여 다른 형식으로 하나의 신호로 변환하기 위해 노력하고있어 :변환
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity ftable is
GENERIC( c : integer := 3;
m : integer := 4;
n : integer := 8;
d : integer := 16;
stored_data : unsigned := x"000000010002010001010102");
Port (
a : in unsigned (7 downto 0);
b : in unsigned (7 downto 0);
f_one : out unsigned (15 downto 0);
f_two : out unsigned (15 downto 0));
end ftable;
architecture behavioral of ftable is
signal row_id : unsigned (7 downto 0);
signal col_id : unsigned (7 downto 0);
signal r_temp : integer;
signal c_temp : integer;
begin
process (a, b)
variable addr: integer;
begin
row_id <= "00000000";
col_id <= "00000000";
r_temp <= 0;
c_temp <= 2;
row_id(m downto 0) <= b((n - 1) downto (n - (m + 1)));
col_id(m downto 0) <= a((n - 1) downto (n - (m + 1)));
r_temp <= to_integer(row_id);
c_temp <= to_integer(col_id);
addr := d * (c * to_integer(row_id) + to_integer(col_id)) + r_temp + c_temp;
f_one <= stored_data(addr to addr + d - 1);
f_two <= stored_data(addr + d to addr + d + d - 1);
end process;
end behavioral;
코드가 잘 합성 나는 ISIM으로 시뮬레이션 할 때 내가 col_id 수를 = 00000001 및 c_temp = 0 (인스턴스 및 프로세스 탭에서 선택).
제 질문은 왜 1 대신에 0을 얻습니까?
편집 : 0 또는 1이다 '0'
, '1'
, 'L'
및 'h'
, 그리고 다른 값으로 변환 할 수 있습니다 0
신호 할당 문의 오른쪽에 expression에 row_id 및 col_id가 있고 해당 신호가 프로세스 감도 목록에 없습니다. row_id 또는 col_id가 갱신되고 마지막 프로세스 문이 내재 된 암시 적 wait 문이 발생한 후에 프로세스가 시뮬레이션을 재개하지 않습니다. 일반적으로 합성 결과가 올바르게 작동 할 것으로 기대할 수 있습니다 (논리 루프가없는 경우). 민감도 목록은 대부분 무시됩니다. – user1155120