ISE 13.4를 사용하여 Virtex-5에서 블록 RAM에 저장하고자하는 벡터 배열이 있습니다. 1 BRAM에 맞아야하는 32Kb이지만 모두 로직에 저장됩니다. 내 시스템은 AMBA APB 버스를 사용하므로 선택 라인과 활성화 라인을 확인합니다. 왜이 코드가 BRAM을 유추하지 않는지 이해해주세요. 참고 :이 예제는 이해하기 쉽고 다른 코드를 도와 주어야하는 더미 예제입니다. 이 VHDL이 XST에서 BRAM을 유추하지 않는 이유는 무엇입니까?
architecture Behavioral of top is
type memory_array is array (63 downto 0) of std_logic_vector(31 downto 0);
signal memory : memory_array;
attribute ram_style: string;
attribute ram_style of memory : signal is "block";
begin
process(Clk)
begin
if(rising_edge(Clk)) then
if(Sel and Wr_en and Enable) = '1' then
memory(to_integer(Paddr(5 downto 0))) <= Data_in;
elsif(Sel and not Wr_en and Enable) = '1' then
Data_out <= memory(to_integer(Paddr(5 downto 0)));
end if;
end if;
end process;
end Behavioral;
나는
block
로 배열의
ram_style
를 선언하지만, XST 보고서는 말한다 :
WARNING:Xst:3211 - Cannot use block RAM resources for signal <Mram_memory>. Please check that the RAM contents is read synchronously.
문제가 read_enable 상태에 있다고 표시하지만, 버텍스 5 사용자 설명서가 것처럼 들리게 BRAM 하드 블록상의 enable
및 write_enable
. 나는 항상 출력을 이끌어 낼 수 있었지만, 나는 그것을 원하지 않는다. 그리고 그것은 힘을 낭비 할 것이다. 다른 아이디어?
저는 BRAM 매크로에 익숙하지 않습니다. 새 BRAM 구성 요소를 인스턴스화하고 포트를 디자인에 연결해야합니까? – Stuart
정확하게 작동합니다. – timos
어디에서 템플릿 예제를 찾을 수 있습니까? – Stuart