引言
本文采用实现了硬盘接口协议。系统提供两套符合ATA-6规范的IDE接口,一个与普通IDE硬盘连接,另一个与计算机主板上的IDE接口相连。系统采用FPGA实现接口协议,完成接口数据的截获、处理(在本文中主要是数据加密)和转发,支持PIO和Ultra DMA两种数据传输模式。下面重点介绍用FPGA实现接口协议的方法。
1 IDE接口协议简介
1.1 IDE接口引脚定义
IDE(Integrated Drive Electronics)即“电子集成驱动器”,又称为ATA接口。表1列出了ATA标准中IDE接口上的信号。其中,带“-”的信号(如RESET-)表示低电平有效。“方向”是相对于硬盘而言,I表示进入硬盘,O表示从硬盘出来,I/O表示双向。
表1:IDE接口引脚定义
1.2 IDE控制器的寄存器组
主机对IDE硬盘的控制是通过硬盘控制器上的两组寄存器来实现的。一组为命令寄存器组;另一组为控制/诊断寄存器,如表2所示。

表2寄存器组
特征寄存器中的内容作为命令的一个参数,其作用随命令而变。扇区数寄存器指示该
次命令所需传输数据的扇区数。扇区号寄存器、柱面数寄存器(低、高)、驱动器/磁头寄存器三者合称为介质地址寄存器,指示该次命令所需传输数据首扇区的地址,寻址方式可以用“柱面/磁头/扇区(CHS)”或“逻辑块地址(LBA)”方式,在驱动器/磁头寄存器中指定。
命令寄存器存储执行的命令代码。当向命令寄存器写入命令时,相关的参数必须先写入。命令写入后,硬盘立即开始命令的执行。状态寄存器保存硬盘执行命令后的结果,供主机读取。其主要位有:BSY-驱动器忙,DRDY-驱动器准备好,DF-驱动器故障,DRQ-数据请求,ERR-命令执行出错。辅助状态寄存器与状态寄存器的内容完全相同,但读该寄存器时不清除中断请求。错误寄存器包含了命令执行出错时硬盘的诊断信息。
数据寄存器为PIO传输模式下,主机和硬盘控制器的缓冲区之间进行数据交换的寄存器。数据端口为DMA传输模式下专用的数据传输通道。
1.3 IDE数据传输方式
IDE接口的数据传输包括PIO和DMA两种方式。PIO模式是硬盘数据传输的基本方式。在PIO方式下,数据的传输以数据块(1个或者多个扇区)为单位,每传输完一个数据块后,硬盘都会产生一个中断请求,并向主机报告命令执行结果。