1. <code id="ya7qu"><span id="ya7qu"><label id="ya7qu"></label></span></code>

    <b id="ya7qu"><bdo id="ya7qu"></bdo></b>
    <wbr id="ya7qu"><optgroup id="ya7qu"><strike id="ya7qu"></strike></optgroup></wbr>
  2. <u id="ya7qu"><bdo id="ya7qu"></bdo></u>
    現(xiàn)在位置:范文先生網>理工論文>電子通信論文>基于8位微控制器控制硬盤進行HDTV碼流讀寫

    基于8位微控制器控制硬盤進行HDTV碼流讀寫

    時間:2023-02-20 23:14:30 電子通信論文 我要投稿
    • 相關推薦

    基于8位微控制器控制硬盤進行HDTV碼流讀寫

    摘要:介紹用C8051F015微控制器控制硬盤進行HDTV碼流存取的高清碼流回放機的硬件設計和軟件編程。該系統(tǒng)作為解碼器的前端,可以實現(xiàn)HDTV碼流的適時回放。

        關鍵詞:HDTV 碼流 ATA/ATAPI-4標準 LBA模式 CPLD

    隨著HDTV在全球的興起以及數(shù)字技術的日趨成熟,音/視頻產品數(shù)字化、高清晰度化已成為未來家電視聽產品的大趨勢。高清晰度電視HDTV(High-Definition Television)采用了國際上流行的MPEG-2標準,MPEG-2規(guī)定了數(shù)字圖像的音視頻編解碼算法以及傳送的碼流應該符合的語法和語義,而其編解碼算法又參考了聽覺心理模型和視覺心理模型。HDTV的圖像格式為1920×1080I,傳輸碼率高達20Mbps,同時采用的視頻壓縮技術可使HDTV的每一幀包含更多的信息,大大提高圖像的清晰度。HDTV在音頻壓縮方面采用了數(shù)字音頻的編碼和壓縮技術,現(xiàn)有的數(shù)字音頻編碼壓縮方案有MPEG、Dolby AC-3和美國AT&T的MPAC以及歐洲的MIX。它們都能實現(xiàn)5.1聲道,其聲道數(shù)可以擴展到5.1,即三個前面的聲道(L、C、右聲道R)、兩個環(huán)繞聲道(左環(huán)繞聲道Ls、右環(huán)繞聲道Rs)和一個低音效果聲道LFE,使聲音效果可以達到家庭影院的音響效果。HDTV聲光效果上優(yōu)勢,注定它的發(fā)展有著技術和市場的雙重必然性。為了配合HDTV及相關技術產品的推廣,筆者開發(fā)了一個既可以作為MPEG解碼器信號源,又可以作為信道編碼/調制器信號源的碼流回放機,應用于數(shù)字電視產品的開發(fā)、生產調試及展示宣傳。

    HDTV節(jié)目有傳輸碼率高、節(jié)目信息最大的特點。為了研制出符合大容量高速率要求的碼流回放機,傳統(tǒng)的方法是用操作系統(tǒng)控制硬盤的讀寫操作。這樣做的好處在于:首先,PC機的主頻很高,用來作為控制碼流的時鐘信號在速度上不會有瓶頸問題;其次,對硬盤里HDTV節(jié)目的讀取是基于文件系統(tǒng)的,研發(fā)人員不用寫硬盤的驅動程序,軟件的工作量大大減小。但是,就碼流回放機本身而言,它是一個單任務設備,采用操作系統(tǒng)的方案無疑將造成CPU資源的極大浪費。因此,筆者設想用單片機或DSP控制硬盤的讀寫操作。只要所選微控制器上速度上滿足高清晰度電視的碼率要求,在技術上就能夠實現(xiàn)預期的功能。與操作系統(tǒng)方案相比較,用微控制器無疑可以大大降低生產成本,同時也降低了硬件設計的難度。不過,在這種方式下,需要編寫硬盤的底層驅動程序。

    圖1 C8051F015內部結構

    1 總體方案

    華天HTTS HDTV第III代碼流回放機可以播放數(shù)字高清晰度電視HDTV碼流。該碼泫回放機整體設計沒有采用在工控機上研發(fā)PCI卡驅動硬盤的方案,而是遵照AT Attachment with Packet Interface Extension(ATA/ATAPI-4)標準,用8位單片機C8051F015通過PIO方式按照LBA模式直接對硬盤進行物理級的讀寫操作。硬盤接收微控制器的命令后按照邏輯地址順序輸出HDTV碼流給兩片F(xiàn)IFO,硬盤輸出的16位數(shù)據通過兩片8位FIFO緩存后輸出給CPLD進行拆分以識別包同步和字節(jié)同步。經CPLD解析后的數(shù)據流再經過解碼器解碼及適當后處理,送顯示器、揚聲器以提供視頻、音頻信號。既可以作為MPEG解碼器的信號源,又可以作為信道編碼/調制器的信號源。

    2 C8051F015內部結構

    C8051F015的內部結構如圖1所示。它使用了CYGNAL的專利——CIP-51微控制器內核CIP-51。CIP-51與MCS-51的指令集完全兼容,可以使用標準803x/805x的匯編器和編譯器進行軟件開發(fā)。同時,CIP-51采用流水線結構,70%的指令執(zhí)行時間為1或2個系統(tǒng)時鐘周期,外部晶振最大可以到25MHz。8位HDTV輸出碼流的標準時鐘頻率為19MHz和25MHz。考慮到硬盤的輸出是16位,理論上采用這款MCU完全可以達到速度要求。這里,就系統(tǒng)的初始化問題有幾點說明:(1)內外部晶振切換。在外部晶體振蕩器被允許時,系統(tǒng)晶體驅動器的輸出端XTAL2腳會出現(xiàn)一個瞬時脈沖,該脈沖足以在晶體實際啟動前,將OSCXCN寄存器中的XTLVLD位置1。在允許晶體振蕩器和檢查XTLVLD位之間引入1ms的延時,可以防止提前切換到外部晶振。(2)配置交叉開關。系統(tǒng)內部交叉開關根據優(yōu)先權譯碼表將所選擇的內部數(shù)字資源分配到I/O引腳,寄存器XBR0、XBR1、XBR2用于選擇內部數(shù)字功能或讓I/O引腳默認為I/O端口。I/O引腳的輸出驅動器特性用端口配置寄存器PRT0CF、PRT1CF、PRT2CF和PRT3CF定義。每個端口輸出驅動器都可被配置為漏極開路或推挽方式。將配置寄存器的相應位配置為漏極開路,并在外部加1kΩ的上拉電阻,可用3.3V供電的C8051F015去驅動5V供電的硬盤。初始化程序:

    void sysclk_init(void)

    {WDTCH=0xde; //禁止看門狗定時器

    WDTCN=0xad;

    //啟動外部振蕩器

    OSCXCN=0x67; //外接24MHz的晶振

    //配置外部晶體

    while((OSCXCN&XTLVLD_BIT= =0)

    {}

    OSCICN=0x88; //選擇外部振蕩器作為系統(tǒng)時鐘,禁止內部振蕩

    }

    //配置交叉開關

    void xbar_init(void)

    {XBR0=0x04; //RX TX連到兩個引腳

    XBR1=0x04; //INT0連到斷口引腳

    XBR2=0x40; //使能交叉開關和弱上拉

    PRT0CF=0xff; //控制FIFO讀寫,使能

    PRT1CF=0x07; //控制CPLD讀寫,使能

    PRT2CF=0x00; (P0口的所有輸出為弱上拉(寫硬盤命令字)

    PRT3CF=0x00; //控制硬盤讀寫,使能

    }
    (范文先生網www.baimashangsha.com收集整理)
    3 ATA/ATAPI-4標準下的硬盤內部寄存器和PIO讀時序關系

    3.1 硬盤內部寄存器

    目前,大部分計算機配置了兩個IDE接口,地址范圍分別為:0170~0117,0376~0376(對應PC機的Secondary IDE Channel)和01F0~01F6,03F6~03F6(對應PC機的Primary IDE Channel)。地址譯碼如表1所示。

    表1 地址譯碼

    CS1FX CS3FX DA2 DA1 DA0 Address 1 0 0 0 0 170 1 0 0 0 1 171 1 0 0 1 0 172 1 0 0 1 1 173 1 0 1 0 0 174 1 0 1 0 1 175 1 0 1 1 0 176 1 0 1 1 1 177 0 1 1 1 0 376 0 1 1 1 1 377 0 1 * * * 未用

    ·數(shù)據寄存器(170R/W):這是一個16位PIO數(shù)據寄存器,用于對扇區(qū)的讀、寫和格式化操作。MCU通過該寄存器向硬盤控制寄存器寫入或從硬盤控制器讀出扇區(qū)緩沖區(qū)的數(shù)據。

    ·錯誤寄存器(171R):該寄存器是一個8位的寄存器,它反映控制寄存器在診斷方式或操作方式下的錯誤原因。

    ·扇區(qū)數(shù)寄存器(172R/W):它記錄讀、寫命令的扇區(qū)數(shù)。當多扇區(qū)傳輸時,每完成一個扇區(qū)操作,該寄存器自動減1,直至為0。如果初值為0,則表示256;如果有錯誤生,該寄存器包含已經操作成功的扇區(qū)數(shù)。

    ·扇區(qū)號寄存器(173R/W):它記錄讀、寫和校驗命令指令起始扇區(qū)號。本文用LBA模式。該寄存器記錄邏輯扇區(qū)的0字節(jié)。

    ·柱面號寄存器(174 175 R/W):它記錄讀、寫、校驗、尋址和格式化命令指定的柱面號,在LBA尋址方式下,這2個寄存器包含起始扇區(qū)的1和2字節(jié)。

    ·驅動器/磁頭寄存器(176R/W):它記錄讀、寫、校驗、尋道和格式化命令指定的驅動器號、磁頭號和尋址方式。在ATA/ATAPI-4中其定義如表2所示。

    表2 驅動器/磁頭寄存器在ATA/ATAPI-4中的定義

    D7 D6 D5 D4 D3 D2 D1 D0 1 L 1 DEV HS3 HS2 HS1 HS0

    HS0~HS3(磁頭選擇):在LBA方式中,是邏輯扇區(qū)的高4位。

    DEV驅動器選擇:0選擇主驅動器,1選擇從驅動器。

    L(LBA方式):L=1,置驅動器為LBA模式;L=0,置驅動器為CHS模式。

    ·狀態(tài)寄存器(177 R);反映了硬盤執(zhí)行命令后的狀態(tài)。讀該寄存器清除中斷請求信號,為避免清除中斷,可以讀輔助狀態(tài)寄存器376h。這兩個寄存器的內容完全一樣。在ATA/ATAPI-4中其定義如表3所示。

    BSY:驅動器忙。

    DRDY:驅動器準備好。

    DRQ:請求服務,驅動器請求通過寄存器與處理器交換一個字節(jié)數(shù)據。

    ERR:命令執(zhí)行錯誤。

    3.2 硬盤PIO方式下特定區(qū)域多扇區(qū)讀的操作

    如果想從硬盤的特定扇區(qū)讀出碼流信息,首先主機(C8051F015)要對驅動器/磁頭寄存器、柱面號寄存器、扇區(qū)號寄存器、扇區(qū)數(shù)寄存器設置參數(shù)。完畢后要等待至少400ns才能去讀狀態(tài)寄存器的參數(shù)判斷以上設置是否有效。硬盤接收命令后置BSY=1,并開始執(zhí)行命令。硬盤如果準備好傳送數(shù)據包,就置DRQ=1,同時清零BSY。當機循環(huán)讀狀態(tài)寄存器或輔助狀態(tài)寄存器判斷BSY=0&DRQ=1,一旦硬盤狀態(tài)符合要求,主機寫參數(shù)0x80(128扇區(qū))到數(shù)據寄存器(0x170),并寫0x20(PIO讀)到命令寄存器(0x177),表示要求讀出硬盤相應地址里的數(shù)據塊。硬盤判斷數(shù)據寄存器被置數(shù)后立即置BSY=1&DRQ=0。主機讀到置位信息后給硬盤讀時鐘,硬盤輸出數(shù)據直到數(shù)據包傳完為止。

    表3 狀態(tài)寄存器在ATA/ATAPI-4中的定義

    D7 D6 D5 D4 D3 D2 D1 D0 BSY DRDY # # DRQ obsolete obsolete ERR

    4 系統(tǒng)設計方案

    4.1 系統(tǒng)硬件構成

    基于8位微控制器的系統(tǒng)設計方案如圖2所示。主系統(tǒng)中以C8051F015為控制核心,C8051F015產生硬盤和FIFO的讀寫時序(為了避免硬盤寄存器參數(shù)也被寫入FIFO,在硬件上要把二者的讀寫時鐘分開。);硬盤輸出的16位數(shù)據分離低8位分別送入兩片64KB的FIFO緩存。數(shù)據經緩存后持續(xù)地輸出到CPLD,CPLD對16位數(shù)據流進行拆分,同時識別包同步和字節(jié)同步。這樣,原始的一路HDTV碼流就被分成3路輸送給解碼器解碼。主系統(tǒng)通過串行總線與前面板相連,采用通用單片機AT89C51為前面板的控制核心。AT89C51接收來自鍵盤的命令并在LCD上以文字和圖形的方式展現(xiàn)在用戶面前,同時通過串口通信,啟動主控制器執(zhí)行命令。

    4.2 系統(tǒng)軟件設計

    4.2.1 存碼流部分

    本系統(tǒng)沒有引入操作系統(tǒng)和文件格式,所以碼流文件存入硬盤時就不能按文件格式,而只能按二進制流的方式從PC機的碼流文件中讀出數(shù)據,再按同樣的方式寫入裸盤。為了解決碼流的總是,試圖調用BIOS中斷,讓BIOS的硬盤服務流程負責把INT13的讀寫請求轉化為ATA界面對硬盤的請求,并執(zhí)行數(shù)據I/O傳輸?shù)奈锢韯幼鳌5捎贐IOS本身寄存器的限制,用它去訪問硬盤有8.4G容限的問題。如果想突破這個限制而用擴展的INT13,將是一個比較復雜的過程。可以利用PC機上的Secondary IDE Channel(0x170~0x177)作為硬盤寄存器的端口地址。在這個硬件平臺下,可以直接將fread()函數(shù)讀出的碼流按塊寫入目標硬盤,甚至不要求大多地考慮時序問題。

    4.2.2 讀碼流部分

    這部分軟件是在上述硬件系統(tǒng)平臺上直接編程。系統(tǒng)在啟動硬盤前要等待串行中斷,接收由前面板發(fā)出的命令,再根據接收的數(shù)據信息具體決定應該播放哪幾個節(jié)目;隨后對硬盤、FIFO進行初始化,啟動CPLD,F(xiàn)IFO輸出數(shù)據時鐘信號,并讓硬盤按命令輸出數(shù)據流。數(shù)據在總線穩(wěn)定的時間內給FIFO寫時鐘,以采集正確的碼流信息(這里強調時序)。FIFO有“半滿”(HF)標志,用HF去觸發(fā)中斷,有中斷請求,就讓硬盤輸出64KB的數(shù)據。如此循環(huán),保證FIFO不空。當FIFO輸出第一個數(shù)據時,CPLD開始對數(shù)據流進行拆分,并按照HDTV碼流的格式標準對數(shù)據流進行判別(HDTV碼流188字節(jié)為一個包,每個包頭是0x47),即每計數(shù)1次,就輸出一個比特同步,每計數(shù)188次并識別下一個數(shù)為0x47,就輸出一個包同步。這部分程序流程如圖3。
    IP
        4.2.3 應用程序

    系統(tǒng)設置硬盤寄存器參數(shù)時,首先調用SetMode()函數(shù)設定硬盤的IDLE狀態(tài)和自掉電功能,可以保證硬盤在不工作的情況下,磁頭會復位到“登陸區(qū)”;然后調用SetAdress()函數(shù)選擇對應的寄存器;接下來可以調用ReadSector()函數(shù)進行多扇區(qū)讀操作。以下是寄存器選擇子函數(shù)和多扇區(qū)讀子函數(shù)。

    //寄存器選擇子函數(shù);

    void SetAddress(unsigned char cs,unsigned char adr){

    DA0=((adr & 0x01)= =0x01;

    DA1=((adr & 0x02) = =0x02);

    DA2=((adr & 0x04) = =0x04);

    if(cs= =CTRL) {

    nCS1FX=1;

    nCS3FX=0;

    }else {

    nCS1FX=0;

    nCS3FX=1;

    }

    }

    //多扇區(qū)讀子函數(shù):

    unsigned char ReadSector(unsigned long point,unsigned char *Buffer){

    unsigned int i,k;

    WriteBYTE(CMD,6,0xe0); //LBA模式

    WriteBYTE(CMD,5,point>>16); //LBA模式下的高16位地址

    WriteBYTE(CMD,4,point>>8); //LBA模式下的高8位地址

    WriteBYTE(CMD,3,point); //LBA模式下的低8位地址

    WriteBYTE(CMD,2,0x80); //一次讀寫的扇區(qū)數(shù)

    //Issue read sector command...

    WriteBYTE(CMD,7,0x20); //0x20多為扇區(qū)讀命令

    Timer 10mSec=10000;

    while((ReadBYTE(CMD,7)&0x08)!=0x08 && Timer 10mSec); //等待DRQ=1或者timeout

    if(Timer 10mSec= =0)return 0xFF;

    //Fetch the sector...

    LSBDATA=ALLINPUT;

    //Select address and activate CS

    SetAddress(CMD,0);

    for(k=0;k<0x80;k++)

    for(i=0;i<512;i+=2){ //一次讀兩字節(jié)

    nDIOR=0; //硬盤的讀時鐘

    WCK=1;

    WCK=0;

    nDIOR=1;

    }

    nCS1FX=1; //復位CS

    nCS3FX=1;

    return ReadBYTE(CMD,1); //返回錯誤寄存器的信息

    }

    本文是“第三代碼流回放機研制”課題的一個重要組成部分。本方案利用微控制器對硬盤進行基于LBA模式下的讀寫操作(不用操作系統(tǒng)),硬軟件簡潔可靠,技術上也解決前期產品的兩個難題:

    (1)一些舊機器的BIOS不支持INT 13h Extension,無法訪問8.4G以上硬盤空間;

    (2)WINDOWS操作系統(tǒng)不支持存儲1.2G以上碼流文件。

    將此系統(tǒng)逆向設計,能夠研發(fā)出適時錄制TS流和衛(wèi)星節(jié)目的儀器。


    【基于8位微控制器控制硬盤進行HDTV碼流讀寫】相關文章:

    基于RISC技術的8位微控制器設計08-06

    基于MC9S12微控制器的發(fā)動機高能直接點火控制08-06

    基于32位微控制器MC68HC376的開發(fā)設計和應用08-06

    微控制器撥號上網的實現(xiàn)08-06

    微控制器的GPRS無線上網08-06

    MPC555微控制器與汽車電子08-06

    改善8051系統(tǒng)用電效率的微控制器08-06

    基于發(fā)射分集的空時碼及其應用08-06

    在讀寫訓練中進行創(chuàng)造思維訓練08-17

    国产福利萌白酱精品tv一区_日韩亚洲中字无码一区二区三区_亚洲欧洲高清无码在线_全黄无码免费一级毛片
    1. <code id="ya7qu"><span id="ya7qu"><label id="ya7qu"></label></span></code>

      <b id="ya7qu"><bdo id="ya7qu"></bdo></b>
      <wbr id="ya7qu"><optgroup id="ya7qu"><strike id="ya7qu"></strike></optgroup></wbr>
    2. <u id="ya7qu"><bdo id="ya7qu"></bdo></u>
      污网站上在线观看免费视频中 | 亚洲中文字幕电影不卡电影 | 亚洲综合不卡一区 | 日本视频高清一区二区三区 | 亚洲十大国产精品污污污 | 亚洲国产99精品国自产拍 |