⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ——基于8位微控制器控制硬盘进行hdtv码流读写.htm

📁 mcu读取硬盘的详细资料包括fat及源码
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<!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 content="text/html; charset=gb2312" http-equiv=Content-Type>
<STYLE type=text/css>TD {
	FONT-SIZE: 12px
}
INPUT {
	FONT-SIZE: 12px; font-fammily: verdana,宋体
}
A:link {
	COLOR: #0000ff; FONT-SIZE: 12px; LINE-HEIGHT: 16px; TEXT-DECORATION: underline
}
A:visited {
	COLOR: #660066; FONT-SIZE: 12px; LINE-HEIGHT: 16px; TEXT-DECORATION: underline
}
A:hover {
	COLOR: #ff0000; FONT-SIZE: 12px; TEXT-DECORATION: underline
}
.unnamed1 {
	FONT-FAMILY: "Arial", "Helvetica", "sans-serif"; FONT-SIZE: 12px
}
.white {
	COLOR: #ffffff; FONT-SIZE: 12px; LINE-HEIGHT: 16px
}
.b:link {
	COLOR: #3366cc; FONT-SIZE: 12px; LINE-HEIGHT: 18px; TEXT-DECORATION: underline
}
.b:visited {
	COLOR: #813f1b; FONT-SIZE: 12px; LINE-HEIGHT: 18px; TEXT-DECORATION: none
}
.b:hover {
	COLOR: #ffa037; FONT-SIZE: 12px; LINE-HEIGHT: 18px; TEXT-DECORATION: underline
}
.148xg {
	COLOR: #0000ff; FONT-FAMILY: "宋体"; FONT-SIZE: 14px; LINE-HEIGHT: 14pt; TEXT-DECORATION: underline
}
.128dt {
	COLOR: #9999cc; FONT-FAMILY: "宋体"; FONT-SIZE: 14px; LINE-HEIGHT: 14pt; TEXT-DECORATION: none
}
.heigh150 {
	LINE-HEIGHT: 150%
}
</STYLE>

