8位单片机的16位外部总线扩展与应用

  随着电子设计技术的进步和芯片制造工艺水平的提高,16位和32位单片机的使用越来越广泛;但是8位单片机因其制造工艺成熟、价格低廉等特点,仍然在市场上占有相当大的比例,尤其在成本敏感和可靠性要求极高的汽车电子领域,更占有绝对优势。带有外部总线的8位单片机,可以方便地与8位总线设备(如A/DRAMCAN总线)相连。随着对传输性能要求的提高,出现了大量的16位总线设备(如网络接口芯片)。8位单片机要与16位总线设备相连接,通常的做法是利用I/O端口来模拟16位总线的读/写时序,数据传输速率较低,且原有的8位设备的传输速率也随之降低,因而限制了8位单片机的使用范围。本文提出一种8位单片机扩展16位外部总线的方法,在不影响原有8位器件的前提下,可实现对16位总线设备的高速存取;最后,介绍了如何利用该方法与IDE硬盘相连接,并应用于车载数据采集系统。

1  8/16位总线时序分析

1.1  8位单片机总线时序

  带有外部总线的8位单片机有很多,如51系列、AVR系列等,本文以W77E58为例。W77E58Winbond公司推出的增强型51单片机,工作时钟最高为40 MHz。在同样的时钟频率下,W77E58指令速度是传统51单片机的3倍;另外,W77E58对程序存储器和数据存储器的寻址能力都为64 KB。图1中上半部分为读时序,下半部分为写时序。


单片机W77E58的读/写时序

  以读数据为例,P0P2口输出当前地址,ALE的下降沿锁存低8位地址,高8位保持不变;而后,读信号RD使能(低电平),外部设备把数据送到P0口,在RD的上升沿把数据读入单片机。写数据与此类似,不过数据方向相反;同时为保证数据能够正确写入外部设备,单片机在写信号WR使能前把数据送到P0口,WR无效后须保持一定时间。从图1中可以看出,单片机用P0口存取8位数据,P2口仅用于地址输出。

1.2  IDE硬盘总线时序

  下面以IDE硬盘为例来分析16位总线时序。图2IDE硬盘的接口示意图[1],只标出了与总线有关的信号线: DIOR/DIOW,读/写;DCS0/DCS1,片选;DD0DD1516位数据线;DA0DA23位地址线。


2  IDE硬盘接口

  IDE硬盘是典型的16位总线设备。IDE接口有两个片选信号,DCS1用来寻址控制寄存器。默认状态下即可对IDE硬盘进行存取操作,故一般把该信号线直接连到高电平而只使用DCS0。其时序如图3所示。


3  IDE硬盘读/写时序

  读/写周期开始时DIORDIOW均处于无效状态,DA0DA2连接到主机(在这里为单片机)的地址输出。在收到读请求(DIOR使能)后把数据送至数据线上,主机利用DIOR的上升沿锁存该数据;之后,硬盘控制器延时后释放数据线。在收到写请求时(DIOW使能),则让数据线处于三态(tristate),等待主机输出数据;最后在DIOW的上升沿把数据写入硬盘控制器,在DIOW上升沿之前,主机需把数据准备好。

  对比图1和图3可知,总线时序基本一致,只是在数据线上传输的数据位数不同。但是,主机一条指令完成一个读/写周期,从外部设备到主机的16位数据在指令完成后不再有效;而从主机到外部设备的数据必须在指令完成前准备好。因而要把8位总线扩展成16位总线,必须要同时考虑读/写时数据的锁存问题。

2  16位总线扩展的实现

  根据前面对总线时序的分析,采用如图4所示的方法对8位总线进行扩展,使其满足16位总线读/写。主要由以下两部分组成: 1GAL16V8U5),实现片选信号的译码和其他信号的编码;274HC573U3U4),实现高8位数据锁存。CS1CS4A9A15的译码输出,可连接4个外部设备。地址范围根据具体设备来设定,假设CS2上连接有16位总线设备:

  CS1 0000H7FFFHCS2 8000H83FFH
  CS3 8400H85FFHCS4 8600H87FFH
  CS5 8000H81FFHFC00HFDFFH
  CS6 8200H83FFHFE00HFFFFH
  LE5 = !RD & !CS5LE6 = !WR & !CS6

  这里“&”表示“!”表示,即RDCS5同时有效时,LE5有效; WRCS6同时有效时,LE6有效。注意: CS5CS6有一部分地址空间与CS2重合,即选通CS2的同时,也同时会选通CS5CS6。另外,通过外部设备地址线的连接,使得8000H81FFH8200H83FFH寻址同一个位置。以图2中的IDE硬盘为例:DA0>A0DA1>A1DA2>A2


