位置:51电子网 » 技术资料 » 接口电路

基于FPGA的IDE硬盘接口卡的实现

发布时间:2008/6/3 0:00:00 访问次数:473

引言

本文采用fpga实现了ide硬盘接口协议。系统提供两套符合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个或者多个扇区)为单位,每传输完一个数据块后,硬盘都会产生一个中断请求,并向主机报告命令执行结果。

在dma方式下,主机和硬盘之间需要通过一系列握手信号建立一个dma通道,数据以数据流的形式传输。当传输完一个命令的所有数据时,硬盘产生一个中断请求,并向主机报告命令执行结果。dma方式又分为ultra dma和multiword dma两种。ultra dma方式在选通信号的上升沿和下降沿均锁定数据,提高了数据的传输速率,并且在数据传输结束时还要进行crc校验。

2 fpga内部框图

本设计采用actel公司的proasic plus系列fpga芯片,其内部框图如图1所示。

寄存器组一保存从主机写入的命令及命令参数,在控制模块的作用下转发给硬盘。寄存器组二保存从硬盘读出的命令执行结果,供主机读取。控制模块负责产生对主机及对硬盘的各种ide协议控制信号,并协调各模块之间的工作。控制模块采用状态机的设计方法,其软件设计流程将在下一节中详细介绍。数据处理单元对数据进行加/解密运算。缓冲区一、二则作为数据处理单元的输入/输出缓存。在pio方式下,数据的处理以数据块为单位,缓冲区充当ram的作用;在ultra dma方式下,数据以数据流的形式处理,缓冲区充当fifo的作用。

3系统软件流程

开机时,fpga检测到复位信号,初始化内部寄存器组,并对硬盘进行复位操作,硬盘复位完毕后fpga进入空闲状态。fpga在空闲状态时会检测主机是否有写命令操作(通常一个命令的写入,要先写特征寄存器、扇区数寄存器、扇区号寄存器、柱面数低位寄存器、柱面数高位寄存器、驱动器/磁头寄存器6个命令参数寄存器,最后将命令写入命令寄存器)。当主机依次将寄存器组一写完后,fpga对主机置bsy位,并将命令转发给硬盘,同时判断命令类型,根据不同的命令,进入相应的命令处理流程。

如果是无数据命令,fpga等待硬盘命令的执行,命令执行完毕后,硬盘产生一个中断请求,此时fpga将执行结果读入寄存器组二中,并向主机产生中断请求。如果是有数据命令,则根据数据传输的模式,分别进入到下述的pio命令处理流程及ultra dma命令处理流程。

引言

本文采用fpga实现了ide硬盘接口协议。系统提供两套符合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个或者多个扇区)为单位,每传输完一个数据块后,硬盘都会产生一个中断请求,并向主机报告命令执行结果。

在dma方式下,主机和硬盘之间需要通过一系列握手信号建立一个dma通道,数据以数据流的形式传输。当传输完一个命令的所有数据时,硬盘产生一个中断请求,并向主机报告命令执行结果。dma方式又分为ultra dma和multiword dma两种。ultra dma方式在选通信号的上升沿和下降沿均锁定数据,提高了数据的传输速率,并且在数据传输结束时还要进行crc校验。

2 fpga内部框图

本设计采用actel公司的proasic plus系列fpga芯片,其内部框图如图1所示。

寄存器组一保存从主机写入的命令及命令参数,在控制模块的作用下转发给硬盘。寄存器组二保存从硬盘读出的命令执行结果,供主机读取。控制模块负责产生对主机及对硬盘的各种ide协议控制信号,并协调各模块之间的工作。控制模块采用状态机的设计方法,其软件设计流程将在下一节中详细介绍。数据处理单元对数据进行加/解密运算。缓冲区一、二则作为数据处理单元的输入/输出缓存。在pio方式下,数据的处理以数据块为单位,缓冲区充当ram的作用;在ultra dma方式下,数据以数据流的形式处理,缓冲区充当fifo的作用。

3系统软件流程

开机时,fpga检测到复位信号,初始化内部寄存器组,并对硬盘进行复位操作,硬盘复位完毕后fpga进入空闲状态。fpga在空闲状态时会检测主机是否有写命令操作(通常一个命令的写入,要先写特征寄存器、扇区数寄存器、扇区号寄存器、柱面数低位寄存器、柱面数高位寄存器、驱动器/磁头寄存器6个命令参数寄存器,最后将命令写入命令寄存器)。当主机依次将寄存器组一写完后,fpga对主机置bsy位,并将命令转发给硬盘,同时判断命令类型,根据不同的命令,进入相应的命令处理流程。

如果是无数据命令,fpga等待硬盘命令的执行,命令执行完毕后,硬盘产生一个中断请求,此时fpga将执行结果读入寄存器组二中,并向主机产生中断请求。如果是有数据命令,则根据数据传输的模式,分别进入到下述的pio命令处理流程及ultra dma命令处理流程。

相关IC型号
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!