贴片机厂家
免费服务热线

Free service

hotline

010-00000000
贴片机厂家
热门搜索:
行业资讯
当前位置:首页 > 行业资讯

基于WISHBONE总线的FLASH闪存接口设计图

发布时间:2020-07-21 17:48:10 阅读: 来源:贴片机厂家

摘 要 : 本文简要介绍了amd公司am29lv160d芯片的特点,并对wishbone总线作了简单的介绍,详细说明了flash memory 与wishbone 总线的硬件接口设计及部分verilog hdl程序源代码。关键词 :闪存;接口;wishbone; fpga 引言---随着半导体工艺技术的发展,ic设计者已能将微处理器、模拟ip核、数字ip核和存储器(或片外存储控制接口)集成在单一芯片上,即soc芯片。对片上系统(soc)数据记录需要低功耗、大容量、可快速重复擦写的存储器。常用的介质主要有:动态存储器(dram)、静态存储器(sram)和闪速存储器(flash memory)。dram容量大,但需要不断刷新才能保持数据,会占用微处理器时间,同时增加了功耗;sram虽然不需要动态刷新,但价格太贵,并且断电后跟dram一样数据都无法保存。flash memory是一种兼有紫外线擦除eprom和电可擦除可编程只读存储器(eeprom)两者优点的新型非易失存储器。由于它可在线进行电可擦除和编程,芯片每区可独立擦写至少1000 000次以上,因而对于需周期性地修改被存储的代码和数据表的应用场合,以及作为一种高密度的、非易失的数据存储介质flash是理想的器件选择。在我们设计的系统中,处理器是openrisc1200,所用的flash是amd与富士公司的am29lv160d芯片。利用fpga实现接口,由于openrisc1200(or1200)采用wishbone总线,所以本设计的接口具有可移植性。 am29lv160d芯片特点---am29lv160d是一种仅需采用3.0v电源进行读写的闪存。该器件提供了70ns、90ns、120ns读取时间,无需高速微处理器插入等待状态进行速度匹配。为了消除总线竞争,芯片引入了片选使能(ce#),写使能(we#)和输出使能(oe#)控制端口。芯片采用分块结构,非常适用于要求高密度的代码或数据存储的低功耗系统。---● 甚低功耗---工作在5mhz时, 电流典型值为:---睡眠模式下电流为200na;---备用模式下电流为200na;---读数据时为9ma;---编程/擦除模式下电流为20ma。---● 灵活的分块结构---一个16kb,两个8kb,一个32kb,和31个64kb块(字节模式);---一个8kb,两个4 kb,一个16 kb,和31个32 kb块(字模式);---支持整个芯片擦除;---复杂的块保护特性。---● 具有内部嵌入算法---内部嵌入擦除算法自动预编程和擦除整个芯片或任意块的组合;---内部嵌入算法自动将给定地址的数据写入芯片及对其校验。---● 与jedec标准兼容---● 具有硬件reset复位与ready/busy擦写查询管脚---● 具有擦除暂停与擦除继续功能

wishbone总线简介---wishbone总线规范是一种片上系统ip核互连体系结构。它定义了一种ip核之间公共的逻辑接口,减轻了系统组件集成的难度,提高了系统组件的可重用性、可靠性和可移植性,加快了产品市场化的速度。wishbone总线规范可用于软核、固核和硬核,对开发工具和目标硬件没有特殊要求,并且几乎兼容所有的综合工具,可以用多种硬件描述语言来实现。---灵活性是wishbone总线的另一个优点。由于ip核种类多样,其间并没有一种统一的间接方式。为满足不同系统的需要,wishbone总线提供了四种不同的ip核互连方式:---点到点(point-to-point),用于两ip核直接互连;---数据流(data flow),用于多个串行ip核之间的数据并发传输;---共享总线(shared bus)(见图1),多个ip核共享一条总线;---交叉开关(crossbar switch),同时连接多个主从部件,提高系统吞吐量。

flash接口的设计---由于or1200采用的是wishbone共享总线,其地址线为32位,数据线也为32位。设计中采用将低位与flash相联接,并将接口位度设计为16位。原理框图如图2所示。逻辑接口部分采用fpga来实现。系统选用xilinx公司最新推出的90nm工艺制造的现场可编程门阵列芯片spartan-3来实现接口设计,利用它的可编程性特性带来了电路设计的简单化和调试的灵活性。---flash读接口设计---该接口可实现单周期读与块读功能,时序部分与wishbone兼容。由于采用的flash最大读周期时间至少为90ns,故只有在总线时钟工作在10mhz以下频率时可以直接将ack_o端口与stb_i端口相联。当master(指令cache)发出块读信号时,将发出一个lock_o=vih信号给总线仲裁器,要求总线能不间断提供总线。其对slave(flash接口部分)控制信号为:---we_i=vil,cyc_i=vih,stb_i=vih,byte=vih---当master结束块读时发出stb_o= vil信号即可。其输出接口部分如图3所示。---该输出接口模块源代码如下:---module wboprt16(clk_i, rst_i,we_i,stb_i,ack_o,dq_i,dat_o);--- //wishbone slave interface---input clk_i,rst_i,we_i,stb_i;---output ack_o;---output [15:0] dat_o;---//non-wishbone interface---input [15:0] dq_i;---reg [15:0] dat_o;---always @(posedge clk_i or negedge rst_i)---begin :label_a---if (!rst_i)---dat_o<=16b0;//asynchronous reset---else if ((stb_i & !we_i)==b1)---dat_o<=dq_i;---else ---dat_o<=dat_o;---end---assign ack_o=stb_i;---endmoduleflash写接口设计---因为flash写命令需要多个时钟周期时间,其中采用unlock bypass模式时为2个时钟周期,采用正常写模式需要4个时钟周期,并且在对flash写和擦写时更是需要等待几十微秒到几秒钟的时间,因此对接口slave必须引入写或擦写完成状态信号来控制总线数据的传输。为简化设计采用ry/by引脚来判断。输出端口原理图与图3类似,只需对部分端口进行修改即可。---为了能够对块保护的程序代码进行升级,特别设计了一个12v电源电路来实现暂时块写保护解除功能,如图4所示。利用am29lv160d芯片提供的暂时块写保护解除模式——即通过对reset#引脚加vid电压。在该模式下先前被保护的块可以通过块地址选中来进行编程和擦除。并且一旦vid移除所有先前保护的块恢复到保护状态。---图4中rv控制信号处采用了r=5kω,c=100pf,以便使得vid电压上升时间与下降时间≥500ns,从而满足相应的时序要求。肖特基二极管的引入保证了系统reset信号被钳制在vcc+0.3v以内。总体上来说,该电源隔离电路的引入对整个系统的成本影响很小,而使系统可以在线编程被保护的flash存储块。---在进行flash编程时部分要用到命令总线时序定义,如表1所示。总结---本文介绍了amd公司am29lv160d芯片特点,并在此基础上设计了基于wishbone总线的接口。该接口设计方法对其他相关soc总线接口设计具有直接的参考意义。

参考文献1 amd am29lv160d data sheet .amd corporation2 wishbone soc architecture specification. revision b.3. silicore corporation3 邓良惠,梁国龙. 超大容量flash闪存与dsp的数据存储接口技术.设计与应用

青岛碧莲盛植发医院

大连碧莲盛好吗

杭州碧莲盛医院