第二章 嵌入式影像處理系統硬體電路設計
2.3 數位訊號處理器(DSP)模組
本系統使用德州儀器(Texas Instruments,TI) 公司的高效能定點式數位訊號處 理器TMS320C6414TGLZ7 ,此系列產品主要應用於數位影像、通訊設 備等,核 心電壓1.2V,IO電壓則是3.3V,操作頻率為720MHz 。TI為數位訊號處理器提供 了完整的開發工具,包括整合式的開發環境 Code Composer Studio(CCS) 、即時 的 作 業 系 統DSP/BIOS 、 控 制 與 配 置 DSP 內 部 周 邊 的 晶 片 支 援 程 式 庫 (Chip Support Library, CSL)、最佳化的C語言編譯器與組合語言組譯器等等,藉由這些 工具的輔助,可以大幅減化開發的困難度。
2.3.1 外部記憶體介面(External Memory Interface, EMIF)
EMIF是DSP用來連接外部裝置的介面,如:非同步記憶體 (SRAM、FLASH 等)或同步式記憶體 (SDRAM, SSRAM...) ,本系統同時用來連接 FPGA。C64x系 列 的EMIF分成EMIF-A與EMIF-B,表2-5是其特性的摘要說明 。EMIF 的時脈輸 入 來 源 是 由EMIF-B 的 位 址 線 決 定 ( 見 2.3.3 節 ) , 透 過 EMIF 的 全 域 控 制 暫 存 器 (GBLCTL)可以設定兩個時脈輸出訊號 (如圖2-7),此輸出之時脈用來同步化外部 的裝置,例如:SSRAM、SDRAM或FIFO等。
表2-5 DSP的EMIF介面特性摘要
項 目 EMIF-A EMIF-B
匯流排寬度 64-bit 16-bit
1024 256
在 本 系 統 中 ,EMIF-A 的 輸出 時 脈 是由 外部 的振 盪電 路產 生, 分別 供給 SDRAM (ECLKOUT1)與FPGA(ECLKOUT2)做為同步時脈之輸入,SDRAM的同步頻率為 132.8MHz,FPGA的同步頻率則是 66.4MHz;EMIF-B的輸出時脈 則由CPU時脈 除頻而來,目前由ECLKOUT2供應30MHz時脈給USB之Slave FIFO介面。
2.3.2 記憶體映射圖(Memory Map)及介面訊號
C64x採用記憶體映射的方式來存取內/外部的裝置,例如:EMIF-A的暫存器 位於0x01800000~0x0183FFFF。系統中DSP的外部裝置映射到EMIF-A與EMIF-B 的記憶體空間,表2-6為本系統DSP外部裝置的位址及範圍。表中Slave FIFO表示 USB裝置CY7C68013A的操作模式。另外,由於FIFO的讀寫都是對同一個位址,
因此其大小欄位相當於資料寬度。
圖2-7 EMIF輸出時脈的路徑選擇[12]
表2-6 本系統的DSP記憶體映射圖
外部裝置 十六進制位址範圍
EMIF-B CE1 FLASH ROM 6400 0000~643F FFFF 4M EMIF-B CE3 6C00 0000~6C00 0001 2
6C00 1000~6C00 1001 2 EMIF-A CE0 SDRAM 8000 0000~81FF FFFF 32M
EMIF-A CE1
9000 0000~9000 0003 4 9000 0004~9000 0007 4 EMIF-A CE2 A000 0000~AFFF FFFF 256M EMIF-A CE3 B000 0000~BFFF FFFF 256M
EMIF 記憶體空間
大小 (bytes)
Slave FIFO 輸入端點2 Slave FIFO 輸入端點6
FPGA 內部的影像FIFO FPGA 內部的積分影像 FIFO
FPGA保留空間 FPGA保留空間
由於DSP的EMIF介面已經內建多種標準記憶體的控制時序,只要在使用前透過相 關的暫存器調整時序參數即可,因此在選用DSP的記憶體時也儘量選擇標準的產 品 , 以 簡 化 電 路 的 設 計 。 表2-7 、 表 2-8 、 表 2-9 分 別 是 DSP 與 SDRAM 、 FLASH ROM與Slave FIFO的訊號連接方式與說明。
表2-7 連接於DSP EMIF-A之SDRAM訊號說明
表2-8 連接於DSP EMIF-B之FLASH ROM訊號說明 記憶體型號
AEA[14:3] A[11: 0] 記憶體位址
AEA[16:15] BS[1:0] 選擇內部的記憶庫
CAS 行位址觸發
ASDCKE CKE 時脈訊號致能
ACE0 CS 晶片選擇
AED[63:0] DQ[31:0] X 2
ABE[7:0] DQM[3:0] X2 輸出與輸入的資料遮罩
RAS 列位址觸發
WE 寫入致能
AECLKOUT1 CLK 同步用的時脈輸入
IC42S32400-6T (SDRAM) 共2顆,資料匯流排寬度為64
EMIF-A訊號 SDRAM訊號 SDRAM訊號說明
ARE/SDCAS/SADS/SRE
寫入或讀出SDRAM的資料
AOE/SDRAS/SOE AWE/ SDWE/SWE
記憶體型號 AM29LV320DB90EI (FLASH ROM)
BEA[20:1] A[19:0] 記憶體位址
GP0 A[20]
EMIF-B訊號 FLASH訊號 FLASH訊號說明
由於EMIF-B的位址線不足,故由一般輸出腳將
表2-9 連接於DSP EMIF-B之Slave FIFO訊號說明
2.3.3 內部周邊配置
C6414T的內部周邊配置主要是根據EMIF-B位址線在重置時的電壓準位來決 定 。由於C6414T不含PCI功能,故 PCI_EN接腳必須為低電位,使得相關共用接 腳的周邊自動被致能,包括Host-Port Interface (HPI) 、GPIO[15:9]及McBSP2。
另外,程式開發時也必須符合硬體的配置,例如:CSL程式庫的選用要與Endian
BECLKOUT2 IFCLK 同步用的時脈輸入
GP1 FLAGA
GP2 FLAGB
GP11 PA3 封包起始訊號
GP4 PA1 同步用脈波
GP10 PA0 命令資料
DSP周邊型號 CY7C68013A (操作於Slave FIFO模式的高速USB) EMIF-B及GPIO訊號 Slave FIFO訊號 Slave FIFO 訊號說明
選擇內部的輸入或輸出端點(2, 4, 6, 8)
b) ROM開機模式
為了讓嵌入式影像處理系統脫離開發環境而獨立運作,DSP開發完成後必須 將程式碼燒錄到外部的FLASH ROM,再將開機模式設為ROM開機,上電重置後 C6414T會自動載入EMIF-B CE1的前1K Bytes程式碼然後開始執行。由於 DSP的 程式碼大部分都會超過1K Bytes,故此區塊通常均存放自行撰寫的二次開機載入 程式(Secondary Bootloader),再由此程式將其它程式節區搬移到執行用記憶體。
表2-10 C6414T內部周邊配置說明 功 能 說 明
本系統使用的FLASH ROM型號為AM29LV320DB90EI ,除了儲存程式碼也 可用來儲存執行時需要的參數資料。由於EMIF-B的位址線不足,故使用GP0來將 FLASH ROM空間分成二個區塊,在DSP上電重置時GP0預設為低電位,因此在 開機階段使用的是FLASH ROM 的前半個區塊。另外 FLASH ROM在電路上設定 為Word(16-bit)模式,因此讀寫時必須使用其Word模式的命令[17]。但是C6414T 在 開 機 自 動 載 入 階 段 預 設 只 能 使 用8-bit ROM , 所 以 要 將 程 式 碼 燒 寫 入 FLASH ROM時必須使用8-bit的資料型別,此時邏輯位址 bit[0]對應到EMIF-B的BEA[1]
再連接至 FLASH ROM的位址A[0]。
2.3.5 外部裝置的通訊介面
本系統與外部裝置的通訊介面有二種。第一種是高速USB介面,主要是與PC 或 其 它 主 控 制 器 通 訊 , 用 來 接 收 命 令 或 上 傳 影 像 及 特 徵 資 料 ; 第 二 種 則 是 利 用 DSP的McBSP周邊模擬RS232的介面,可用來連接機器人的馬達控制模組等。
a) 高速USB 介面
此 介 面 使 用Cypress 公 司 的 EZ-USB FX2LP 高 速 USB 控 制 器 , 型 號 為 CY7C68013A,連接於DSP的EMIF-B匯流排。為了達到最大的傳輸頻寬,因此將 CY7C68013A設定為同步式Slave FIFO模式,圖2-8是寫入時的波形。圖中的時間 單位為ns,時間參數則是 Slave FIFO所需的參數,括號內的數值是它的最小值,
其它數值則是相對於原始BECLKOUT2或IFCLK正緣的時間。另外,假設IFCLK 在內部反相後與BECLKOUT2的時間延遲可以忽略。
Slave FIFO 的 同步 時 脈 IFCLK 由 EMIF-B 的第 二組 時脈 BECLKOUT2 提供 , 由於在電路設計初期預設是使用非同步的傳輸,後來由於頻寬不足必須改用同步 式 的Slave FIFO , 導 致 時 間 參 數 tS WR與tS FA無 法 滿 足 要 求 , 因 此 最 後 在 BECLKOUT2 的 串 聯 電 阻 後 面 再 並 聯 一 個 150pF 左 右 的 電 容 形 成 一 組 RC 延 遲 電 路,讓原始的BECLKOUT2與輸入到IFCLK的訊號相差大約5.4ns,如此tS WR即可 符合時序,但是tS FA則會落在臨界值。因此為了保險起見,在切換不同的輸入端點 後(改變FIFOADDR),要先讀取相同CE3空間中虛設的位置,讓FIFOADDR提早 一個IFCLK週期被設定好。
除 了 前 述 的IFCLK 問 題 之 外 , 因 為 CY7C68013A 的 資 料 手 冊 中 只 有 標 示 IFCLK正緣變化後到資料輸出的最大時間,並未明確指出它的最小時間,因此無 法確認 是否 符合EMIF-B的讀取時序。考量到實際傳輸影像或特徵時才需要大量
的頻寬,因此只有在DSP上傳時使用同步式 Slave FIFO介面;當USB控制器接收 到PC的命令後會先轉換成串列資料,再利用GPIO及中斷訊號將命令送到DSP。
b) RS232介面
本 系 統 預 留 二 個RS232 的 介 面 , 用 來 與 機 器 人 的 馬 達 控 制 器 或 其 它 裝 置 通 訊。由於C6414T不直接支援標準UART,因此本系統利用 McBSP0與McBCP1來 模擬RS232介面。McBSP可以被設定成兩種模式來達到此目的:串列埠模式或一 般IO模式[24]。一般IO模式並非限定使用McBSP,在[24]裏有提供相關的範例程 式。本系統將McBSP的電路設計成串列埠模式,連接方式如圖2-9所示。
圖2-8 EMIF-B與同步式Slave FIFO介面波形
圖2-9 McBSP使用串列埠模式連接RS232的方式 McBSP 準位轉換
DR FSR DX
RS232 介面 TXD
RXD
如 圖2-9所示,因為RS232的TXD訊號包含資料位元與資料框 (frame)的訊息,故 將此訊號連接到McBSP的資料輸入(DR)與資料框的同步化輸入(FSR),RXD訊號 則連接到McBSP的資料傳送(DX)。
使用McBSP模擬RS232時,每個資料位元以 16-bit字組表示,相當於McBSP 的取樣頻率等於鮑率的16倍。軟體必須將待傳的每個位元擴展成16 -bit字組,同 時將收到的每16-bit字組壓縮成一個資料位元。另外,RS232的起始位元是一個負 緣訊號,因此McBSP的資料框同步也要設為負緣觸發。以 RS232常用的N, 8, 1傳 輸模式(無同位元,8個資料位元,1個停位元)為例,可以將每個傳送的位元組分 成二個部分,第一部分包含起始位元與8個資料位元,每個位元都以 16-bit字組表 示;第二部分則是將一個停止位元用2個8-bit位元組表示,當使用1.5個停止位元 時,則可改用3個8-bit位元組表示,圖2-10所示為McBSP傳送N,8,1模式的RS232 位元組的波形。
2.3.6 GPIO與中斷訊號
C6414T的GPIO用於接收經由USB裝置傳來的串列式命令或監控Slave FIFO 的 狀 態 。 另 外 , 當FPGA 內 的 FIFO 被 填 滿 後 , 會 發 出 一 個 觸 發 EDMA 的 訊 號 將 FIFO的內容搬移到DSP內部。