基於FPGA的FIFO設計和應用

2023-01-29 18:42:06 字數 3103 閱讀 7371

技術分類: 可程式設計器件 | 2009-11-20

張奇山劉安芝劉希順

引言在利用dsp實現**實時跟蹤時,需要進行大量高速的影象採集。而dsp本身自帶的fifo並不足以支援系統中大量資料的暫時儲存,這就要求大的中間快取,而專用的高速fifo晶元**昂貴且容量受限,大大增加了商業成本,因此在實際應用中尋找fifo代替器件是很有必要的。

1 器件選擇

這裡在**訊號處理系統中,將利用fpga作為橋梁,實現對sdram的控制,以達到大量高速訪問資料的功能。之所以選取sdram,主要是因為在各種隨機訪問器件中,sdram的容量較大,**較低,且資料突發傳輸模式大大提高了訪問速度,能夠滿足應用的要求。

fifo的速度受到兩個因素的限制:

(1)sdram的最高工作頻率。sdram的工作頻率越高,資料的傳輸速率就越高;

(2)sdram的突發長度。sdram的突發長度越長,對資料流的吞吐量就越大,可以從某種程度上提高資料的傳輸速率。

fifo的大小由所選sdram晶元的容量來決定。該設計以採用micron公司的mt48lc4m3282(4 bank×4m×32 b)為例,儲存容量為128 mb,資料頻寬為32位,內部由4個bank組成,每個bank有4 096行和256列。

mt48lc4m3282的控制訊號有clk(時鐘訊號)、cke(時鐘使能)、cs(片選訊號)、we(寫使能)、cas(列有效)、ras(行有效)、dqm0~dqm3(輸入輸出使能)。控制訊號組成的常用控制命令如表1所示。

2 fifo系統設計

fifo系統由fgpa和sdram兩部分組成。其中,fgpa內部包含fifo監控器、緩衝器、sdram控制器三個模組。fifo監控器的作用是將fifo的狀態轉變成狀態機的讀、寫訊號。

若操作為向sdram寫資料,則在fifo已滿時,fifo監控器送出乙個訊號,以阻止寫操作繼續向fifo中寫資料而造成溢位;若操作為向sdram讀資料,則在緩衝器已空時,fifo監控器送出乙個訊號,以阻止讀操作繼續從fifo中讀資料而造成無效資料的讀出。fifo的模組結構如圖1所示。

在該設計中,攝像頭採用640×480的螢幕解析度,影象深度為8,每秒為25幀,影象資料量的大小為影象中畫素總數與影象深度的乘積,由此可以得出每幀影象的大小為2.457 mb,每秒鐘**產生資料的大小為61.44 mb。因為系統向sdram控制器寫入和讀出資料的速度比較低,約為62 mhz,fpga的外接晶振clk為27 mhz,fpga和sdram的工作時鐘由鎖相環4倍頻後生成,即為108 mhz,所以sdram控制器向sdram寫入和讀出資料的速率為108 mhz,因此二者屬於不同的時鐘域,需要用緩衝器作為輸入和輸出的快取。

sdram控制器的模組結構如圖2所示,其中sdram控制器內部包括:初始化模組、模式暫存器、控制模組和狀態機。sdram的介面設計是極其關鍵的,可根據sdram內部操作狀態之間的聯絡,通過狀態機來實現介面設計。

初始化模組負責sdram的初始化,在上電和時鐘穩定後等待100 ms,至少執行一條空操作,然後對所有頁執行預充電操作,使所有頁處於空閒狀態,接著向各頁發出兩條重新整理操作指令,最後發出乙個模式暫存器裝載命令,使sdram有確定的狀態進行讀寫操作。模式暫存器可根據要求對sdram的突發長度、突發型別、cas延時的時鐘數、執行模式和寫突發模式進行設定,確定sdram在讀寫操作時的工作狀態。模式暫存器m0~m2用於規定突發長度,可以為1,2,4,8。

m3用於規定突發型別,當m3=0時,突發型別是連續的;當m3=1時,突發型別是交錯的。m4~m6用於規定cas延遲的時鐘週期數,可以分為1,2,3。m7,m8用於規定執行模式。

m9用於規定寫突發模式,當m9=0時,按實際程式設計的突發長度訪問;當m9=1時,按單個訪問單元寫入,但可按實際程式設計的突發長度讀出。

