Norflash控制器的Verilog建模之二(仿真)
前言:经过几天修改,norflash控制器基本已经完成,通过仿真。完整的norflash包含2个模块:直接操作硬件的norflash_ctrl.v与控制ctrl模块的驱动norflash_driver.v。目前只具备扇区块擦除、单字节写、单字节读。
设计思路:
norflash_driver模块:可以根据外部控制脉冲信号(可以是按键、开关、其他模块产生的脉冲信号)控制其在每个脉冲下产生相应的“指令、读写地址、待写数据、norflash请求”4种信号。指令可以预先用一个lut存储。用这种方式操作norflash_ctrl模块有点类似中断,在时间上安排未必是完整紧凑的。另外一种方式利用norflash_ctrl模块产生的ack信号反馈到本地模块激发产生“相应的指令、读写地址、待写数据、norflash请求”4种信号,以这种方式操作在时序上是紧凑的,即提高了模块使用效率。后者这种操作方式之前也在I2C控制器建模里多次使用过。
norflash_ctrl模块:内置指令译码器根据norflash_driver总线上的“指令、norflash请求”2个信号在检测到norflash请求信号后锁存译码指令产生供给状态机使用的状态转移信号(do_sector,do_byte_rd,do_byte_wr)。其余状态转移按照3段式状态机建模编写。
注意事项:
(a)扇区块擦除时序:根据手册可以获得扇区块地址,地址是地址总线的高9位。擦除指令周期一共6个,在此之后并不可以立即写入,需等待擦除操作实际进行完毕。扇区块擦除大概需要0.7秒,整块擦除需要45秒。
(b)写操作时序:4个周期,norflash是支持任意地址访问,不像nandflash最小的读写单位是块。需要注意手册里有提到写时序图里地址线是在we_n下降沿锁存,写数据是在we_n上升沿锁存写入器件。这一点习惯和sdram、sram不太一样。
(c)读操作时序:1个周期,类似sram,给出地址和使能oe就可以得到数据,相比写时序,速度快了不止1、2个数量级吧。
未解决疑惑:
(a)不论是整块擦除还是扇区擦除,擦除完毕之后存储单元是0xff,手册没说明(还是我没看到)是否支持“1次块擦除+该块连续写”,在下一步硬件测试时候要尝试一下。
最后给出仿真图,目前为了完成主要功能的建模,在driver模块指令比如“擦写和写”之间并未按照手册给出0.7秒的等待擦写等待。ps晚上6点飞机回校,先这样吧。
Norflash控制器的Verilog建模之二(仿真)的更多相关文章
- Norflash控制器的Verilog建模之一
摘要:今天驱动一款SPANSION公司生产的norflash——S29AL032D70,没有别的参考资料,大致了解一下norflash的内部cmos电路架构以及其用途之后,直接看手册吧. 如何看手册: ...
- Norflash控制器的Verilog建模之三(測試)
前言:回校了,辦好手續就著手寫測試篇.初步的norflash控制器已經完成,通過硬件測試.目前的norflash完成扇区块擦除.单字节写.单字节读3个功能.博文最后附上源码. 总结:和之前的博文一样, ...
- I2C控制器的Verilog建模之二
前言:接着上一篇的I2C写操作,今天要实现一个I2C的读操作.虽然在ADV7181B配置内部寄存器时没有必要使用到读操作,但是为了进一步确认寄存器是否在I2C写模块下被正确配置,这一步是必不可少的. ...
- SDRAM控制器的Verilog建模之一
前言:作为经典存储器的三剑客中的flash和sram已经建模测试过了,虽然现在都已经ddr2,ddr3,667MHZ.1333MHZ的天下了,但是接下这周来准备写一下sdram的controller. ...
- I2C控制器的Verilog建模之三(完结版)
前言:终于到了测试篇,不过悲剧了一下.按照之前<二>里面的思路,在顶层用一个复用器驱动读写独立模块的I2C总线确实失败.虽然综合过去了,不过警告里已经说明:底层的2个原本是inout三态口 ...
- 异步SRAM控制器的Verilog建模
前言:sram顾名思义静态随机存储器,分为asram异步型和ssram同步型.这里驱动DE2上一块ISSI公司的512KB的asram. 设计思路:因为实际应用中单字节读写效率不高,所以本设计中仿照s ...
- VGA逐行扫描控制器的Verilog建模
前言:因为VGA是一种模拟图像传输数据接口,所要将数字信号用DAC转换成模拟量.本文用的一款ADI公司高精度的视频IC,实则一款高带宽的视频DAC.因为VGA时序较为简单,并且网上的VGA驱动基本大同 ...
- I2C控制器的Verilog建模之一
前言:之前申请了ADI公司的一款ADV7181CBSTZ的视频解码芯片,正好原装DE2板子安的是同系列的ADV7181BBSTZ.虽然都是ADV7181的宗出,但是寄存器配置等等还是有些诧异,引脚也不 ...
- verilog 代码分析与仿真
verilog 代码分析与仿真 注意:使用vivado 自带的仿真工具, reg和wire等信号需要赋予初始值 边沿检测 module signal_test( input wire cmos_pcl ...
随机推荐
- Javascript中的数组方法总结
1.concat():将两个或多个数组合并成一个数组 arrayObject.concat(arrayX,arrayX,......,arrayX),返回一个新的数据,arrayX可以是数值也可以是数 ...
- Android Sqlite数据库加密
Android使用的是开源的SQLite数据库,数据库本身没有加密,加密思路通常有两个: 1. 对几个关键的字段使用加密算法,再存入数据库 2. 对整个数据库进行加密 SQLite数据库加密工具: 收 ...
- install google chrome
32bit: wget https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb sudo dpkg -i go ...
- shh简化
对于SSH框架中部分的操作简化我分为两大类: 一:操作 1. 在SSH的struts.xml里 name="Action类_*" class="注入的实例"(同 ...
- python基础篇
python脚本开头 #!/usr/bin/env python# -*- coding: utf-8 -*print "你好,世界" 不要问为什么,记住就好了 变量定于的规则 变 ...
- tcpdf最新版 6.2版
tcpdf6.2版,地址记 录 http://download.csdn.net/detail/hayywcy/9547873
- 【阿迪达斯 ZX850 系列】
[阿迪达斯zx850系列 灰蓝桔 36-44] [阿迪达斯 ZX850 新配色B34720 情侣鞋 36-44] [阿迪达斯 ZX850 新配色B34720 情侣鞋 36-44] [阿迪达斯 ZX85 ...
- Controller
http://www.cnblogs.com/artech/archive/2012/08/15/action-result-03.html
- 关于flume配置加载
最近项目在用到flume,因此翻了下flume的代码, 启动脚本: nohup bin/flume-ng agent -n tsdbflume -c conf -f conf/配置文件.conf -D ...
- C#中dynamic的正确用法
C#中dynamic的正确用法 http://www.cnblogs.com/qiuweiguo/archive/2011/08/03/2125982.html dynamic是FrameWork4 ...