基于0.13微米CMOS工藝下平臺式FPGA中可重構RAM模塊的一種設計方法
1. 引言
對于需要大的片上存儲器的各種不同的應用,FPGA 需要提供可重構且可串聯(lián)的存儲器陣列。通過(guò)不同的配置選擇,嵌入式存儲器陣列可以被合并從而達到位寬或字深的擴展并且可以作為單端口,雙端口存儲器,只讀存儲器,FIFO,大的查找表或移位寄存器,每種應用都支持不同的數據寬度和高度。
在本文中我們設計的嵌入式存儲器是一個(gè)可配置的同步16Kb模塊。如圖1所示,每個(gè)存儲器模塊有兩個(gè)獨立的端口,它們的結構和工作模式完全對稱(chēng),并且支持雙端口工作模式。每個(gè)端口都有自己的時(shí)鐘信號,時(shí)鐘使能信號,寫(xiě)信號。雖然對每個(gè)端口的操作是完全同步且獨立于另一個(gè)端口的,但是可以通過(guò)外面的電路連接擴展數據位寬或地址寬度。當寫(xiě)允許信號WEN為低,EN為高時(shí),存儲器模塊讀取地址確定的存儲單元的數據,當WEN和EN同時(shí)為高時(shí),輸入總線(xiàn)上的數據被寫(xiě)入存儲單元。在存儲器模塊被用于流水線(xiàn)邏輯中的情況下,根據數據路徑邏輯獲取存儲器數據時(shí)不同的需要,每個(gè)存儲器模塊的寫(xiě)數據過(guò)程可以配置成三種工作模式。根據不同的配置,輸出數據總線(xiàn)上的數據可以隨輸入數據同時(shí)更新,或者一個(gè)時(shí)鐘周期后更新,或者保持不變。
每個(gè)存儲器模塊都支持多種配置方式,可以配置成以下各種工作模式:16Kx1, 8Kx2, 4Kx4, 2Kx8, 1Kx16 and 512x32。一個(gè)可重構的正交開(kāi)關(guān)矩陣用于連接輸入/輸出與外部數據總線(xiàn)。存儲器模塊可以配置成只讀存儲器。只讀存儲器的數據在配置過(guò)程通過(guò)第三個(gè)端口確定,也即下面講到的存儲單元的C端口。在配置過(guò)程,該配置端口支持讀寫(xiě)操作。
一種全新的存儲單元的設計方法以及實(shí)現各種配置的電路設計方法將會(huì )重點(diǎn)介紹。最后將給出Nanosim的仿真結果。
圖1. 存儲器模塊 圖2 三端口存儲單元
2. 存儲器模塊的設計
2.1 存儲單元的設計
當存儲器模塊配置為只讀存儲器時(shí),只讀存儲器的內容必須要在FPGA的配置過(guò)程予以定義,在有些情況下還需要對存儲器模塊的內容予以初始化,所以存儲單元需要提供一個(gè)端口專(zhuān)門(mén)用于存儲器內容的定義或初始化。我們的存儲單元采用的是一個(gè)三端口的結構,其中兩個(gè)端口用于片上邏輯,第三個(gè)端口用于片外邏輯。片外即第三個(gè)端口用于只讀存儲器或查找表的內容定義或靜態(tài)存儲器的內容初始化,也可用于存儲器測試中的驗證。如圖2所示,存儲單元實(shí)際上是一對交叉耦合的反相器,通過(guò)三對NMOS與三個(gè)端的位線(xiàn)(bitline)連接,三個(gè)端的字線(xiàn)分別控制各端的NMOS導通與否。A,B端用于片上邏輯的讀寫(xiě)操作,而C端作為配置端只在配置過(guò)程中應用。A,B兩端口的位線(xiàn)為垂直走向,字線(xiàn)為水平走向,而配置端C端恰好相反,其位線(xiàn)為水平走向,字線(xiàn)為垂直走向,原因在于在FPGA的配置過(guò)程中 ,配置數據按列送入FPGA[4][5]。這種存儲器單元結構同時(shí)滿(mǎn)足了實(shí)現存儲器模塊的片外配置功能和片上功能的需要。
2.2 位線(xiàn)結構
A,B兩端口的位線(xiàn)結構用于正常的讀寫(xiě)操作,下圖3給出了此位線(xiàn)結構。一列存儲單元(256個(gè))共用一對位線(xiàn),它們在讀/寫(xiě)過(guò)程的開(kāi)始前被預充電至vdd,然后被選中的存儲單元驅動(dòng)(讀過(guò)程)或被輸入緩沖器驅動(dòng)(寫(xiě)過(guò)程)。在讀過(guò)程中靈敏放大器被其使能信號觸發(fā)以放大位線(xiàn)上的差分信號,然后其單輸出數據經(jīng)過(guò)緩沖器被驅動(dòng)經(jīng)過(guò)列選擇器,再經(jīng)過(guò)總線(xiàn)選擇開(kāi)關(guān)矩陣,最后到達輸出數據總線(xiàn)。靈敏放大器用于將小信號的差分輸入(位線(xiàn)電壓)放大為大信號的單端輸出。如圖3.B所示我們采用了一種鎖存型靈敏放大器,它的兩個(gè)輸出經(jīng)過(guò)一個(gè)改進(jìn)緩沖器以單端輸出,這種靈敏放大器結構簡(jiǎn)單,驅動(dòng)能力強,建立時(shí)間短,有效地縮短了存儲器的讀取時(shí)間,提高了性能[1],[2]。
2.3 配置電路的設計
如前所述,存儲器模塊可以配置成以下存儲器結構:16Kx1, 8Kx2, 4Kx4, 2Kx8, 1Kx16 以及512x32,配置電路就是能夠實(shí)現這些配置的邏輯。組成配置電路的就是上面提到的列選擇器和總線(xiàn)選擇開(kāi)關(guān)矩陣。通過(guò)對列選擇器和總線(xiàn)選擇開(kāi)關(guān)矩陣的配置,可以實(shí)現以上各種存儲器結構,以及讀過(guò)程中的三種輸出模式。
評論