打印

Xilinx VHDL RAM 的初始化

[复制链接]
3026|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 | 只看该作者
建立一个选择器

使用特权

评论回复
5
hawksabre| | 2013-1-8 20:28 | 只看该作者
使用选择器实现   在需要初始化时通过硬件电路实现重启  这是我的想法  呵呵

使用特权

评论回复
6
robbins37| | 2013-1-28 23:41 | 只看该作者
复位或者加一个选择器

使用特权

评论回复
7
dwananqinyan| | 2013-1-28 23:49 | 只看该作者
我觉得加选择器比较好

使用特权

评论回复
8
dousfoulexd| | 2013-1-29 00:08 | 只看该作者
都可以吧  看自己

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

166

帖子

0

粉丝