SCSI控制器进入复位状态时的注意事项

处理器/DSP

891人已加入

描述

AS466 是 Qlogic 公司生产的一款高性能 SCSI 处理器,它可提供 Fast40 SCSI 同步传输速率,其高度集成的 SCSI 核心支持先进的SCAM一层和二层协议,而内嵌的微控制器则使用户可以通过灵活多变的编程方式协调 SCSI 队列,简明清晰的外部接口使得硬件设计更为简单,尤其适合于开发专用 SCSI 存储系统。硬件接口的设计此前已有文章介绍,而软件设计是基于 FAS466 系统的开发难点,目前此类文章尚不多见。本文通过对 FAS466 处理器内部结构和操作原理的深入分析,给出了基于 FAS466 处理器系统的通用软件解决方案和应用实例。

1、FAS466 的结构和原理

FAS466 的内部结构如图1所示,该器件由 SCSI 控制器、微控制器、FIFO 以及连接它们的总线和信号线组成,并通过它们为外部提供微处理器接口、DMA接口和 SCSI 总线接口。

FAS466 微处理器接口可以连接多种微处理器或 DSP;而DMA接口则主要与外部DMA控制器连接?组成DMA通道;SCSI 总线接口可以连接各种 SCSI 设备。其中,SCSI 控制器与微控制器分别是 SCSI 协议的执行中心和控制核心。

1.1 SCSI 控制器操作原理

SCSI 控制器为 SCSI 协议操作提供了灵活有力的底层硬件支持。它通过 32 个8位宽的寄存器与外部微处理器作用。SCSI 控制器命令集包括中断命令、断开命令、目标器模式命令、启动器模式命令和混合命令。外部微处理器或者 FAS466 微控制器通过向 SCSI 控制器命令寄存器中写入代表特定行为的命令代码来实现命令的发送。SCSI 控制器将自动执行命令,通过命令中断状态寄存器和命令状态寄存器来反映命令完成的状态信息。

寄存器

SCSI 控制器内部有五个状态阶段:复位状态、断开(空闲)状态、选择和重选允许状态、目标器空闲状态和启动器空闲状态。其状态转换图如图2所示。

寄存器

(1)复位状态

上电复位后,SCSI 控制器处于复位状态,此时 SCSI 控制器不能驱动任何 SCSI 总线信号,也不响应任何信号,命令寄存器中的命令被忽略?而且只要 FAS466 外部复位信号有效,SCSI 控制器始终保持在这个状态。在操作过程中,外部微处理器可以通过给 SCSI 控制器模块的复位位写1(微处理器接口模块复位寄存器1位)使 SCSI 控制器处于复位状态,写0使 SCSI 控制器进入空闲状态。

(2) 断开(空闲)状态

当 SCSI 总线复位信号(RST)有效,且 SCSI 控制器不处于复位状态或者 SCSI 控制器与 SCSI 总线断开时,SCSI 控制器进入该状态,此状态不能进行选择和重选操作。

(3)选择和重选允许状态

当断开模式命令允许 SCSI 控制器响应选择和重选信号时,系统进入此状态,所有参与仲裁使用 SCSI 总线的命令都必须经过此状态。该状态下,SCSI 控制器响应总线发出选择和重选事件。除非进入目标器或启动器空闲状态,或者RST信号有效,否则 SCSI 控制器将一直保持这个状态。

(4)目标器空闲状态

当 SCSI 控制器响应总线发起事件或者作为其它 SCSI 设备重选的结果时,系统进入该状态。此状态下,SCSI 控制器将作为目标器连接到 SCSI 总线,且当BSY(总线忙)信号有效时,系统将驱动 SCSI 阶段流水线。此状态承认目标器模式和混合命令。除非 SCSI 控制器目标器断开(总线空闲)或者RST信号有效,否则 SCSI 控制器将一直保持该状态。

(5)启动器空闲状态

当 SCSI 控制器响应总线重选事件或者作为其它 SCSI 设备选择的结果时,系统进入该状态。此状态下,SCSI 控制器将作为启动器连接到 SCSI 总线上,而 FAS466 并不使BSY信号有效,也不驱动 SCSI 阶段流水线。SCSI 控制器将一直保持这个状态、直到 SCSI 总线空闲(目标器断开)或者RST信号有效。

SCSI 控制器根据当前状态,总线发起事件和命令寄存器中的命令来决定各个状态阶段之间的转换,以实现 SCSI 总线的仲裁作用,并响应总线发起选择或者重选事件以及进行命令、消息、数据、状态在 SCSI 总线上的传输等任务。

1.2 FAS466 微控制器操作原理

FAS466 微控制器是一个小型的Fast结构(40Million指令每秒)RISC微处理器,内部有一个 32 位的寄存器文件、一个五级深度的堆栈、一个整型ALU和其它特殊功能寄存器。该微控制器的所有指令都是16位宽,除了子程序在两个指令周期(四个时钟周期)内完成外,其它所有指令均在一个指令周期内完成。

FAS466 微控制器有三种操作状态:复位状态,空闲状态和运行状态,其状态转换图如图3所示。

寄存器

