中国·芯片交易在线
首页 | 供应信息 | 求购信息 | 库存查询 | 新闻中心 | 展会资讯 | IC厂商 | 技术资料 | 自由区域
   新闻首页 |  行业动态 | 新品发布 | 政策法规 | 科技成果 | 模拟技术 | 嵌入系统 | 传感控制 | 存储设计  
当前位置:IC72首页>> IC新闻中心>> 嵌入系统 >>电子行业新闻正文

给予F240的IDE接口仿真器的设计

时间:2005/7/7 13:18:00  作者:  来源:ic72  浏览人数:1840
 
 

摘  要:本文介绍了以F240为核心设计IDE接口仿真器的硬件和软件设计方法.突出特点是硬件设计简练实用,监控软件精巧灵活,在设计嵌入式系统调试工具中具有典型性和实用性,对其它系统的调试方法也有借鉴。
关键词:仿真器 监控程序 硬件调试 IDE接口

    随着航空电子系统数字化的发展,机载嵌入式计算机也逐步摆脱了"纯粹嵌入"时代,开始以主要控制角色而显露头脚,其存储系统也和地面计算机系统一样提出了"海量存储"的要求.借鉴和使用IDE接口是一条重要途径。但在调试时一般缺乏IDE接口主方(Host)控制器。PC机虽然带有两个标准的集成在主板上的IDE接口,但在目前的Windows系统下却是透明的,无法在硬件调试级进行控制驱动。"工欲善其事,必先利其器"。为解决调试工具,笔者设计了一个IDE接口仿真器。硬件简练实用,软件精巧灵活。

仿真器硬件设计
    众所周知,IDE/ATA接口是16Bit总线,映象在主机的I/O空间。由主机对接口内的2组寄存器操作而完成"海量存储"。这些寄存器仅由2根片选/CS1FX、/CS3FX和3根地址线(A2A1A0)来寻址。仿真器硬件只要能在监控程序的控制下产生对应控制信号,便能真实仿真IDE调试所需的环境。信号方向以仿真器为参照,输出方向由仿真器驱动,输入信号由IDE设备驱动。

    IDE接口的读写时序和一般CPU外设时序波形相似,其读写周期为70ns,具体波形不再给出。使用TI公司的TMS320F240可以方便地仿真出IDE的时序波形。只要使用外部READY信号,把I/O周期延长到70ns以上就可以保证仿真数据读写可靠。以F240为核心,仿真器硬件设计就非常简练。除去初期调试和驱动芯片外,整个核心就是F240和GAL16V8,能仿真全部的IDE时序波形。图1是仿真器自身调试仿真监控程序电路。使用2片CY7C199,组成32K x 16Bit的片外RAM程序存储器空间。当程序调试完成后,将H1断接,将监控程序通过JTAG口直接烧入F240,就可以拔去2片外部程序存储器CY7C199。

    当仿真监控程序调试完成后,正式定型的仿真核心电路如图2所示。电路设计总的原则是简练实用。所以复位采用普通的RC电路,外加手工复位开关SW保证仿真器自身复位。和主机之间利用RS232通讯,减少硬件额外开销。IDE接口的中断请求HIRQ直接F240的外部中断XINT1。因为HIRQ高电平有效,所以将其余不用的外部中断XINT2等接地,保证其余中断源不产生中断请求,减少软件中断响应多重判断环节。将F240的PB端口设置为输出端口,DMA请求HDRQ接到PB端口的最低位PB0,可以直接由硬件检测DRQ状态即可,并不真正需要DMA控制器。
   
    将F240的PC端口设置为输出端口,最高位PC7为复位IDE端口信号。当该位设置为0(低电平)时,产生复位IDE设备信号/HDRST,该位设置为1时结束复位。其复位时间可由软件控制。IDE设备的寄存器映象在F240的I/O空间从0000H开始的16个地址。外部I/O只有IDE接口,不必采用全译码,直接由I/O片选/IS和地址A3区分产生/CF1FX和/CS3FX。接口内偏移地址直接由A2..A0提供。F240的写信号/WR可以直接作为接口写信号。但是F240的读信号是状态信号,在连续读操作中保持低电平,并无上升沿,所以需要专门产生读信号。PC主机通过串口和仿真器通讯,监控仿真器,从而驱动调试的IDE设备。仿真器和IDE设备通过标准的硬盘电缆连接,为提高信号抗干扰,这些信号经过总线驱动器驱动。

    数据通路用16路驱动的IDT74LS16245实现,开门信号直接由I/O片选信号/IS控制,方向端由写信号/WR控制。而单向提供给IDE设备的其它信号,都经过54F244驱动。所有控制信号由GAL16V8全部实现,以下是其控制逻辑代码。
