| 摘要:介紹用C8051F015微控制器控制硬盤(pán)進(jìn)行HDTV碼流存取的高清碼流回放機(jī)的硬件設(shè)計(jì)和軟件編程。該系統(tǒng)作為解碼器的前端,可以實(shí)現(xiàn)HDTV碼流的適時(shí)回放。 關(guān)鍵詞:HDTV 碼流 ATA/ATAPI-4標(biāo)準(zhǔn) LBA模式 CPLD 隨著HDTV在全球的興起以及數(shù)字技術(shù)的日趨成熟,音/視頻產(chǎn)品數(shù)字化、高清晰度化已成為未來(lái)家電視聽(tīng)產(chǎn)品的大趨勢(shì)。高清晰度電視HDTV(High-Definition Television)采用了國(guó)際上流行的MPEG-2標(biāo)準(zhǔn),MPEG-2規(guī)定了數(shù)字圖像的音視頻編解碼算法以及傳送的碼流應(yīng)該符合的語(yǔ)法和語(yǔ)義,而其編解碼算法又參考了聽(tīng)覺(jué)心理模型和視覺(jué)心理模型。HDTV的圖像格式為1920×1080I,傳輸碼率高達(dá)20Mbps,同時(shí)采用的視頻壓縮技術(shù)可使HDTV的每一幀包含更多的信息,大大提高圖像的清晰度。HDTV在音頻壓縮方面采用了數(shù)字音頻的編碼和壓縮技術(shù),現(xiàn)有的數(shù)字音頻編碼壓縮方案有MPEG、Dolby AC-3和美國(guó)AT&T的MPAC以及歐洲的MIX。它們都能實(shí)現(xiàn)5.1聲道,其聲道數(shù)可以擴(kuò)展到5.1,即三個(gè)前面的聲道(L、C、右聲道R)、兩個(gè)環(huán)繞聲道(左環(huán)繞聲道Ls、右環(huán)繞聲道Rs)和一個(gè)低音效果聲道LFE,使聲音效果可以達(dá)到家庭影院的音響效果。HDTV聲光效果上優(yōu)勢(shì),注定它的發(fā)展有著技術(shù)和市場(chǎng)的雙重必然性。為了配合HDTV及相關(guān)技術(shù)產(chǎn)品的推廣,筆者開(kāi)發(fā)了一個(gè)既可以作為MPEG解碼器信號(hào)源,又可以作為信道編碼/調(diào)制器信號(hào)源的碼流回放機(jī),應(yīng)用于數(shù)字電視產(chǎn)品的開(kāi)發(fā)、生產(chǎn)調(diào)試及展示宣傳。 HDTV節(jié)目有傳輸碼率高、節(jié)目信息最大的特點(diǎn)。為了研制出符合大容量高速率要求的碼流回放機(jī),傳統(tǒng)的方法是用操作系統(tǒng)控制硬盤(pán)的讀寫(xiě)操作。這樣做的好處在于:首先,PC機(jī)的主頻很高,用來(lái)作為控制碼流的時(shí)鐘信號(hào)在速度上不會(huì)有瓶頸問(wèn)題;其次,對(duì)硬盤(pán)里HDTV節(jié)目的讀取是基于文件系統(tǒng)的,研發(fā)人員不用寫(xiě)硬盤(pán)的驅(qū)動(dòng)程序,軟件的工作量大大減小。但是,就碼流回放機(jī)本身而言,它是一個(gè)單任務(wù)設(shè)備,采用操作系統(tǒng)的方案無(wú)疑將造成CPU資源的極大浪費(fèi)。因此,筆者設(shè)想用單片機(jī)或DSP控制硬盤(pán)的讀寫(xiě)操作。只要所選微控制器上速度上滿足高清晰度電視的碼率要求,在技術(shù)上就能夠?qū)崿F(xiàn)預(yù)期的功能。與操作系統(tǒng)方案相比較,用微控制器無(wú)疑可以大大降低生產(chǎn)成本,同時(shí)也降低了硬件設(shè)計(jì)的難度。不過(guò),在這種方式下,需要編寫(xiě)硬盤(pán)的底層驅(qū)動(dòng)程序。
圖1 C8051F015內(nèi)部結(jié)構(gòu)
1 總體方案 華天HTTS HDTV第III代碼流回放機(jī)可以播放數(shù)字高清晰度電視HDTV碼流。該碼泫回放機(jī)整體設(shè)計(jì)沒(méi)有采用在工控機(jī)上研發(fā)PCI卡驅(qū)動(dòng)硬盤(pán)的方案,而是遵照AT Attachment with Packet Interface Extension(ATA/ATAPI-4)標(biāo)準(zhǔn),用8位單片機(jī)C8051F015通過(guò)PIO方式按照LBA模式直接對(duì)硬盤(pán)進(jìn)行物理級(jí)的讀寫(xiě)操作。硬盤(pán)接收微控制器的命令后按照邏輯地址順序輸出HDTV碼流給兩片F(xiàn)IFO,硬盤(pán)輸出的16位數(shù)據(jù)通過(guò)兩片8位FIFO緩存后輸出給CPLD進(jìn)行拆分以識(shí)別包同步和字節(jié)同步。經(jīng)CPLD解析后的數(shù)據(jù)流再經(jīng)過(guò)解碼器解碼及適當(dāng)后處理,送顯示器、揚(yáng)聲器以提供視頻、音頻信號(hào)。既可以作為MPEG解碼器的信號(hào)源,又可以作為信道編碼/調(diào)制器的信號(hào)源。 2 C8051F015內(nèi)部結(jié)構(gòu) C8051F015的內(nèi)部結(jié)構(gòu)如圖1所示。它使用了CYGNAL的專利——CIP-51微控制器內(nèi)核CIP-51。CIP-51與MCS-51的指令集完全兼容,可以使用標(biāo)準(zhǔn)803x/805x的匯編器和編譯器進(jìn)行軟件開(kāi)發(fā)。同時(shí),CIP-51采用流水線結(jié)構(gòu),70%的指令執(zhí)行時(shí)間為1或2個(gè)系統(tǒng)時(shí)鐘周期,外部晶振最大可以到25MHz。8位HDTV輸出碼流的標(biāo)準(zhǔn)時(shí)鐘頻率為19MHz和25MHz。考慮到硬盤(pán)的輸出是16位,理論上采用這款MCU完全可以達(dá)到速度要求。這里,就系統(tǒng)的初始化問(wèn)題有幾點(diǎn)說(shuō)明:(1)內(nèi)外部晶振切換。在外部晶體振蕩器被允許時(shí),系統(tǒng)晶體驅(qū)動(dòng)器的輸出端XTAL2腳會(huì)出現(xiàn)一個(gè)瞬時(shí)脈沖,該脈沖足以在晶體實(shí)際啟動(dòng)前,將OSCXCN寄存器中的XTLVLD位置1。在允許晶體振蕩器和檢查XTLVLD位之間引入1ms的延時(shí),可以防止提前切換到外部晶振。(2)配置交叉開(kāi)關(guān)。系統(tǒng)內(nèi)部交叉開(kāi)關(guān)根據(jù)優(yōu)先權(quán)譯碼表將所選擇的內(nèi)部數(shù)字資源分配到I/O引腳,寄存器XBR0、XBR1、XBR2用于選擇內(nèi)部數(shù)字功能或讓I/O引腳默認(rèn)為I/O端口。I/O引腳的輸出驅(qū)動(dòng)器特性用端口配置寄存器PRT0CF、PRT1CF、PRT2CF和PRT3CF定義。每個(gè)端口輸出驅(qū)動(dòng)器都可被配置為漏極開(kāi)路或推挽方式。將配置寄存器的相應(yīng)位配置為漏極開(kāi)路,并在外部加1kΩ的上拉電阻,可用3.3V供電的C8051F015去驅(qū)動(dòng)5V供電的硬盤(pán)。初始化程序: void sysclk_init(void) {WDTCH=0xde; //禁止看門(mén)狗定時(shí)器 WDTCN=0xad; //啟動(dòng)外部振蕩器 OSCXCN=0x67; //外接24MHz的晶振 //配置外部晶體 while((OSCXCN&XTLVLD_BIT= =0) {} OSCICN=0x88; //選擇外部振蕩器作為系統(tǒng)時(shí)鐘,禁止內(nèi)部振蕩 } //配置交叉開(kāi)關(guān) void xbar_init(void) {XBR0=0x04; //RX TX連到兩個(gè)引腳 XBR1=0x04; //INT0連到斷口引腳 XBR2=0x40; //使能交叉開(kāi)關(guān)和弱上拉 PRT0CF=0xff; //控制FIFO讀寫(xiě),使能 PRT1CF=0x07; //控制CPLD讀寫(xiě),使能 PRT2CF=0x00; (P0口的所有輸出為弱上拉(寫(xiě)硬盤(pán)命令字) PRT3CF=0x00; //控制硬盤(pán)讀寫(xiě),使能 }
 3 ATA/ATAPI-4標(biāo)準(zhǔn)下的硬盤(pán)內(nèi)部寄存器和PIO讀時(shí)序關(guān)系 3.1 硬盤(pán)內(nèi)部寄存器 目前,大部分計(jì)算機(jī)配置了兩個(gè)IDE接口,地址范圍分別為:0170~0117,0376~0376(對(duì)應(yīng)PC機(jī)的Secondary IDE Channel)和01F0~01F6,03F6~03F6(對(duì)應(yīng)PC機(jī)的Primary IDE Channel)。地址譯碼如表1所示。
表1 地址譯碼 |