基于A(yíng)RM核的音頻解碼器單芯片系統研究
關(guān)鍵詞:嵌入式處理器 嵌入式系統 ARM核
引 言
EP7209是世界上第一片既支持流行的MP3標準,也支持諸如Microsoft Audio等快速涌現的互聯(lián)網(wǎng)音頻壓縮標準的數字音頻解碼器片上系統。EP7209在74MHz下運行時(shí)其性能與基于100MHz英特爾奔騰芯片的個(gè)人計算機相同,且消耗的功率特別?。涸?.5V電壓下,功耗不足170mW。它的ARM核提供了一個(gè)優(yōu)秀的數字信號處理器所能夠提供的處理能力,因此,互聯(lián)網(wǎng)音頻處理僅占用了該芯片50%的處理能力。這給嵌入式系統的設計人員留下了高達25MIPS(百萬(wàn)條指令每秒)的處理能力用于實(shí)現其它功能。本文著(zhù)重討論EP7209的結構、功能、接口特性等及其在嵌入式系統中的應用。
一、功能框圖及功能塊描述
圖1是EP7209的功能框圖。由圖1可知EP7209含有如下功能塊。
(1)ARM720T處理器含有如下功能子塊:
① ARM7TDMI CPU核。該CPU核支持Thumb指令集、核調試、增強的乘法器、JTAG以及嵌入式ICE。它的時(shí)鐘速率可編程為18MHz、36MHz、49MHz、74MHz。
② 內存管理單元(MMU)與ARM710核兼容,并增加了對Windows CE的支持。該內存管理單元提供了地址轉換和一個(gè)有64個(gè)項的轉換旁路緩沖器。
③ 提供了8KB的單一的指令和數據高速緩沖存儲器以及一個(gè)四路相聯(lián)高速緩沖存儲器控制器。
④ 寫(xiě)緩沖器。
(2)38400字節的片上SRAM,可以在LCD控制器和通用應用之間共享。
(3)內存可以和高達6個(gè)獨立的擴展段接口,每個(gè)擴展段有256MB,且等待狀態(tài)可編程。
(4)27位的通用I/O,可以多路復用,以在需要時(shí)提供額外的功能。
(5)數字音頻接口(DAI)可以直接與CD音質(zhì)的DAC和編解碼器相連。
(6)中斷控制器。
(7)先進(jìn)的系統狀態(tài)控制及電源管理。
(8)2個(gè)16550A兼容的全雙工UART,含16字節的發(fā)送及接收FIFO。
(9)SIR協(xié)議紅外線(xiàn)數據編解碼器,速率最高達115.2kbps。
(10)LCD控制器,16級灰度,可編程為1、2或4位每像素。
(11)片上的啟動(dòng)ROM,已固化了用于串行加載的啟動(dòng)代碼。
(12)2個(gè)16位的通用定時(shí)計數器。
(13)1個(gè)32位的實(shí)時(shí)時(shí)鐘(RTC)和比較器。
(14)2個(gè)同步串行接口,用于諸如ADC等Microwire或SPI外圍器件。一個(gè)接口支持主模式和從模式,另一個(gè)僅支持主模式。
(15)完全的JTAG邊界掃描和嵌入式ICE支持。
(16)2個(gè)可編程的脈沖寬度調制接口。
(17)1個(gè)用于和1或2個(gè)Cirrus Logic CL-PS6700 PC卡控制器器件相連的接口,可支持2個(gè)PC卡插槽。
(18)振蕩器和鎖相環(huán),用于由外部的3.6864 MHz的晶振產(chǎn)生內核所需要的18.432MHz、36.864 MHz、 49.152MHz或73.728MHz的時(shí)鐘。此外還有一個(gè)外部時(shí)鐘輸入端(在13MHz模式下使用)。
(19)一個(gè)低功耗的32.768kHz的振蕩器,用于產(chǎn)生實(shí)時(shí)時(shí)鐘所需要的1Hz時(shí)鐘。
所有的外部存儲器和外圍器件都應連接到32位的數據總線(xiàn)D[0:31]上,并應使用28位的地址總線(xiàn)A[0:27]和其它控制信號。
EP7209的核心邏輯功能是建立在一個(gè)ARM720T嵌入式處理器之上的。對EP7209的設計,以低功耗為目的進(jìn)行了優(yōu)化,并使用完全靜態(tài)的 0.25μm的CMOS制造工藝。低功耗的思想同樣體現在狀態(tài)設計、時(shí)鐘使用的方式上。下面將有選擇地介紹EP7209的工作原理。
1.CPU內核
ARM720T由一個(gè)ARM7TDMI 32位RISC處理器、一個(gè)單一的高速緩沖和一個(gè)存儲器管理單元(MMU)所構成。8KB的高速緩沖有一個(gè)四個(gè)項的相聯(lián)寄存器,并被組織成512線(xiàn)四字(4×512×4字節)。高速緩沖直接與ATM7TDMI相連,因而高速緩沖來(lái)自CPU的虛擬地址。當所需的虛擬地址不在高速緩沖中時(shí),由MMU將虛擬地址轉換為物理地址。一個(gè)64個(gè)項的轉換旁路緩沖器(TLB)被用來(lái)加速地址轉換過(guò)程,并減少頁(yè)表讀取所需的總線(xiàn)傳送。僅通過(guò)轉換高速緩沖中未存儲的地址,MMU就能夠節約功率。
2.狀態(tài)控制
EP7209支持如下的電源管理狀態(tài):操作、空閑和后備(節能),如圖2所示。正常的程序執行狀態(tài)為操作狀態(tài)。這是一個(gè)完全性能狀態(tài),時(shí)鐘和外圍器件都被使能。除了CPU時(shí)鐘被暫停外,空閑狀態(tài)與操作狀態(tài)是一樣的。一個(gè)中斷或喚醒將使空閑狀態(tài)返回到操作狀態(tài)。后備狀態(tài)下功耗最小,選擇此模式會(huì )關(guān)閉主振蕩器,只對實(shí)時(shí)時(shí)鐘和相關(guān)邏輯提供電源。當EP7209處于后備狀態(tài)時(shí),為保證系統能夠正常喚醒,所有電源和地引腳仍然與電源和地相連是非常重要的。后備狀態(tài)唯一能夠變遷到的狀態(tài)是操作狀態(tài)。
3.復 位
EP7209有三個(gè)異步復位信號:nPOR、nPWRFL和nURESET。如它們中的任一個(gè)有效,系統復位將由內部產(chǎn)生。除了RTC數據和匹配寄存器外,所有的EP7209內部寄存器都將被復位。為了使系統時(shí)間在用戶(hù)復位或電源失敗的狀況下得以保持,RTC數據和匹配寄存器僅由nPOR引起的復位所清除。
任何復位都將復位CPU,并在EP7209返回操作狀態(tài)時(shí)使CPU從復位矢量處開(kāi)始執行程序。
4. 時(shí) 鐘
EP7209有兩個(gè)時(shí)鐘模式:外部時(shí)鐘輸入和片上PLL。時(shí)鐘源的選取是由端口E的第2腳(PE[2])的一個(gè)陷阱選項來(lái)實(shí)現的。如果PE[2]在nPOR的上升沿處為高(例如上電時(shí)),外部時(shí)鐘模式被選取;如果PE[2]為低,那么,片上PLL模式被選取。上電以后,PE[2]可用作通用輸入輸出端口。
EP7209器件有幾個(gè)獨立的邏輯部分,每一個(gè)都有自己的時(shí)鐘頻率要求。當EP7209處于外部時(shí)鐘模式時(shí),外圍器件的真實(shí)頻率將不同于PLL模式時(shí)的頻率。
5. 中斷處理
在程序的執行期間,當一個(gè)不可預測事件 (如中斷或存儲器錯誤) 發(fā)生時(shí),通常要產(chǎn)生一個(gè)例外。當這些例外在同一時(shí)間發(fā)生時(shí),將由固定優(yōu)先權服務(wù)體系決定其被處理的次序。表1顯示了所有例外的優(yōu)先權次序。
EP7209中斷控制器有兩個(gè)中斷類(lèi)型:中斷請求(IRQ)和快速中斷請求(FIQ)。中斷控制器有能力控制來(lái)自22個(gè)不同的FIQ和IRQ中斷源的中斷。這22個(gè)之中,有17個(gè)被映射為IRQ輸入,而另5個(gè)源被映射為FIQ輸入。FIQ較IRQ有較高的優(yōu)先級。如果來(lái)自于同一個(gè)組(IRQ或FIQ)的兩個(gè)中斷被接收到的話(huà),其服務(wù)次序必須由軟件來(lái)解決。所有中斷均為電平敏感,也就是說(shuō),它們必須與下列的次序一致。
?。?)中斷器件(內部或者外部)產(chǎn)生適當的中斷。
?。?)如果中斷屏蔽寄存器中適當的位已被設置,那么一個(gè)FIQ或IRQ將由中斷控制器產(chǎn)生。
?。?)如中斷被使能的話(huà),處理器將跳轉到適當的地址。
?。?)中斷調度軟件讀中斷狀態(tài)寄存器,以確定中斷源并調用相應的中斷服務(wù)例程。
?。?)中斷服務(wù)例程中的軟件將清除中斷源,這是通過(guò)對申請中斷的器件采取一些由該器件特定的行動(dòng)來(lái)實(shí)施的(如,讀UART RX寄存器)。
然后,中斷服務(wù)例程可以重新使能中斷。任何其它未處理的中斷都將以相同的方法被服務(wù)?;蛘?它可以返回到中斷調度軟件。此軟件能檢查任何其它的未處理中斷并能相應地調度它們。"End of Interrupt"類(lèi)型的中斷將被鎖存。所有其它的中斷源(如外部中斷源)必須保持有效,直到相應的服務(wù)例程開(kāi)始執行為止。
6. EP7209的啟動(dòng)方式
片上啟動(dòng)ROM的128字節中包含有一個(gè)指令序列。此指令序列能夠初始化器件,然后配置UART1以接收2048字節的串行數據。這些數據接收后將置于片上的SRAM中。一旦下載傳送完成,執行將跳轉到片上SRAM的起始處。這將允許諸如在產(chǎn)品的制造過(guò)程中將代碼下載并編程到系統Flash中這樣的操作。
是否從片上啟動(dòng)ROM啟動(dòng)系統是由nMEDCHG引腳在電源復位期間的狀態(tài)決定的。如果nPOR有效時(shí),nMEDCHG為高,那么,EP7209將從連接到CS[0]的外部存儲器器件啟動(dòng)(正常啟動(dòng)模式);如果nMEDCHG為低,那么,啟動(dòng)將從片上ROM處開(kāi)始。注意:在兩種情形下,上電復位結束后,EP7209將處于后備態(tài),而且為了真正地開(kāi)始執行啟動(dòng)序列,需要在WAKEUP引腳上有一個(gè)由低到高的跳變。
片上ROM啟動(dòng)的結果是對所有片選的解碼都翻轉了??刂茊?dòng)選項的信號由nPOR鎖存,這意味著(zhù)地址和總線(xiàn)寬度的重新映射將繼續應用,直到nPOR的再一次有效為止。從ROM啟動(dòng)后,啟動(dòng)ROM的內容可從地址0x0000000處讀回來(lái);而在正常操作狀態(tài)下,啟動(dòng)ROM的內容可從地址范圍0x70000000中讀回。
7. 存儲器和I/O擴展接口
EP7209能夠解碼6個(gè)分立的線(xiàn)性存儲器或擴展段。其中的兩個(gè)可為PC Card卡預留,每一個(gè)接口連接到一個(gè)獨立的單個(gè)CL-PS6700器件。每一個(gè)段的大小為256MB。兩個(gè)附加段(除了這6個(gè)段以外的)被用于片上SRAM和片上ROM。片上ROM空間被完全解碼,SRAM空間也被完全解碼到編程在LCDCON寄存器中的視頻幀緩沖器的最大容量中(128KB)。超出此地址范圍的SRAM空間不被完全解碼(即超出128KB范圍的任何存取將繞回到128KB范圍內)。6個(gè)段中的任一個(gè)可配置成與傳統SRAM接口一致的接口相連接,而且能單獨地被編程為8、16或32位寬,支持頁(yè)模式存取,并且在執行非連續存取時(shí)可插入1~8個(gè)等待狀態(tài),執行觸發(fā)模式存取時(shí)可插入0~3個(gè)等待狀態(tài)。零等待狀態(tài)連續存取特性被設計成支持觸發(fā)模式的ROM。對使用nMWE引腳的可寫(xiě)存儲器件,不允許零等待狀態(tài)連續存取,至少應插入一個(gè)等待狀態(tài)(等待狀態(tài)數應編程到適當的MEMCFG寄存器的連續域中)??偩€(xiàn)周期也可以通過(guò)使用EXPRDY輸入信號來(lái)進(jìn)行擴展。
8. 大端配置與小端配置
EP7209對內部寄存器使用小端(little endian)配置。然而,連結器件到用大端(big endian)配置的外部存儲器系統上是可能的。ARM720T控制寄存器中的大端/小端位設置了EP7209在處理存儲器中的字時(shí)是按大端格式還是小端格式進(jìn)行。存儲器被認為是從0開(kāi)始向前編號的字節的線(xiàn)性組合。字節0~3容納第1個(gè)被存儲的字,字節4~7容納第2個(gè)字,等等。在小端規劃中,字中編號最低的字節認為是字的最低位字節,而編號最高的字節被認為是字的最高位字節。存儲系統的Byte0在這個(gè)規劃中應當連到數據線(xiàn)7到0(D[7:0])。在大端規劃中,字的最高位字節被存儲于編號最低的字節中,而最低字節存儲于編號最高的字節中。因此,存儲器系統的Byte0應當連到數據線(xiàn)31到24(D[31:24])。裝載和存儲指令是被大小端配置影響的唯一指令。
9. 支持片上幀緩沖器的LCD控制器
LCD控制器提供了所有需要的控制信號以便直接與一個(gè)單面板復合LCD接口。面板的大小是可編程的,可以是以16像素為增量,從32到1024像素的任何寬度(線(xiàn)長(cháng)度)??偟囊曨l幀緩沖大小可編程為高達128KB。這等同于理論上最大的面板大小1024×256像素(每像素4個(gè)位 )。視頻幀緩沖器可定位于任何一個(gè)片選所控制的存儲器中。在任何一個(gè)片選所控制的存儲器中,它的起始地址固定于地址0X00000000。LCD視頻幀緩沖器的起始地址定義在寄存器FBADDR[3:0]中,這些位將成為外部地址總線(xiàn)的最重要nibble(半字節)。缺省起始地址為0XC0000000(FBADDR=0XC)。一個(gè)使用片上SRAM(OCSR)建立的系統將把片上SRAM用于LCD視頻幀緩沖以及用于各種數據的存儲。LCD視頻幀緩沖器起始地址在這個(gè)系統中應當設置為0X6。
三、內存映射
地址空間的低2GB分配給了存儲器。在EP7209中,恰好在2GB下的8KB的空間是為內部寄存器所準備的且不可存取,EP7209的MMU應被編程為在訪(fǎng)問(wèn)這一區域時(shí)產(chǎn)生一個(gè)中斷例外。
通過(guò)從十六進(jìn)制地址8000.0000到8000.3FFF的一組內部存儲器位置來(lái)尋址內部外圍部件。這些內存位置在EP7209中被認為是內部寄存器。從0x8000.0000到0x8000.1FFF含有與CL-PS7111兼容的寄存器,包含了這些寄存器是為了向下兼容并稱(chēng)它們?yōu)榕f的內部寄存器。
表2顯示了ARM720T處理器的4GB地址空間范圍在EP7209中是如何被映射的(當從片上啟動(dòng)ROM啟動(dòng)時(shí)將有不同的內存映射),所顯示的內存映射假定兩個(gè)CL-PS6700卡控制器連結上了。如果此功能不需要的話(huà),那么nCS[4]和nCS[5]存儲器空間是可用的。外部啟動(dòng)ROM沒(méi)有被完全解碼(即:?jiǎn)?dòng)代碼在0x7000.0000到0x8000.0000的256MB字節空間內將重復)。SRAM可被完全解碼至最大的大小,即128KB,對超出此范圍的任何位置的存取將繞回到這個(gè)范圍內。
四、基于EP7209的最大系統
基于EP7209的最大配置系統如圖3所示。此系統假定ROM為16位寬的器件。鍵盤(pán)可以連接到比圖3所示更多的通用輸入輸出端口位,以支持多于64個(gè)鍵;然而,這些額外引腳將不能引線(xiàn)到WAKEUP引腳。
需要注意的是,三個(gè)串行接口(DAI、CODEC和SSI2)的輸入/輸出是多路復用同一組外部接口引腳的。因此,在任一時(shí)刻,系統只能使用這三個(gè)外圍器件接口中的一個(gè)。
結束語(yǔ)
本文介紹了一種基于A(yíng)RM核的音頻解碼器單芯片系統EP7209。描述了EP7209的整體結構、各功能塊以及ARM處理器的地址空間在EP7209中是如何映射的。對EP7209的基本工作原理進(jìn)行了講解。最后給出了基于EP7209所能夠構建的最大系統。希望本文能夠使嵌入式系統的開(kāi)發(fā)人員了解EP7209并加深對ARM核的理解。
參考文獻
1 EP7209 Datasheet.Cirrus Logic, Dec., 1999
2 Jaggar Dave. ARM Architecture Reference Manual. Prentice Hall, 1996(7)
評論