搜索
bottom↓
回复: 6

Spartan6操作sram,求救。。。

[复制链接]

出0入0汤圆

发表于 2012-3-28 21:52:36 | 显示全部楼层 |阅读模式
我最近才开始玩FPGA,用的是nexys3,vhdl也是最近才开始学的。尝试控制板上的psram。程序是我自己写的,前5秒写入,后5秒读出。但是,无论怎么改程序,读出来的都是零。
麻烦大家帮我看一下
时钟是100mhz,那个psram是微芯的MT45W8MW16BGX,就是nexys3上那块。
entity testRAM is port
(       
---ram signal
        add:out std_logic_vector(22 downto 0);
        data:inout std_logic_vector(15 downto 3);
        clkram:out std_logic:='0';
        adv:out std_logic:='0';
        oe:out std_logic:='0';
        lb:out std_logic:='0';
        hb:out std_logic:='0';
       
        ce:out std_logic:='1';
        wr:out std_logic:='1';
---led signal
        led:out std_logic_vector(7 downto 0);
        clk:in std_logic
);
end testRAM;

architecture Behavioral of testRAM is
signal CLKDIV: STD_LOGIC:='0';

signal re:std_logic:='0';
signal we:std_logic:='0';
signal mydatain,mydataout:std_logic_vector(15 downto 3);
signal myadd:std_logic_vector(22 downto 0);
signal a,b:std_logic:='0';

signal bt:std_logic:='0';
begin

div:process(clk)
variable cn:natural;
begin
        if clk='1' and clk'EVENT THEN
        CN:=CN+1;
        IF CN=50000000 THEN
        CLKDIV<=NOT CLKDIV;
        CN:=0;
        END IF;
        END IF;
END process;


ramop:process(clkdiv)
variable c:natural :=0;
begin       
if(rising_edge(clkdiv))then
        c:=c+1;
        if(c>=5)then
                c:=0;
                bt<=not bt;
        end if;
        if(bt='0')then
                re<='0';
                we<='1';
                mydatain<= conv_std_logic_vector(c,13);
                myadd<= conv_std_logic_vector(1024+c,23);

        else
                myadd<=conv_std_logic_vector(1024+c,23);
                re<='1';
                we<='0';
        end if;
end if;
end process;

process(clk,we)
variable c:natural:=0;
begin
if(rising_edge(clk) and we='1')then
                c:=c+1;
                case c is
                        when 1 =>
                                data<=mydatain;
                                wr<='0';
                        when 8 =>
                                wr<='1';
                                c:=0;
                                we<='0';
                        when others =>
                           null;
                end case;
end if;
end process;

process(clk,re)
variable c:natural:=0;
begin
if(rising_edge(clk) and re='1')then
                c:=c+1;
                case c is
                        when 1 =>
                                  null;
                        when 8=>
                                mydataout<=data;
                                re<='0';
                                c:=0;
                        when others =>
                          null;
                end case;
end if;
end process;
led<=mydatain(10 downto 3) when we='1'
                else not mydataout(10 downto 3) when re='1'
                else "00000000";
add<=myadd;
ce<='0';
end Behavioral;

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2012-4-4 00:38:13 | 显示全部楼层
木有人会 :-(

出0入0汤圆

发表于 2012-4-4 09:02:51 | 显示全部楼层
肯定有人会 只不过没有人理会

你可要自己调一下啊,观察一下你写的时序  跟手册对照一下  肯定是时序有问题

出0入0汤圆

 楼主| 发表于 2012-4-4 23:04:43 | 显示全部楼层
这是我的仿真写数据时序,真的看不出有什么问题。用chipscope量了一下,也是写进去有数据,读出来全零。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-4-11 22:20:05 | 显示全部楼层
木有人肯说,只有我自己弄了 :-(  ,今天终于弄完了,给个代码以飨后者。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-4-11 22:23:57 | 显示全部楼层
你是不是没有示波器?有了示波器,对照SRAM访问时序,对于你读入全0的结果检查很方便的。工欲善其事必先利其器是有道理的

出0入0汤圆

 楼主| 发表于 2012-4-14 15:09:15 | 显示全部楼层
木有示波器,xilinx提供了虚拟逻辑分析仪chipscope,那个的效果跟示波器一样的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 11:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表