採用「現場可程式閘陣列(FPGA)」產品(例如:Spartan-II),及RC32364 RISC處理器和多種「特殊應用標準元件」(Application-Specific Standard Product;ASSP)可以將MP3數位音頻播放機設計成具有先進的用戶介面特性。FPGA元件主要用於實現記憶體與輸入輸出元件(I/O devices)的管理和介面功能,RC32364則用來實現MP3解碼、圖形用戶介面(GUI)和控制其它元件的功能。這種設計方法也適用於其它多媒體或網路通訊嵌入式系統。
設計過程中,主要工作是解決如何對壓縮的音頻數據進行解碼和播放,下面列出了這些方面的技術問題及解決方案,包括:
- (1) 如何在嵌入式系統中提供圖形用戶介面;
- (2) 如何在嵌入式系統中實現低成本的LCD顯示器、觸控式螢幕、USB、IrDA和微型Flash的介面;
- (3) 使用NAND Flash記憶體時如何進行誤碼處理;
- (4) 如何控制SDRAM記憶體。
元件的選用
嵌入式系統設計的主要目的是如何用最低的成本提供最多的附加性能,如個人數位助理器(PDA)中常見的儲存聯繫資訊、備忘錄和其它功能。
(圖一)是總體設計藍圖,其中的主要功能模組包括:
- ●128×128像素的圖形觸控式螢幕;
- ●用於下載音樂和進行網路連接的USB介面;
- ● 用於與其它設備交換數據的IrDA相容紅外線介面;
- ● 容量為32MB的內置Flash記憶體;
- ● 用Flash卡或MicroDrive硬碟進行儲存空間擴展所需的Flash介面。
所有這些功能元件都在FPGA和高性能32位元RISC處理器的驅動下工作。在詳細介紹由FPGA元件(Spartan-II)實現的功能之前,先看一下設計中所用到的其他可定制(customized)標準元件(ASSP)。
立體聲數位類比轉換器
可選用CS4343作為數位類比轉換元件,該元件的特點包括:1.工作電壓為1.8V到3.3V;2. 轉換精密度為24位,最高轉換速度為96KHz;3. 具有數位化音量控制功能;4. 具備數位化高音和低音增強功能;5. 內置耳機放大器,可以在16Ω負載時提供5mW的輸出功率。此外,CS4343提供類比立體聲耳機介面、用於傳送數位音頻數據流的串列埠(serial port)以及用於元件配置的控制埠。
Flash記憶體
可選用KM29U64000T作為Flash記憶體,其容量為8×8Mbits。該記憶體採用NAND Flash技術設計,具有密度高和位元成本低的特點。KM29U64000T有兩個重要的特性,在系統設計時須注意。第一個特性是高度再使用的窄頻擷取介面,該介面既用作位址匯流排、又用作數據匯流排(8位元)。
第二個特性是數據完整性問題,它是所有採用NAND技術設計的元件所共有的問題。可以從兩個方面來看待這個問題。首先,在元件出廠時,可能由於數據錯誤存在不可用的儲存區塊,這在元件的數據手冊中可以看得出來,手冊中會有個稱為NVB的參數用來表示元件所包含的有效區塊(block)數量。元件不同,這個參數值也不相同,取值範圍從1,014到1,024,典型值為1,020。儘管第一個區塊保証是完好的,但是記憶體陣列中任何地方都可能出現不可用的區塊,在出廠時通常會在頁面(page)中第一個或第二個區塊的0位址處寫入0以標示這些無效區塊。因此有必要在系統級了解元件中哪些是好區塊,因為不可用區塊的存在會產生不連續的儲存映射(mapping)。
SDRAM記憶體
SDRAM記憶體可選用容量為512K×16×2的MT48LC1M16A1S。工作頻率為125MHz到166MHz,該元件可提供LVTTL(low-voltage TTL)同步介面。
USB控制器
USB介面可採用USBN9602控制器。這種28接腳SOIC封裝的全速USB控制器內含有USB整合收發器和7個FIFO,其中有2個FIFO的深度為64位元組。USBN9602採用8位元微處理器匯流排,可以工作於再使用或非再使用模式。從軟體角度看由於再使用模式支援對內部暫存器的隨機存取,因此表現得更有吸引力,而且該模式還能減少所需的接腳數量。
FPGA元件
所採用的Spartan-II元件包含有10個主要功能模組:IP匯流排控制器、CPU介面、LCD控制器、記憶體數據通道、SDRAM控制器、Flash控制器、CompactFlash控制器、IrDA控制器、DAC介面和觸控式螢幕介面。
這些模組藉由稱為IP匯流排的多主控元件(multi-host)非再使用數據位址匯流排相連。雖然IP匯流排看上去有些像功能模組的一根連接匯流排,但事實上該匯流排由再使用器來控制數據進入內部數據通道,採用這種方法可以取消三態驅動器。在這個設計中,IP匯流排有CPU介面和LCD控制器兩個主控元件。
大多數位類比模組是相互獨立的,但Flash、SDRAM和Flash介面之間共享同一位址和數據匯流排,這使得這些數據通道上的再使用變得相當複雜,但是減少了接腳數量。
各模組所需的資源
IP匯流排控制器
IP匯流排控制器模組主要完成兩大任務:位址解碼和IP匯流排仲裁。位址解碼模組用來產生作為傳送目標IP模組的選擇訊號,同時還控制再使用器選擇來自傳送目標的反饋訊號(如應答訊號等)。
來自CPU介面的訪問請求(visit request)與來自LCD控制器的訪問請求之間的IP匯流排仲裁採用了循環優先等級方案,IP匯流排仲裁模組還可以控制再使用器選擇控制傳送所需的控制訊號(如RD、WR等)。
CPU介面
CPU介面模組完成三大功能:協定轉換、CPU初始化和位址再使用。
CPU初始化模組產生復位訊號所需的時序,以及產生匯流排配置資訊並發送到匯流排的允許和中斷訊號介面上。這些配置資訊用來設置引導程式PROM寬度,並啟動CPU定時器。該模組在初始化工作完成後驅動IrDA和音頻DAC產生中斷訊號,並輸出到CPU相應中斷訊號介面。
匯流排狀態機(state machine)將CPU匯流排上的訊號格式轉換成IP匯流排所用的格式,或者當CPU匯流排與USB介面交換資訊時將訊號轉換為USBN9602所接受的格式。
雖然本模組不需要任何軟體的支援,但USB介面本身需要大量的軟體支援。這種被稱為USB通訊協定堆疊的軟體流程分為二個部份:一部份是參與USB協定以及隨插即用(PnP)功能所需的軟體,另外一部份是將MP3文件從主機系統傳送到播放機所需的特定應用代碼。
LCD控制器
LCD控制器負責用儲存於SDRAM的圖像數據重新整理(refresh)螢幕。它的工作原理類似於CRT顯示控制器的工作原理,但與大多數顯示控制器不同的是LCD控制器所產生的顯示格式不具備可程式性,而且光柵模式固定為128×128像素,顯示時序也是固定的,對於採用整合顯示器的嵌入式系統設計來說這種安排是非常有利的。雖然顯示模式不能在系統中動態改變,但藉由設計時將不同的FPGA裝載入Flash就可以支援不同的顯示模式。
為了防止出現不良的顯示圖像,每當移位暫存器清空時,FIFO就必須產生有效的新數據,產生周期為500ns。由於對SDRAM的不連續數據讀取會占用很大的資源,為了減少這種開銷可以採用多位元組讀取方法,但多位元組占用多的FIFO容量以及占用IP匯流排時間長,降低匯流排反應速度。因此,折衷後採用2位元組讀取,3位元組深度的FIFO,顯示器緩衝記憶體每1毫秒(ms)執行一次數據讀取。
本模組所需的支援軟體僅為利用緩衝記憶體產生螢幕圖像的一段程式碼。該緩衝器是512×32個字(character)的陣列,每個字代表螢幕圖像的32個像素。位於基位位址(base address)的字中最高位(MSB)代表螢幕左上角的像素,最低位(LSB)代表螢幕上第一排第32個像素。
記憶體介面
記憶體介面模組用於實現將8和16位記憶體映射到32位IP匯流排。
SDRAM控制器
SDRAM控制器可在Xilinx應用指南XAPP 134中給出的原始設計基礎上進行開發,為了適應主機介面的差別可對原始設計做一些修改。原始設計中主機介面是位址數據再使用匯流排,而本設計所用的IP匯流排是非再使用匯流排。另外,原始設計支援2個MT48LC1M16記憶體所需的32位元寬記憶體結構,而本設計中記憶體數據匯流排僅為16位元,而且MT48LC1M16也只有一個。
Flash控制器
本設計的最大成本因素是儲存MP3音頻文件所需的大容量Flash記憶體(32MB)。為了有效降低這一成本,可以充分利用該記憶體來滿足系統中所有非揮發性儲存的要求,包括儲存CPU的執行代碼,以及儲存FPGA的配置資訊。採用這種結構帶來這樣一個問題:是直接從Flash執行程式?還是複製到SDRAM再執行程式呢?這需要考慮以下兩因素。
首先是性能,位址和數據共用的8位元介面雖然會對性能有所影響,但最重要的問題實際上是隨機存取延遲。512位元組的分頁儲存數據讀取時間可以保持在50ns之內,但當處理器擷取的數據在不同的頁面時就會遇到麻煩。當處理器工作頻率為66MHz時,將一個數據頁調入可被擷取的頁暫存器的時間為7μs,約為462個指令周期。這種延遲會嚴重地影響元件的即時工作性能。
其次是誤碼(error code)處理。Flash中每512位元組的頁面只留有16位元組的空間用於儲存ECC資訊,而對於小型儲存模組來說儲存ECC資訊的儲存空間遠遠不夠。例如,採用Hamming碼來糾正RC32364(16位元組)緩衝線上的單個誤碼位,模組中數據位數量N與ECC位數量K的關係必須滿足下面公式:
因為每個頁面有32根(512/16)緩衝線,因此儲存ECC總共需要32個位元組(32*8/8),但Flash只提供了16個位元組的儲存空間。
解決這個問題的方法是將區塊增加到32個位元組,這時每個區塊所需的ECC位為9位,但這時每個分頁只能有16個區塊及相應的ECC儲存空間。為了適應這種較大容量的區塊,可以在兩個緩衝線上執行RC32364區塊檢查,這樣做的副作用是原本每次只能有一根緩衝線,如果二根同時檢查的話會相對地增加記憶體的延遲特性。
因此,可選擇在啟動時將可執行圖像複製到SDRAM記憶體的方法。這種方法不僅能提高系統性能,而且可以將ECC檢查問題轉化為非即時軟體處理。Flash控制器所需的支援軟體由Flash BIOS組成,它可以執行編程、清除和儲存區塊有效性檢查,所使用的程式是屬底層原始語言(primitive)或組合(機器)語言。
IrDA控制器
IrDA控制器實際上是一個專門的和固定功能的UART。
音頻數位類比轉換器介面
音頻數位類比轉換器CS4343的介面是由兩個獨立的功能模組組成,每一個模組對應到個別的序列埠(serial port)。控制端介面實際上是由軟體執行的2位元I/O埠,可以實現DAC中控制暫存器和狀態暫存器所用的I2C協定。這種介面方案所用的元件最少,並且由於埠的低數據速率和低工作頻率,而具有很大的實用性。
序列音頻埠在系統工作的大多數時間內都處於工作狀態。這種硬體由兩個FIFO組成:一個FIFO對應一個音頻通道、一個用於管理FIFO和安排介面訊號的狀態機,主要用來實現傳送協定和發送連續的音頻數據流。
觸控式螢幕介面
觸控式螢幕介面實際上就是一個普通的I/O埠,允許處理器藉由它讀取雙通道類比數位轉換器返回的數據。藉由該介面系統軟體能順利讀取用戶觸摸螢幕相對應的X、Y軸阻抗值,再藉由系統軟體進行線性化處理,並去除瞬態觸摸。
FPGA元件選擇
Spartan-II系列元件具有多種不同的密度和封裝,本設計選用的元件腳數量滿足設計要求為137個;設計工作電壓為3.3V;估計規模為83,000個閘;儲存控制器和緩衝器管理狀態機使用的最高時脈速率為64MHz,剩餘邏輯電路以8MHz的時脈速率執行;由於元件尺寸的限制需要採用高密度SMT封裝。
結語
本文提出的設計能實現MP3播放機低成本的目標,而且仍然保有應有的附加功能。在成本預算不寬裕的情況下,依此設計方法,開發成本可以做到100美元以下。同時本設計還提供了包括CPU和FPGA閘在內的足夠空閒資源以支援未來系統之升級,而64MHz的核心時脈速率能使RC32364提供強大的音頻解碼能力和用戶介面性能。
儘管當前可程式邏輯元件的別名很多如FPGA、PLD等,現在情況正在產生變化。FPGA將成為設計平台,它們將使微處理器、DSP、互連電容和開關構成的系統變為全能的通用平台,並消除設計中的差異。為因應不同的應用和市場需求,以及能快速商品化,可程式邏輯元件因極具彈性特性已經成為邏輯或狀態機的主角,繼續被設計者青睞。