8位单片机的16位外部总线扩展与应用
   随着电子设计技术的进步和芯片制造工艺水平的提高,16位和32位单片机的使用越来越广泛,但是8位单片机因其制造工艺成熟、价格低廉等特点,仍然在市场上占有相当大的比例,尤其在成本敏感和可靠性要求极高的汽车电子领域,更占用绝对优势,带有外部总线的8位单片机,可以方便地与8位总线设备(如A/D、RAM和CAN总线)相连。随着对传输性能要求的提高,出现了大量的16位总线设备(如网络接口芯片),8位单片机要与16位总线设备相连接,通常的做法是利用I/O端口来模拟16位总线的读/写时序,数据传输速率较低,且原有的8位设备的传输速率也随之降低,因而限制了8位单片机的使用范围,本文提出一种8位单片机扩展16为外部总线的方法,不影响原有8位器件的前提下,可实现对16位总线设备的高速存取;最后,介绍了如何利用该方法与IDE硬盘相连接,并应用于车载数据采集系统。
<P><STRONG>       1 8位/16位总线时序分析 </STRONG></P>
<P><STRONG>       1.1 8位单片机总线时序 </STRONG></P>
<P>       带有外部总线的8位单片机有很多,如51系列,AVR系列等,本文以W77E58为例,W77E58是Winbond公司推出的增强型51单片机,工作时钟最高为40M赫兹,在同样的时钟频率下,W77E58指令速度是传统51单片机的3倍;另外,W77E58对程序存储器和数据存储器的寻址能力都为64KB。图1中上半部分为读时序,下半部分为写时序。 </P><IMG style="WIDTH: 300px; HEIGHT: 236px" height=236 alt=单片机w77e58的读/写时序 hspace=0 src="http://www.dzdqw.com/jishu/UploadFiles_9637/200610/20061010225417150.jpg" width=300 border=0>
<P>       以读数据为例,P0、P2口输出当前地址,ALE的下降沿锁存低8位地址,高8位保持不变;而后,读信号RD使能(低电平),外部设备把数据送到P0口,RD的上升沿把数据读入单片机。写数据与此类似,不过数据方向相反,同时为保证数据能够正确写入外部设备,单片机在写信号WR使能前把数据送到P0口,WR无效后须保持一定时间,从图1中可以看出,单片机用P0口存取8位数据,P2口仅用于地址输出。 </P>
<P><STRONG>       1.2 IDE硬盘总线时序 </STRONG></P>
<P>       下面以IDE硬盘为例来分析16位总线时序,图2是IDE硬盘的接口示意图[1],只标出了与总线有关的信号线:DIOR/DIOW,读/写;DCS0/DCS1,片选;DD0-DD15,16位数据线;DA0-DA2,3位地址线。 </P><IMG style="WIDTH: 200px; HEIGHT: 324px" height=324 alt=ide硬盘接口 hspace=0 src="http://www.dzdqw.com/jishu/UploadFiles_9637/200610/20061010225417525.jpg" width=200 border=0>
<P>       IDE硬盘是典型的16位总线设备。IDE接口有两个片选信号,DCS1用来寻址控制寄存器。默认状态下即可对IDE硬盘进行存取操作,故一般把该信号线直接连到高电平而只使用DCS0。其时序如图3所示。 </P><IMG style="WIDTH: 322px; HEIGHT: 169px" height=169 alt=ide硬盘读/写时序 hspace=0 src="http://www.dzdqw.com/jishu/UploadFiles_9637/200610/20061010225417489.jpg" width=322 border=0>
<P>       读/写周期开始时DIOR和DIOW均处于无效状态,DA0-DA2连接到主机(在这里为单片机)的地址输出。在收到读请求(DIOR使能)后把数据送至数据线上,主机利用DIOR的上升沿锁存该数据;之后,硬盘控制器延时后释放数据线,在接收写请求时(DIOW使能),则让数据线处于三态(tri-state),等待主机输出数据,最后在DIOW的上升沿把数据写入硬盘控制器,在DIOW上升沿之前,主机需把数据准备好。 </P>
<P>       对比图1和图3可知,总线时序基本一致,只是在数据线上传输的数据位数不同,但是,主机一条指令完成一个读/写周期,从外部设备到主机的16位数据在指令完成后不再有效;而从主机到外部设备的数据必须在指令完成前准备好,因而要把8位总线扩展成16位总线,必须要同时考虑读/写时数据的锁存问题。 </P>
<P><STRONG>       2 16位总线扩展的实现 </STRONG></P>
<P>       根据前面对总线时序的分析,采用如图4所示的方法对8位总线进行扩展,使其满足16位总线读/写。主要由以下两部分组成:1片GAL16V8(U5),实现片选信号的译码和其他信号的编码;2片74HC573(U3、U4),实现高8位数据锁存。CS1-CS4是A9-A15的译码输出,可连接4个外部设备。地址范围根据具体设备来设定,假设CS2上连接有16位总线设备: </P>
相关资讯