系统复位时,微控制器进入复位状态,在空闲和复位状态下,外部微处理器可以通过I/O口操作微控制器的内部寄存器和程序存储器。首先由外部微处理器通过地址指针寄存器加载寄存器地址,然后再通过内部寄存器或者程序存储器的字节操作寄存器来进行操作。外部微处理器则通过设置地址指针寄存器和写程序数据到程序存储器的字节寄存器来将程序下载到微控制器的程序存储器中。下载完毕后,外部微处理器向程序计数器写程序开始执行的地址,然后写01h到控制状态寄存器,这样程序就会从指定的位置开始执行以进入运行状态。微控制器运行过程中,外部微处理器不能打断微控制器或者 SCSI 控制器,直到收到微控制器产生的一个中断。在运行状态,外部微处理器可以操作邮箱寄存器但不能操作通用功能寄存器。当微控制器已执行完当前指令又没有接收到新的指令时,系统将进入空闲状态以等待新的命令。

寄存器

2、FAS466 的软件解决方案

基于 FAS466 的系统可通过外部微处理器、FAS466 微控制器和 SCSI 控制器的协调工作来实现系统功能。根据 FAS466 的内部结构和原理分析,这里给出如图4所示的基于 FAS466 的系统整体软件设计流程。其软件工作过程如下:

(1)外部微处理器初始化 FAS466 微控制器和 SCSI 控制器。(FAS466 微控制器初始化包括装载和执行它的固件)。

(2)FAS466 微控制器允许 SCSI 控制器对 SCSI 总线选择队列的响应。

(3)外部微处理器写一个 SCSI 操作命令给外部命令/设置邮箱寄存器,然后设置LoadTBS位(外部 TBS寄存器6位),以通知 FAS466 微控制器有一个未响应请求。

(4)FAS466 位控制器检查 LoadTBS位,确认请求。

(5)FAS466 禁止 SCSI 控制器对 SCSI 总线选择和重选事件的响应。

(6)FAS466 微控制器复制外部命令/设置寄存器的内容给存储器,清除LoadTBS位,以允许外部微处理器在等待一个微控制器中断前设置下一个命令。

(7)FAS466 微控制器向 SCSI 控制器发送命令(一般用EXEC #k),SCSI 控制器执行命令并在命令完成后产生一个中断。

(8)FAS466 微控制器进行中断处理得到 SCSI 操作的逻辑结果后,产生一个中断给外部微处理器。

(9)外部微处理器根据命令的执行情况进行中断处理。

重复执行(2)~(9)步实现系统的连续操作。

DMA传输是基于 FAS466 系统的主要工作。在传输数据量确定的情况下,数据量可由编程时写入的块数计数器和块大小寄存器中的值决定。但由于实际应用系统的传输数据量存在不确定性,在设计DMA数据传输程序时,应使 SCSI FIFO 中始终充满数据,或使DMA控制器或 SCSI 控制器持续读写SC-SI FIFO,以使 SCSI 总线上的数据传输不受启动器或目标器的限制。FIFO 的空、满门限可由外部微处理器在初始化时通过编程设定。

寄存器

在传输数据量不确定的情况下,从外部DMA控制器接收数据的子程序如图5所示。SCSI 控制器接收到传输命令后即可参与总线仲裁以获得总线的控制权,而外部微处理器则通过设置RDATA位来决定数据传送的方向;在 FIFO 为空而数据接收未完成时,SCSI 控制器进行一次空操作,等待数据。数据量的不确定性可能使得命令完成后 FIFO 中仍残留数据,此时可以选择暂停传输进入EXFER(表示数据传输过程中出现错误)中断并清空 FIFO,也可使其它处理回到传输起点,或者忽略错误直接回到传输起点。数据传送完毕可以选择是否断开与 SCSI 总线的连接。若选择断开则进入XFERCMPDSC(表示传输完成并与 SCSI 总线断开)中断,以释放总线的控制权而让其它的命令使用总线,此时,如果想要进行下一次数据传输,必须重新获得总线控制权。若选择不断开总线则进入XFERCMPNODSC(表示传输完成且不与 SCSI 总线断开)中断,可直接回到数据传输的起点。在所有正常情况下,FAS466 都将循环回到数据传输起点,以便进行连续数据传输。

3、应用实例

基于 FAS466 的视频存储系统可实现数字图像的无压缩海量存储,该系统硬件框图如图6所示。图中,DSP 接收到开拍信号后将进行系统初始化,CCD相机可将原始图像信号经过视频采集卡转换成数字图像信号暂存到缓冲器中,并在DMA控制器的作用下,以DMA方式传送给 FAS466,数据在 FAS466 的控制下存入 SCSI 硬盘组。这样,在硬件基础上,就可通过本文所述的软件解决方案实现视频图像的持续高速存储。

寄存器

4、软件设计中的注意事项

在设计基于 FAS466 的系统软件时,应注意以下一些问题:

(1)在 FAS466 支持的多种处理器中,每个外部微处理器类型都有其相应的代码,因此必须通过芯片配置寄存器选择正确的微处理器模式。如TMS320C5X系列 DSP 的模式选择值就应为3Fh。

(2)SCSI 控制器并不允许命令堆栈,因此,每次只能接收和执行一个命令。

(3)DMA传输时,块大小不能为奇数。

(4)非法写入命令寄存器的命令将引起非法命令中断,并设置非法命令错误位(错误中断状态寄存器第2位),因此,在将其它命令写到命令寄存器前,这个中断必须得到处理。
       责任编辑:pj

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分