外设端SCSI-2接口芯片AMD53CF94的应用

2006-05-07 15:49:56来源: 国外电子元器件

目前,在计算机及其外设中,SCSI标准接口应用越来越广泛。其范围遍布了从磁盘驱动器、CD-ROM、DVD、HDD(硬盘驱动器)、Scaner(扫描仪)到主机适配器等各个领域。由于其自身所具有优点,近几年SCSI标准及其应用得到了迅速的发展。它允许串接多个外设,传输速度也从SCSI-1的5MB/s发展到Ultra2(Side)的80MB/s。但在目前阶段,该接口最成熟且最广泛的应用还是SCSI-2标准,SCSI-2标准的传输速率为10MB/s(8bit)和20MB/s(16bit),已能满足大部分外设的数据传输需要。本文介绍一种利用AMD53CF94 SCSI-2控制器来实现与外设进行SCSI-2标准接口的软件、硬件设计方法。

1 硬件设计

AMD53CF94是AMD公司的产品,属于增强型SCSI-2控制器。支持Fast SCSI-2控制协议。其同步模式传输速率可达10Mbytes/s,在异步模式时,其传输速率达5Mbytes/s。它具有24位传输计数器(即最大块传送字节数达16Mbytes),采用3总线设计方案(16位DMA接口、8位CPU接口总线和8位SCSI数据接口)。AMD53CF94控制器直接支持选择、再选择、信息传输和失连命令,同时还带有省电模式(减少功率消耗)。它内含一个可编程抗干扰电路,可以消除宽度达35ns的干扰脉冲,从而极大地提高了系统的可靠性。该芯片采用84脚PLCC封装形式。

AMD53CF94在系统中有多种接法,可以根据具体的应用需求选择最佳的连接方式。CPU对AMD53CF94的控制具有查询和中断两种方式。本文介绍的应用采用中断工作方式。具体的硬件电路如图1所示,图中:命令和信息利用CPU接口进行传输和执行,数据利用DMA通道进行传输,电路中的89C51单片机完全可以满足高速数据传输的要求。

2 软件设计

AMD53CF94的接口软件程序包括SCSI端口初始化、接收PC机数据和向PC机发送数据三部分。

2.1 SCSI端口初始化

图2所示是AMD53CF94接口软件中的SCSI端初始化程序框图。具体的程序清单如下:

;*** SCSI INTERFACE INITIALIZATION SUBROUTINE***

PROC SCSIINI

SCSIINI:MOV A,#02H ;CMDREG(Command Register)为命令寄存器单元

MOV DPTR,#CMDREG;02为Reset Chip命令

MOVX @DPTR,A;复位所有片内功能,返回失连状态,产生硬复位条件

MOV A,#00H ;00为Nop命令

MOVX @DPTR,A ;空操作,释放命令寄存器

MVV A,#01H ;01为Flush FIFO命令

MOVX @DPTR,A ;初始化数据FIFO为空

MOV A,#00H ;STCREGL(Start Transfer Count Register Low)

MOV DPTR,#STCREGL ;清除传输置数寄存器低8位

MOVX @DPTR,A

MOV DPTR,#STCREGM ;STCREGM(Start Transfer Count Register Middle)

MOVX @DPTR,A ;清除传输置数寄存器中间8位

MOV A,#07H ;SDIDREG(SCSI Destination ID Register)

MOV DPTR,#SDIDREG ;指定SCSI设备将要选择的SCSI设备的总线ID编码值

MOVX @DPTR,A ;此处为Target模式,指定Initiator ID为7

MOV DPTR,#STIMREG ;STIMREG(SCSI Timeout Register)

MOV A,#98H ;SCSI超时寄存器单元,SCSI推荐标准值为250ms

MOVX @DPTR,A ;设置SCSI选择或再选超时为250ms

MOV DPTR,#STPREG ;STPREG(Synchronous Transfer Period Register)

MOV A,#04H ;同步传输周期寄存器单元

MOVX @DPTR,A ;设置同步传输周期为100ns,即最大传输速率为10M字节/秒

MOV DPTR,#SOFREG ;SOFREG(Synchronous Offset Register)

MOV A,#00H ;同步偏移寄存器单元

MOVX @DPTR,A ;00表示异步传输

