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