專利名稱::基于存儲器知識產(chǎn)權(quán)核的嵌入式可編程存儲器的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及微電子學(xué)
技術(shù)領(lǐng)域:
,尤其涉及一種基于存儲器知識產(chǎn)權(quán)核的嵌入式可編程存儲器。
背景技術(shù):
:在電子系統(tǒng)的設(shè)計中,存儲器應(yīng)用得越來越廣泛。在設(shè)計片上系統(tǒng)(System-on-a-Chip,SoC)時,常常需要使用嵌入式存儲器。在SoC中設(shè)計嵌入式存儲器有兩種方法,一是全定制設(shè)計;二是使用第三方芯片設(shè)計服務(wù)公司(簡稱第三方,如Artisan公司)提供的存儲器知識產(chǎn)權(quán)核(IntellectualPropertyCore,IPCore)來設(shè)計。兩種方法各有優(yōu)缺點,全定制設(shè)計性能好,功能豐富,但技術(shù)要求高,設(shè)計周期長;基于IP核的方法容易實現(xiàn),設(shè)計周期短,但受到第三方提供的IP核的一些限制。在一些可編程芯片(如現(xiàn)場可編程邏輯陣列芯片和可編程片上系統(tǒng))的設(shè)計中,對嵌入式存儲器往往有工作模式和訪問位寬等可編程需求,這種可編程的特性能顯著的提高最終用戶的工作效率。全定制雖然能夠解決這些可編程的問題,但設(shè)計周期長,技術(shù)難度大;而直接使用IP核的方式快捷方便,但難滿足設(shè)計需求。雙端口靜態(tài)隨機存儲器IP核(DP-SRAMIPCore,以下簡稱IP核或IP)在生成之后,其兩個端口的數(shù)據(jù)位寬就已經(jīng)固定,不能再通過編程方式來改變;其基于時鐘的讀寫保護機制(如Artisan文獻〈1>中的DPCCM機制),能保證在同一時刻讀寫同一行地址的時候,保護寫操作,但卻不能保證讀操作的可靠性。在以往的技術(shù)中(此類技術(shù)通常采用如圖1的方案設(shè)置兩套數(shù)據(jù)旁路和數(shù)據(jù)鎖存,在兩個端口都使用一套緩存寄存器,兩個端口的緩存寄存器之間要進行數(shù)據(jù)的交換,需要緩存地址總線所有位的地址而不是部分地址,輸出邏輯要做全地址比較,輸出的數(shù)據(jù)要經(jīng)過大的組合邏輯交織后才輸出),使用Bypass旁路和鎖存方式來提供部分的可編程功能,但是設(shè)計偏復(fù)雜,信號的關(guān)鍵路徑長(如圖1中長的關(guān)鍵路徑PATH1和PATH2),工作速度慢。本發(fā)明利用第三方提供的Memory-Compiler軟件工具生成雙端口靜態(tài)隨機存儲器IP核,通過增加一種外圍緩存和控制等電路,設(shè)計和實現(xiàn)了一種嵌入式可編程存儲器(以下簡稱可編程存儲器或存儲器)。該設(shè)計既避免了全定制方式的設(shè)計復(fù)雜性,又克服了IP核自身的不足,使存儲器性能比已有方案好,且電路比已有方案簡單,實現(xiàn)了應(yīng)用上的可編程,并且支持多種工作模式。
發(fā)明內(nèi)容(—)要解決的技術(shù)問題有鑒于此,本發(fā)明的主要目的在于提供一種基于存儲器知識產(chǎn)權(quán)核的嵌入式可編程存儲器,以提供可編程機制,支持用戶對其位寬、工作模式和同步/異步輸出等進行可編程設(shè)計,支持包模式、單端口、簡單雙端口和真雙端口等工作模式。(二)技術(shù)方案為達到上述目的,本發(fā)明提供了一種基于存儲器知識產(chǎn)權(quán)核的嵌入式可編程存儲器,包括DP-SRAMIP、A端口輸入邏輯、B端口輸入邏輯、A端口輸出邏輯、B端口輸出邏輯、控制模塊、數(shù)據(jù)寄存器、標(biāo)志寄存器和地址寄存器;其中,DP-SRAMIP是利用Memory-Compiler生成的雙端口靜態(tài)隨機存儲器IP核;A端口輸入邏輯和B端口輸入邏輯用于將可編程存儲器A/B端口輸入的數(shù)據(jù)進行轉(zhuǎn)換以符合IP核對數(shù)據(jù)的要求;A端口輸出邏輯和B端口輸出邏輯用于組合IP兩個端口輸出的數(shù)據(jù)和數(shù)據(jù)寄存器的數(shù)據(jù),然后送到可編程存儲器輸出;控制模塊用于通過比較地址和讀寫指示信號,來控制數(shù)據(jù)的流向;數(shù)據(jù)寄存器是N比特的寄存器,用于保存數(shù)據(jù)寄存器在發(fā)生第一次讀寫沖突后的任一時刻通過可編程存儲器A/B端口寫入到IP核中某行N比特的部分或全部的最新數(shù)據(jù);標(biāo)志寄存器是N比特的,用于標(biāo)明數(shù)據(jù)緩沖器中對應(yīng)比特是否是最新的有效數(shù)據(jù);地址寄存器用于保存數(shù)據(jù)寄存器中的數(shù)據(jù)對應(yīng)在IP核的m比特地址值。上述方案中,所述DP-SRAMIP是一個通用的雙端口同步靜態(tài)存儲器知識產(chǎn)權(quán)核,其端口數(shù)據(jù)位存儲寬度為N,存儲深度為M,地址總線位寬m為ceil(log2M),ceil為向上取整函數(shù),在考慮訪問位寬編程為一比特的情況,最大地址為MXN,可編程存儲器的地址總線位寬t為ceil(log2(MXN))。上述方案中,所述端口數(shù)據(jù)位存儲寬度N為36,存儲深度M為128。上述方案中,所述數(shù)據(jù)寄存器由N比特組成,用于保存IP中的某一行的全部或者部分數(shù)據(jù);當(dāng)存儲器的兩個端口同時對IP核的某一行進行至少一個是寫操作的讀寫訪問時,數(shù)據(jù)寄存器緩存其中一個端口的寫數(shù)據(jù);假若此時存儲器中已經(jīng)有數(shù)據(jù),則兩種可能處理方法,一是已有數(shù)據(jù)和新數(shù)據(jù)是對應(yīng)于IP核的同一行,則用新的數(shù)據(jù)更新存儲器;二是如果不同行,則原有數(shù)據(jù)寫入IP核,新數(shù)據(jù)寫入寄存器。上述方案中,所述標(biāo)志寄存器由N比特組成,每一比特指示數(shù)據(jù)寄存器的對應(yīng)位置的數(shù)據(jù)是否真實有效。上述方案中,所述標(biāo)志寄存器與數(shù)據(jù)寄存器保持同步關(guān)系,端口向數(shù)據(jù)寄存器寫入數(shù)據(jù)時,也要置標(biāo)志寄存器的對應(yīng)位為高;同樣,在數(shù)據(jù)寄存器向IP核寫入數(shù)據(jù)后,也同時把標(biāo)志寄存器的所有位清零,待下一次再向數(shù)據(jù)寄存器寫入數(shù)據(jù)時再設(shè)置相應(yīng)的標(biāo)志位。上述方案中,所述地址寄存器由m比特組成,當(dāng)數(shù)據(jù)寄存器保存了有效數(shù)據(jù)時,地址寄存器記錄下該行的地址值;數(shù)據(jù)寄存器緩存數(shù)據(jù),地址寄存器指明該緩存數(shù)據(jù)的對應(yīng)于IP核的存儲地址,而標(biāo)志寄存器則指明N位的數(shù)據(jù)寄存器中那些位是有效的;兩個端口進行讀寫操作時,先把地址的高m位與m位的緩存地址進行比較。上述方案中,該嵌入式可編程存儲器支持用戶的對其位寬、端口數(shù)量、同步/異步輸出等屬性的可編程設(shè)計,支持包模式、單端口、簡單雙端口和真雙端口等工作模式,采用兩個端口共用的一個N位的數(shù)據(jù)寄存器來緩存兩個端口產(chǎn)生讀寫沖突時的寫數(shù)據(jù),采用兩個端口共用的一個N位的標(biāo)志寄存器來標(biāo)明數(shù)據(jù)寄存器中有效數(shù)據(jù)位,采用兩個端口共用的一個m位的地址寄存器來鎖存數(shù)據(jù)對于該存儲器的行地址。上述方案中,該嵌入式可編程存儲器能夠?qū)ν坏刂返牟煌糠滞瑫r進行讀寫操作,具體通過以下方式實現(xiàn)對同一地址的一讀一寫操作,立即執(zhí)行讀操作,緩存寫的內(nèi)容;如果寫的地址與地址寄存器緩存的地址相同,則更新;如不相同,則緩存中原有數(shù)據(jù)寫入IP核,新數(shù)據(jù)寫入緩存;或者對同一地址的兩個端口同時寫操作;如果與地址寄存器緩存的地址相同,則把A端口的寫數(shù)據(jù)和緩存的數(shù)據(jù)合并,一起通過A端口寫入IP核;如果不相同,則把緩存中的數(shù)據(jù)寫入IP,A端口的數(shù)據(jù)寫入緩存。上述方案中,該嵌入式可編程存儲器在兩個端口對某一行的讀寫產(chǎn)生沖突時,數(shù)據(jù)緩存機制能保證對寫入數(shù)據(jù)進行有效存儲,數(shù)據(jù)寄存器作出相應(yīng)的動作來保持數(shù)據(jù)的最新性和標(biāo)志寄存器的有效性;在讀該行的數(shù)據(jù)時,數(shù)據(jù)緩存機制保證讀出最有效的數(shù)據(jù),數(shù)據(jù)寄存器中的最新數(shù)據(jù)始終有優(yōu)先輸出權(quán),保證和IP核輸出的數(shù)據(jù)通過組合后的真實有效性。(三)有益效果從上述技術(shù)方案可以看出,本發(fā)明具有以下有益效果1、本發(fā)明提供的這種基于存儲器知識產(chǎn)權(quán)核的嵌入式可編程存儲器,提供可編程機制,支持用戶對其位寬、工作模式和同步/異步輸出等進行可編程設(shè)計,支持包模式、單端口、簡單雙端口和真雙端口等工作模式。2、在實現(xiàn)靈活的可編程機制的同時,顯著地提高電路的工作速度。常規(guī)的設(shè)計實現(xiàn)原理如圖l所示,該圖中,在讀數(shù)據(jù)的輸出路徑上存在圖中標(biāo)識為粉紅色和藍色的兩條較關(guān)鍵的時序路徑,特別是藍色路徑,在無寄存器輸出的異步模式下,包括端口的輸入路徑延時和輸出路徑延時,還有地址比較和輸出數(shù)據(jù)配置等大量的組合邏輯,這極大的影響了常規(guī)的實現(xiàn)方案的最高工作速度。本發(fā)明采用數(shù)據(jù)寄存器、地址寄存器和標(biāo)志寄存器,僅僅是高位的行地址比較,相對與常規(guī)方案的行列地址比較而言,比較結(jié)果延時要小很多;在地址比較后,只需要用標(biāo)志寄存器對數(shù)據(jù)寄存器和IP核輸出的數(shù)據(jù)位做一個二選一即可以輸出,相對于常規(guī)方案做各種位寬模式下的復(fù)雜的數(shù)據(jù)交織方案而言,傳播延時大大的縮小。正是由于采用了標(biāo)志寄存器等組成的緩存機制,該方案的時序關(guān)鍵路徑比常規(guī)方案的關(guān)鍵路徑大為縮減,工作速度能夠顯著提高。3、在實現(xiàn)靈活的可編程機制的同時,電路實現(xiàn)占用更小的面積,具有成本優(yōu)勢。如圖3所示,本發(fā)明提供的這種基于存儲器知識產(chǎn)權(quán)核的嵌入式可編程存儲器,由于只采用一套緩存電路,相對于常規(guī)方案的兩個端口兩套緩存電路而言,使用寄存器的數(shù)量減少大約一半;對于輸出邏輯,由于去掉了復(fù)雜的數(shù)據(jù)交織,輸送部分的組合邏輯大幅度的減少。綜合和布局布線的結(jié)果標(biāo)明,兩種方案在除去IP核之外的邏輯的面積,該發(fā)明的方案的硅實現(xiàn)面積僅僅為常規(guī)方案的三分之一左右。4、本發(fā)明提供的這種基于存儲器知識產(chǎn)權(quán)核的嵌入式可編程存儲器,具有設(shè)計上的簡便性。常規(guī)的方案使用兩套緩存電路,在讀寫數(shù)據(jù)的時候,要仔細考慮每個端口和其緩存、和兩套緩存電路之間的復(fù)雜的數(shù)據(jù)流處理機制,在存儲器的兩個端口處于異步時序環(huán)境是,此設(shè)計更為復(fù)雜。新的方案只使用一套緩存電路,不存在兩套緩存電路時間的數(shù)據(jù)流動問題;該緩存電路在緩存某個端口的數(shù)據(jù)時,使用該端口的時鐘,將異步設(shè)計中的跨時鐘域問題簡化。5、本發(fā)明提供的這種基于存儲器知識產(chǎn)權(quán)核的嵌入式可編程存儲器,與常規(guī)的方案比較,消耗的功率更小。由于使用的寄存器數(shù)量減少約一半,非IP的組合邏輯減少為三6分之一,數(shù)據(jù)交換的活動減少,所以,新方案的功耗減少一半左右。6、本發(fā)明提供的這種基于存儲器知識產(chǎn)權(quán)核的嵌入式可編程存儲器,具有更好的穩(wěn)定性。新方案只使用一套緩存電路,由于針對每一個比特引入了標(biāo)志寄存器,使得新方案的結(jié)構(gòu)更為簡明;同時時序邏輯和組合邏輯的減少,使得電路驗證的復(fù)雜度降低,可測性提高。圖1是現(xiàn)有的雙端口緩存機制的嵌入式可編程存儲器的結(jié)構(gòu)示意圖2是可編程存儲器的符號;圖3是本發(fā)明提供的基于存儲器知識產(chǎn)權(quán)核的嵌入式可編程存儲器的功能方塊圖;圖4是一個通用的存儲器IP的符號和管腳;圖5是存儲器IP的地址映射關(guān)系的示意圖6是包模式下的存儲空間映射關(guān)系的示意圖7是緩存控制機制的示意圖8是緩存處理的流程圖9是數(shù)據(jù)輸出的示意圖。具體實施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,以下結(jié)合具體實施例,并參照附圖,對本發(fā)明進一步詳細說明。本發(fā)明的核心思想是利用添加的寄存器緩存有沖突的數(shù)據(jù)和地址,利用數(shù)據(jù)位的標(biāo)志位、和讀寫沖突檢測與保護機制來實現(xiàn)可編程的存儲器,既有設(shè)計上的簡便性,又有功能上的靈活性,對常規(guī)的存儲器功能做了很多擴展。本發(fā)明列舉了工作模式和訪問位寬等可編程的參數(shù),這些參數(shù)在一些現(xiàn)場可編程邏輯門陣列(FieldProgrammableGateArray,FPGA)的器件手冊中(如文獻〈2>)已經(jīng)有所描述,不屬于本發(fā)明;但本發(fā)明包括對這些可編程參數(shù)的實現(xiàn)機制。本發(fā)明之所以引用這些參數(shù),是為了方便描述這些參數(shù)的實現(xiàn)機制。同時,這些實現(xiàn)機制除了以下列舉的幾個參數(shù)外,還可以包括其他一些沒列舉的參數(shù)和模式。本發(fā)明提供的基于存儲器知識產(chǎn)權(quán)核的嵌入式可編程存儲器,此IP核的端口存儲寬度為N,深度為M,地址總線位寬m為Ceil(log2M),ceil為向上取整函數(shù)。在考慮訪問位寬編程為一比特的情況,最大地址為MXN,故可編程存儲器的地址總線位寬t為ceil(log2(MXN))??删幊檀鎯ζ鞯目删幊虜?shù)據(jù)位寬和IP的數(shù)據(jù)總線位寬相同,但可編程存儲器有效數(shù)據(jù)位的位寬L(L<=N)在不使用奇偶校驗位時的幾種典型情況分別是2°、21.......和2n比特的共計n+l個位寬模式,編程后無效的數(shù)據(jù)位(N-L位)接地;對數(shù)據(jù)典型位寬的可編程管腳的位寬k為ceil(log2(n+l));字節(jié)使能的位寬p為N/9?!懙倪^程在發(fā)生讀寫操作沖突時,由于讀操作要優(yōu)先訪問IP核,以滿足讀出數(shù)據(jù)的時序要求,所以寫操作必須緩存,端口把數(shù)據(jù)寫入存儲器的處理過程如下1)外部把數(shù)據(jù)、地址、讀寫指示信號、時鐘等送到可編程存儲器的端口。2)在包模式下,兩個端口分別訪問IP的不同地址空間區(qū)域;單端口模式下,只有一個端口能夠訪問IP;所以,在任一時刻對IP的某一行地址只有一種操作,不會出現(xiàn)同時讀寫同一行的有沖突操作的情況,不需要緩存數(shù)據(jù),所有的寫操作直接寫入到IP核中。其寫的過程是截取存儲器地址信號的高m位送給IP核的地址總線,把外部的時鐘送IP核的時鐘端口;根據(jù)輸入的地址信號的低(t-m)位,把存儲器端口的L位數(shù)據(jù)經(jīng)過處理,送到IP核的N位寬的數(shù)據(jù)輸入總線上(在任一時刻,IP的(N-L)位位寬的數(shù)據(jù)總線不使用);同時根據(jù)輸入的地址的低(t-m)位設(shè)置IP核端口的N位的讀寫指示信號,使之與數(shù)據(jù)的有效位一一對應(yīng),確保每一個數(shù)據(jù)比特的正確寫入。3)在簡單雙端口模式下,只有A端口執(zhí)行寫操作。A端口在寫時,先判斷是否與執(zhí)行讀操作的B端口訪問IP的同一行地址空間。如果訪問的是同一行,則對于寫操作要做緩存處理。簡單雙端口的緩存處理機制,先比較寫的高m位地址與地址寄存器的地址是否相同。若相同,則把A端口的數(shù)據(jù)根據(jù)所配置的位寬和地址的低(t-m)位寫入數(shù)據(jù)寄存器中的相應(yīng)位置;若不相同,則把緩存中的數(shù)據(jù)寫入IP核中,同時清空標(biāo)志寄存器;再把端口的數(shù)據(jù)寫入數(shù)據(jù)寄存器中,同時更新標(biāo)志寄存器和地址寄存器。此處可參考"具體實施方式"部分的"緩存控制機制"和"數(shù)據(jù)、標(biāo)志位和地址緩存寄存器"等章節(jié)。4)真雙端口模式下,A端口和B端口都可以執(zhí)行讀/寫操作。A端口或B端口在寫時,如果另外一個端口是讀,其處理機制類似與上面提到的簡單雙端口的緩存處理機制。在A端口和B端口同時執(zhí)行對同一地址的寫操作時,需要把A端口的地址和地址寄存器的地址再比較,其處理機制略為復(fù)雜,可以參考圖7和圖8。二、讀的過程在發(fā)生讀寫沖突時,讀操作有訪問IP核的優(yōu)先權(quán),端口把數(shù)據(jù)讀出存儲器的處理過程如下1)外部把地址、讀寫指示信號、時鐘等送到可編程存儲器的端口。2)在包模式或單端口模式下,不會產(chǎn)生讀寫沖突,不需要緩存寫的數(shù)據(jù),所有的讀操作直接使用從IP核中讀出的數(shù)據(jù)。其過程是截取地址總線的高m位送給IP核的m位地址總線,把外部的時鐘送IP核心的時鐘端口,根據(jù)輸入的地址的低(t-m)位把IP核輸出的N位數(shù)據(jù)經(jīng)過處理送到可編程存儲器的N位數(shù)據(jù)總線中的有效的低L位總線上輸出,編程后的高(N-L)位數(shù)據(jù)輸出總線接地。3)在簡單雙端口模式下,只有B端口執(zhí)行讀操作。B端口首先把讀的地址高m位和地址寄存器寄存的地址作比較,如果相同,則把數(shù)據(jù)寄存器的數(shù)據(jù)和IP核讀出的數(shù)據(jù)組合。采用數(shù)據(jù)寄存器優(yōu)先原則,即在輸出某一位數(shù)據(jù)時,如果該位的標(biāo)志寄存器的標(biāo)志有效,則輸出此位在數(shù)據(jù)寄存器的值;否則,輸出IP核讀出的此位的值。此處可以參考"具體實施方式"部分的"數(shù)據(jù)的輸出"章節(jié)和圖9。4)在真雙端口模式下,兩個端口都可以執(zhí)行讀操作,但是不會產(chǎn)生沖突。此時,讀操作的處理流程與簡單雙端口模式下一致。三、用戶可編程的參數(shù)1)工作模式用戶通過設(shè)置兩比特的可編程的模式(mode)管腳來配置該嵌入式可編程存儲器8的工作模式,其支持的工作模式包括包模式、單端口模式、簡單雙端口模式和真雙端口等四種模式。2)A端口/B端口的位寬用戶通過配置可編程管腳PA和PB,可以對每個端口的讀寫數(shù)據(jù)的寬度進行編程,而且可以在電路工作的過程中再編程。假設(shè)IP的數(shù)據(jù)位寬N為2n+2(n—3)位,其中的2(n—3)位用于存儲奇偶校驗輔助位。則該嵌入式存儲器的A端口和B端口的數(shù)據(jù)位寬可編程為小于等于該IP端口的數(shù)據(jù)位寬N的任一位寬,幾個典型位寬為20、21.......和2在使用奇偶校驗位時,每八位添加一位奇偶校驗輔助位,所以,當(dāng)1!大于3時、有23+1、24+2.......和2n+2(n—3)等帶有奇偶校驗位的位寬模式。3)數(shù)據(jù)同步/異步輸出用戶可以通過編程選擇讀出的數(shù)據(jù)是同步輸出還是異步輸出,synA/synB設(shè)置為高的時候,表示可編程存儲器的數(shù)據(jù)采用同步輸出方式;否則,是異步輸出方式。下面本發(fā)明以一個容量為MXN比特的可編程存儲器為例,采用一個通用的雙端口靜態(tài)隨機存儲器IP核,結(jié)合附圖和表,對本發(fā)明的技術(shù)方案實施進行詳細的說明。1、系統(tǒng)的符號和功能方塊圖1)符號和管腳為了表述本發(fā)明的方便,特列舉一個典型的嵌入式可編程存儲器,其電路符號如圖2,在圖中,標(biāo)出了該發(fā)明所涉及到的部分的輸入輸出管腳;同樣,為了表述方便,給每個管腳具體的命名如表l,表1是可編程的存儲器的管腳描述。<table>tableseeoriginaldocumentpage9</column></row><table><table>tableseeoriginaldocumentpage10</column></row><table>表12)功能方塊圖圖3是通過增加外圍緩存電路和控制電路來實現(xiàn)可編程存儲器的系統(tǒng)框圖。DP-SRAMIP是指利用Memory-Compiler生成的雙端口靜態(tài)隨機存儲器IP核;A/B端口輸入邏輯把可編程存儲器A/B端口輸入的數(shù)據(jù)進行轉(zhuǎn)換以符合IP核對數(shù)據(jù)的要求;A/B端口輸出邏輯組合IP兩個端口輸出的數(shù)據(jù)和數(shù)據(jù)寄存器的數(shù)據(jù),然后送到可編程存儲器輸出;控制模塊通過比較地址和讀寫指示信號,來控制數(shù)據(jù)的流向。數(shù)據(jù)寄存器是N比特的寄存器,數(shù)據(jù)寄存器在發(fā)生第一次讀寫沖突后的任一時刻保存了通過可編程存儲器A/B端口寫入到IP核中某行N比特的部分或全部的最新數(shù)據(jù);標(biāo)志寄存器是N比特的,標(biāo)明數(shù)據(jù)緩沖器中對應(yīng)比特是否是最新的有效數(shù)據(jù);地址寄存器保存數(shù)據(jù)寄存器中的數(shù)據(jù)對應(yīng)在IP核的m比特地址值。2、通用的雙端口靜態(tài)隨機存儲器IP核在該發(fā)明中需要使用雙端口靜態(tài)隨機存儲器,圖4是一個通用的雙端口同步靜態(tài)存儲器,該IP核的端口數(shù)據(jù)位寬N為三十六,存儲深度M為一百二十八,管腳描述如表2,表2是一個通用IP核的管腳描述。<table>tableseeoriginaldocumentpage10</column></row><table><table>tableseeoriginaldocumentpage11</column></row><table>表23、地址映射關(guān)系存儲器提供20、21、22、23或23+l......和2n或2n+2(n—3)等多種數(shù)據(jù)位寬的典型引用;相應(yīng)的地址總線需要t位至m位不等;該發(fā)明使用地址的高m位表示行,低(t_m)位表示列。對于不同的數(shù)據(jù)位寬模式,用戶訪問存儲器空間的地址eA,其中eA〈t-l:t-m〉表示行,eA〈t-m-l:0〉表示列。在位寬2n(n>1)的模式下,不需要使用全部的地址總線,此時eA〈t-l:t-m>表示行,eA〈t-m_l:n>表示列,地址總線eA〈n_l:0>空閑不用。4、數(shù)據(jù)和地址的轉(zhuǎn)換因為IP核的數(shù)據(jù)總線(DA/DB)和地址總線(AA/AB)與可編程存儲器的數(shù)據(jù)(eDA/eDB)和地址總線(eAA/eAB)的總線位寬不一致,所以,可編程存儲器輸入的數(shù)據(jù)和地址總線要經(jīng)過處理后才能送給IP核。該例中IP的數(shù)據(jù)總線位寬為N位,共有M行,所以需要m位的地址總線,每個地址對應(yīng)于N比特,外部輸入的數(shù)據(jù)和地址要經(jīng)過處理后,才能送給存儲器IP核。假設(shè)可編程存儲器A端口在位寬為L位的一個寫操作,根據(jù)eAA〈m-l:log2(L)>,把外部數(shù)據(jù)總線上輸入的eDA〈L-l:0〉送到IP核的數(shù)據(jù)輸入總線DA〈N_1:0>的相應(yīng)比特位上。表3列出在該位寬模式下的處理機制。至于讀操作,也通過類似的處理,根據(jù)eAA〈m-l:log2(L)>,對IP讀出的數(shù)據(jù)QA〈N_1:0>做相應(yīng)的轉(zhuǎn)換后,輸出到可編程存儲器A端口的數(shù)據(jù)輸出總線eQA〈L-l:0>上。表3是數(shù)據(jù)和讀寫使能線。<table>tableseeoriginaldocumentpage11</column></row><table>表35、可編程的工作模式的實現(xiàn)1)包模式包模式是兩個單端口模式的組合,當(dāng)兩個工作在單端口模式下的且每個容量不大于MXN/2比特的存儲器可以合并使用一個容量為MXN的可編程存儲器。在大量使用小容量存儲器的應(yīng)用中,包模式可以顯著的提高存儲空間的利用率,使存儲器的效能最大化。包模式下,一個可編程存儲器可以用作兩個獨立工作的單端口存儲器,每個獨立的存儲器有一套完整的時鐘、讀寫指示、數(shù)據(jù)、和地址等總線,最大支持N/2位的數(shù)據(jù)訪問寬度。包模式下的地址與存儲空間映射關(guān)系如圖6。MXN的IP存儲空間,A端口使用IP的行地址為0至M/2-l的上半部分存儲空間;B端口使用M/2至M的下半部分存儲空間。兩個部分獨立工作,互不相關(guān)。包模式兩個端口訪問各自的存儲區(qū),不會產(chǎn)生讀寫沖突,不需要進行數(shù)據(jù)地址的緩存,在該模式下,可以不使用緩沖器和數(shù)據(jù)地址寄存器。包模式下每個端口訪問MXN/2比特的地址空間,在該模式下,eAA〈0>不使用,使用地址總線eAA〈t-l:1>,其中eAA〈t-l:t_m>表示行地址,eAA〈t-m-l:1>表示列地址。與其他模式一樣,在配置成大于1的多位寬的典型應(yīng)用下,低位的地址總線不使用。2)單端口在單端口工作模式下,只使用A端口進行讀寫操作。通過設(shè)置cenB信號為高,使B端口不工作。同樣,單端口模式不存在兩個端口對同一行地址的同時讀寫操作,所以,不需要使用數(shù)據(jù)寄存器和地址寄存器等緩存機制。單端口的最大訪問位寬為N,此時,A端口的數(shù)據(jù)輸入總線為eDA〈N/2-1:0>和eDB〈N/2-1:0>的組合,A端口的數(shù)據(jù)輸出總線為eQA〈N/2-l:0>和eQB〈N/2-l:0〉的組合。3)簡單雙端口簡單雙端口使用A端口執(zhí)行寫操作,B端口執(zhí)行讀操作。由于A端口和B端口可能同時訪問IP的同一行地址空間,所以,簡單雙端口在A寫B(tài)讀同一行地址時,會產(chǎn)生讀寫沖突;此時,立即執(zhí)行讀操作,緩存寫操作的相關(guān)數(shù)據(jù)到數(shù)據(jù)寄存器中。如果寫操作的行地址與緩存的原有數(shù)據(jù)的行地址相同,則把新的數(shù)據(jù)添加到數(shù)據(jù)寄存器中,此時屏蔽掉IP核的A端口使能(cenA);如果寫操作的行地址與數(shù)據(jù)寄存器的行地址不同,則把數(shù)據(jù)寄存器的原有數(shù)據(jù)寫入IP核對應(yīng)的行地址,同時清空標(biāo)志寄存器,再寫入新的數(shù)據(jù),和設(shè)置新的標(biāo)志寄存器。在以后讀該地址的時候,把數(shù)據(jù)寄存器的數(shù)據(jù)和IP核讀出的數(shù)據(jù)經(jīng)過組合后輸出。如果A端口和B端口不產(chǎn)生讀寫沖突,但是A寫操作的地址與數(shù)據(jù)寄存器的地址相同,則A端口的數(shù)據(jù)寫入數(shù)據(jù)寄存器中更新原有數(shù)據(jù)。簡單雙端口的最大訪問位寬為N此時,輸入端口A端口的數(shù)據(jù)輸入總線為eDA〈N/2-l:0〉和eDB〈N/2-l:0〉;輸出端口B端口的數(shù)據(jù)輸出總線為eQA〈N/2-l:0>和eQB〈N/2-l:0>。4)真雙端口在真雙端口模式下,每個端口都可以獨立地對存儲空間的全空間進行讀寫操作,與包模式不同之處在于其存儲空間是共享的。同包模式一樣,其每個端口的最大訪問數(shù)據(jù)寬度為N/2位。真雙端口存在著對IP同一行空間的三種操作組合A端口寫B(tài)端口讀,A端12口讀B端口寫,A端口寫且B端口也寫,其中前兩種一讀一寫的操作的沖突處理機制類似于簡單雙端口模式;而兩種寫操作的沖突處理機制,可以參考圖7緩存控制機制和圖8緩存處理流程圖。6、緩存控制機制在簡單雙端口和真雙端口模式下,可能會產(chǎn)生讀寫沖突;該發(fā)明使用緩存控制機制來處理此類問題。控制模塊的方塊圖如圖7,AF是指m位的地址寄存器的值。通過比較A端口、B端口地址的高m位(行地址)和寄存器所存儲的行地址值之間的關(guān)系,來決定整個設(shè)計中數(shù)據(jù)的流向。圖7中,eAA_equ_AF表示通過比較,eAA的高m位地址和緩存寄存器的m位地址相等,eAB_equ_AF和eAA_equ_eAB同理;當(dāng)wrenA和wrenB均為高,指示當(dāng)前的A端口禾口B端口都執(zhí)行寫操作,此時,令標(biāo)志信號wA_wB有效;同理可得wA_rB和rA_wB。就IP而言,兩個端口對同一行的讀操作不會產(chǎn)生讀寫沖突,所以,不需要對wrenA和wrenB同時為低的兩個端口同時讀操作進行緩存保護。A_in_buf/B_in_buf信號有效時,讓A/B端口的數(shù)據(jù)寫入數(shù)據(jù)緩存,而不寫入IP核;buf」njp表示讓緩存中的數(shù)據(jù)寫入IP核;A—buf」njp表示A端口的數(shù)據(jù)和緩存中的數(shù)據(jù)合并后寫入IP中;cenA/cenB為高電平時阻止端口A/B的數(shù)據(jù)寫入IP,此時,通過端口A/B的寫操作,把數(shù)據(jù)寫入了緩存。緩存處理機制的數(shù)據(jù)處理流程圖如圖8,只有在該可編程存儲器編程為簡單雙端口或真雙端口的模式下時,才需要考慮使用數(shù)據(jù)緩存機制。不緩存是指數(shù)據(jù)不需要使用寄存器,直接對IP核進行訪問。7、數(shù)據(jù)的輸出端口在讀的過程中,把讀地址的高m位和地址寄存器的m位進行比較,如果相同,則需要把IP核輸出的數(shù)據(jù)和數(shù)據(jù)寄存器中的數(shù)據(jù)進行數(shù)據(jù)組合。因為數(shù)據(jù)寄存器中始終保存著某行的數(shù)據(jù),該新數(shù)據(jù)通過標(biāo)志寄存器指明是否是最新的有效數(shù)據(jù)。該數(shù)據(jù)組合方法是用數(shù)據(jù)寄存器中的數(shù)據(jù)替換掉IP核讀出來的一行中的全部或部分比特的數(shù)據(jù),當(dāng)讀地址的高m位與地址寄存器的m位相等,且N位中某一個位的標(biāo)志寄存器的標(biāo)識位有效時,數(shù)據(jù)寄存器中的該位替代IP輸出數(shù)據(jù)中的相應(yīng)位置的數(shù)據(jù)位而作為嵌入式可編程存儲器的輸出。8、數(shù)據(jù)、標(biāo)志位和地址緩存寄存器1)數(shù)據(jù)寄存器數(shù)據(jù)寄存器由N比特組成,用于保存IP中的某一行的全部或者部分數(shù)據(jù);當(dāng)存儲器的兩個端口同時對IP核的某一行進行至少一個是寫操作的讀寫訪問時,數(shù)據(jù)寄存器緩存其中一個端口的寫數(shù)據(jù)。假若此時該存儲器中已經(jīng)有數(shù)據(jù),則兩種可能處理方法,一是已有數(shù)據(jù)和新數(shù)據(jù)是對應(yīng)于IP核的同一行,則用新的數(shù)據(jù)更新存儲器;二是如果不同行,則原有數(shù)據(jù)寫入IP核,新數(shù)據(jù)寫入緩存。數(shù)據(jù)緩存機制可以參考圖7緩存控制機制和圖8緩存處理流程圖。2)標(biāo)志寄存器標(biāo)志寄存器由N比特組成,每一比特指示數(shù)據(jù)寄存器的對應(yīng)位置的數(shù)據(jù)是否真實有效。標(biāo)志寄存器與數(shù)據(jù)寄存器保持同步關(guān)系,即端口向數(shù)據(jù)寄存器寫入數(shù)據(jù)時,也要置標(biāo)志寄存器的對應(yīng)位為高;同樣,在數(shù)據(jù)寄存器向IP核寫入數(shù)據(jù)后,也同時把標(biāo)志寄存器13的所有位清零,待下一次再向數(shù)據(jù)寄存器寫入數(shù)據(jù)時再設(shè)置相應(yīng)的標(biāo)志位。3)地址寄存器地址寄存器由m比特組成,當(dāng)數(shù)據(jù)寄存器保存了有效數(shù)據(jù)時,地址寄存器記錄下該行的地址值。數(shù)據(jù)寄存器緩存數(shù)據(jù),地址寄存器指明該緩存數(shù)據(jù)的對應(yīng)于IP核的存儲地址,而標(biāo)志寄存器則指明N位的數(shù)據(jù)寄存器中那些位是有效的。兩個端口進行讀寫操作時,先把地址的高m位與m位的緩存地址進行比較。以上所述的具體實施例,對本發(fā)明的目的、技術(shù)方案和有益效果進行了進一步詳細說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。參考文獻1ArtisanLimited,ArtisanStandardLibrary0.13um_0.25umSRAMGeneratorUserMa皿al,June2005,Revision2005q2v32AteraCorporation,CycloneDeviceHandbook,Page4049,page,20071權(quán)利要求一種基于存儲器知識產(chǎn)權(quán)核的嵌入式可編程存儲器,其特征在于,包括DP-SRAMIP、A端口輸入邏輯、B端口輸入邏輯、A端口輸出邏輯、B端口輸出邏輯、控制模塊、數(shù)據(jù)寄存器、標(biāo)志寄存器和地址寄存器;其中,DP-SRAMIP是利用Memory-Compiler生成的雙端口靜態(tài)隨機存儲器IP核;A端口輸入邏輯和B端口輸入邏輯用于將可編程存儲器A/B端口輸入的數(shù)據(jù)進行轉(zhuǎn)換以符合IP核對數(shù)據(jù)的要求;A端口輸出邏輯和B端口輸出邏輯用于組合IP兩個端口輸出的數(shù)據(jù)和數(shù)據(jù)寄存器的數(shù)據(jù),然后送到可編程存儲器輸出;控制模塊用于通過比較地址和讀寫指示信號,來控制數(shù)據(jù)的流向;數(shù)據(jù)寄存器是N比特的寄存器,用于保存數(shù)據(jù)寄存器在發(fā)生第一次讀寫沖突后的任一時刻通過可編程存儲器A/B端口寫入到IP核中某行N比特的部分或全部的最新數(shù)據(jù);標(biāo)志寄存器是N比特的,用于標(biāo)明數(shù)據(jù)緩沖器中對應(yīng)比特是否是最新的有效數(shù)據(jù);地址寄存器用于保存數(shù)據(jù)寄存器中的數(shù)據(jù)對應(yīng)在IP核的m比特地址值。2.根據(jù)權(quán)利要求1所述的基于存儲器知識產(chǎn)權(quán)核的嵌入式可編程存儲器,其特征在于,所述DP-SRAMIP是一個通用的雙端口同步靜態(tài)存儲器知識產(chǎn)權(quán)核,其端口數(shù)據(jù)位存儲寬度為N,存儲深度為M,地址總線位寬m為Ceil(log2M),ceil為向上取整函數(shù),在考慮訪問位寬編程為一比特的情況,最大地址為MXN,可編程存儲器的地址總線位寬t為ceil(log2(MXN))。3.根據(jù)權(quán)利要求2所述的基于存儲器知識產(chǎn)權(quán)核的嵌入式可編程存儲器,其特征在于,所述端口數(shù)據(jù)位存儲寬度N為36,存儲深度M為128。4.根據(jù)權(quán)利要求1所述的基于存儲器知識產(chǎn)權(quán)核的嵌入式可編程存儲器,其特征在于,所述數(shù)據(jù)寄存器由N比特組成,用于保存IP中的某一行的全部或者部分數(shù)據(jù);當(dāng)存儲器的兩個端口同時對IP核的某一行進行至少一個是寫操作的讀寫訪問時,數(shù)據(jù)寄存器緩存其中一個端口的寫數(shù)據(jù);假若此時存儲器中已經(jīng)有數(shù)據(jù),則兩種可能處理方法,一是已有數(shù)據(jù)和新數(shù)據(jù)是對應(yīng)于IP核的同一行,則用新的數(shù)據(jù)更新存儲器;二是如果不同行,則原有數(shù)據(jù)寫入IP核,新數(shù)據(jù)寫入寄存器。5.根據(jù)權(quán)利要求1所述的基于存儲器知識產(chǎn)權(quán)核的嵌入式可編程存儲器,其特征在于,所述標(biāo)志寄存器由N比特組成,每一比特指示數(shù)據(jù)寄存器的對應(yīng)位置的數(shù)據(jù)是否真實有效。6.根據(jù)權(quán)利要求1所述的基于存儲器知識產(chǎn)權(quán)核的嵌入式可編程存儲器,其特征在于,所述標(biāo)志寄存器與數(shù)據(jù)寄存器保持同步關(guān)系,端口向數(shù)據(jù)寄存器寫入數(shù)據(jù)時,也要置標(biāo)志寄存器的對應(yīng)位為高;同樣,在數(shù)據(jù)寄存器向IP核寫入數(shù)據(jù)后,也同時把標(biāo)志寄存器的所有位清零,待下一次再向數(shù)據(jù)寄存器寫入數(shù)據(jù)時再設(shè)置相應(yīng)的標(biāo)志位。7.根據(jù)權(quán)利要求1所述的基于存儲器知識產(chǎn)權(quán)核的嵌入式可編程存儲器,其特征在于,所述地址寄存器由m比特組成,當(dāng)數(shù)據(jù)寄存器保存了有效數(shù)據(jù)時,地址寄存器記錄下該行的地址值;數(shù)據(jù)寄存器緩存數(shù)據(jù),地址寄存器指明該緩存數(shù)據(jù)的對應(yīng)于IP核的存儲地址,而標(biāo)志寄存器則指明N位的數(shù)據(jù)寄存器中那些位是有效的;兩個端口進行讀寫操作時,先把地址的高m位與m位的緩存地址進行比較。8.根據(jù)權(quán)利要求1所述的基于存儲器知識產(chǎn)權(quán)核的嵌入式可編程存儲器,其特征在于,該嵌入式可編程存儲器支持用戶的對其位寬、端口數(shù)量、同步/異步輸出等屬性的可編程設(shè)計,支持包模式、單端口、簡單雙端口和真雙端口等工作模式,采用兩個端口共用的一個N位的數(shù)據(jù)寄存器來緩存兩個端口產(chǎn)生讀寫沖突時的寫數(shù)據(jù),采用兩個端口共用的一個N位的標(biāo)志寄存器來標(biāo)明數(shù)據(jù)寄存器中有效數(shù)據(jù)位,采用兩個端口共用的一個m位的地址寄存器來鎖存數(shù)據(jù)對于該存儲器的行地址。9.根據(jù)權(quán)利要求1所述的基于存儲器知識產(chǎn)權(quán)核的嵌入式可編程存儲器,其特征在于,該嵌入式可編程存儲器能夠?qū)ν坏刂返牟煌糠滞瑫r進行讀寫操作,具體通過以下方式實現(xiàn)對同一地址的一讀一寫操作,立即執(zhí)行讀操作,緩存寫的內(nèi)容;如果寫的地址與地址寄存器緩存的地址相同,則更新;如不相同,則緩存中原有數(shù)據(jù)寫入IP核,新數(shù)據(jù)寫入緩存;或者對同一地址的兩個端口同時寫操作;如果與地址寄存器緩存的地址相同,則把A端口的寫數(shù)據(jù)和緩存的數(shù)據(jù)合并,一起通過A端口寫入IP核;如果不相同,則把緩存中的數(shù)據(jù)寫入IP,A端口的數(shù)據(jù)寫入緩存。10.根據(jù)權(quán)利要求1所述的基于存儲器知識產(chǎn)權(quán)核的嵌入式可編程存儲器,其特征在于,該嵌入式可編程存儲器在兩個端口對某一行的讀寫產(chǎn)生沖突時,數(shù)據(jù)緩存機制能保證對寫入數(shù)據(jù)進行有效存儲,數(shù)據(jù)寄存器作出相應(yīng)的動作來保持數(shù)據(jù)的最新性和標(biāo)志寄存器的有效性;在讀該行的數(shù)據(jù)時,數(shù)據(jù)緩存機制保證讀出最有效的數(shù)據(jù),數(shù)據(jù)寄存器中的最新數(shù)據(jù)始終有優(yōu)先輸出權(quán),保證和IP核輸出的數(shù)據(jù)通過組合后的真實有效性。全文摘要本發(fā)明公開了一種基于存儲器知識產(chǎn)權(quán)核的嵌入式可編程存儲器,其提供可編程機制,支持用戶對其位寬、工作模式和同步/異步輸出等進行可編程設(shè)計,支持包模式、單端口、簡單雙端口和真雙端口等工作模式。本發(fā)明利用添加的寄存器緩存有沖突的數(shù)據(jù)和地址,利用數(shù)據(jù)位的標(biāo)志位、和讀寫沖突檢測與保護機制來實現(xiàn)可編程的存儲器,既有設(shè)計上的簡便性,又有功能上的靈活性,對常規(guī)的存儲器功能做了很多擴展;和常規(guī)的可編程存儲器技術(shù)比較,該可編程存儲器在速度、面積、功耗和可靠性等方面有顯著的提高。文檔編號G11C7/10GK101751980SQ20081024035公開日2010年6月23日申請日期2008年12月17日優(yōu)先權(quán)日2008年12月17日發(fā)明者楊海鋼,楊金林申請人:中國科學(xué)院電子學(xué)研究所