具体实现原理

  单片机写16位数据时,执行写操作使CS6有效(寻址FE00HFFFFH),输出高8位数据并锁存到U4;然后执行写操作使CS2有效(寻址8200H83FFH),P0口上的数据和U4锁存的数据同步输出,形成16位数据D0D15,从而写入外部设备。

  单片机读16位数据时,执行读操作使CS2有效(寻址8000H81FFH),外部设备的低8位送至P0口,而高8位同时被U3锁存;然后执行读操作使CS5有效(寻址FC00HFDFFH),U3锁存的数据被送至P0口。

  在上面的读/写过程中,虽然对CS2的寻址位置不同(读为8000H81FFH,写为8200H83FFH),但由于位置重合,故可对16位外部设备正确读/写。另外,如果单片机寻址连接到CS1CS3CS4上的8位设备,则由于U3U4没有选通,对其操作没有任何影响。

  从上面的实现可以看出,扩展后的16位外部总线与外部设备进行数据交互时只增加一条指令。本方法与常规的端口模拟方法的比较结果如表1所列。从表中可以看出,采用本方法后,传输速率是常规方法的3倍。

 

不同方法16位总线速度对比(fosc=33 MHz

  另外,上述扩展方法还可以进一步引申:若有未使用的I/O口(如W77E58P1口),则可用来直接输出高8位数据,从而可以去掉图4中的U4若对成本不太敏感,则可把图4中的逻辑器件用CPLD实现,从而使设计更为灵活,布线更为方便,结构更为紧凑,基本实现原理仍然如图4所示。

在车载数据采集系统中的应用

  8位单片机扩展16位外部总线的方法已应用于车载数据采集系统,图5为该系统的原理框图。汽车厂商在开发新车型或者关键零部件升级时,必须经过样品试制、产品鉴定、小批试制和大批生产等必要阶段。在每个阶段中,都伴随着大量的可靠性试验,车载数据采集系统正是为这些试验而设计的。鉴于其特殊的使用条件,必须满足如下基本要求: 能够进行连续、长时间数据采集,时间有可能是几天或者一个月;因为有可能很多台车辆的试验同时进行,因而要求系统成本低且安全可靠;具有CAN总线数据采集接口。在图5中,8位单片机上挂有38位总线器件(USB Slave器件、RAMCAN总线器件)和116位总线接口设备(IDE硬盘)。


5  车载数据采集系统原理框图

  单片机采用前面提到的W77E58;为保证较高的数据传输速率,便于与外部串口设备(LCM显示屏)通信,外部晶振频率使用33 MHz

  USB Slave器件采用PDIUSBD12,使用模块化的方法实现一个USB接口。本次设计通过该器件把IDE硬盘映射成为一个可移动硬盘,从而实现了大容量存储类(Mass Storage Class)。

  RAM采用HY62WT08081E。该器件提供32 KB的数据空间,用于数据采集以及FAT32文件系统操作的缓存。

  CAN总线接口器件采用SJA1000+TLE6250的组合。SJA1000是独立的CAN控制器,用于汽车和工业环境中的控制器局域网络;TLE6250是针对汽车环境设计的CAN收发器。

  IDE硬盘使用经过防震处理的工业用硬盘,也可使用CF卡加IDE转接线的方式。

  图6为车载数据采集系统的简要软件流程图。考虑到USB端口和CAN总线上的数据一般不会同时向系统发出请求,故软件采用查询方式工作。主要包括以下几部分: 主流程、USB协议实现[2]CAN总线数据[3]和其他车辆状态信号采集,以及FAT32协议实现。


6  车载数据采集系统简要软件流程图

小结

  本设计在8位单片机上实现了16位外部总线,可对16位设备进行高速存取,并且保留了原8位总线的功能。这种8/16位总线共存的方式,较之端口模拟总线方式,极大地提高了数据的传输速率。该16位总线扩展方式已成功应用于车载数据采集系统。在汽车的道路可靠性试验中,安装了多套该系统。试验结果表明,该系统使用方便,工作稳定、可靠,数据传输率高,完全满足汽车动态采集数据的需要。该16位总线的扩展方式,可应用于具有8位外部总线的单片机,在一定程度上,扩大了该类单片机的使用范围。

参考文献

[1]  Information Technology Industry Council. ATA/ATAPI4, Revision 18. 1998.
[2]  www.usb.org. Universal Serial Bus Mass Storage Class, Revision 1.0. 1999.
[3]  
邬宽明.CAN总线原理和应用系统设计. 北京:北京航空航天大学出版社,1996.

于良耀  博士,主要从事汽车电子设计开发以及汽车主动安全控制系统的研究。
宋健  博士生导师,主要从事汽车技术的理论研究。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值