Norflash控制器的Verilog建模之一
摘要:今天驱动一款SPANSION公司生产的norflash——S29AL032D70,没有别的参考资料,大致了解一下norflash的内部cmos电路架构以及其用途之后,直接看手册吧。
如何看手册:拿到手册后满满的英文,很多人看了就泄气,那么如何在浩如烟海的英文里找到实际需要的信息,这一点很关键。因为毕竟是用Verilog建模,不像软件描述那么灵活,很多时候受限于硬件描述的瓶颈,因此一开始先给自己起点低一点,建模完成norflash的单块读写功能,至于其他比如CFI里面的其他功能可以以后完善。类似sdram和sram,作为memory的一员,flash无非是在控制总线下数据总线和地址总线的切换。另外,每个厂家在此基础之上可能还再添加一些特色的功能加速器件的访问以及减低功耗的设计。从拿到手册开始,目标就很明确,个人习惯思路是这样:“抓住三总线——>提取关键的时序参数——>根据不同功能化简每个功能的时序图——>硬件语言描述”。
手册关键点:
(a)根据DE2的原理图,norflash的地址总线安排flash_addr[21:0],数据总线flash_data[7:0]形成4Mx8Bit存储结构。
(b)根据原理图,可操作控制总线有flash_ce_n,flash_oe_n,flash_we_n,flash_rst_n。因此可用命令read,write,standby,reset。ps图里的wp/acc引脚悬空,在此状态下逻辑电平未知,不过在note里看到,引脚的逻辑高低影响最外层的2个扇区的保护与未保护,因此在读写驱动时候需要避开这2个扇区。
(c)芯片是S29AL032D70TFI04.因此是mode04,即x8/x16,Vcc=2.7~3.6v,bottom boot sector device。底层2个扇区保护与否取决于wp/acc引脚。
(d)04模式的扇区组织。SA0~SA7:大小8Kbyte,每块扇区地址flash_addr[21:13]从0~8;SA8~SA70:大小64Kbyte。SecuredSector:256byte。
(e)04模式扇区块组织。SA0~SA8共8个扇区块,大小每个8Kbyte;SA8~SA10一个扇区块共192Kbyte;其余每4个连续扇区为一个扇区块,每个大小256Kbyte。
(f)SecuredSector里面可以获得器件ESN码。
(g)CFI命令。
(h)手册下半部分便是时序参数和读写擦的时序图。
ps:马上又要开学了,虽然会很忙,还是自己能在这里不断总结。督促自己。
Norflash控制器的Verilog建模之一的更多相关文章
- Norflash控制器的Verilog建模之二(仿真)
前言:经过几天修改,norflash控制器基本已经完成,通过仿真.完整的norflash包含2个模块:直接操作硬件的norflash_ctrl.v与控制ctrl模块的驱动norflash_driver ...
- Norflash控制器的Verilog建模之三(測試)
前言:回校了,辦好手續就著手寫測試篇.初步的norflash控制器已經完成,通過硬件測試.目前的norflash完成扇区块擦除.单字节写.单字节读3个功能.博文最后附上源码. 总结:和之前的博文一样, ...
- SDRAM控制器的Verilog建模之一
前言:作为经典存储器的三剑客中的flash和sram已经建模测试过了,虽然现在都已经ddr2,ddr3,667MHZ.1333MHZ的天下了,但是接下这周来准备写一下sdram的controller. ...
- 异步SRAM控制器的Verilog建模
前言:sram顾名思义静态随机存储器,分为asram异步型和ssram同步型.这里驱动DE2上一块ISSI公司的512KB的asram. 设计思路:因为实际应用中单字节读写效率不高,所以本设计中仿照s ...
- I2C控制器的Verilog建模之三(完结版)
前言:终于到了测试篇,不过悲剧了一下.按照之前<二>里面的思路,在顶层用一个复用器驱动读写独立模块的I2C总线确实失败.虽然综合过去了,不过警告里已经说明:底层的2个原本是inout三态口 ...
- VGA逐行扫描控制器的Verilog建模
前言:因为VGA是一种模拟图像传输数据接口,所要将数字信号用DAC转换成模拟量.本文用的一款ADI公司高精度的视频IC,实则一款高带宽的视频DAC.因为VGA时序较为简单,并且网上的VGA驱动基本大同 ...
- I2C控制器的Verilog建模之一
前言:之前申请了ADI公司的一款ADV7181CBSTZ的视频解码芯片,正好原装DE2板子安的是同系列的ADV7181BBSTZ.虽然都是ADV7181的宗出,但是寄存器配置等等还是有些诧异,引脚也不 ...
- I2C控制器的Verilog建模之二
前言:接着上一篇的I2C写操作,今天要实现一个I2C的读操作.虽然在ADV7181B配置内部寄存器时没有必要使用到读操作,但是为了进一步确认寄存器是否在I2C写模块下被正确配置,这一步是必不可少的. ...
- verilog 建模笔记--低级建模
来源 <verilog HDL那些事--建模篇> 1.并行建模的思想. 2.每个模块最好只有一个功能.(便于修改和扩展,特别在大的项目中) 典型的 HDL 教科书中,才不会要读者了解“模 ...
随机推荐
- 11个提问频率最高的PHP面试题
问题:请用最简单的语言告诉我PHP是什么? 回答:PHP全称:Hypertext Preprocessor,是一种用来开发动态网站的服务器脚本语言. 问题:什么是MVC? 回答:MVC由Model(模 ...
- Java中封装、继承和多态
封装: 封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度. 适当的封装可以让程式码更容易理解和维护,也加强了程式码的安全性. 访问修饰符有public,private,prot ...
- DB2 claim与drain
DB2使用claim & drain来控制SQL与utility对数据库对象的访问. claim说明有对象正在访问或是将要访问该对象,而drain则是在对象上面加一个drain lock,等所 ...
- Python之路,day8-Python基础
***面向对象的好处*** 更容易扩展.提高代码使用效率,使你的代码组织性更强,更清晰 更适合复杂项目的开发 封装 把功能的实现细节封装起来,只暴露调用接口 继承 多态 接口继承 定义 类----&g ...
- How to create/restore a slave using GTID replication in MySQL 5.6
MySQL 5.6 is GA! Now we have new things to play with and in my personal opinion the most interesting ...
- 写自己的ASP.NET MVC框架(上)
http://www.cnblogs.com/fish-li/archive/2012/02/12/2348395.html 阅读目录 开始 ASP.NET程序的几种开发方式 介绍我的MVC框架 我的 ...
- Javase部分回顾(static (静态修饰符),修饰方法,单利的设计模式, 封装)
static (静态修饰符) 1.修饰成员变量 静态变量的访问方式: 方式一 : 通过对象访问. 对象.变量名 ...
- openssl 升级
openssl version -a rpm -q --changelog openssl | grep CVE bash -version #!/bin/bash if [[ $EUID -ne ...
- KnockoutJS中父元素有click绑定引起checked绑定时失效
KnockoutJS中的checked绑定如果父元素有click绑定,会出现状态点击没反应,实际KO的值已经变化的情况. 这种情况下应该在checked绑定的元素上除了阻止事件冒泡,另外还需要额外加上 ...
- List的Capacity
Capacity 在.NET中List的容量应该只是受到硬件限制. 属性Capacity的真正含义,是创建List时给它预分配的容量. 一旦项的数量超过了当前的Capacity,Capacity会以 ...