EQUATIONS
!HRST = !POR # !HRST; // RC上电复位 和 F240设置复位都产生 IDE复位
!CS1FX =!IS &!A3; //A3=0:产生第一组寄存器片选 /CS1FX
!CS3FX =!IS &A3; //A3 =1:产生第二组寄存器片选 /CS3FX
!IOR = !IS & !RD; // 专门产生寄存器读信号
[Q1,Q0].CLK = CPUCLK;
[Q1,Q0].OE = !OE;
[Q1,Q0].AR = !.POR; //复位
//F240 系统控制状态机.
//其时钟 20MHz,每一拍50ns
//程序存储器CY7C199 读写周 期 <= 35ns,无需等待
//IDE接口寄存器读写周期>= 70ns,等 待2拍足矣.
State_Diagram [Q1,Q0];
State S0: // 空闲状态.
READY = H; // 支持 CY7C199访问.
if (!IS) then // 要访问IDE接口寄存器.
S1 with {READY240 = L;}
State S1: // 开始等待
READY240 = L;
goto S2;
State S2:
READY240 = L;
goto S3;
State S3: // 时间到.
READY240 = H;
goto S0; // F240对READY信号只采样一次.
END
    仿真硬件的核心只有一片F240和一片GAL16V8而已。

仿真器监控软件设计
    软件设计包括驻留在F240的监控程序和PC宿主机的监控程序。两者之间通过串口配合工作。这当然降低了IDE接口的数据吞吐率,但在逻辑仿真调试时不是主要焦点。为简约起见,避免复杂的词法分析,主从之间采用单字符监控命令。其串口监控命令通讯帧定义如下:
    其校验和为前n-1个字节代数和的补码,即
    CheckSum = -∑Bi (i=0,1.. n-1)

    下面介绍几个主要命令和程序实现方法
1 .I 命令: 读IDE寄存器
    当监控程序识别出I命令后,根据参数提供的寄存器索引,映射为对应的I/O地址。F240的输入/输出命令和x86系列不同,它在指令中必须直接给出地址。
LACC Reg
BZ IsDatReg // 0号索引,即读数据寄存器
SUB #1
BZ IsError // 1号索引,即读错误类型寄存器
BZ IsAltReg // 8号索引,即读后备状态寄存器
SUB #1
BZ IsDrvAddrReg // 9号索引,即读驱动器地址寄存器
IsDatReg
IN Value,DatReg // 读数据寄存器
RET
IsAltReg:
IN Value,DevAddrReg // 读驱动器地址寄存器
RET
    当I命令执行完毕,应该将寄存器读入值回送PC主机。
 
2 .O命令: 写IDE寄存器
    寄存器输出命令参数需要提供寄存器索引,和映射为对应的I/O地址。
 
3 .H 命令: 硬件复位IDE设备
    硬件复位时应将F240的IOPC7管脚设置为低电平10ms以上。如下
LDP #00E1h ;DP = 00E1H: 7080H-70FFH 的页址
LACL #8000H ;D15 = 1: IOPC7: 做输出.
;D7= 0:设置IOPC7= 0
SACL PCDATDIR ;写PC端口,设置/HRST信号为低电平
CALL Delay10ms ;保持复位信号10ms 的低电平
LACL #8080H ;D15= 1: IOPC7: 做输出.
;D7 = 1:设置IOPC7 = 1
SACL PCDATDIR ;恢复 /HRST信号为高电平
    类似地,监测DMA请求HDRQ状态时可以设置端口为输入属性,然后读入IOPB0。监测中断请求HIRQ时,可以直接读XINT1状态,即读 7070H处的XINT1CR寄存器。

4 .S 命令: 软件复位IDE设备
    软件复位时可以向IDE接口的DevCtrlReg(设备控制寄存器)写入适当值实现,如下
LDP #0; //指向.bss变量区
SPLK #000EH,Value; //D2 = SW Rst = 1:软件强制复位
//D1=/IEn=1:禁止IDE发中断
OUT Value, DevCtrlReg; //复位 IDE设备
CALL Delay10ms; //保持复位状态10ms
SPLK #000AH,Value; //D2= SW Rs= 0 : 结束复位状态
OUT Value, DevCtrlReg
CALL Delay10ms
SPLK #000EH,Value; //D6=LBA=1:采用逻辑块寻址模式.
OUT Value,DrvHeadReg; //设置驱动器寄存器

