在DSP 應用系統中,需要大量外擴存儲器的情況經常遇到。例如,在數碼相機和攝像機中,為了將現場拍攝的諸多圖片或圖像暫存下來,需要將 DSP 處理后的數據轉移到外存中以備后用。從目前的存儲器市場看,SDRAM 由于其性能價格比的優勢,而被 DSP 開發者所青睞。DSP 與 SDRAM 直接接口是不可能的。
FPGA(現場可編程門陣列)由于其具有使用靈活、執行速度快、開發工具豐富的特點而越來越多地出現在現場電路設計中。本文用 FPGA 作為接口芯片,提供控制信號和定時信號,來實現 DSP 到 SDRAM 的數據存取。
1 、SDRAM 介紹
本文采用的 SDRAM 為 TMS626812A,圖 1 為其功能框圖。它內部分為兩條,每條 1M 字節,數據寬度為 8 位,故存儲總容量為 2M 字節。
所有輸入和輸出操作都是在時鐘 CLK 上升沿的作用下進行的,刷新時鐘交替刷新內部的兩條 RAM。TMS626812A 主要有六條控制命令,它們是:條激尖 / 行地址入口、列地址入口 / 寫操作、列地址入口 / 讀操作、條無效、自動刷新、自動刷新。SDRAM 與 TMS320C54x 接口中用到的命令主要有:MRS、DEAC、ACTV、WRT-P、READ-P 和 REFR。這里,設計目的就是產生控制信號來滿足這些命令的時序要求。關于 TMS626812A 的具體說明可以查看其數據手冊。
2 、SDRAM 與 TMS320C54x 之間的通用接口
圖 2 是 DSP 與 SDRAM 的通用接口框圖,圖中 DSP I/F 代表 TMS320C54x 端接口單元,SDRAM CNTL 代表 SDRAM 端接口控制單元。SDRAM 被設置成一次性讀寫 128 個字節,而 DSP 一次只讀寫一個字節,因而建立了兩個緩沖區 B0、B1 來緩存和中轉數據。B0、B1 大小都為 128 字節,而且映射到 DSP 中的同一地址空間。
盡管 B0、B1 對應于同一地址空間,但對兩個緩沖區不能在同一時刻進行合法訪問。實際上,當 B0 被 DSP 訪問時,B1 就被 SDRAM 訪問,反之也成立。若 DSP 向 B1 寫數據,SDRAM 就從 B0 讀數據;而當 SDRAM 的數據寫到 B0 中時,DSP 就從 B1 讀數據。兩者同時從同一緩沖區讀或寫都將激發錯誤。上邊所述的數據轉移方式有兩種好處:一是加速了 TMS320C54x 的訪問速度,二是解決了二者之間的時鐘不同步問題。
3 、FPGA 中的硬件設計
TMS320C54x 為外部存儲器的擴展提供了下列信號:CLK、CS、AO~A15、D0~D15、RW、MATRB、ISTRB、IS,而 SDRAM 接收下列信號:CLK、CKE、CS、CQM、W、RAS、CAS、A0~A11。由于兩端控制信號不同,需要在 DSP 與 SDRAM 之間加上控制邏輯,以便將從 DSP 過來的信號解釋成 SDRAM 能夠接收的信號,圖 3 是用 FPGA 設計的頂層硬件接口圖。
圖中主要由三個模塊:DSP-IQ、DMA-BUF 和 SD-CMD。其中 DSP-IO 是 DSP 端的接口,用來解碼 TMS320C54x 發送的 SDRAM 地址和命令。DMA-BUF 代表緩沖區 BO、B1。SD_CMD 模塊用來產生 SDRAM 訪問所需的各種信號。
DSP_IO 模塊又包括 IO_DMA、DSP_BUF 和 DSP_READ。IO_DMA 產生 SDRAM 的命令信號,即圖 3 中的 DSP_RDY、DSP_SD_RW、DSP_SD_BANK_SW、DSP_SD_ADDR[20..0]、DSP_SD_ADDR_RESET、DSP_SD_START。DSP_BUF 產生訪問 B0、B1 的地址、數據和控制信號,圖 3 中指 DSP_SD_BUFCLKI、DSP_SD_BUFCLKO、DSP_SD_BUFWE、DSP_SD_BUFADDR[6..0]、DSP_SD_BUFIN[7..0]。DSP-READ 子模塊用來控制 DSP 的讀寫方向。
DMA_BUF 分為 B0、B1 兩個緩沖區,用來進行數據傳送,每個緩沖區的輸入輸出信號包括:CLKI、CLKO、WE、ADDR[6-0]、DATA_IN[7-0]、DATA_OUT[7-0]。BANK_SW 是一個開關信號,用于 DSP 和 SDRAM 對 B0、B1 的切換訪問。
SD_CMD 模塊包括刷新、讀、寫功能。當 DSP 芯片發出 SDRAM 讀命令時,128 字節的數據從 SDRAM 中讀出來并被存儲到 B0 或 B1 中,當 DSP 發出寫命令之時,128 字節的數據傳到 B0 或 B1 之中并被最終寫到 SDRAM 中。
4 、軟件設計
TMS626812A SDRAM 有兩兆字節的存儲容量。所以 DSP 用兩個 I/O 地址向 FPGA 傳送訪問 SDRAM 的高低地址。此文中,該兩個 I/O 地址對應用圖 4 中的 03h(DMA_ADDH)和 04h(DMA_ADDL)。另外,還有一個 I/O 地址(圖 4 中的 05h)用來向 FPGA 傳送命令產生 SDRAM 訪問的信號。
DSP 向 SDRAM 寫數據時的操作步驟如下:
(1)數據先被寫到 B0 或 B1。
(2)SDRAM 的訪問地址經由 DSP 的 I/O 地址 DMA_ADDH 和 DMA_ADDL 發送到 FPGA 中。
(3)DSP 向 FPGA 發出一個命令(I/O 地址為 DMA_CTL)產生控制信號,使 SDRAM 從 B0 或 B1 中讀取數值。
DSP 從 SDRAM 讀數據的操作步驟如下:
(1)DSP 傳送訪問 SDRAM 的地址。
(2)DSP 經由 FPGA 傳送一個命令,使得數據從 SDRAM 中讀到 FPGA 中。
(3)DSP 從 B0 或 B1 中讀得數據。
圖 4 為 DSP 中與數據傳送相關的各類存儲器的分配情況。
具體設計時,應參考相關資料進行補充。不同的 DSP 與不同類型的 SDRAM 接口時,會有細微的區別,電路設計完畢后要進行認真而多方面的測試。
責任編輯:xj
原文標題:將FPGA作為接口芯片,如何實現DSP和SDRAM數據讀取?
文章出處:【微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
-
dsp
+關注
關注
553文章
8011瀏覽量
349175 -
FPGA
+關注
關注
1629文章
21748瀏覽量
603954 -
芯片
+關注
關注
456文章
50889瀏覽量
424302 -
SDRAM
+關注
關注
7文章
424瀏覽量
55258
原文標題:將FPGA作為接口芯片,如何實現DSP和SDRAM數據讀取?
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論