狀態機是sdram控制器的核心控制模組,其作用主要有兩個方面:其一是對各模組發出的操作請求進行仲裁,在適當的時刻作出反映,發出對sdram適當的控制命令;其二是協調各模組之間的時序關係,滿足對sdram讀寫所必需的時序要求。狀態機的狀態轉移如圖3所示。

在模式設定之後,bank和行位址選中需要訪問資料所在的具體bank塊和行,狀態機對這一行發出啟用命令,從啟用到讀寫操作需要經過乙個trcd的延時,設計中選trcd=20 ns,而系統時鐘週期為9.26 ns,所以從啟用到執行讀寫操作之間至少需要3個時鐘週期。在執行讀寫操作時,只要狀態機通過讀寫命令選中資料所在行的列位址,就能達到讀寫具體儲存單元的目的。狀態機對sdram發出乙個讀命令後,需要等待乙個cas latency,然後才能讀資料;而寫操作是實時的,不需要延時,狀態機在發出寫命令後,就可以對sdram進行寫操作。

sdram同時只允許一行位址啟用,因此在完成某bank/row的讀寫操作後,對該bank/row進行預充電,然後才能啟用下乙個bank/row。從預充電成功到下一次啟用命令成功,如果是在同乙個bank塊,則需要延時trc,如果是不同的bank塊,則需要延時trrd。

sdram要求在64 ms之內對4 096行進行重新整理,也就是每15.625μs重新整理一行。由於系統時鐘週期為9.26 ns,所以重新整理模組計數達到1 685時,就需要對sdram發出重新整理命令,保證sdram中的資料不丟失。將自動重新整理請求設為優先請求,狀態機內部有請求仲裁邏輯,當自動重新整理請求和其他請求同時出現時,優先保證自動重新整理請求,狀態轉移至重新整理操作,當重新整理操作結束時,重新返回空閒狀態,開始響應其他請求。

3 工程應用介紹

該設計目的是為了擴充套件tms320dm642的fifo容量,以fpga為介面,實現與sdram的連線。tms320dm642可以對4 gb的位址進行定址,而實際應用中fifo的容量只有256 kb,定址空間為0x0184000~0x0187ffff,因此在實際應用中必須進行擴充套件。這裡採用1片micron公司的mt48lc4m3282型號的128 mb sdram,採用32位資料匯流排,將其通過fpga配置在tms320dm642處理器的emifa ce3上,其位址範圍為0xb0000000~0xb7ffffff。

在該設計中,突發長度為8,cas latency為3。圖4為用modelsim se 6.0**的sdram讀時序圖。

4 結語

該設計已應用於目標識別與跟蹤系統中的幀緩衝。文中主要介紹了sdram的具體訊號關係,說明各種操作命令,給出在高速影象儲存系統中sdram控制器的具體硬體介面設計。大容量儲存器是fifo的發展方向,從現在通用的sdram、專用的sram,到ddr sdram,容量越來越大,速度也越來越快,而用fpga作為sdram的控制器,具有最大的靈活性,也能在最大限度上發揮sdram高速度的優勢,因此對它進行研究具有重要的意義。

基於FPGA的交通燈設計

數字系統課程設計報告書 目錄摘要1 1設計目的2 2設計內容及要求2 3系統整體方案及設計原理2 4各模組電路設計與實現3 4.1 分頻模組設計與實現3 4.1.1分頻模組圖 4.1.2分頻模組程式 4.2 交通燈控制器模組設計與實現4 4.2.1交通燈控制模組圖 4.2.2交通燈控制模組程式 4....

2023年基於FPGA的DDS設計版

一 實驗名稱 基於fpga的dds訊號源設計 二 技術規範 1.實驗目標 設計乙個直接數字頻率合成 dds,direct digital synthesis dds是一種新型的頻率合成技術。dds 技術是一種把一系列數字形式的訊號通過dac 轉換成模擬訊號的合成技術。dds 技術具有頻率切換時間短,...

基於FPGA的模糊控制器的設計

現場可程式設計門陣列fpga是近年來發展迅速的大規模可程式設計邏輯器件,它具有設計周期短,片內資源豐富,可無限次載入和現場可程式設計等特點。在fpga上實現模糊控制器是一種介於專用積體電路 asic 和通用處理器之間的方案,具有電子產品的高速度 高可靠性 小型化 整合化 低功耗 保密性能好 具有自主...