?? 打印文章.htm
字號(hào):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0053)http://www.cnzdh.com/Article/Print.asp?ArticleID=3524 -->
<HTML><HEAD><TITLE>打印文章</TITLE>
<META
content=自動(dòng)化,自動(dòng)化學(xué)習(xí)網(wǎng),自動(dòng)化論文,plc教程,技術(shù)手冊(cè),應(yīng)用案例,單片機(jī)教程,視頻教程,教程,plc教程,應(yīng)用案例,匯編程序,工業(yè)以太網(wǎng),現(xiàn)場總線,PLC,可編程序控制器,編程軟件,變頻器,運(yùn)動(dòng)伺服,嵌入式系統(tǒng),傳感器,開關(guān)電源,伺服系統(tǒng),直流調(diào)速,步進(jìn)電機(jī),伺服系統(tǒng),伺服電機(jī),低壓電器,開關(guān)電源,資料
name=keywords>
<META content=中國自動(dòng)化學(xué)習(xí)網(wǎng)--打造中國自動(dòng)化學(xué)習(xí)資料全集,免費(fèi)提供plc教程,技術(shù)手冊(cè)、單片機(jī)、變頻器、電源、嵌入式等資料下載
name=Description>
<META
content="自動(dòng)化,工業(yè)以太網(wǎng),現(xiàn)場總線,PLC,可編程序控制器,運(yùn)動(dòng)伺服,PC-BASED,嵌入式系統(tǒng),傳感器,電器元件,開關(guān)電源,控制系統(tǒng),工控機(jī),工業(yè)控制,lonworks,控制系統(tǒng),devicenet,cc-link,ff modbus,plc,運(yùn)動(dòng)控制,伺服系統(tǒng),伺服電機(jī),scada,dcs,ncs,PID控制,hmi,以太網(wǎng)交換機(jī),觸摸屏,HMI,直流調(diào)速,交流調(diào)速,步進(jìn)電機(jī),伺服系統(tǒng),伺服電機(jī),GPS/GPRS/CDMA,工控機(jī)"
name=Keywords>
<META content=自動(dòng)化學(xué)習(xí)網(wǎng)cnzdh.com,提供免費(fèi)的自動(dòng)化專業(yè)技術(shù)資料 name=Description>
<META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK
href="打印文章.files/DefaultSkin.css" type=text/css rel=stylesheet>
<SCRIPT language=JavaScript src="打印文章.files/menu.js"
type=text/JavaScript></SCRIPT>
<SCRIPT language=JavaScript1.2 src="打印文章.files/stm31.js"
type=text/javascript></SCRIPT>
<SCRIPT language=JavaScript type=text/JavaScript>
function resizepic(thispic)
{
if(thispic.width>700) thispic.width=700;
}
//雙擊鼠標(biāo)滾動(dòng)屏幕的代碼
var currentpos,timer;
function initialize()
{
timer=setInterval ("scrollwindow ()",30);
}
function sc()
{
clearInterval(timer);
}
function scrollwindow()
{
currentpos=document.body.scrollTop;
window.scroll(0,++currentpos);
if (currentpos !=document.body.scrollTop)
sc();
}
document.onmousedown=sc
document.ondblclick=initialize
</SCRIPT>
<META content="MSHTML 6.00.2900.3199" name=GENERATOR></HEAD>
<BODY onmouseup=document.selection.empty() oncontextmenu="return false"
onselectstart="return false" ondragstart="return false"
onbeforecopy="return false" oncopy=document.selection.empty() leftMargin=0
topMargin=0 onselect=document.selection.empty() marginheight="0"
marginwidth="0">
<TABLE class=center_tdbgall style="WORD-BREAK: break-all" cellSpacing=0
cellPadding=0 width=760 align=center border=0>
<TBODY>
<TR>
<TD class=main_title_760 align=right height=20><A class=class
href="javascript:window.print()"><IMG alt=打印本文
src="打印文章.files/printpage.gif" align=absMiddle
border=0> 打印本文</A> <IMG alt=關(guān)閉窗口
src="打印文章.files/pageclose.gif" align=absMiddle border=0> <A
class=class href="javascript:window.close()">關(guān)閉窗口</A> </TD></TR>
<TR>
<TD class=main_ArticleTitle
align=middle><B>基于8位微控制器控制硬盤進(jìn)行HDTV碼流讀寫</B></TD></TR>
<TR>
<TD class=Article_tdbgall
align=middle>作者:佚名 文章來源:不詳 點(diǎn)擊數(shù)
<SCRIPT language=javascript src="打印文章.files/GetHits.htm"></SCRIPT>
更新時(shí)間:2007-5-31
13:01:17 文章錄入:admin 責(zé)任編輯:admin </TD></TR>
<TR>
<TD>
<HR align=center width="100%" color=#8ea7cd noShade SIZE=1>
</TD></TR>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=10 align=left border=0>
<TBODY>
<TR>
<TD><!--插入廣告JS代碼--></TD></TR></TBODY></TABLE> <!--DVNEWS_AD_END--><STRONG>摘要:</STRONG>介紹用C8051F015微控制器控制硬盤進(jìn)行HDTV碼流存取的高清碼流回放機(jī)的硬件設(shè)計(jì)和軟件編程。該系統(tǒng)作為解碼器的前端,可以實(shí)現(xiàn)HDTV碼流的適時(shí)回放。
<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標(biāo)準(zhǔn) LBA模式 CPLD</P>
<P
style="TEXT-INDENT: 30px">隨著HDTV在全球的興起以及數(shù)字技術(shù)的日趨成熟,音/視頻產(chǎn)品數(shù)字化、高清晰度化已成為未來家電視聽產(chǎn)品的大趨勢。高清晰度電視HDTV(High-Definition
Television)采用了國際上流行的MPEG-2標(biāo)準(zhǔn),MPEG-2規(guī)定了數(shù)字圖像的音視頻編解碼算法以及傳送的碼流應(yīng)該符合的語法和語義,而其編解碼算法又參考了聽覺心理模型和視覺心理模型。HDTV的圖像格式為1920×1080I,傳輸碼率高達(dá)20Mbps,同時(shí)采用的視頻壓縮技術(shù)可使HDTV的每一幀包含更多的信息,大大提高圖像的清晰度。HDTV在音頻壓縮方面采用了數(shù)字音頻的編碼和壓縮技術(shù),現(xiàn)有的數(shù)字音頻編碼壓縮方案有MPEG、Dolby
AC-3和美國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)勢,注定它的發(fā)展有著技術(shù)和市場的雙重必然性。為了配合HDTV及相關(guān)技術(shù)產(chǎn)品的推廣,筆者開發(fā)了一個(gè)既可以作為MPEG解碼器信號(hào)源,又可以作為信道編碼/調(diào)制器信號(hào)源的碼流回放機(jī),應(yīng)用于數(shù)字電視產(chǎn)品的開發(fā)、生產(chǎn)調(diào)試及展示宣傳。</P>
<P
style="TEXT-INDENT: 30px">HDTV節(jié)目有傳輸碼率高、節(jié)目信息最大的特點(diǎn)。為了研制出符合大容量高速率要求的碼流回放機(jī),傳統(tǒng)的方法是用操作系統(tǒng)控制硬盤的讀寫操作。這樣做的好處在于:首先,PC機(jī)的主頻很高,用來作為控制碼流的時(shí)鐘信號(hào)在速度上不會(huì)有瓶頸問題;其次,對(duì)硬盤里HDTV節(jié)目的讀取是基于文件系統(tǒng)的,研發(fā)人員不用寫硬盤的驅(qū)動(dòng)程序,軟件的工作量大大減小。但是,就碼流回放機(jī)本身而言,它是一個(gè)單任務(wù)設(shè)備,采用操作系統(tǒng)的方案無疑將造成CPU資源的極大浪費(fèi)。因此,筆者設(shè)想用單片機(jī)或DSP控制硬盤的讀寫操作。只要所選微控制器上速度上滿足高清晰度電視的碼率要求,在技術(shù)上就能夠?qū)崿F(xiàn)預(yù)期的功能。與操作系統(tǒng)方案相比較,用微控制器無疑可以大大降低生產(chǎn)成本,同時(shí)也降低了硬件設(shè)計(jì)的難度。不過,在這種方式下,需要編寫硬盤的底層驅(qū)動(dòng)程序。<B><BR><BR><B><FONT
color=#3366ff>圖1 C8051F015內(nèi)部結(jié)構(gòu)</FONT></B><BR><BR>1 總體方案</B></P>
<P style="TEXT-INDENT: 30px">華天HTTS
HDTV第III代碼流回放機(jī)可以播放數(shù)字高清晰度電視HDTV碼流。該碼泫回放機(jī)整體設(shè)計(jì)沒有采用在工控機(jī)上研發(fā)PCI卡驅(qū)動(dòng)硬盤的方案,而是遵照AT
Attachment with Packet Interface
Extension(ATA/ATAPI-4)標(biāo)準(zhǔn),用8位單片機(jī)C8051F015通過PIO方式按照LBA模式直接對(duì)硬盤進(jìn)行物理級(jí)的讀寫操作。硬盤接收微控制器的命令后按照邏輯地址順序輸出HDTV碼流給兩片F(xiàn)IFO,硬盤輸出的16位數(shù)據(jù)通過兩片8位FIFO緩存后輸出給CPLD進(jìn)行拆分以識(shí)別包同步和字節(jié)同步。經(jīng)CPLD解析后的數(shù)據(jù)流再經(jīng)過解碼器解碼及適當(dāng)后處理,送顯示器、揚(yáng)聲器以提供視頻、音頻信號(hào)。既可以作為MPEG解碼器的信號(hào)源,又可以作為信道編碼/調(diào)制器的信號(hà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的指令集完全兼容,可以使用標(biāo)準(zhǔn)803x/805x的匯編器和編譯器進(jìn)行軟件開發(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。考慮到硬盤的輸出是16位,理論上采用這款MCU完全可以達(dá)到速度要求。這里,就系統(tǒng)的初始化問題有幾點(diǎn)說明:(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)配置交叉開關(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引腳默認(rèn)為I/O端口。I/O引腳的輸出驅(qū)動(dòng)器特性用端口配置寄存器PRT0CF、PRT1CF、PRT2CF和PRT3CF定義。每個(gè)端口輸出驅(qū)動(dòng)器都可被配置為漏極開路或推挽方式。將配置寄存器的相應(yīng)位配置為漏極開路,并在外部加1kΩ的上拉電阻,可用3.3V供電的C8051F015去驅(qū)動(dòng)5V供電的硬盤。初始化程序:</P>
<P style="TEXT-INDENT: 30px">void sysclk_init(void)</P>
<P style="TEXT-INDENT: 30px">{WDTCH=0xde; //禁止看門狗定時(shí)器</P>
<P style="TEXT-INDENT: 30px">WDTCN=0xad;</P>
<P style="TEXT-INDENT: 30px">//啟動(dòng)外部振蕩器</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)時(shí)鐘,禁止內(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連到兩個(gè)引腳</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 alt=""
src="打印文章.files/200753113117742.gif" align=absMiddle border=0><BR>3
ATA/ATAPI-4標(biāo)準(zhǔn)下的硬盤內(nèi)部寄存器和PIO讀時(shí)序關(guān)系</B></P>
<P style="TEXT-INDENT: 30px">3.1 硬盤內(nèi)部寄存器</P>
<P
style="TEXT-INDENT: 30px">目前,大部分計(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所示。<BR><BR><B>表1 地址譯碼</B></P>
<TABLE borderColorDark=#ffffff width="100%" borderColorLight=#000000
border=1>
<TBODY>
<TR class=main>
<TD align=middle width="16%">CS1FX</TD>
<TD align=middle width="16%">CS3FX</TD>
<TD align=middle width="17%">DA2</TD>
<TD align=middle width="17%">DA1</TD>
<TD align=middle width="17%">DA0</TD>
<TD align=middle width="17%">Address</TD></TR>
<TR class=main>
<TD align=middle width="16%">1</TD>
<TD align=middle width="16%">0</TD>
<TD align=middle width="17%">0</TD>
<TD align=middle width="17%">0</TD>
<TD align=middle width="17%">0</TD>
<TD align=middle width="17%">170</TD></TR>
<TR class=main>
<TD align=middle width="16%">1</TD>
<TD align=middle width="16%">0</TD>
<TD align=middle width="17%">0</TD>
<TD align=middle width="17%">0</TD>
<TD align=middle width="17%">1</TD>
<TD align=middle width="17%">171</TD></TR>
<TR class=main>
<TD align=middle width="16%">1</TD>
<TD align=middle width="16%">0</TD>
<TD align=middle width="17%">0</TD>
<TD align=middle width="17%">1</TD>
<TD align=middle width="17%">0</TD>
<TD align=middle width="17%">172</TD></TR>
<TR class=main>
<TD align=middle width="16%">1</TD>
<TD align=middle width="16%">0</TD>
<TD align=middle width="17%">0</TD>
<TD align=middle width="17%">1</TD>
<TD align=middle width="17%">1</TD>
<TD align=middle width="17%">173</TD></TR>
<TR class=main>
<TD align=middle width="16%">1</TD>
<TD align=middle width="16%">0</TD>
<TD align=middle width="17%">1</TD>
<TD align=middle width="17%">0</TD>
<TD align=middle width="17%">0</TD>
<TD align=middle width="17%">174</TD></TR>
<TR class=main>
<TD align=middle width="16%">1</TD>
<TD align=middle width="16%">0</TD>
<TD align=middle width="17%">1</TD>
<TD align=middle width="17%">0</TD>
<TD align=middle width="17%">1</TD>
<TD align=middle width="17%">175</TD></TR>
<TR class=main>
<TD align=middle width="16%">1</TD>
<TD align=middle width="16%">0</TD>
<TD align=middle width="17%">1</TD>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -