?? ——基于8位微控制器控制硬盤進行hdtv碼流讀寫.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0063)http://www.21ic.com/new_info/news/files/news/20031216115454.asp -->
<HTML><HEAD><TITLE>——基于8位微控制器控制硬盤進行HDTV碼流讀寫</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>TD {
FONT-SIZE: 12px
}
INPUT {
FONT-SIZE: 12px; font-fammily: verdana,宋體
}
A:link {
FONT-SIZE: 12px; COLOR: #0000ff; LINE-HEIGHT: 16px; TEXT-DECORATION: underline
}
A:visited {
FONT-SIZE: 12px; COLOR: #660066; LINE-HEIGHT: 16px; TEXT-DECORATION: underline
}
A:hover {
FONT-SIZE: 12px; COLOR: #ff0000; TEXT-DECORATION: underline
}
.unnamed1 {
FONT-SIZE: 12px; FONT-FAMILY: "Arial", "Helvetica", "sans-serif"
}
.white {
FONT-SIZE: 12px; COLOR: #ffffff; LINE-HEIGHT: 16px
}
.b:link {
FONT-SIZE: 12px; COLOR: #3366cc; LINE-HEIGHT: 18px; TEXT-DECORATION: underline
}
.b:visited {
FONT-SIZE: 12px; COLOR: #813f1b; LINE-HEIGHT: 18px; TEXT-DECORATION: none
}
.b:hover {
FONT-SIZE: 12px; COLOR: #ffa037; LINE-HEIGHT: 18px; TEXT-DECORATION: underline
}
.148xg {
FONT-SIZE: 14px; COLOR: #0000ff; LINE-HEIGHT: 14pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: underline
}
.128dt {
FONT-SIZE: 14px; COLOR: #9999cc; LINE-HEIGHT: 14pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.heigh150 {
LINE-HEIGHT: 150%
}
</STYLE>
<META content="MSHTML 6.00.2734.1600" name=GENERATOR></HEAD>
<BODY text=#000000 bgColor=#ffffff leftMargin=0 topMargin=5>
<TABLE cellSpacing=0 cellPadding=0 width=768 align=center border=0>
<TBODY>
<TR>
<TD align=middle width=168 height=80><IMG
src="——基于8位微控制器控制硬盤進行HDTV碼流讀寫.files/21ic.gif"></TD>
<TD width=472>
<SCRIPT language=javascript
src="——基于8位微控制器控制硬盤進行HDTV碼流讀寫.files/ads.htm"></SCRIPT>
</TD>
<TD height=80>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=b12 align=middle height=30><FONT
face="Arial, Helvetica, sans-serif" color=#000000>
<SCRIPT language=JavaScript
src="——基于8位微控制器控制硬盤進行HDTV碼流讀寫.files/date.js"></SCRIPT>
</FONT></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=1 width=768 align=center border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=3 width=766 align=left border=0>
<TBODY>
<TR bgColor=#d8d6ba>
<TD width=3 height=20></TD>
<DIV id=Position></DIV>
<TD width=378>
<FORM name=email
action=http://www.21icsearch.com/buzi/mail2/chkemail.asp method=post
target=_blank><B>電子工程周刊:</B> <INPUT class=main
style="BORDER-RIGHT: #0097cf 1px solid; BORDER-TOP: #0097cf 1px solid; BORDER-LEFT: #0097cf 1px solid; BORDER-BOTTOM: #0097cf 1px solid; BACKGROUND-COLOR: #ffffff"
maxLength=255 size=30 value=輸入您的Email name=email> <INPUT class=jbutton type=submit value=訂閱> </TD></FORM>
<DIV></DIV>
<DIV id=Time></DIV>
<DIV id=Image></DIV>
<DIV id=Title></DIV>
<TD width=418>
<MARQUEE onmouseover=this.scrollDelay=99000
onmouseout=this.scrollDelay=80 scrollAmount=2 scrollDelay=80
width="80%"><FONT color=#cc0000><IMG height=12
src="——基于8位微控制器控制硬盤進行HDTV碼流讀寫.files/xilan_arrow.gif"
width=16>每周自動接收行業(yè)新聞,技術(shù)資料,設計文章</FONT></MARQUEE></TD>
<DIV></DIV>
<TD width=9></TD></TR></TBODY></TABLE>
<DIV></DIV>
<DIV id=Time></DIV>
<DIV id=Image></DIV>
<DIV id=Title><TD< td></DIV></TD></TR></TBODY></TABLE></TD></TR></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width=768 align=center border=0>
<TBODY>
<TR>
<TD vAlign=top width=617 height=2>
<TABLE cellSpacing=0 cellPadding=0 width=583 align=center border=0>
<TBODY>
<TR>
<TD align=middle height=31><FONT size=4><B>基于8位微控制器控制硬盤進行HDTV碼流讀寫
</B></FONT></TD></TR>
<TR>
<TD align=middle height=15>文章作者:于振生 冷高峰 張 巍 李燕青<BR>文章類型:設計應用
文章加入時間:2003年12月16日11:54</TD></TR>
<TR>
<TD align=right><FONT color=#cc0000>文章出處:電子技術(shù)應用</FONT> </TD></TR>
<TR>
<TD height=15>
<HR width="100%" noShade SIZE=1>
</TD></TR>
<TR>
<TD height=15>
<TABLE cellSpacing=0 cellPadding=0 align=center border=0>
<TBODY>
<TR>
<TD></TD></TR></TBODY></TABLE><BR></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=530 align=center border=0>
<TBODY>
<TR>
<TD class=heigh150 height=15>
<DIV id=Content><FONT face=宋體>
<B>摘要:</B></FONT>介紹用C8051F015微控制器控制硬盤進行HDTV碼流存取的高清碼流回放機的硬件設計和軟件編程。該系統(tǒng)作為解碼器的前端,可以實現(xiàn)HDTV碼流的適時回放。
<P class=MsoNormal><SPAN
style="FONT-FAMILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
<B>關(guān)鍵詞:</B></SPAN>HDTV 碼流 ATA/ATAPI-4標準 LBA模式 CPLD</P>
<P
style="TEXT-INDENT: 30px">隨著HDTV在全球的興起以及數(shù)字技術(shù)的日趨成熟,音/視頻產(chǎn)品數(shù)字化、高清晰度化已成為未來家電視聽產(chǎn)品的大趨勢。高清晰度電視HDTV(High-Definition
Television)采用了國際上流行的MPEG-2標準,MPEG-2規(guī)定了數(shù)字圖像的音視頻編解碼算法以及傳送的碼流應該符合的語法和語義,而其編解碼算法又參考了聽覺心理模型和視覺心理模型。HDTV的圖像格式為1920×1080I,傳輸碼率高達20Mbps,同時采用的視頻壓縮技術(shù)可使HDTV的每一幀包含更多的信息,大大提高圖像的清晰度。HDTV在音頻壓縮方面采用了數(shù)字音頻的編碼和壓縮技術(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ā)展有著技術(shù)和市場的雙重必然性。為了配合HDTV及相關(guān)技術(shù)產(chǎn)品的推廣,筆者開發(fā)了一個既可以作為MPEG解碼器信號源,又可以作為信道編碼/調(diào)制器信號源的碼流回放機,應用于數(shù)字電視產(chǎn)品的開發(fā)、生產(chǎn)調(diào)試及展示宣傳。</P>
<P
style="TEXT-INDENT: 30px">HDTV節(jié)目有傳輸碼率高、節(jié)目信息最大的特點。為了研制出符合大容量高速率要求的碼流回放機,傳統(tǒng)的方法是用操作系統(tǒng)控制硬盤的讀寫操作。這樣做的好處在于:首先,PC機的主頻很高,用來作為控制碼流的時鐘信號在速度上不會有瓶頸問題;其次,對硬盤里HDTV節(jié)目的讀取是基于文件系統(tǒng)的,研發(fā)人員不用寫硬盤的驅(qū)動程序,軟件的工作量大大減小。但是,就碼流回放機本身而言,它是一個單任務設備,采用操作系統(tǒng)的方案無疑將造成CPU資源的極大浪費。因此,筆者設想用單片機或DSP控制硬盤的讀寫操作。只要所選微控制器上速度上滿足高清晰度電視的碼率要求,在技術(shù)上就能夠?qū)崿F(xiàn)預期的功能。與操作系統(tǒng)方案相比較,用微控制器無疑可以大大降低生產(chǎn)成本,同時也降低了硬件設計的難度。不過,在這種方式下,需要編寫硬盤的底層驅(qū)動程序。<B><BR><BR><A
href="http://www.21ic.com/info/images/aet/200307/3a.gif">圖1
C8051F015內(nèi)部結(jié)構(gòu)</A><BR><BR>1 總體方案</B></P>
<P style="TEXT-INDENT: 30px">華天HTTS
HDTV第III代碼流回放機可以播放數(shù)字高清晰度電視HDTV碼流。該碼泫回放機整體設計沒有采用在工控機上研發(fā)PCI卡驅(qū)動硬盤的方案,而是遵照AT
Attachment with Packet Interface
Extension(ATA/ATAPI-4)標準,用8位單片機C8051F015通過PIO方式按照LBA模式直接對硬盤進行物理級的讀寫操作。硬盤接收微控制器的命令后按照邏輯地址順序輸出HDTV碼流給兩片F(xiàn)IFO,硬盤輸出的16位數(shù)據(jù)通過兩片8位FIFO緩存后輸出給CPLD進行拆分以識別包同步和字節(jié)同步。經(jīng)CPLD解析后的數(shù)據(jù)流再經(jīng)過解碼器解碼及適當后處理,送顯示器、揚聲器以提供視頻、音頻信號。既可以作為MPEG解碼器的信號源,又可以作為信道編碼/調(diào)制器的信號源。</P>
<P style="TEXT-INDENT: 0px"><B>2 C8051F015內(nèi)部結(jié)構(gòu)</B></P>
<P
style="TEXT-INDENT: 30px">C8051F015的內(nèi)部結(jié)構(gòu)如圖1所示。它使用了CYGNAL的專利——CIP-51微控制器內(nèi)核CIP-51。CIP-51與MCS-51的指令集完全兼容,可以使用標準803x/805x的匯編器和編譯器進行軟件開發(fā)。同時,CIP-51采用流水線結(jié)構(gòu),70%的指令執(zhí)行時間為1或2個系統(tǒng)時鐘周期,外部晶振最大可以到25MHz。8位HDTV輸出碼流的標準時鐘頻率為19MHz和25MHz。考慮到硬盤的輸出是16位,理論上采用這款MCU完全可以達到速度要求。這里,就系統(tǒng)的初始化問題有幾點說明:(1)內(nèi)外部晶振切換。在外部晶體振蕩器被允許時,系統(tǒng)晶體驅(qū)動器的輸出端XTAL2腳會出現(xiàn)一個瞬時脈沖,該脈沖足以在晶體實際啟動前,將OSCXCN寄存器中的XTLVLD位置1。在允許晶體振蕩器和檢查XTLVLD位之間引入1ms的延時,可以防止提前切換到外部晶振。(2)配置交叉開關(guān)。系統(tǒng)內(nèi)部交叉開關(guān)根據(jù)優(yōu)先權(quán)譯碼表將所選擇的內(nèi)部數(shù)字資源分配到I/O引腳,寄存器XBR0、XBR1、XBR2用于選擇內(nèi)部數(shù)字功能或讓I/O引腳默認為I/O端口。I/O引腳的輸出驅(qū)動器特性用端口配置寄存器PRT0CF、PRT1CF、PRT2CF和PRT3CF定義。每個端口輸出驅(qū)動器都可被配置為漏極開路或推挽方式。將配置寄存器的相應位配置為漏極開路,并在外部加1kΩ的上拉電阻,可用3.3V供電的C8051F015去驅(qū)動5V供電的硬盤。初始化程序:</P>
<P style="TEXT-INDENT: 30px">void sysclk_init(void)</P>
<P style="TEXT-INDENT: 30px">{WDTCH=0xde; //禁止看門狗定時器</P>
<P style="TEXT-INDENT: 30px">WDTCN=0xad;</P>
<P style="TEXT-INDENT: 30px">//啟動外部振蕩器</P>
<P style="TEXT-INDENT: 30px">OSCXCN=0x67; //外接24MHz的晶振</P>
<P style="TEXT-INDENT: 30px">//配置外部晶體</P>
<P style="TEXT-INDENT: 30px">while((OSCXCN&XTLVLD_BIT= =0)</P>
<P style="TEXT-INDENT: 30px">{}</P>
<P style="TEXT-INDENT: 30px">OSCICN=0x88; //選擇外部振蕩器作為系統(tǒng)時鐘,禁止內(nèi)部振蕩</P>
<P style="TEXT-INDENT: 30px">}</P>
<P style="TEXT-INDENT: 30px">//配置交叉開關(guān)</P>
<P style="TEXT-INDENT: 30px">void xbar_init(void)</P>
<P style="TEXT-INDENT: 30px">{XBR0=0x04; //RX TX連到兩個引腳</P>
<P style="TEXT-INDENT: 30px">XBR1=0x04; //INT0連到斷口引腳</P>
<P style="TEXT-INDENT: 30px">XBR2=0x40; //使能交叉開關(guān)和弱上拉</P>
<P style="TEXT-INDENT: 30px">PRT0CF=0xff; //控制FIFO讀寫,使能</P>
<P style="TEXT-INDENT: 30px">PRT1CF=0x07; //控制CPLD讀寫,使能</P>
<P style="TEXT-INDENT: 30px">PRT2CF=0x00; (P0口的所有輸出為弱上拉(寫硬盤命令字)</P>
<P style="TEXT-INDENT: 30px">PRT3CF=0x00; //控制硬盤讀寫,使能</P>
<P style="TEXT-INDENT: 30px">}<B><BR><IMG height=324 hspace=10
src="——基于8位微控制器控制硬盤進行HDTV碼流讀寫.files/3b.gif" width=549 vspace=10
border=0><BR>3 ATA/ATAPI-4標準下的硬盤內(nèi)部寄存器和PIO讀時序關(guān)系</B></P>
<P style="TEXT-INDENT: 30px">3.1 硬盤內(nèi)部寄存器</P>
<P
style="TEXT-INDENT: 30px">目前,大部分計算機配置了兩個IDE接口,地址范圍分別為:0170~0117,0376~0376(對應PC機的Secondary
IDE Channel)和01F0~01F6,03F6~03F6(對應PC機的Primary IDE
Channel)。地址譯碼如表1所示。<BR><BR><B>表1 地址譯碼</B></P>
<TABLE borderColorDark=#ffffff width="100%" borderColorLight=#000000
border=1>
<TBODY>
<TR class=main>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -