首 页 用户登录 | ![]() |
|||
|
|||
按字母检索 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
按声母检索 | A | B | C | D | E | F | G | H | J | K | L | M | N | O | P | Q | R | S | T | W | X | Y | Z | 数字 | 符号 |
|
![]() |
您的位置: 5VAR论文频道 → 论文中心 → 理工论文 → 电子通信 |
|
|||||
基于8位微控制器控制硬盘进行HDTV码流读写 | |||||
收集整理:佚名 来源:本站整理 时间:2009-01-10 23:53:35 点击数:[] ![]() |
|||||
数据。如此循环,保证FIFO不空。当FIFO输出第一个数据时,CPLD开始对数据流进行拆分,并按照HDTV码流的格式标准对数据流进行判别(HDTV码流188字节为一个包,每个包头是0x47),即每计数1次,就输出一个比特同步,每计数188次并识别下一个数为0x47,就输出一个包同步。这部分程序流程如图3。 系统设置硬盘寄存器参数时,首先调用SetMode()函数设定硬盘的IDLE状态和自掉电功能,可以保证硬盘在不工作的情况下,磁头会复位到“登陆区”;然后调用SetAdress()函数选择对应的寄存器;接下来可以调用ReadSector()函数进行多扇区读操作。以下是寄存器选择子函数和多扇区读子函数。 //寄存器选择子函数; 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; } } //多扇区读子函数: 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); //一次读写的扇区数 //Issue read sector command... WriteBYTE(CMD,7,0x20); //0x20多为扇区读命令 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){ //一次读两字节 nDIOR=0; //硬盘的读时钟 WCK=1; WCK=0; nDIOR=1; } nCS1FX=1; //复位CS nCS3FX=1; return ReadBYTE(CMD,1); //返回错误寄存器的信息 } 本文是“第三代码流回放机研制”课题的一个重要组成部分。本方案利用微控制器对硬盘进行基于LBA模式下的读写操作(不用操作系统),硬软件简洁可靠,技术上也解决前期产品的两个难题: (1)一些旧机器的BIOS不支持INT 13h Extension,无法访问8.4G以上硬盘空间; (2)WINDOWS操作系统不支持存储1.2G以上码流文件。 将此系统逆向设计,能够研发出适时录制TS流和卫星节目的仪器。 |
提供人:佚名 | |
【返回上一页】【打 印】【关闭窗口】 |
![]() |
5VAR论文频道 |
![]() |
5VAR论文频道 |
![]() |
关于本站 -
网站帮助 -
广告合作 -
下载声明 -
网站地图
Copyright © 2006-2033 5Var.Com. All Rights Reserved . |