알테라의 ALTSYNCRAM 블록 중 하나에 추론하도록 작성한 알테라 FPGA 타겟을위한 메모리 모듈이 있습니다. 메모리가 1024x16이고 속성으로 지정된 메모리 초기화 파일이 있습니다. 합성 할 때, 합성 보고서는 원하는 RAM 블록 유형을 생성했음을 나타내며, 초기화 파일이 지정된 것임을 나타냅니다. Altera의 ModelSim 버전으로 시뮬레이션하려고 할 때 데이터 신호가 완전히 초기화되지 않은 상태에서 시작되어 왜 그럴 수 없는지를 알 수 있습니다. 포럼 등에서 살펴본 결과, ModelSim이 ".mif"형식을 지원하지 않을 수도 있지만 ".hex"를 지원하므로 초기화 파일을 ".hex"로 변경했습니다. 또한 상대 파일 경로가 문제가 될 수 있음을 읽었지 만 시뮬레이션 디렉토리를 확인한 결과 시뮬레이션을 시도 할 때 QuartusII가 초기화 파일을 해당 디렉토리에 복사 한 것처럼 보입니다.추측 된 RAM이 ModelSim 알테라 에디션에서 초기화되지 않습니다.
메모리가 초기화되지 않는 이유 및 초기화하는 방법에 대한 아이디어가 있습니까? CPU.vhd를 컴파일하는 동안
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
library work;
--use work.types.all;
entity CPU is
--...
end entity CPU;
architecture rtl of CPU is
--these types are actually included in a package
subtype reg is std_logic_vector(15 downto 0);
type mem is array (0 to 1023) of reg;
--...
--memory read port
signal MR : reg;
signal MRA : std_logic_vector(9 downto 0); --flops
--memory write port
signal MW : reg; --flops
signal MWA : std_logic_vector(9 downto 0); --flops
signal MWE : std_logic; --flop
signal data : mem;
attribute ram_init_file : string;
attribute ram_init_file of data : signal is "RAM_init.hex";
attribute ramstyle : string;
attribute ramstyle of data : signal is "no_rw_check";
begin
--...
--memory spec
MR <= data(to_integer(unsigned(MRA(9 downto 0))));
memory_process : process(clk)
begin
if (clk'event and clk = '1') then
if(MWE = '1') then
data(to_integer(unsigned(MWA(9 downto 0)))) <= MW;
end if;
end if;
end process;
end architecture rtl; --CPU
ModelSim을가 경고 나 오류를 표시하지 않으며,이 초기화 파일을로드의 표시가 않습니다
유추 메모리를 포함하는 크게 손질 모델
.이것은 알테라 소프트웨어 또는 메모리 초기화 파일을 사용하는 나의 첫 번째 디자인이며, 문제가 정말 기본적인 것이거나, 근본적으로 잘못된 각도에서 접근하고 있습니다. 일반적으로 패키지에서 상수로 메모리를 정의 하겠지만 클래스 용이며 메모리 초기화 파일이 있어야합니다 (.mif 형식도 필요하지만 시뮬레이션과 합성 파일).
이것은 결국 내가 한 일입니다. 나는 "mem load -i RAM_init.dat -format 16 진수/경로/to/RAM/신호" 을 tcl 시뮬레이션 스크립트의 시작 부분에 추가했습니다. 형식은 ascii로 표현 된 일반 16 진수로, 1024 단어 메모리의 경우에도 훨씬 더 마르코 같은 .mif 파일과 비교하면 꽤 깁니다. 이 문제를 어떻게 해결할 것인가는 아니지만 등급을 매길 VHDL에 추가 조항을 추가하는 것을 피하고 싶습니다. – QuantumRipple