ISE關(guān)于Block-RAM的設(shè)計(jì)流程_第1頁
ISE關(guān)于Block-RAM的設(shè)計(jì)流程_第2頁
ISE關(guān)于Block-RAM的設(shè)計(jì)流程_第3頁
ISE關(guān)于Block-RAM的設(shè)計(jì)流程_第4頁
ISE關(guān)于Block-RAM的設(shè)計(jì)流程_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

7.4基于IPCore的BlockRAM設(shè)計(jì)

7.4基于IPCore的BlockRAM設(shè)計(jì)本節(jié)介紹基于IPCore的BlockRAM設(shè)計(jì),由于BlockRAM屬于特殊結(jié)構(gòu),使用Xilinx公司提供的IPCore是比較方便的,而且靈活、高效、不容易出錯(cuò)〔IPCore的使用請(qǐng)見節(jié)〕。雙端口塊RAM〔Dual-PortBlockRAM〕雙端口RAM的特性Virtex、Virtex-E、Virtex-II、Virtex-IIPro、Spartan、Spartan-II、Spartan-IIE和Spartan-3系列的FPGA都嵌入了BlockRAM。支持所有3種Virtex-II寫模式:Read-After-Write、Read-Before-Write和No-Read-On-Write〔只適用于Virtex-II和Spartan-3〕支持RAM和ROM功能。支持1到256BIT的數(shù)據(jù)端口寬度。根據(jù)選擇的不同結(jié)構(gòu),支持1到2M字的存儲(chǔ)深度。支持ROM功能,兩個(gè)端口可以同時(shí)對(duì)一個(gè)地址的數(shù)據(jù)進(jìn)行讀操作。支持RAM功能,兩個(gè)端口可以同時(shí)對(duì)不同的地址進(jìn)行寫操作,或者對(duì)同一地址進(jìn)行讀操作。兩個(gè)端口是完全獨(dú)立的。支持A、B端口的不對(duì)稱配置。支持CORE設(shè)計(jì)或者使用SelectRAM+、SelectRAM-II庫原語以求面積優(yōu)化。支持不同極性的控制信號(hào)引腳:時(shí)鐘〔clock〕、使能〔enable〕,寫使能〔writeenable〕和輸出初使化〔outputinitialization〕引腳。結(jié)合Xilinx的Smart-IP技術(shù)使設(shè)計(jì)更靈活,最優(yōu)化實(shí)現(xiàn)。2.雙端口RAM的功能描述Dual-PortBlockRAM是由一塊或多塊叫做Select-RAM+?的4Kb存儲(chǔ)塊組成的。Virtex-II和Spartan-3系列的Dual-PortBlockRAM是由一塊或多塊16Kb存儲(chǔ)塊〔SelectRAM-II?〕組成的,能構(gòu)成更寬或者更深的存儲(chǔ)器設(shè)計(jì)。Select-RAM+?和SelectRAM-II?都是真正的雙端口RAM,為Spartan-II和Virtex系列家族的芯片提供快速、離散的而且足夠大的塊RAM。因?yàn)镾partan-II和Virtex都使用4Kb的Select-RAM+?存儲(chǔ)塊,所以任何涉及到Virtex能實(shí)現(xiàn)的RAM,都可以在Spartan-II、Virtex-E、Virtex-II、Virtex-IIPro、Spartan-IIE系列中實(shí)現(xiàn)。 每個(gè)存儲(chǔ)器含有兩個(gè)完全獨(dú)立的端口A和B,兩個(gè)端口享有同時(shí)訪問存儲(chǔ)器中同一地址的能力,存儲(chǔ)器的深度和寬度由使用者自己定義。兩個(gè)端口在功能上是完全一樣,都可以對(duì)存儲(chǔ)器進(jìn)行讀寫操作。兩個(gè)端口可以同時(shí)對(duì)存儲(chǔ)器的同一地址進(jìn)行讀操作,如果對(duì)同一地址進(jìn)行操作,一個(gè)端口讀,一個(gè)端口寫,那么寫操作成功,而讀出的數(shù)據(jù)是無效的。