5 .C 命令: 读取IDE设备ID号和相关配置
    IDE设备内的相关配置对其它操作影响较大,主机应该掌握这些参数。诸如柱面数、磁头数、每个磁道的扇区数,以及最大扇区号等。
    CALL WaitRDY; //读状态寄存器,等待D6 = 1,亦即IDE 设备完成上次命令
//准备好再接收新的命令
SPLK #000EH, Value
OUT Value, DrvHeadReg; //选择主从驱动器
SPLK #00ECH,Value
OUT Value, CmdReg; //发命令,读取配置参数
CALL WaitDRQ; //读状态寄存器,等待D6 = 1并且D3=1
//亦即RDY并发出DRQ请求,
//表明已将所读配置参数放入数据寄存 器缓冲
MAR *, AR1; //AR1: 当前辅助寄存器.
LAR AR1,#BufSADDR; //AR1 扇区缓冲区开始地址
RPT #0FFh ; //循环次数= FFH + 1 = 256
IN *+, DatReg; //读入配置数据.
    读出配置参数后,再把它送给PC机的监控程序,从中再细分出具体参数。读一个扇区或写一个扇区的命令和这个命令相似。只是在发命令前应该设置柱面扇区等寄存器,定位到具体的扇区。

6.PC宿主机监控程序功能
    PC宿主机监控程序主要通过串口监控仿真器。在底层通讯中,应该为每一个监控命令建立对应函数。在应用层,可以将几个简单命令有机组合,完成复杂功能,减小仿真器驻留监控难度。例如,在读取配置参数命令中,分解缓冲数据。在读写扇区命令中,将LBA逻辑扇区地址分解成驱动器号、扇区号、柱面号等。
    重要的是为用户提供一个Windows环境下特别容易操作的接口界面,贴近硬件调试,产生所需信号波形,用示波器捕获分析。

结束语
    随着航空电子新系统研制的智能化和接口标准化,硬件调试对仿真设备和环境要求也越来越高。鉴于成本和上市时间的限制,采用嵌入式CPU自己研制一些简单实用的仿真设备是解决矛盾的一条重要的途径。本文所介绍的IDE接口仿真器在多个型号的FLASH DISK研制中发挥了重要作用。
 
 
【相关文章】
·Jupiter处理器在嵌入式网关中的应用
·TI免费提供eZ430 MCU开发工具助力嵌入式设计
·Cypress推出嵌入式USB主机/外设控制器EZ-Host
·嵌入式系统设计中的USB OTG方案
·给予F240的IDE接口仿真器的设计
·利用单片机实现有源功率因数校正
·基于MSM7512B的单片Modem远程抄表系统设计
·基于PIC单片机的嵌入式CAN智能节点及其与PC的通信
·嵌入式系统和嵌入式操作系统
·ADI拓展Blackfin双核嵌入式处理架构
·MiniGUI:跨操作系统的嵌入式图形支持系统
·实时嵌入式系统模型校验技术概述
·基于ARM芯片的网络化电能表设计
·S3C44B0X与LM057QC1T01的接口方法及其应用
·一种改进嵌入式Linux操作系统实时性的新型方案
·Windows xp嵌入系统慨述(六)
·Windows xp嵌入系统慨述(五)
·Windows xp嵌入系统慨述(四)
·Windows xp嵌入系统慨述(三)
·Windows xp嵌入系统慨述(二)
·Windows xp嵌入系统慨述(一)
 
 
IC新闻搜索
 
热点新闻
基于红外超声光电编码器的室内移动小车定位系
基于闪烁存储器的TMS320VC5409DSP并行引导装载方法
非移动市场需求飙升,ARM预计2010年出货量超50亿片
一种快速响应的电容式湿度传感器感湿薄膜设计
利用特殊应用模拟开关改进便携式设计
无线传感器网络跨层通信协议的设计
基于ARM9内核Processor对外部NAND FLASH的控制实现
基于GSM技术的汽车防盗系统的设计
热电阻在烟叶初烤炕房温度控制中的应用
高速数据转换系统对时钟和数据传输的性能要求
友情连接
 关于我们  IC论坛  意见反馈  设置首页  广告服务  用户帮助  联系我们
copyright:(1998-2005) IC72 中国·芯片交易在线
(北京)联系电话:(010)82614113、82614123 传真:(010)82614123 客户服务:service@IC72.com 库存上载:IC72@IC72.com
在线MSN咨询:ic72sale8@hotmail.com 通信地址:北京市西城区西直门内大街2号大厦15层 邮政编码:100013
(深圳)联系方式: 在线MSN咨询:ic72sale6@hotmail.com 在线QQ咨询:191232636 通信地址:深圳市福田区振华路
注 册 号: 1101081318959(1-1)

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9