无效块建立程序.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE PAGE 14 建立无效块程序 //程序功能:完成一片FLASH无效块建立。 /*程序流程: 首先,读取每一块第一页和第二页第2048个字节数据, 将其分别存入ramA和ramB中; 然后,再把ramA和ramB中的数据进行比较,若同 时为FF,则该块有效,否则该块无效。 最后,将块地址加1,直到检查完整片FLASH的所有块为至,invalid_over=1表示整片FlASH//无效块建立完成。*/ module invalid_block_cesu( clk, rst, start, data_in, cle, ce1, ce2, we, ale, re, wp, data_out, invalid_flash_link, invalid_table_addr, invalid_in, invalid_table_flag, invalid_over, state); input clk,rst,start; input [7:0]data_in; // FlASH反馈给FPGA的数据,检测 // I/O0的值,来说明各操作是否成功 output cle,we,ale,re,wp,invalid_flash_link; output ce1,ce2; output [7:0]data_out; //FPGA给FLASH的数据或地址 output [12:0]invalid_table_addr; // 无效块地址 output invalid_in;  //每个块的无效块信息 output invalid_table_flag; //每个块无效块建立完成标志 output invalid_over; //整片FLASH无效块建立完成标志 output [4:0]state; //无效块建立全过程的状态标志 reg cle,we,ce,ale,re,wp; reg invalid_flash_link,read_flag; reg [7:0]data_out; reg [4:0] state; reg [9:0] read_counter; reg [33:0]addr;  //[33:31]片选地址; //[30:18]块地址; //[17:12]页地址; //[11:0]每一页的2048个字节的地址 reg [1:0]cnt; reg [7:0]ramA; //用来存每一块第一页第2048个字节的数据 reg [7:0]ramB; //用来存每一块第二页第2048个字节的数据 reg invalid_in; reg invalid_table_flag; reg invalid_over; reg [10:0]wait_cycle; //执行完擦操作指令后的等待时间, //即FLASH擦除每一块的需要的时间 wire [12:0]invalid_table_addr; wire ce1,ce2; //一片FLASH的两个片选信号 assign  invalid_table_addr = addr[30:18]; //将内部addr赋于invalid_table_addr, //给用于存储无效块信息的Ram assign ce1 = (addr[33:31]==3d0)? ce : 1; //ce=0,选中FLASH第一小片 assign ce2 = (addr[33:31]==3d1)? ce : 1; //ce=1选中FLASH第二小片 parameter step1 = 5d0, s

文档评论(0)

586334000 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档