MOV DPTR,#TARGETID;读取Targer ID 跳线设置

MOVX A,@DPTR

ANL A,#07H

ORL A,#10H ;允许53C94报靠复位中断和奇偶错误

MOV DPTR,#CTNLREG1 ;CTLREG1(Control Register One)

MOVX @DPTR,A ;设置控制寄存器1

MOV DPTR,#CLKFREG ;CLKFREG(Clock Factor Register)

MOV A,#00H ;时钟因子寄存器单元,为专门产生内部时序而设置

MOVX @DPTR,A ;此处应用40M外时钟,对应为00H

MOV DPTR,#FTMREG ;FTMREG(Forced Test Mode Register)

MOVX @DPTR,A ;清除测试寄存器单元

MOV DPTR,#CTNLREG2 ;CTLREG2(Control Register Two)

MOV A,#6CH

MOVX @DPTR,A ;设置控制寄存器2

MOV DPTR,#CTLREG3 ;CTLREG3(Control Register Three)

MOV A,#18H

MOVX @DPTR,A ;设置控制寄存器3

MOV DPTR,#CTLREG4 ;CTLREG4(Control Register Four)

MOV A,#20H

MOVX @DPTR,A ;设置控制寄存器4

MOV DPTR,#DALREG ;DALREG(Data Alignment Register)

MOV A,#00H

MOVX @DPTR,A ;清除数据校准寄存器

MOV DPTR,#STCREGH ;STCREGH(Start Transfer Count Register High)

MOVX @DPTR,A ;清除传输置数寄存器高8位

MOV A,#44H ;44H为Enable Selection命令

MOV DPTR,#CMDREG

MOVX @DPTR,A;发送响应总线初始选择命令

SETB EX1 ;开SCSI中断

RET

;************************

2.2 接收PC机数据

图3所示是利用AMD53CF94接口电路接收PC机数据的程序框图。其具体的程序清单如下:

***** SCSI INTERFACE RECEIPT SUBROUTINE******

PROC SCSIRXD

SCSIRXD:

CALL SCSIINI

MOV DPTR,#CMDREG

MOV A,#2AH ;2AH为Receive Data命令

MOVX @DPTR,A ;接收数据后产生中断

RET

;*********************

;***** SCSI RECEIPT INTERRUPT SUBROUTINE*****

RXDINT:

MOV DPTR,#FIFOREG ;接收数据在FIFO中

MOVX A,@DPTR ;读取FIFO寄存器单元

MOV DATARXD,A ;把数据放入数据接收单元DATARXD

MOV A,#00H ;00H代表Good状态

MOVX @DPTE,A ;00H代表Command Complete消息

MOVX @DPTR,A ;把状态和消息送入FIFO再发送出去

MOV DPTR,#CMDREG

MOV A,#24H ;24H为Terminate Sequence命令

MOVX @DPTR,A ;发送一个状态字节和一个消息字节失连

;适用于完成命令后失连

RETI

;**********************

2.3 向PC发送数据:

利用AMD53CF94接口电路向PC机发送数据的程序图如图4所示。以下是其具体的程序清单:

;*** SCSI INTERFACE TRANSMIT SUBROUTINE***

PROC SCSITXD

SCSITXD:

CALL SCSIINI

MOV DPTR,#FIFOREG ;发送数据在发判断数据单元DATATXD放入FIFO中

MOV A,DATATXD

MOVX @DPTR,A ;发送数据放入FIFO中

MOV DPTR,#CMDREG

MOV A,#22H ;22H为Receive Data命令

MOVX @DPTR,A ;发送数据后产生中断

RET

;*************************

;*****SCSI TRANSMIT INTERRUPT SUBROUTINE*****

TXDINT:

MOV DPTR,#FIFOREG ;FIFO寄存器单元

MOV A,#00H ;00H代表Good状态

MOVX @DPTR,A ;00H代表Command Complete消息

MOVX @DPTR,A ;把状态和消息送入FIFO再发送出去

MOV DPTR,#CMDREG

MOV A,#24H ;24H为Terminate Sequence命令

MOVX @DPTR,A ;发送一个状态字节和一个消息字节失连

;适用于完成命令后失连

RETI

;************************

编辑: 引用地址:http://www.eeworld.com.cn/designarticles/others/200605/2515.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部

小广播

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved