【转载】Nios II 嵌入式系统硬件设计(三)之Flash控制器参数设置及硬件电路连接

来源:互联网 发布:ff14猫男捏脸数据 编辑:程序博客网 时间:2024/04/29 21:39

呵呵,flash的时间设置一直没弄明白,看了这篇文章总算有所收获,

转自:

http://bbs.ednchina.com/BLOG_ARTICLE_182247.HTM 

Flash是非易失性存储器,可以在断电后保存程序或数据内容,相当于电脑的硬盘,而SDRAM则相当于电脑的内存,所以,nios开发板的flash和SDRAM器件基本是标配。


       前几篇文章已经讲述了SDRAM控制器的参数设置及其硬件电路连接,下面讲讲flash设备控制器的参数设置及其硬件电路连接。


一、       flash控制器参数设置


在SOPC中加入flash memory(CFI),弹出如下对话框,


      Attributes标签


presets中预设了一些常用的flash设备,选择一种flash后,会将标签中的值设置为与该flash相匹配的相应值。Nios系统支持的flash基本是AMDintel的,其他厂家的flash可能不一定支持。如果没有预设的器件,则选择custom,用于根据flashdatasheet自定义。


size中填写flash的地址线和数据线宽度。我用的flashAM29LV3204M*8bit,所以选择地址线22,数据线8


     Timing标签

Timing中主要有SetupWaitHold几个参数。


       Setup


       片选有效后,发起读或写信号之前所需的时间。可以有如下公式计算:


Setup = tCE (chip enable to output delay) - tOE (output enable to output delay)


tCEtOE可以在flashdatasheet中查询得到,


根据上面表格得出tCE=90nstOE=40ns,所以Setup=50ns


       Wait


       对于每次传送,使能读/写信号所需的时间。该参数需要满足如下规则:


SetupWait和电路板级延时的和一般要小于tACC address to output delay),电路板级延时主要是FPGAflash地址线的TCOfalsh数据线的TSU,以及走线的延时。电路板级延时很小,在这里我们将其忽略,这样,Wait=tACC-Setup=40ns


       Hold


       写信号无效后,使片选无效之前所需要的是时间。这个参数没有在datasheet上找到,参考预设flash的值,设置为35ns


       Units


       时间单位,这里设置为ns


如果实在不能确定这些时间的值,还有一个办法是将这些值都设置的较大,比如大于100ns,这样电路应该能正常工作,只不过工作效率会下降,因为花费在每次读取上的时间会增大。


二、       flash硬件电路设计


下面是我自制FPGA开发板上flash部分电路(省略电源滤波部分电路),已经调试通过,电路没有问题,可以放心参考,呵呵。



介绍下主要管教功能:


A:地址线


DQ:数据线


DQ15/A-1:如果是字(16位)读写模式,该位作为数据最高位,如果是字节(8位)读写模式,该位作为地址最低位,在我的电路中采用字节读写模式,所以作为地址最低位。


CE:片选信号


OE:输出使能信号


WP/ACC:该管脚不能悬空,WP:提供硬件写保护功能,ACC:高电平输入时加速flash程序烧写。


RESET:复位信号


BYTE:选择8位还是16位读写模式,低电平是8位。


RY/BY:Ready/Busy输出


三、       flash控制器电路连接


下面是一个基于flash的nios II 最小系统,因为.rwdata, Heap memory ,Stack memory不能在flash中,所以加了一个4K的onchip_mem。

下面是在QuartusII中的顶层电路图连接