引言
當(dāng)今社會是數(shù)字化的社會,隨著微電子技術(shù)的發(fā)展,設(shè)計與制造集成電路的任務(wù)已不完全由半導(dǎo)體廠商來獨立承擔(dān),設(shè)計師們更希望在教研室里就能驗證所設(shè)計的電路功能。FPGA的出現(xiàn),使得芯片設(shè)計和應(yīng)用跨入了一個新的領(lǐng)域。
研究背景
隨著硬件方面的急速發(fā)展,與之相配套的軟件也不斷更新,更快﹑更智能的原理圖編輯﹑設(shè)計實現(xiàn)和驗證工具都被集成到EDA開發(fā)工具中。這些發(fā)展大大縮短了FPGA的開發(fā)周期,增強(qiáng)了FPGA設(shè)計的靈活性和可移植性,也避免了專用集成電路設(shè)計的高風(fēng)險。但由于片內(nèi)存儲器受器件規(guī)模和生產(chǎn)成本的制約,其容量通常不能滿足用戶實際需求,這就需要使用半導(dǎo)體存儲器件來擴(kuò)展存儲空間。針對這種情況,本文專門研究了FPGA與兩種典型的存儲器接口實現(xiàn)問題。在設(shè)計實現(xiàn)中采用了Xilinx公司Virtex-E系列的FPGA (XCV300E)﹑ISSI公司的高速靜態(tài)存儲器IS63LV1024和HYNIX公司的HY57V281620HC(L/S)T動態(tài)存儲器。
XCV300E性能介紹
FPGA(現(xiàn)場可編程門陣列)是可編程邏輯器件的一種,它不僅可以提高系統(tǒng)的可靠性,使得系統(tǒng)結(jié)構(gòu)更加緊湊,節(jié)省了電路板的面積,而且實現(xiàn)成本低﹑開發(fā)周期短,是進(jìn)行原始設(shè)計的理想載體。Virtex-E系列產(chǎn)品對所有Virtex特性都進(jìn)行了加強(qiáng),采用領(lǐng)先的0.18 m六層金屬互連半導(dǎo)體工藝制造,大大提高了器件性能和密度,同時還提供了可進(jìn)一步滿足下一代數(shù)據(jù)通信和DSP應(yīng)用帶寬要求的高性能系統(tǒng)特性組合。Xilinx公司的VirtexE XCV300E,采用BGA432封裝,片內(nèi)Block RAM為131,072 比特,Distributed RAM為98,304比特,System Gates為411,955門,Logic Gates為82,944門。特性如下:
1.工作在1.8V電壓下的快速﹑高密度FPGA器件 ;
2.采用高度靈活的I/O選擇技術(shù),支持20種高性能接口標(biāo)準(zhǔn);
3.采用高性能的鏈路選擇技術(shù);
4.精密復(fù)雜的存儲器選擇機(jī)制;
5.高性能的時鐘管理電路;
6.具有能平衡速度與密度的靈活性體系結(jié)構(gòu);
7.基于SRAM方式的系統(tǒng)配置。
SRAM性能介紹
為了能更好﹑更有效的設(shè)計FPGA與IS63LV1024的接口實現(xiàn),必須先了解IS63LV1024的性能特點。充分利用這些特點會使設(shè)計的實現(xiàn)變得事半功倍。IS63LV1024是128K 8的高速靜態(tài)存儲器,性能特點包括:
1.工作在3.3V電壓下,高速接入時間一般分為8、10、12和15ns;
2.高性能﹑低功耗器件(使用ICSI高性能COMS技術(shù)制作過程和使用新的電路設(shè)計技術(shù));
3.通過選擇CE和OE的狀態(tài)可以比較簡單的實現(xiàn)存儲;
4. CE可以使器件進(jìn)入power-down工作模式,即 沒有被選擇時,器件進(jìn)入一種掛起狀態(tài),使得功率消耗小于250 W;
5.不需要時鐘和更新,是全靜態(tài)工作過程;
6.所有的輸入和輸出都是與TTL相兼容的。
除此之外,為了保證所傳輸?shù)臄?shù)據(jù)的正確性還必須要了解IS63LV1024的讀寫狀態(tài)的時序和使能的要求。其讀寫時序狀態(tài)如圖1所示:
DRAM性能簡介
DRAM與SRAM不同,它只能將數(shù)據(jù)保持很短的時間。為了保持?jǐn)?shù)據(jù),DRAM 必須隔一段時間刷新一次,如果存儲單元沒有刷新,數(shù)據(jù)就會丟失。SRAM雖不需刷新,但斷電后會丟失數(shù)據(jù)。SRAM的數(shù)據(jù)傳輸速率從10 ns到30 ns不等,DRAM要比它慢30 ns左右。因此,SRAM通常用于高速緩沖存儲器,而DRAM通常用來存儲較大的數(shù)據(jù)。HY57V281620HC(L/S)T是4Banks 2M 16bit的同步動態(tài)存儲器,性能特點包括:
1.工作在3.3 0.3V電壓下;
2.所有器件管腳都與LVTTL接口兼容;
3.所有的輸入和輸出操作都是在時鐘CLK上升沿的作用下進(jìn)行;
4.通過UDQM或者LDQM來實現(xiàn)數(shù)據(jù)延時功能;
5.內(nèi)部有四個bank可以進(jìn)行操作;
6.自刷新功能,刷新周期為4096;
7.可編程的猝發(fā)類型、猝發(fā)長度;
8.可編程的的CAS延遲為2或3個時鐘周期。
由上面的特性可知,DARM的讀寫操作與SRAM有較大的不同。根據(jù)HY57V281620HC(L/S)T的讀寫狀態(tài)的時序要求,其讀寫時序狀態(tài)如圖2所示:
設(shè)計實現(xiàn)
當(dāng)設(shè)計FPGA與SRAM的接口時,由于它的傳輸速度較快,所以只需著重考慮如何保證存儲數(shù)據(jù)的正確性,而不需要考慮用其它方式來提高SRAM的存儲速度。本設(shè)計的做法是一次性寫滿128k數(shù)據(jù)后,再一次性讀出128k數(shù)據(jù)。為了保證數(shù)據(jù)的正確性,要求在寫數(shù)據(jù)時不能讀數(shù)據(jù),而在讀數(shù)據(jù)時不能寫數(shù)據(jù)。
當(dāng)設(shè)計FPGA與DRAM的接口時,為了能滿足各種系統(tǒng)的使用要求,本設(shè)計創(chuàng)建了時鐘頻率、猝發(fā)長度、延時節(jié)拍等可編程參數(shù)。在具體操作DRAM時,首先,必須進(jìn)行初始化配置,即寫模式寄存器,以便確定DRAM列選延遲節(jié)拍數(shù)、猝發(fā)類型、猝發(fā)長度等工作模式。然后通過ACT命令激活對應(yīng)地址的組,同時輸入行地址。最后,通過RD或WR命令輸入列地址,將相應(yīng)數(shù)據(jù)讀出或?qū)懭氲綄?yīng)的地址。操作完成后,用相關(guān)命令中止讀或?qū)懖僮?。在沒有操作的時候,每64ms必須對所有存儲單元刷新一遍,防止數(shù)據(jù)丟失。
下面本文將指出在設(shè)計實現(xiàn)中需要特別注意的幾個問題,并給出了相應(yīng)的解決方法 。
首先,是如何控制SRAM的讀寫功能。這就需要與IS63LV1024讀寫時序要求和真值表的描述相配合。本設(shè)計為了避免連讀或連寫數(shù)據(jù)時出錯,考慮了一種通過讀寫數(shù)據(jù)請求的方法來盡量避免讀或?qū)憯?shù)據(jù)出錯的可能。即每寫完或讀完一個數(shù)據(jù)后都要先進(jìn)行請求,然后才能繼續(xù)讀或?qū)憯?shù)據(jù)。ASRAM的狀態(tài)轉(zhuǎn)移圖如圖3所示:
下面給出了圖3中各個狀態(tài)所表示的意思:
DOWRITE表示寫數(shù)據(jù)的請求;
STIDLE表示存儲器處于空閑狀態(tài);
STWRITE1表示存儲器處于寫準(zhǔn)備狀態(tài),準(zhǔn)備寫數(shù)據(jù);
STWRITE2表示存儲器處于寫狀態(tài),開始寫數(shù)據(jù);
STREAD1表示存儲器處于讀準(zhǔn)備狀態(tài),準(zhǔn)備讀數(shù)據(jù);
STREAD2表示存儲器處于讀狀態(tài),開始讀數(shù)據(jù)。
只有當(dāng)系統(tǒng)時鐘的上升沿到來時,才會觸發(fā)這個狀態(tài)機(jī)改變一次當(dāng)前狀態(tài)。
剛開始時,存儲器的初始狀態(tài)為空閑狀態(tài),當(dāng)有請求來時才判斷是讀或?qū)懻埱螅绻麤]有請求就一直保持空閑狀態(tài)。虛線表示自動按順序進(jìn)入下一個狀態(tài)。
其次,是如何控制DRAM的各種狀態(tài)。當(dāng)設(shè)計FPGA與DRAM的接口時,由于它除了讀寫狀態(tài)外還有較多的其它狀態(tài),所以需要著重設(shè)計好讀寫狀態(tài)與其它狀態(tài)之間的轉(zhuǎn)換控制。為了解決這個問題,本設(shè)計采用了狀態(tài)機(jī)來控制這些狀態(tài)之間的關(guān)系,DRAM的狀態(tài)轉(zhuǎn)移圖如圖4所示:
下面給出了圖中各個狀態(tài)所表示的意思:
IDLE 表示存儲器處于空閑狀態(tài);
LMREG 表示加載寄存器狀態(tài);
ACT 表示活動狀態(tài);
AR2 表示自動刷新有效狀態(tài);
AR 表示自動刷新無效狀態(tài);
WRITE STATE 表示讀狀態(tài);
READ STATE 表示寫狀態(tài);
只有當(dāng)系統(tǒng)時鐘的上升延到來時,才會觸發(fā)這個狀態(tài)機(jī)改變一次當(dāng)前狀態(tài)。
剛開始時,存儲器的初始狀態(tài)為空閑狀態(tài),當(dāng)有請求來時才會進(jìn)入下一個狀態(tài),如果沒有請求就一直保持空閑狀態(tài)。虛線表示自動按順序進(jìn)入下一個狀態(tài)。
最后,是FPGA的設(shè)計要求。一個優(yōu)秀的FPGA設(shè)計不僅要達(dá)到系統(tǒng)的基本要求,同時必須滿足可讀性、可重復(fù)性和可測性。
可讀性好的FPGA設(shè)計原理圖和硬件描述語言設(shè)計應(yīng)該包含足夠詳細(xì)的注釋。每張原理圖之間的關(guān)系及硬件描述模塊間的互聯(lián)關(guān)系的說明固然重要,但是每個模塊本身的說明也是不能忽視的,例如狀態(tài)機(jī)的文檔應(yīng)當(dāng)包括狀態(tài)圖或功能描述。好的文檔也許花不了很多的時間,但是卻可以在調(diào)試﹑測試和維護(hù)設(shè)計上節(jié)省大量的時間。
可重復(fù)性指FPGA設(shè)計應(yīng)該保證如果不同的人從不同的部位開始,并重新進(jìn)行布局布線等,應(yīng)該得到同樣的結(jié)果。沒有這個保證,驗證以及其他形式的設(shè)計測試就毫無意義。設(shè)計者顯然不希望在設(shè)計里出現(xiàn)這樣的情況,具有相同的輸入輸出管腳和功能的器件,由于布局布線的差異,導(dǎo)致最后時序不一致。如果在實現(xiàn)的過程中,系統(tǒng)設(shè)計軟件的參數(shù)或選項不一致,就會發(fā)生這種情況。因此FPGA的文檔就應(yīng)該包括必要的信息,即軟件開發(fā)系統(tǒng)的版本號﹑軟件的各個選項及參數(shù)設(shè)計。
可測性是FPGA設(shè)計的最后一個特征。系統(tǒng)級的測試要求設(shè)計者對整個設(shè)計流程及系統(tǒng)架構(gòu)都要很清楚。隨著設(shè)計層次的提高,使得設(shè)計者面對的電路規(guī)模越來越大,功能越來越復(fù)雜,相應(yīng)電路的測試也變得越來越困難。在設(shè)計過程中綜合考慮測試的設(shè)計問題并統(tǒng)一實施,將有效地縮短整個產(chǎn)品的開發(fā)時間、減少返工。
結(jié)束語
在開發(fā)過程中由于采用高級硬件編程語言-編程器件的設(shè)計實現(xiàn)過程,大大縮短了開發(fā)周期,增加了硬件設(shè)計的靈活性和可移植性,也避免了專用集成電路設(shè)計的高風(fēng)險。采用邏輯仿真與后時序仿真相結(jié)合的驗證方法,可以保證設(shè)計的可靠性?;谏鲜鰞?yōu)點,這種開發(fā)方式在中小型集成電路開發(fā)中已得到廣泛應(yīng)用。 隨著工藝技術(shù)的發(fā)展與市場的需要,超大規(guī)模﹑高速﹑低功耗的新型FPGA將會不斷推陳出新?,F(xiàn)在新一代的FPGA甚至集成了中央處理器(CPU)或數(shù)字處理器(DSP)內(nèi)核,在一片F(xiàn)PGA上進(jìn)行軟硬件協(xié)同設(shè)計,為實現(xiàn)片上可編程系統(tǒng)(SOPC,System On Programmable Chip)提供了強(qiáng)大的硬件支持。
責(zé)任編輯:gt
評論
查看更多