基于FPGA高速實時數據傳輸系統設計方案
由 DVI[1]解碼芯片輸入給 fpga的像素時鐘信號 Pclk、數據使能信號 DE以及場同步信號 Vsy表示 24bit并行像素數據的同步信息。例如: 1024×512顯示分辨率的圖像,則在每兩個場同步信號 Vsy脈沖之間有 512個“DE=1”的數據有效信號,而在每個“ DE=1”的數據有效信號中有 1024個 Pclk像素時鐘信號,如此可將輸送的像素數據同步。
寫緩沖區控制器直接接收輸入的 DVI數據同步信號,在每個 Vsy脈沖來時將寫緩沖區寫入地址清零,然后在“DE=1”時寫緩沖區控制器內的地址計數器計數有效,在每個 Pclk上升沿進行計數加 1操作,這樣在每個 DE有效時會產生一行的像素數據地址,再到下一個DE有效時地址計數器又會重新計數,如此循環,而寫緩沖區會按照對應的地址將輸入的 24bit并行像素數據同步寫入緩沖區內。寫緩沖區控制器會在地址計數器計數到半行數據地址的時候,向內存控制器發送寫緩沖區讀請求信號( wcache_rreq)和相應緩沖區地址,要求內存控制器對已寫入的半行像素數據以 48bit并行數據格式進行讀取,由于內存控制器的等效操作時鐘遠遠高于寫緩沖區的寫入時鐘,因此內存控制器會迅速的將已寫入的半行數據讀出并停止讀數,等待下一個 wcache_rreq的到來,如此便形成了對寫緩沖區的乒乓操作,保證了輸入像素數據的正確和連續接收,避免產生像素數據漏接和不同步的現象。讀緩沖區控制器的設計思路同上,不再贅述。
3.2 內存控制器的設計 [5] [6]
內存控制器里包含主狀態機和內存控制模塊,如圖二所示,主狀態機負責對兩個緩沖區和片外靜態存儲器的讀寫狀態控制,共有四個狀態――空閑狀態、寫緩沖區讀取狀態、讀緩沖區寫入狀態和讀寫交替狀態,用于控制狀態機狀態轉移的信號包括:寫緩沖區讀請求信號(wcache_rreq)、寫緩沖區讀取完成信號( r_over)、讀緩沖區寫請求信號( rcache_wreq)以及讀緩沖區寫入完成信號 (w_req)。狀態機在沒有任何操作請求下處于空閑狀態,而當其接收到“wcache_rreq”信號時,狀態就會隨之變為寫緩沖區讀取狀態并進行相應操作,而當讀取操作完成后會有“ r_over”信號傳入狀態機,狀態機又會轉入空閑狀態等待下一信號進入,而當狀態機處于寫緩沖區讀取狀態時接收到了“ rcache_wreq”信號,則狀態機轉入讀寫交替狀態,此時會對寫緩沖區和讀緩沖區進行交替操作,一旦有一個緩沖區操作完成時會輸入相應的操作完成信號,此時狀態機即轉入對另一緩沖區的單獨操作直至操作完成再次進入空閑狀態。整個狀態轉移過程保證了對讀寫緩沖區操作請求的及時響應,杜絕了由于狀態沖突導致的漏操作現象。
本文引用地址:http://www.104case.com/article/169485.htm
系統選用的片外靜態存儲器的地址總線為 19位,數據總線為 16位,經公式( 1)計算可知采用三片內存的總容量正好可以存儲兩場 1024×512顯示分辨率的圖像,這樣可以對存儲器進行乒乓操作,在存儲器內寫入一場數據,讀取另一場數據,兩者交替獨立進行。(1)
內存控制模塊負責對片外存儲器進行控制,其控制信號是兩個低電平有效信號[3]:nWE和 nCS。nCS為片選信號,當為高電平時存儲器處于非工作狀態,此時不能對存儲器進行任何操作,低電平時為正常工作狀態,可以進行讀寫操作;nWE為存儲器寫入信號,當置為低電平時可以對存儲器執行寫入操作,置為高電平時則可以對存儲器執行讀取操作。內存控制模塊按照主狀態機的當前狀態來設定兩個控制信號的高低電平對片外存儲器進行控制。圖三為在 QuartusII硬件開發平臺上通過邏輯分析儀實際采樣出來的片外靜態存儲器工作時序波形圖[6],以中圖為例,存儲器由寫入狀態轉為讀取狀態,存儲器的地址總線信號和數據總線信號的變化就可看出存儲器狀態的變化,在寫入狀態時地址總線按時鐘周期發生變化,同時會有 48bit并行數據寫入相應內存地址中,而在存儲器進入讀取狀態后,地址總線則變為讀取地址,存儲器則會在延遲地址總線一個時鐘周期后將 48bit數據經由數據總線讀出。
評論