【发布时间】:2020-05-25 19:27:46
【问题描述】:
我需要有关具有 2 个时钟的双端口 RAM 的测试台的帮助,其中地址 A(写入)与 CLK A 同步,地址 B(读取)与 CLK B 同步。 这是ModelSim中的代码:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use ieee.std_logic_unsigned.all;
entity RAM is
port(
d_in : in
std_logic_vector(7 downto
0);
ADDRA : in
std_logic_vector(2 downto
0);
ADDRB : in
std_logic_vector(2 downto
0);
WEA : in std_logic ;
REA : in std_logic ;
CLKA : in std_logic ;
CLKB : in std_logic ;
d_out : out std_logic_vector(7 downto 0)
);
end RAM ;
Architecture behav of RAM is
type Memory is ARRAY(7 downto 0) of std_logic_vector(7 downto 0);
signal mem : Memory;
BEGIN
process(CLKA)
begin
if(rising_edge(CLKA)) then
if(WEA = '1') then
mem(to_integer(signed(ADDRA))) <= d_in;
end if;
end if;
end process;
process(CLKB)
begin
if(rising_edge(CLKB)) then
if ( REA = '1') then
d_out <= mem(to_integer(signed(ADDRB))) ;
end if;
end if;
end process;
end behav ;
我一直在尝试通过不同的策略制作测试台文件,但它一直无法正常工作,并且不断给我错误。
【问题讨论】:
-
见How to Ask。
it never worked properly and keeps giving me errors对于一个看不见的测试台的问题陈述有点含糊。
标签: vhdl ram modelsim test-bench