您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

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

时间:2007-1-20栏目:电子通信论文

命令的扇区数。当多扇区传输时,每完成一个扇区操作,该寄存器自动减1,直至为0。如果初值为0,则表示256;如果有错误生,该寄存器包含已经操作成功的扇区数。

·扇区号寄存器(173R/W):它记录读、写和校验命令指令起始扇区号。本文用LBA模式。该寄存器记录逻辑扇区的0字节。

·柱面号寄存器(174 175 R/W):它记录读、写、校验、寻址和格式化命令指定的柱面号,在LBA寻址方式下,这2个寄存器包含起始扇区的1和2字节。

·驱动器/磁头寄存器(176R/W):它记录读、写、校验、寻道和格式化命令指定的驱动器号、磁头号和寻址方式。在ATA/ATAPI-4中其定义如表2所示。

表2 驱动器/磁头寄存器在ATA/ATAPI-4中的定义

D7 D6 D5 D4 D3 D2 D1 D0 1 L 1 DEV HS3 HS2 HS1 HS0

HS0~HS3(磁头选择):在LBA方式中,是逻辑扇区的高4位。

DEV驱动器选择:0选择主驱动器,1选择从驱动器。

L(LBA方式):L=1,置驱动器为LBA模式;L=0,置驱动器为CHS模式。

·状态寄存器(177 R);反映了硬盘执行命令后的状态。读该寄存器清除中断请求信号,为避免清除中断,可以读辅助状态寄存器376h。这两个寄存器的内容完全一样。在ATA/ATAPI-4中其定义如表3所示。

BSY:驱动器忙。

DRDY:驱动器准备好。

DRQ:请求服务,驱动器请求通过寄存器与处理器交换一个字节数据。

ERR:命令执行错误。

3.2 硬盘PIO方式下特定区域多扇区读的操作

如果想从硬盘的特定扇区读出码流信息,首先主机(C8051F015)要对驱动器/磁头寄存器、柱面号寄存器、扇区号寄存器、扇区数寄存器设置参数。完毕后要等待至少400ns才能去读状态寄存器的参数判断以上设置是否有效。硬盘接收命令后置BSY=1,并开始执行命令。硬盘如果准备好传送数据包,就置DRQ=1,同时清零BSY。当机循环读状态寄存器或辅助状态寄存器判断BSY=0&DRQ=1,一旦硬盘状态符合要求,主机写参数0x80(128扇区)到数据寄存器(0x170),并写0x20(PIO读)到命令寄存器(0x177),表示要求读出硬盘相应地址里的数据块。硬盘判断数据寄存器被置数后立即置BSY=1&DRQ=0。主机读到置位信息后给硬盘读时钟,硬盘输出数据直到数据包传完为止。

表3 状态寄存器在ATA/ATAPI-4中的定义

D7 D6 D5 D4 D3 D2 D1 D0 BSY DRDY # # DRQ obsolete obsolete ERR

4 系统设计方案

4.1 系统硬件构成

基于8位微控制器的系统设计方案如图2所示。主系统中以C8051F015为控制核心,C8051F015产生硬盘和FIFO的读写时序(为了避免硬盘寄存器参数也被写入FIFO,在硬件上要把二者的读写时钟分开。);硬盘输出的16位数据分离低8位分别送入两片64KB的FIFO缓存。数据经缓存后持续地输出到CPLD,CPLD对16位数据流进行拆分,同时识别包同步和字节同步。这样,原始的一路HDTV码流就被分成3路输送给解码器解码。主系统通过串行总线与前面板相连,采用通用单片机AT89C51为前面板的控制核心。AT89C51接收来自键盘的命令并在LCD上以文字和图形的方式展现在用户面前,同时通过串口通信,启动主控制器执行命令。

4.2 系统软件设计

4.2.1 存码流部分

上一页  [1] [2] [3] [4] [5] 下一页

下页更精彩:1 2 3 4 下一页