根據(jù)使用者的定義,可以配置端口A和端口B的數(shù)據(jù)寬度和地址寬度。當(dāng)兩個(gè)端口被禁用時(shí)〔ENA和ENB無效〕,存儲(chǔ)器中的數(shù)據(jù)和輸出端口將保持不變。當(dāng)兩個(gè)端口可用時(shí)〔ENA和ENB有效〕,對(duì)存儲(chǔ)器的所有操作將在輸入時(shí)鐘的邊沿觸發(fā)。進(jìn)行寫操作時(shí)〔WEA或WEB有效〕,相應(yīng)數(shù)據(jù)端口的數(shù)據(jù)將寫入地址端口所指定的存儲(chǔ)地址中。在這個(gè)操作中,Spartan-II/Virtex和Virtex-II系列的塊RAM的輸出端口的動(dòng)作并不相同。 Virtex-II和Spartan-3系列的塊RAM的輸出端口的具體實(shí)現(xiàn)要根據(jù)“寫模式”的設(shè)置而定。Virtex-II和Spartan-3系列的塊RAM支持3種“寫模式”,每種模式?jīng)Q定了輸出端口在寫操作發(fā)生后將如何作出反響。Spartan-II和Virtex系列的塊RAM只支持一種“寫模式”:Read-After-Write。這種寫模式使寫入的數(shù)據(jù)在寫操作后呈現(xiàn)在輸出端口。 在讀操作時(shí),地址輸入端口指定的地址上的數(shù)據(jù)在輸出端口輸出。當(dāng)同步初始化〔SynchronousInitialization(SINITA或SINITB)〕有效時(shí),有鎖存器的輸出端口將被同步初始化,Spartan-II和Virtex系列將被初始化為0,Virtex-II系列將被初始化為使用者事先定義的數(shù)據(jù)。同步初始化操作并不影響存儲(chǔ)器中的數(shù)據(jù),也不會(huì)與寫操作發(fā)生沖突。 使能,寫使能和同步初始化可以被定義為高電平有效或者低電平有效。3.雙端口RAM的引腳雙端口RAM的Core引腳如下圖。圖7.4.1雙端口RAM的引腳雙端口RAM的Core引腳的具體含義列表于表。端口名稱端口方向功能描述DIN[A|B]<n:0>可選輸入數(shù)據(jù)輸入:數(shù)據(jù)從此端口寫入存儲(chǔ)器。ADDR[A|B]<m:0>輸入地址輸入:寫或者讀操作的地址由此端口輸入。WE[A|B]可選輸入寫使能控制信號(hào):控制數(shù)據(jù)寫入存儲(chǔ)器。EN[A|B]可選輸入使能控制信號(hào):寫或者讀操作的有效控制。SINIT[A|B]可選輸入同步初始化控制信號(hào):使輸出端口初始化為預(yù)先設(shè)定的狀態(tài)。CLK[A|B]輸入時(shí)鐘信號(hào):所有存儲(chǔ)器操作是在輸入時(shí)鐘的同步下進(jìn)行的。ND[A|B]可選輸入握手信號(hào):表示A或者B端口上有新的而且有效的地址數(shù)據(jù)。(高電平有效)。DOUT[A|B]<n:0>可選輸出數(shù)據(jù)輸出端口:存儲(chǔ)器的同步數(shù)據(jù)輸出端口。RFD[A|B]可選輸出握手信號(hào):表示存儲(chǔ)器已經(jīng)準(zhǔn)備好接受新數(shù)據(jù)。(高電平有效)RDY[A|B]可選輸出握手信號(hào):表示輸出端口上的數(shù)據(jù)有效。(高電平有效)。7.4.2使用IPCore生成雙端口RAM

