<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 網(wǎng)絡(luò)與存儲(chǔ) > 設(shè)計(jì)應(yīng)用 > 基于WISHBONE總線的FLASH閃存接口設(shè)計(jì)

          基于WISHBONE總線的FLASH閃存接口設(shè)計(jì)

          ——
          作者:同濟(jì)大學(xué)超大規(guī)模集成電路研究所 徐杰陽(yáng) 時(shí)間:2007-01-26 來(lái)源:《今日電子》 收藏

          引言

          隨著半導(dǎo)體工藝技術(shù)的發(fā)展,ic設(shè)計(jì)者已能將微處理器、模擬ip核、數(shù)字ip核和存儲(chǔ)器(或片外存儲(chǔ)控制接口)集成在單一芯片上,即soc芯片。對(duì)片上系統(tǒng)(soc)數(shù)據(jù)記錄需要低功耗、大容量、可快速重復(fù)擦寫的存儲(chǔ)器。常用的介質(zhì)主要有:動(dòng)態(tài)存儲(chǔ)器(dram)、靜態(tài)存儲(chǔ)器(sram)和閃速存儲(chǔ)器(flash memory)。dram容量大,但需要不斷刷新才能保持?jǐn)?shù)據(jù),會(huì)占用微處理器時(shí)間,同時(shí)增加了功耗;sram雖然不需要?jiǎng)討B(tài)刷新,但價(jià)格太貴,并且斷電后跟dram一樣數(shù)據(jù)都無(wú)法保存。flash memory是一種兼有紫外線擦除eprom和電可擦除可編程只讀存儲(chǔ)器(eeprom)兩者優(yōu)點(diǎn)的新型非易失存儲(chǔ)器。由于它可在線進(jìn)行電可擦除和編程,芯片每區(qū)可獨(dú)立擦寫至少1000 000次以上,因而對(duì)于需周期性地修改被存儲(chǔ)的代碼和數(shù)據(jù)表的應(yīng)用場(chǎng)合,以及作為一種高密度的、非易失的數(shù)據(jù)存儲(chǔ)介質(zhì)flash是理想的器件選擇。在我們?cè)O(shè)計(jì)的系統(tǒng)中,處理器是openrisc1200,所用的flash是amd與富士公司的am29lv160d芯片。利用fpga實(shí)現(xiàn)接口,由于openrisc1200(or1200)采用wishbone總線,所以本設(shè)計(jì)的接口具有可移植性。

          本文引用地址:http://www.ex-cimer.com/article/20920.htm

          am29lv160d芯片特點(diǎn)

          am29lv160d是一種僅需采用3.0v電源進(jìn)行讀寫的閃存。該器件提供了70ns、90ns、120ns讀取時(shí)間,無(wú)需高速微處理器插入等待狀態(tài)進(jìn)行速度匹配。為了消除總線競(jìng)爭(zhēng),芯片引入了片選使能(ce#),寫使能(we#)和輸出使能(oe#)控制端口。芯片采用分塊結(jié)構(gòu),非常適用于要求高密度的代碼或數(shù)據(jù)存儲(chǔ)的低功耗系統(tǒng)。

          ● 甚低功耗
          工作在5mhz時(shí), 電流典型值為:
          睡眠模式下電流為200na;
          備用模式下電流為200na;
          讀數(shù)據(jù)時(shí)為9ma;
          編程/擦除模式下電流為20ma。
          ● 靈活的分塊結(jié)構(gòu)
          一個(gè)16kb,兩個(gè)8kb,一個(gè)32kb,和31個(gè)64kb塊(字節(jié)模式);
          一個(gè)8kb,兩個(gè)4 kb,一個(gè)16 kb,和31個(gè)32 kb塊(字模式);
          支持整個(gè)芯片擦除;
          復(fù)雜的塊保護(hù)特性。
          ● 具有內(nèi)部嵌入算法
          內(nèi)部嵌入擦除算法自動(dòng)預(yù)編程和擦除整個(gè)芯片或任意塊的組合;
          內(nèi)部嵌入算法自動(dòng)將給定地址的數(shù)據(jù)寫入芯片及對(duì)其校驗(yàn)。
          ● 與jedec標(biāo)準(zhǔn)兼容
          ● 具有硬件reset復(fù)位與ready/busy擦寫查詢管腳
          ● 具有擦除暫停與擦除繼續(xù)功能

          wishbone總線簡(jiǎn)介

          wishbone總線規(guī)范是一種片上系統(tǒng)ip核互連體系結(jié)構(gòu)。它定義了一種ip核之間公共的邏輯接口,減輕了系統(tǒng)組件集成的難度,提高了系統(tǒng)組件的可重用性、可靠性和可移植性,加快了產(chǎn)品市場(chǎng)化的速度。wishbone總線規(guī)范可用于軟核、固核和硬核,對(duì)開發(fā)工具和目標(biāo)硬件沒有特殊要求,并且?guī)缀跫嫒菟械木C合工具,可以用多種硬件描述語(yǔ)言來(lái)實(shí)現(xiàn)。

          靈活性是wishbone總線的另一個(gè)優(yōu)點(diǎn)。由于ip核種類多樣,其間并沒有一種統(tǒng)一的間接方式。為滿足不同系統(tǒng)的需要,wishbone總線提供了四種不同的ip核互連方式:

          點(diǎn)到點(diǎn)(point-to-point),用于兩ip核直接互連;

          數(shù)據(jù)流(data flow),用于多個(gè)串行ip核之間的數(shù)據(jù)并發(fā)傳輸;
          共享總線(shared bus)(見圖1),多個(gè)ip核共享一條總線;
          交叉開關(guān)(crossbar switch),同時(shí)連接多個(gè)主從部件,提高系統(tǒng)吞吐量。

          flash接口的設(shè)計(jì)

          由于or1200采用的是wishbone共享總線,其地址線為32位,數(shù)據(jù)線也為32位。設(shè)計(jì)中采用將低位與flash相聯(lián)接,并將接口位度設(shè)計(jì)為16位。原理框圖如圖2所示。邏輯接口部分采用fpga來(lái)實(shí)現(xiàn)。系統(tǒng)選用xilinx公司最新推出的90nm工藝制造的現(xiàn)場(chǎng)可編程門陣列芯片spartan-3來(lái)實(shí)現(xiàn)接口設(shè)計(jì),利用它的可編程性特性帶來(lái)了電路設(shè)計(jì)的簡(jiǎn)單化和調(diào)試的靈活性。

          flash讀接口設(shè)計(jì)

          該接口可實(shí)現(xiàn)單周期讀與塊讀功能,時(shí)序部分與wishbone兼容。由于采用的flash最大讀周期時(shí)間至少為90ns,故只有在總線時(shí)鐘工作在10mhz以下頻率時(shí)可以直接將ack_o端口與stb_i端口相聯(lián)。當(dāng)master(指令cache)發(fā)出塊讀信號(hào)時(shí),將發(fā)出一個(gè)lock_o=vih信號(hào)給總線仲裁器,要求總線能不間斷提供總線。其對(duì)slave(flash接口部分)控制信號(hào)為:
          we_i=vil,cyc_i=vih,stb_i=vih,byte=vih

          當(dāng)master結(jié)束塊讀時(shí)發(fā)出stb_o= vil信號(hào)即可。其輸出接口部分如圖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;
          endmodule

          flash寫接口設(shè)計(jì)

          因?yàn)閒lash寫命令需要多個(gè)時(shí)鐘周期時(shí)間,其中采用unlock bypass模式時(shí)為2個(gè)時(shí)鐘周期,采用正常寫模式需要4個(gè)時(shí)鐘周期,并且在對(duì)flash寫和擦寫時(shí)更是需要等待幾十微秒到幾秒鐘的時(shí)間,因此對(duì)接口slave必須引入寫或擦寫完成狀態(tài)信號(hào)來(lái)控制總線數(shù)據(jù)的傳輸。為簡(jiǎn)化設(shè)計(jì)采用ry/by引腳來(lái)判斷。輸出端口原理圖與圖3類似,只需對(duì)部分端口進(jìn)行修改即可。

          為了能夠?qū)K保護(hù)的程序代碼進(jìn)行升級(jí),特別設(shè)計(jì)了一個(gè)12v電源電路來(lái)實(shí)現(xiàn)暫時(shí)塊寫保護(hù)解除功能,如圖4所示。利用am29lv160d芯片提供的暫時(shí)塊寫保護(hù)解除模式——即通過(guò)對(duì)reset#引腳加vid電壓。在該模式下先前被保護(hù)的塊可以通過(guò)塊地址選中來(lái)進(jìn)行編程和擦除。并且一旦vid移除所有先前保護(hù)的塊恢復(fù)到保護(hù)狀態(tài)。

          圖4中rv控制信號(hào)處采用了r=5kω,c=100pf,以便使得vid電壓上升時(shí)間與下降時(shí)間≥500ns,從而滿足相應(yīng)的時(shí)序要求。肖特基二極管的引入保證了系統(tǒng)reset信號(hào)被鉗制在vcc+0.3v以內(nèi)??傮w上來(lái)說(shuō),該電源隔離電路的引入對(duì)整個(gè)系統(tǒng)的成本影響很小,而使系統(tǒng)可以在線編程被保護(hù)的flash存儲(chǔ)塊。

          在進(jìn)行flash編程時(shí)部分要用到命令總線時(shí)序定義,如表1所示。

          總結(jié)

          本文介紹了amd公司am29lv160d芯片特點(diǎn),并在此基礎(chǔ)上設(shè)計(jì)了基于wishbone總線的接口。該接口設(shè)計(jì)方法對(duì)其他相關(guān)soc總線接口設(shè)計(jì)具有直接的參考意義。



          關(guān)鍵詞:

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();