求ram_dp做法。
ram_dp是一个存储元件,其中存储了CPU执行的指令和数据。存储器ram_dp由FPGA中的嵌入式阵列块构成,通过调用宏模块LPM_ram_dp和设置其相关参数来实现。
此存储器的数据线和地址线都设为16位,其数据线与总线接口,CPU能对它进行读/写操作。
ram_dp读数据的过程是:首先由地址寄存器AR送出一个存储单元的地址addr,然后使r/w为0,进行读操作read;片选信号sel置1,选中存储器;若信号READY为1,说明存储器是可操作的,在此之后,存储单元就会输出数据data。
向存储器ram_dp写入数据的过程是:首先由地址寄存器AR送出一个存储单元的地址addr;同时将要写入的数据data加到存储器的数据输入端;然后,将r/w置1,进行写操作,write,片选信号sel置1,选中存储器;这时,若信号READY为1,说明存储器是可操作的,数据dada即写入到存储器的指定单元中。其中
TOP.vhd是顶层程序
library IEEE;
use IEEE.std_logic_1164.all;
use work.cpu_lib.all;
entity top is
end top;
architecture behave of top is
component ram_dp
port (addr : in bit16 ; sel,rw : in std_logic; ready : out std_logic;
data : inout bit16);
end component;
component control
port(clock, reset, ready : in std_logic ; addr : out bit16;
rw, vma : out std_logic ; data : inout bit16);
end component;
signal addr, data : bit16; signal vma, rw, ready : std_logic;
signal clock, reset : std_logic := '0';
begin
clock <= not clock after 50 ns ; reset <= '1', '0' after 100 ns;
m1: ram_dp port map (addr, vma, rw, ready, data);
u1: control port map (clock, reset, ready, addr, rw, vma, data);
end behave
其中定义ram_dp元件端口的是
component ram_dp
port (addr : in bit16 ; sel,rw : in std_logic; ready : out std_logic;
data : inout bit16);
end component;
|