在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 8952|回复: 10

[求助] FPGA VHDL NOR Flash 读写

[复制链接]
发表于 2013-9-28 15:28:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x

各位大侠:


本人新手,最近搞了一周的FPGAVHDL读写Intel Nor flash 28f256,但是没有成功,实在不知道怎么办了,datasheet看了很多遍了,特来请教。

   28f256  共有25根地址线,16根数据线,我的genesys virtex-5开发板已经默认将flash设置成×16 mode,异步读,使能unlock、擦除和编程功能等,所以flashclkwait不用,下面是我写的代码,请大侠看看:

   1

   entityfuck is

   port(clk:in std_logic;

             rst:in std_logic;

                     ledutstd_logic_vector(7 downto 0);

                     cenutstd_logic;

                     oenutstd_logic;

                     wen:outstd_logic;

                     reset:outstd_logic;

                     addr:outstd_logic_vector(24 downto 1);

                     data:inoutstd_logic_vector(15 downto 0));

end fuck;


architecture Behavioral of fuck is

signal i,n:integer range 0 to 10000:=0;

signal temp:std_logic_vector(15 downto0):=x"0000";

signal num:integer range 0 to 100000000:=0;

signal j:std_logic:='0';

signal k :integer range 0 to 8:=0;

begin

reset<=rst;

main:process(clk) is

begin

if(rising_edge(clk)) then--CLK周期10nsflash信号起作用估计需要100ns

   case i is

            when 0 =>cen<='1';oen<='1';wen<='1';i<=i+1;--设置控制信号初始值,板子已经将bytewp#vpnn等信号设置成16 mode了,所以A0地址无效。

                when 10 =>addr<=x"000000";data<=x"0090";i<=i+1;--90H是读设备ID的命令               when 20 =>cen<='0';oen<='1';wen<='0';i<=i+1;               

                when 30 =>cen<='0';oen<='1';wen<='1';i<=i+1;--wen的上升沿采样dataaddr               

                when 40 => addr<=x"000000";i<=i+1;--  此时应该输出flashid  89H     

                when 50 =>cen<='0';oen<='0';wen<='1';i<=i+1;               

                when 60 => led<=data(7 downto 0);--但是data上总是上次的数据,即前面的命令90H,意味着前面的命令根本没有送到flash内,但是我试了,擦除可以执行,其他的都不行,其他代码原理大同小异,我就不发上来了,请大家看看

        when others => i<=i+1;                                                                                    

       endcase;   

end if;

end process main;

end Behavioral;

 楼主| 发表于 2013-9-28 16:18:02 | 显示全部楼层
顶自己
 楼主| 发表于 2013-9-28 22:15:09 | 显示全部楼层
我顶顶顶
发表于 2013-10-30 00:50:30 | 显示全部楼层
thank u
发表于 2014-5-30 14:56:56 | 显示全部楼层
回复 1# windyfuzibuaa
请问您现在成功了吗,我也遇到了问题
发表于 2014-5-31 17:18:21 | 显示全部楼层
回复 1# windyfuzibuaa

首先,可以擦出证明基本功能正常,编程失败可能由以下原因引起:
1. 焊接还是有问题,由于擦除操作需要的控制命令不多,可能与编程相关的命令无法正常输入到芯片中。可以用示波器检查一下各个管脚的链接情况。
2. 编程后需要一个较长的等待时间,读数据最好在busy信号拉高之后再进行。
3. 检查编程指令是否规范。换其他地址写入以防止该block为坏块。
发表于 2014-6-3 10:41:16 | 显示全部楼层
回复 6# zhaowenzhe

请问怎样判别是否擦除成功呢?是需要读取状态寄存器的内容吗?
发表于 2014-6-3 12:25:38 | 显示全部楼层
回复 7# gossipdj

如果能够读取状态位的取值,那么通信功能基本就正常了。最简单的判断方法是检查busy信号是否有拉低的过程,以此来判断芯片处于工作中。
发表于 2014-6-26 09:32:52 | 显示全部楼层
回复 8# zhaowenzhe
我现在想用FPGA对intel的28F256P30进行读写,数据手册什么的我已经看了很多遍了,可是现在读写和擦除都还是有问题,如果您方便的话可否留一下qq跟您请教一下?因为我已经快改了一个月了,实在是不知道自己的问题在哪里。先提前谢了
发表于 2014-6-27 18:27:41 | 显示全部楼层
回复 9# gossipdj


   哦。我不确定是否能帮上忙,我的QQ PM给你了。注意查收。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-1-3 21:43 , Processed in 0.023199 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表