基于FPGA與外部SRAM的大容量數據存儲
3.3 控制邏輯電路設計
如圖三所示,控制邏輯由FPGA來實現。主要包括讀地址產生器、寫地址產生器、讀寫時鐘信號產生器及讀寫控制等幾部分。下面分別加以講述。
(1)寫地址產生器:由于設計時采用256K×16的SRAM,故有18位地址,寫地址產生器用18位計數器實現??客獠繒r鐘驅動,每進行一次寫操作后,讀寫控制單元產生計數脈沖,使其增1,直到18位計數器計滿再循環(huán)寫入地址為0的空間。
(2)讀地址產生器同上,也采用18位計數器實現,根據系統(tǒng)要求,每隔一定的采樣周期將讀地址指針偏移一定偏移量,并從該位置讀取數據。
(3)讀寫地址選擇器由于讀寫地址復用管腳,因此在讀寫操作時,必須選通相應的地址。這就需要由FPGA控制芯片上的等控制信號來對SRAM進行讀寫的操作。
(4)此外,由于讀寫之間的切換,數據線上的數據在切換瞬間如不加處理會出現混亂現象。因此,為避免讀、寫操作發(fā)生沖突,數據線呈三種狀態(tài),讀數據、寫數據及高阻態(tài)。在從寫到讀的過程中需給數據線上送高阻態(tài)。
(5)當需要對SRAM進行寫操作時,由FPGA控制產生寫地址選通信號,該選通信號為一單脈沖形式,如圖四中該脈沖下降沿觸發(fā)SRAM,告知開始對RAM進行寫操作,使FPGA輸出寫地址,同時給數據線上送數據。在寫操作期間,片選信號始終保持低電平,而寫地址選通信號上升沿到來時使寫地址計數器增1。以此類推,通過寫地址選通信號高低電平變化完成對數據依次寫入。需要注意的是,地址線和數據線在為高時可同時賦新值,但只有在變低后賦予數據線上的新值才有效。
對SRAM進行讀操作相對較簡單,在進行讀操作期間,始終為低電平,始終為高電平。每進行一次讀操作,地址按系統(tǒng)要求變化一次。同時注意,地址的變化時刻總要先于數據的變化時刻。圖五為RAM讀操作時序。
以下是一段用VHDL語言描述的控制RAM的讀寫操作時序的程序代碼:
程序中,在進行讀寫操作時,片選使能信號CE_SRAM及輸出使能信號OE_SRAM始終為低電平。
第0時刻到第2時刻在進行寫操作:第0時刻地址線addr_SRAM和數據線data_SRAM同時賦新值,控制線WE_SRAM、LB_SRAM、UB_SRAM要經歷一個窄脈沖的變化過程,RAM在獲取到此控制線下降沿信息后,便知開始進行寫操作。需要注意的是,雖然數據在第0時刻已賦到數據線上,但因為寫操作是控制線低電平有效,所以數據線上真正發(fā)生數據更新是在控制線變?yōu)榈碗娖街?,因此,數據線上的實際更新時刻是在第2個時刻。
第3、4狀態(tài)是進行讀操作:在讀寫轉換時刻,也就是在第3時刻如前所述需給數據線上送高阻態(tài)。這樣,讀取數據的時序關系由系統(tǒng)時鐘進行控制,在第3時刻給地址線上送要讀取的地址,第4時刻將數據端口上的數據送出。這里需注意的是,讀取數據要比讀取地址晚一個時刻。從而,完成了對外部RAM的讀寫操作控制。
4結論
該系統(tǒng)已應用在羅蘭—c導航接收機的信號處理中。實驗證明,此設計可靠穩(wěn)定地完成了大容量高速異步數據存儲,進一步提高了系統(tǒng)的性能。
評論