Xilinx提供了Dual-PortBlockRAM的IPCore。具體如何調(diào)用IPCore、生成IPCore見節(jié)。這里介紹具體的一些IPCore參數(shù),設(shè)計(jì)者可以根據(jù)設(shè)計(jì)的需要設(shè)置這些參數(shù)。 Dual-PortBlockRAM的參數(shù)設(shè)置窗口分別如圖、圖、圖、圖所示。Dual-PortBlockRAM的參數(shù)設(shè)置一共有4個(gè)窗口,可以單擊按鈕進(jìn)入下一個(gè)窗口。圖7.4.2Dual-PortBlockRAM的參數(shù)設(shè)置窗口圖7.4.3PortABlockRAM的參數(shù)設(shè)置窗口圖7.4.4PortBBlockRAM的參數(shù)設(shè)置窗口圖7.4.5Dual-PortBlockRAM的參數(shù)設(shè)置窗口元件名稱〔ComponentName〕:為了生成IPCore,必須為生成的文件取一個(gè)名稱。端口A存儲(chǔ)器大小〔MemorySize〕:數(shù)據(jù)端口A寬度〔WidthA〕:可以選擇數(shù)據(jù)端口A的寬度,寬度可以從1到256。地址端口A深度〔DepthA〕:可以選擇存儲(chǔ)器的字節(jié)數(shù)。根據(jù)所選擇的不同結(jié)構(gòu),字節(jié)數(shù)可以從2BIT到2M??梢赃x擇的地址深度要根據(jù)所選擇的數(shù)據(jù)端口A的寬度而定。Spartan-II和Virtex系列的塊RAM的最大字節(jié)數(shù)為256K,Virtex-II和Spartan-3系列的塊RAM的最大字節(jié)數(shù)為1M。必須注意生成的CORE的大小不能超過目標(biāo)器件庫原語的大小端口B存儲(chǔ)器大小〔MemorySize〕:數(shù)據(jù)端口B寬度〔WidthB〕:可以選擇數(shù)據(jù)端口B的寬度,可以選擇的數(shù)據(jù)端口B的寬度取決于定義的數(shù)據(jù)端口A的寬度。對(duì)于Spartan-II和Virtex系列的塊RAM,能夠選擇的寬度可以是1,2,4,8或16倍A端口的寬度。對(duì)于Virtex-II系列的塊RAM,能夠選擇的寬度可以是1,2,4,8,16或32倍A端口的寬度。地址端口B深度〔DepthB〕:定義了WidthA、DepthA和WidthB后,DepthB的值將為定值。根據(jù)端口A和B定義的存儲(chǔ)器的大小必須相等可以計(jì)算出DepthB。端口A可選項(xiàng)〔PortAOptions〕:配置〔Configuration〕選項(xiàng):可以選擇的有ReadAndWrite〔讀和寫〕,WriteOnly〔只寫〕和ReadOnly〔只讀〕。寫模式(Writemode)選擇:可以為Virtex-II系列的塊RAM選擇寫模式。Spartan-II和Virtex系列的塊RAM只支持ReadAfterWrite模式。ReadAfterWrite模式〔支持的有Virtex-II、Spartan-II、Spartan-3、Virtex〕,可能有下面幾種情況:沒有輸入輸出存放器時(shí):數(shù)據(jù)在WEA信號(hào)有效后的第一個(gè)時(shí)鐘沿傳送到端口DOUTA。僅有輸入存放器時(shí):數(shù)據(jù)在WEA信號(hào)有效后的第二個(gè)時(shí)鐘沿傳送到端口DOUTA。僅有輸出存放器時(shí):數(shù)據(jù)在WEA信號(hào)有效后的第二個(gè)時(shí)鐘沿傳送到端口DOUTA。有輸入和輸出存放器時(shí):數(shù)據(jù)在WEA信號(hào)有效后的第三個(gè)時(shí)鐘沿傳送到端口DOUTA。ReadAfterWrite模式的時(shí)序如下圖。圖7.4.6ReadAfterWrite模式時(shí)序ReadBeforeWrite模式〔支持的有Virtex-II、Spartan-3〕,可能有下面幾種情況:沒有輸入輸出存放器時(shí):在WEA信號(hào)有效后的第一個(gè)時(shí)鐘沿,存儲(chǔ)器中當(dāng)前地址上的數(shù)據(jù)被傳送到端口DOUTA。僅有輸入存放器時(shí):在WEA信號(hào)有效后的第二個(gè)時(shí)鐘沿,存儲(chǔ)器中當(dāng)前地址上的數(shù)據(jù)被傳送到端口DOUTA。僅有輸出存放器時(shí):在WEA信號(hào)有效后的第二個(gè)時(shí)鐘沿,存儲(chǔ)器中當(dāng)前地址上的數(shù)據(jù)被傳送到端口DOUTA。有輸入和輸出存放器時(shí):在WEA信號(hào)有效后的第三個(gè)時(shí)鐘沿,存儲(chǔ)器中當(dāng)前地址上的數(shù)據(jù)被傳送到端口DOUTA。圖7.4.7ReadBeforeWrite模式時(shí)序No-Read-On-Write模式〔支持的有Virtex-II、Spartan-3〕:當(dāng)WEA有效時(shí),不會(huì)進(jìn)行讀操作。DOUTA端口將保持上一次讀操作的數(shù)據(jù)。No-Read-On-Write模式時(shí)序如下圖。圖7.4.8No-Read-On-Write模式時(shí)序端口B可選項(xiàng)〔PortBOptions〕:端口B可選項(xiàng)與端口A可選項(xiàng)相同。端口A設(shè)計(jì)選項(xiàng)〔PortADesignOptions〕:1可選引腳端〔OptionalPins〕:a.使能引腳端。b.握手信號(hào)引腳端。包括ND、RFD、RDY信號(hào),它們的含義如表所示。需要注意的是,ND信號(hào)必須在RFD有效時(shí)才能有效。RFD信號(hào)在EN信號(hào)有效時(shí)一直是有效的??蛇x輸入存放器〔RegisterOptions〕:可以為端口DIN、ADDR和WE添加輸入存放器??蛇x輸出存放器〔OutputRegisterOptions〕:a.AdditionalOutputPipeStages:選擇‘1’可以為輸出端口再增加一級(jí)存放器,選擇‘0’不加存放器。b.初始化〔SINIT〕引腳:SINIT引腳的含義見表。引腳極性〔PinPolarity〕:使用者可以為存在的引腳極性配置。對(duì)于時(shí)鐘信號(hào),可以配置成上升沿或下降沿觸發(fā)。對(duì)于EN、WE和SINIT引腳端,可以配置成高電平或低電平有效。端口B可選項(xiàng)〔PortBOptions〕:端口B可選項(xiàng)與端口A可選項(xiàng)相同。庫原語選擇〔PrimitiveSelection〕:有兩項(xiàng)可供選擇。面積優(yōu)化〔OptimizeForArea〕。選擇庫原語〔SelectPrimitive〕。Virtex、Virtex-E和Spartan-II的庫原語有4kx1,2kx2,1kx4,512x8和256x16。Virtex-II的庫原語有16kx1,8kx2,4kx4,2kx9,1kx18,和512x36.初始化〔InitialContents〕:可以設(shè)置配置后存儲(chǔ)器中的初始值。全局初始化值〔GlobalInitValue〕:全局初始化值定義了配置后存儲(chǔ)器中初始值。缺省〔默認(rèn)〕為‘0’。注意輸入的值必須是16進(jìn)制,并且其大小不能超過A端口能輸入的最大值。加載初始化文件〔LoadInitFile〕:存儲(chǔ)器中的初始值可以保存在一個(gè)以COE為后綴的文件中,加載這個(gè)文件可以使存儲(chǔ)器在配置后,各個(gè)單元的初始值為文件中所列出的值。7.4.3使用MemoryEditor生成COE文件前面提到,可以為雙端口RAM提供一個(gè)初始化數(shù)據(jù)文件,加載這個(gè)文件可以使RAM在配置后,各個(gè)單元的初始值為文

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論