VHDL의 배열에서 2 개의 다른 주소에서 2 개의 값을 할당하려고하지만 어떻게 든 항상 잘못된 값 (대부분의 시간 0)을 반환합니다. 나는 그것을 단지 1 개의 주소와 1 개의 데이터 출력으로 테스트하여 정확한 값을 반환했다.VHDL에서 동일한 배열의 두 요소에 액세스
architecture Behavioral of registerFile is
type reg_type is array (31 downto 0) of std_logic_vector (31 downto 0);
signal REG : reg_type := (x"00000031", x"00000030", x"00000029", x"00000028", x"00000027", x"00000026", x"00000025", x"00000024", x"00000023", x"00000022", x"00000021", x"00000020",x"00000019",x"00000018", x"00000017", x"00000016", x"00000015", x"00000014", x"00000013", x"00000012", x"00000011", x"00000010", x"00000009", x"00000008", x"00000007",x"00000006", x"00000005", x"00000004", x"00000003", x"00000004", x"00000001", x"00000000");
begin
process(clk)
begin
if clk'event and clk='1' then
if ENABLE = '1' then
if readReg = '1' then -- read from register
DATAone <= REG(conv_integer(ADDRone));
DATAtwo <= REG(conv_integer(ADDRtwo));
else
REG(conv_integer(ADDRone)) <= DATAone;
REG(conv_integer(ADDRtwo)) <= DATAtwo;
end if;
end if;
end if;
end process;
end Behavioral;
Google 검색을 시도했지만 모든 것이 다차원 배열이거나 한 번에 1 개 요소 만 액세스합니다.
감사합니다.
1) 엔티티 선언을 게시 할 수 있습니까? 2) 모듈 입력을 어떻게 유도합니까? 3) 시뮬레이터에서 정확히 무엇이 일어나고 있습니까? – godel9
DATAone과 DATAtwo는 읽기와 쓰기 모두에 사용되므로 읽기 값도 다시 쓰여진 값입니다 ... 이것은 이상하게 보입니다. 나는 레지스터 파일이 읽기와 쓰기를위한 별도의 데이터 포트를 가질 것으로 기대한다. OK일지도 모르지만 요구 사항에 대한 배경을 좀 더 알려주고 엔티티 선언을 게시하여 전체 그림을 얻는 것이 더 쉽습니다. –
감사합니다. 그것은 시뮬레이션 작업 중이지만 FPGA에서는 작동하지 않습니다. 그러나 이것을 변경 한 후에 작동합니다. 나는 이것을 놓쳤다 고 생각한다. – charpi