<META content="MSHTML 5.00.2920.0" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff leftMargin=0 text=#000000 topMargin=5>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 width=768>
  <TBODY>
  <TR>
    <TD align=middle height=80 width=168><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 border=0 cellPadding=0 cellSpacing=0 width="100%">
        <TBODY>
        <TR>
          <TD align=middle class=b12 height=30><FONT color=#000000 
            face="Arial, Helvetica, sans-serif">
            <SCRIPT language=JavaScript 
            src="——基于8位微控制器控制硬盘进行HDTV码流读写.files/date.js"></SCRIPT>
            </FONT></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE align=center border=0 cellPadding=1 cellSpacing=0 width=768>
  <TBODY>
  <TR>
    <TD>
      <TABLE align=left border=0 cellPadding=3 cellSpacing=0 width=766>
        <TBODY>
        <TR bgColor=#d8d6ba>
          <TD height=20 width=3></TD>
          <DIV id=Position></DIV>
          <TD width=378>
            <FORM action=http://www.21icsearch.com/buzi/mail2/chkemail.asp 
            method=post name=email target=_blank><B>电子工程周刊:</B> <INPUT 
            class=main maxLength=255 name=email size=30 
            style="BACKGROUND-COLOR: #ffffff; BORDER-BOTTOM: #0097cf 1px solid; BORDER-LEFT: #0097cf 1px solid; BORDER-RIGHT: #0097cf 1px solid; BORDER-TOP: #0097cf 1px solid" 
            value=输入您的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 onmouseout=this.scrollDelay=80 
            onmouseover=this.scrollDelay=99000 scrollAmount=2 scrollDelay=80 
            width="80%"><FONT color=#cc0000><IMG height=12 
            src="——基于8位微控制器控制硬盘进行HDTV码流读写.files/xilan_arrow.gif" 
            width=16>每周自动接收行业新闻,技术资料,设计文章</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 align=center border=0 cellPadding=0 cellSpacing=0 width=768>
  <TBODY>
  <TR>
    <TD height=2 vAlign=top width=617>
      <TABLE align=center border=0 cellPadding=0 cellSpacing=0 width=583>
        <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>文章出处:电子技术应用</FONT> </TD></TR>
        <TR>
          <TD height=15>
            <HR noShade SIZE=1 width="100%">
          </TD></TR>
        <TR>
          <TD height=15>
            <TABLE align=center border=0 cellPadding=0 cellSpacing=0>
              <TBODY>
              <TR>
                <TD></TD></TR></TBODY></TABLE><BR></TD></TR></TBODY></TABLE>
      <TABLE align=center border=0 cellPadding=0 cellSpacing=0 width=530>
        <TBODY>
        <TR>
          <TD class=heigh150 height=15>
            <DIV id=Content><FONT face=宋体>&nbsp;&nbsp; 
            <B>摘要:</B></FONT>介绍用C8051F015微控制器控制硬盘进行HDTV码流存取的高清码流回放机的硬件设计和软件编程。该系统作为解码器的前端,可以实现HDTV码流的适时回放。 

            <P class=MsoNormal><SPAN 
            style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp; 
            <B>关键词:</B></SPAN>HDTV 码流 ATA/ATAPI-4标准 LBA模式 CPLD</P>
            <P 
            style="TEXT-INDENT: 30px">随着HDTV在全球的兴起以及数字技术的日趋成熟,音/视频产品数字化、高清晰度化已成为未来家电视听产品的大趋势。高清晰度电视HDTV(High-Definition 
            Television)采用了国际上流行的MPEG-2标准,MPEG-2规定了数字图像的音视频编解码算法以及传送的码流应该符合的语法和语义,而其编解码算法又参考了听觉心理模型和视觉心理模型。HDTV的图像格式为1920×1080I,传输码率高达20Mbps,同时采用的视频压缩技术可使HDTV的每一帧包含更多的信息,大大提高图像的清晰度。HDTV在音频压缩方面采用了数字音频的编码和压缩技术,现有的数字音频编码压缩方案有MPEG、Dolby 
            AC-3和美国AT&amp;T的MPAC以及欧洲的MIX。它们都能实现5.1声道,其声道数可以扩展到5.1,即三个前面的声道(L、C、右声道R)、两个环绕声道(左环绕声道Ls、右环绕声道Rs)和一个低音效果声道LFE,使声音效果可以达到家庭影院的音响效果。HDTV声光效果上优势,注定它的发展有着技术和市场的双重必然性。为了配合HDTV及相关技术产品的推广,笔者开发了一个既可以作为MPEG解码器信号源,又可以作为信道编码/调制器信号源的码流回放机,应用于数字电视产品的开发、生产调试及展示宣传。</P>
            <P 
            style="TEXT-INDENT: 30px">HDTV节目有传输码率高、节目信息最大的特点。为了研制出符合大容量高速率要求的码流回放机,传统的方法是用操作系统控制硬盘的读写操作。这样做的好处在于:首先,PC机的主频很高,用来作为控制码流的时钟信号在速度上不会有瓶颈问题;其次,对硬盘里HDTV节目的读取是基于文件系统的,研发人员不用写硬盘的驱动程序,软件的工作量大大减小。但是,就码流回放机本身而言,它是一个单任务设备,采用操作系统的方案无疑将造成CPU资源的极大浪费。因此,笔者设想用单片机或DSP控制硬盘的读写操作。只要所选微控制器上速度上满足高清晰度电视的码率要求,在技术上就能够实现预期的功能。与操作系统方案相比较,用微控制器无疑可以大大降低生产成本,同时也降低了硬件设计的难度。不过,在这种方式下,需要编写硬盘的底层驱动程序。<B><BR><BR><A 
            href="http://www.21ic.com/info/images/aet/200307/3a.gif">图1 
            C8051F015内部结构</A><BR><BR>1 总体方案</B></P>
            <P style="TEXT-INDENT: 30px">华天HTTS 
            HDTV第III代码流回放机可以播放数字高清晰度电视HDTV码流。该码泫回放机整体设计没有采用在工控机上研发PCI卡驱动硬盘的方案,而是遵照AT 
            Attachment with Packet Interface 
            Extension(ATA/ATAPI-4)标准,用8位单片机C8051F015通过PIO方式按照LBA模式直接对硬盘进行物理级的读写操作。硬盘接收微控制器的命令后按照逻辑地址顺序输出HDTV码流给两片FIFO,硬盘输出的16位数据通过两片8位FIFO缓存后输出给CPLD进行拆分以识别包同步和字节同步。经CPLD解析后的数据流再经过解码器解码及适当后处理,送显示器、扬声器以提供视频、音频信号。既可以作为MPEG解码器的信号源,又可以作为信道编码/调制器的信号源。</P>
            <P style="TEXT-INDENT: 0px"><B>2 C8051F015内部结构</B></P>
            <P 
            style="TEXT-INDENT: 30px">C8051F015的内部结构如图1所示。它使用了CYGNAL的专利——CIP-51微控制器内核CIP-51。CIP-51与MCS-51的指令集完全兼容,可以使用标准803x/805x的汇编器和编译器进行软件开发。同时,CIP-51采用流水线结构,70%的指令执行时间为1或2个系统时钟周期,外部晶振最大可以到25MHz。8位HDTV输出码流的标准时钟频率为19MHz和25MHz。考虑到硬盘的输出是16位,理论上采用这款MCU完全可以达到速度要求。这里,就系统的初始化问题有几点说明:(1)内外部晶振切换。在外部晶体振荡器被允许时,系统晶体驱动器的输出端XTAL2脚会出现一个瞬时脉冲,该脉冲足以在晶体实际启动前,将OSCXCN寄存器中的XTLVLD位置1。在允许晶体振荡器和检查XTLVLD位之间引入1ms的延时,可以防止提前切换到外部晶振。(2)配置交叉开关。系统内部交叉开关根据优先权译码表将所选择的内部数字资源分配到I/O引脚,寄存器XBR0、XBR1、XBR2用于选择内部数字功能或让I/O引脚默认为I/O端口。I/O引脚的输出驱动器特性用端口配置寄存器PRT0CF、PRT1CF、PRT2CF和PRT3CF定义。每个端口输出驱动器都可被配置为漏极开路或推挽方式。将配置寄存器的相应位配置为漏极开路,并在外部加1kΩ的上拉电阻,可用3.3V供电的C8051F015去驱动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&amp;XTLVLD_BIT= =0)</P>
            <P style="TEXT-INDENT: 30px">{}</P>
            <P style="TEXT-INDENT: 30px">OSCICN=0x88; //选择外部振荡器作为系统时钟,禁止内部振荡</P>
            <P style="TEXT-INDENT: 30px">}</P>
            <P style="TEXT-INDENT: 30px">//配置交叉开关</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; //使能交叉开关和弱上拉</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 border=0 height=324 
            hspace=10 src="——基于8位微控制器控制硬盘进行HDTV码流读写.files/3b.gif" vspace=10 
            width=549><BR>3 ATA/ATAPI-4标准下的硬盘内部寄存器和PIO读时序关系</B></P>
            <P style="TEXT-INDENT: 30px">3.1 硬盘内部寄存器</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 border=1 borderColorDark=#ffffff borderColorLight=#000000 
            width="100%">
              <TBODY>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -