用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

基于8位微控制器控制硬盘进行HDTV码流读写

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 23:53:35
【本文由PB创新网为您整理】
摘要:介绍用C8051F015微控制器控制硬盘进行HDTV码流存取的高清码流回放机的硬件设计和软件编程。该系统作为解码器的前端,可以实现HDTV码流的适时回放。

    关键词:HDTV 码流 ATA/ATAPI-4标准 LBA模式 CPLD

随着HDTV在全球的兴起以及数字技术的日趋成熟,音/视频产品数字化、高清晰度化已成为未来家电视听产品的大趋势。高清晰度电视HDTV(High-Definition Television)采用了国际上流行的MPEG-2标准,MPEG-2规定了数字图像的音视频编解码算法以及传送的码流应该符合的语法和语义,而其编解码算法又参考了听觉心理模型和视觉心理模型。HDTV的图像格式为1920×1080I,传输码率高达20Mbps,同时采用的视频压缩技术可使HDTV的每一帧包含更多的信息,大大提高图像的清晰度。HDTV在音频压缩方面采用了数字音频的编码和压缩技术,现有的数字音频编码压缩方案有MPEG、Dolby AC-3和美国AT&T的MPAC以及欧洲的MIX。它们都能实现5.1声道,其声道数可以扩展到5.1,即三个前面的声道(L、C、右声道R)、两个环绕声道(左环绕声道Ls、右环绕声道Rs)和一个低音效果声道LFE,使声音效果可以达到家庭影院的音响效果。HDTV声光效果上优势,注定它的发展有着技术和市场的双重必然性。为了配合HDTV及相关技术产品的推广,笔者开发了一个既可以作为MPEG解码器信号源,又可以作为信道编码/调制器信号源的码流回放机,应用于数字电视产品的开发、生产调试及展示宣传。

HDTV节目有传输码率高、节目信息最大的特点。为了研制出符合大容量高速率要求的码流回放机,传统的方法是用操作系统控制硬盘的读写操作。这样做的好处在于:首先,PC机的主频很高,用来作为控制码流的时钟信号在速度上不会有瓶颈问题;其次,对硬盘里HDTV节目的读取是基于文件系统的,研发人员不用写硬盘的驱动程序,软件的工作量大大减小。但是,就码流回放机本身而言,它是一个单任务设备,采用操作系统的方案无疑将造成CPU资源的极大浪费。因此,笔者设想用单片机或DSP控制硬盘的读写操作。只要所选微控制器上速度上满足高清晰度电视的码率要求,在技术上就能够实现预期的功能。与操作系统方案相比较,用微控制器无疑可以大大降低生产成本,同时也降低了硬件设计的难度。不过,在这种方式下,需要编写硬盘的底层驱动程序。

图1 C8051F015内部结构

1 总体方案

华天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解码器的信号源,又可以作为信道编码/调制器的信号源。

2 C8051F015内部结构

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供电的硬盘。初始化程序:

void sysclk_init(void)

{WDTCH=0xde; //禁止看门狗定时器

WDTCN=0xad;

//启动外部振荡器

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

//配置外部晶体

while((OSCXCN&XTLVLD_BIT= =0)

{}

OSCICN=0x88; //选择外部振荡器作为系统时钟,禁止内部振荡

}

//配置交叉开关

void xbar_init(void)

{XBR0=0x04; //RX TX连到两个引脚

XBR1=0x04; //INT0连到断口引脚

XBR2=0x40; //使能交叉开关和弱上拉

PRT0CF=0xff; //控制FIFO读写,使能

PRT1CF=0x07; //控制CPLD读写,使能

PRT2CF=0x00; (P0口的所有输出为弱上拉(写硬盘命令字)

PRT3CF=0x00; //控制硬盘读写,使能

}
javascript:window.open(this.src);" style="cursor:pointer;"/>
3 ATA/ATAPI-4标准下的硬盘内部寄存器和PIO读时序关系

3

[1] [2] [3]  下一页

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:25,812.50000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号