Xilinx VHDL RAM 的初始化

[复制链接]
3644|7
 楼主| wrigleymint 发表于 2012-12-28 14:38 | 显示全部楼层 |阅读模式
在网上找到一个RAM的程序,如下。
但我还想加一个Restart的输入口,加了一个process,当Restart和clk为1的时候通过data(10)<="11111111";进行初始化,可是报错说RAM连了太多的驱动。

请教高人,有没有别的办法初始化呢
 楼主| wrigleymint 发表于 2012-12-28 14:39 | 显示全部楼层
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;

entity ram is         
generic(width:integer :=8;length:integer:=256);                              
port(clk:in std_logic;
      r_add,w_add:in std_logic_vector(7 downto 0);
                restart,r_en,w_en:in std_logic;
      d_in:in std_logic_vector(width-1 downto 0);
      d_out:out std_logic_vector(width-1 downto 0));
end entity;
architecture art of ram is
type memory is array (0 to length-1) of std_logic_vector(width-1 downto 0);
signal data:memory;
begin
process(clk,w_add,w_en,d_in)
begin
   if clk'event and clk='1' then
    if w_en='1' then              
    data(conv_integer(w_add))<=d_in;
   end if;
  end if;
end process;
process(clk,r_add,r_en,data)
begin
    if clk'event and clk='1' then
        if r_en='1' then
     d_out<=data(conv_integer(r_add));
    end if;
   end if;
end process;
end art;
lqconan 发表于 2013-1-6 21:59 来自手机 | 显示全部楼层
reset加到每个进程clk之前就行了,异步复位,要么就加在clk和en中间
kkzz 发表于 2013-1-7 16:58 | 显示全部楼层
建立一个选择器
hawksabre 发表于 2013-1-8 20:28 | 显示全部楼层
使用选择器实现   在需要初始化时通过硬件电路实现重启  这是我的想法  呵呵
robbins37 发表于 2013-1-28 23:41 | 显示全部楼层
复位或者加一个选择器
dwananqinyan 发表于 2013-1-28 23:49 | 显示全部楼层
我觉得加选择器比较好
dousfoulexd 发表于 2013-1-29 00:08 | 显示全部楼层
都可以吧  看自己
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

166

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部