陈鹤立
高阻态接口电路的应用
陈鹤立
(深圳电桥科技有限公司,广东 深圳 518000)
微机系统中,用总线扩展各类外设接口器件,是实现功能的一般模式,总线的设计对系统稳定运行具有重要意义,处理器一般需要通过总线连接多个外设,如何实现在某个器件发生故障时系统仍然可以正常运行,是提高系统可靠性、稳定性、安全性的主要课题.另外,硬件设计的单元化、模块化,对于提高系统的扩展性和维护性,具有实际意义.文章从单片机总线的典型工作模式入手,分析了电路高阻态接口的工作原理,设计了一种使用具有高阻态接口的器件74HC245来实现总线保护和扩展的方法,使部分器件发生故障、受干扰时不会影响系统总线的正常工作,还可使用高阻态接口来扩展外设.实践证明,对提高系统数据传输的稳定性具有较好效果,通过改进该电路可应用到不同处理器系统中.
单片机;总线;接口;高阻态;74HC245
以微处理器为核心的电路中,常需要扩展外设,处理器和外设之间信号传输的稳定性和可靠性,对系统的稳定运行具有决定性意义,常规的设计方式是将处理和外设之间同类信号线直接相连,形成数据、控制、指令等总线,来实现处理器对外设的访问[1,2],该模式简单易行,但存在以下缺陷:1)扩展负载较多的情况下驱动能力受限;2)总线上某个器件故障时可能会造成整个总线失效导致设备功能完全丧失;3)高速传输数据时可能由于总线干扰导致数据传输出错;4)难以实现数据冗余扩展设计;5)外部的输入、输出信号容易对内部总线造成干扰.为了提高硬件稳定性当前常用的抗干扰措施有:1)增加滤波电容;2)提高走线规范性;3)降低时钟频率;4)采用软件滤波,虽然有一定效果,但是针对不同电路板往往不甚理想.
从上述可见,处理器和外设直接相连的设计模式,仅能完成基本的功能,难以应用于可靠性要求较高的场合.设计者在实现基本功能的前提下,应将关注的重点从实现功能转向在实现功能的基础上如何提高电路系统的稳定性.本文结合接口电路的高阻状态,设计了一种简易的总线保护电路.
时序逻辑电路中除了高、低2个状态,还常用到高阻态,高阻态分为待机和工作2个模式,由外部使能信号切换,高阻态接口待机时不会影响其他电路,工作时具有较强的驱动能力.时序电路中同一个管脚往往需要分时作为输入和输出使用,因此需要有一个自动切换数据流向的器件,另一方面同一个管脚往往需要分时与多个外设交互,例如读操作时,多个外设传来的输入的信号需要分时加载到同一个输入管脚,而多路外设传来的信号往往电平不一致,输入信号叠加引起的干扰会导致逻辑混乱甚至损坏器件,因此需要有一个隔离的器件,在分时操作中选通某一路信号单独进行输入.
一个设计良好的总线系统,需要考虑管脚输入输出模式转换和外部信号隔离切换的问题,高阻态就可以用来解决上述问题.高阻态是高、低电平状态外的第三种电路模式,又称为第三态,高阻可以理解为待机时管脚处于开路状态,理想情况下,待机时该节点没有电流的输入输出,电压值由外部电路决定,该节点与电源或地之间的电阻为无穷大,工作时作为输入输出缓冲和驱动使用.
74HC245是具有8路并行、双向传输、三态接口、通断选择、驱动功能的高速CMOS芯片,兼容TTL逻辑,可以用于微处理器系统各类总线的扩展,图1和表1为74HC245的管脚图和真值表[3]:
DIR为传输方向选择端,高电平时信号由Ai端输入Bi端输出,低电平时方向相反.Ai、Bi均可作为输入或输出使用,传输中74HC245会对信号进行电流放大以提高驱动能力.OE(本文OE和EN通用)为使能端,为高时Ai与Bi间的信号传输将隔断,为低时Ai/Bi之间才可传输信号,假设Ai接单片机总线、Bi接外设总线,EN管脚可以切断/接通Ai/Bi之间的联系,起到了总线开关的作用,隔断(OE=1)时Ai/Bi输出状态为高阻,对各自总线没有影响、状态取决于外部电路.
图2为74HC245芯片中某一路内部原理图.
图2中EN是使能端(即OE),为0时,允许总线在Ai和Bi之间传输信号,DIR为传输方向控制端,用来控制总线数据的流向,表2为状态传输表.
表2中EN为使能,DIR选择输入、输出,Ai接单片机内部数据总线,Bi接外设总线,这两组信号在读/写模式下,交替作为输入/输出,第3、6列的U9C/8、U9D/11分别代表U9C的第8脚和U9D的第11脚,用来开放或关闭Ai、Bi的输出传输通道,第4、5列的U8A/3和U9A/3,分别用来驱动Ai信号输出的高、低电平,驱动器件是T1、T2,第7、8列的U8B/6和U9B/6,分别用来驱动Bi信号输出的高、低电平,驱动器件是T3、T4.
图1 74HC245的管脚图
表1 74HC245功能和状态表
图2 74HC245内部某一路原理图
表2 74HC245传输状态表
表2中第一行EN为1时,器件处于禁止状态,DIR信号无论0还是1,T1-T4场效应管都是处于断开,此时Ai、Bi相对VCC和GND之间都不导通、电阻很大,Ai、Bi的状态由外接的电路决定,同时,由于U9C的8脚、U9D的11脚均为0,锁住了U8A、U9A和U8B、U9B这两部分电路,使Ai、Bi外接电路不会对Bi、Ai造成影响,这样相当于隔离了Ai和Bi.
表2的第2、3行EN、DIR均为0,是读数据模式,此时U9C/8为0、U9D/11为1,锁住了U8A、U9A,T1、T2为关闭,开放了U8B、U9B(传输前U8B/4为1,U9B/5为0),数据从Bi传输到Ai,Bi为0时,U8B/6为1,T3关闭,U9B/6为1,T4导通,Ai接地输出0,Bi为1时,U8B/6为0,T3导通,U9B/6为0,T4关闭,Ai接VCC输出1.
表2的第4、5行EN为0、DIR为1,是写数据模式,此时U9C/8为1、U9D/11为0,锁住了U8B、U9B,T3、T4为关闭,开放了U8A、U9A(传输前U8A/1为1,U9A/2为0),数据从Ai传输到Bi,Ai为0时,U8A/3为1,T1关闭,U9A/3为1,T2导通,Bi接地输出0,Ai为1时,U8A/3为0,T1导通,U9A/3为0,T2关闭,Bi接VCC输出.
由上述分析可知,74HC245隔离功能是通过EN脚锁闭传输通道来控制,而驱动则是通过输出MOS管接通VCC、GND来实现,MOS管具有较大的电流驱动能力,可实现数据稳定地传输,在待机时(EN=1),所有MOS管均为断,因此Ai/Bi的电平状态由外部电路确定.
需要说明,图2仅讲述原理,实际使用中还应考虑到每路2个MOS管栅极冒险竞争情况,例如,EN为0的有效状态下,假设数据为Ai到Bi传输(DIR=1),某时刻Ai为高,得到U8A和U9A的3为低,T1导通、T2关闭,Bi输出为高,如果此时Ai从高变为低,U8A的1和U9A的2状态保持不变,Ai从高到低变化时造成U8A和U9A翻转,引发T1截止和T2导通,由于U8A传输到T1和U9A传输到T2的电路中,制造工艺不可能完全一致(U8A和U9A存在传输延迟的区别、T1和T2存在通断状态切换延时的区别),如果在T1导通、T2截止的转变过程中时,T2先导通而T1尚未截止,就可能造成T1和T2的漏极/源级同时导通、电源VCC通过T1、T2对地发生短路.因此,在EN有效时变动Ai就可能会造成冒险竞争的现象,简单的处理是在Ai变动时尽量先将EN禁止,即将T1和T2都设置为截止状态,准备好Ai信号后,再开放U8A和U9A,用软件来确保每次只有一个MOS管导通.
简单说明多片74HC245的高阻态接口,扩展总线连接多路外设,以图3为例,假设此时由3个Ai(A10、A20、A30)并联输入系统内部总线,Bi(B10、B20、B30)为各自独立的外部总线,如需要将“输入1”信号接入内部总线,先置EN1、EN2、EN3为均为1,再清EN1为0,使A10为工作状态,其传输模式为读(信号从B10到A10),由于A20、A30为高阻态,将不会对A10输入内部系统总线的数据信号发生影响,同时由于EN2、EN3为1,输入2和输入3信号无法接入内部总线,这样就实现了多路外设总线分时切换接入系统总线的扩展应用,此外经过74HC245的外设输入信号,被74HC245驱动,提高了进入总线后的抗干扰能力.
在图3系统电路设计时,如果需要依次读取1、2、3路输入信号,每次读取前程序应先使三路输入74HC245均处于禁止状态(每路EN为1),然后开放第一路输入信号,读取完成后,立即将第一路74HC245恢复到禁止状态,然后再依次读取其他输入信号,最后程序将将三路输入通路全部禁止.
图3 74HC245扩展多路输入
高阻态接口电路同样可以用于双向数据传输的扩展和保护,例如扩展多路存储器,通常情况下每个存储器的同类总线相互连接后统一接入处理器总线,为了保护总线不会因为某个存储器损坏而使其他外设无法传输数据,可以使每个处理器总线经过74HC245隔离后,再接入系统总线,这样在某个存储器损坏的情况下,可以将该器件隔离出去,保证其他存储器正常工作.
图4设计可用于实现系统冗余设计,用在可靠性需求较高的场所,为防止单一存储器失效,可将数据做3个备份,分别存储于上述三路存储器中,通过“2正常1故障”的判断原则,可以有一次元件失效容错的机会,一旦某一路存储器读出的数据与其他两路不同,则判断该路存储器可能故障,通过74HC245的隔离功能,将故障存储器隔离出去,不至于影响到其他两路存储器的正常工作,也可以使用两路相互隔离的存储器进行数据的热备份,当然,还可以用来扩展多路存储器.图4中任何一个存储器如果发生故障,由于采用了74HC245进行内、外部数据总线隔离,外部总线故障不会对内部总线造成影响,系统使用剩余的2个存储器仍可继续稳定运行.
图4 74HC245扩展双向总线
以89C52扩展非易失存储器29SF040为例,来说明74HC245作为具有高阻态接口的器件,在总线扩展中的作用.
图5 高阻态接口扩展存储器系统图
图5中U7为29SF040,是小扇区FLASH存储器,容量512K字节、4096个扇区,每扇区128字节,可以使用52单片机自带内部高128字节RAM进行读写操作,读操作采用字节为单位读取,写操作以扇区为单位,读-修改-写模式如下:先将需要修改的字节所在扇区128字节数据一次读出,暂存在单片机片内高128个字节RAM,然后对RAM内数据进行修改,最后一次性连续地将数据写回目标扇区,在使用22.1184MHz晶振时每写入一个字节时需要约10μs的延时,写完一个扇区后需进行10ms左右延时,写扇区前需进行扇区擦除,然后再依次写入用户数据,每写一个字节前,需要先写入一个写命令①SST公司(Silicon Storage Technology,Inc)技术手册.4Mbit Small-Sector Flash SST29SF040/SST29VF040.pdf:1-4..
图5中89C52输出数据、地址、控制总线,都采用双向缓冲器74HC245(U3-U6)进行隔离,地址和控制总线为单向传输,数据总线为双向传输,在读、写时DIR相应的为低和高状态,U4的传输方向信号DIR由读、写、片选、P1口线生成,选择逻辑输出的信号分两部分,一是控制处理器一侧的74HC245,另一部分是通过U6输出到存储器一侧,在U6待机时,输出CS为高阻态,其电平由外部上拉电阻R1上拉到高,因此29SF040处于禁止状态.处理器访问存储器时,通过选择逻辑先开放隔离地址、控制总线74HC245(U3、U4、U5),然后设置需要的P1口线信号,用总线读写指令MOVX完成对存储器的访问.
图6 高阻态接口扩展存储器原理图
图6为单片机扩展29SF040原理图,为简单说明,省去了地址线和控制线的隔离74HC245,只保留数据线的隔离74HC245,在实际设计中,需要加入另外3个74HC245隔离器,用作高、低8位地址、控制总线的隔离和驱动,对于地址、控制总线,每个74HC245的EN和DIR可以直接相连,存储器和单片机除了CE1信号外,其他总线均处于隔离状态,由74HC245连接单片机和存储器的总线,单片机通过总线进行其他操作时,不会对存储器有影响.图中U5、U6、U7组成传输方向选择电路,单片机从存储器读写数据前,先通过开通隔离高、低地址和控制信号的74HC245,然后在RD/WR同步下,选通U3数据传输方向,来完成读存储器的读写操作,表3为存储器读写状态表.
表3 存储器读写状态表
表3第1、2行总线处于待机状态,P1.3(CE1)作为缓冲器和存储器的片选信号,待机时为高,74HC245和29SF040都是禁止状态,同时利用U7B和U7C锁住了WR、RD,RD1和WR1均为高,不会触发单片机对存储器的误操作.
表3第3、4行,P1.3(CE1)为低,74HC245和29SF040处于允许状态,开放了U7B和U7C,执行MOVX指令后,WR、RD通过U5A、U6A、U5B、U7A生成数据传输方向信号245DIR,加载到U3的DIR方向选择端,在RD/WR信号有效时驱动245DIR动作,读时为低、写时为高,245DIR信号仅在单片机侧内部总线内有效,因此无需经过信号隔离74HC245来驱动.
通过74HC245对总线隔离和驱动,还可以扩展共享RAM,用于多处理器系统,如图7所示.为了防止主、从机竞争总线的使用权,本例采用以主机控制下主-从工作模式来介绍.框图分为4个部分,左侧U1为主机,右侧U12为从机,中间6264(U7)为共享存储器,下方U65、U66、U67和U68、U69、U70、U75作为主、从机连接信号使用.主、从机接到各自隔离驱动74HC245的Ai端的总线称为局部总线,每个74HC245的Bi端连接RAM的总线称为系统总线,下方主机和从机互连的称为信号总线,单片机内部WR、RD、P1.X等为内部控制总线.主、从机各自的局部总线经过本机74HC245驱动后,接入系统总线对RAM进行读写,主机写共享数据到RAM后由从机读取,这个方向称为下行,反之如果数据由从机经共享RAM中转后被主机读取则称为上行,数据传输是主、从机在信号总线的交互控制下分时进行,下面分3个步骤简介数据的下行流程(数据上行流程类似,本文略):
图7 多处理器扩展共享内存
第一步主机写下行数据到共享RAM,写入方式与扩展29SF040类似,在主机写入RAM时需要先屏蔽从机对RAM的控制,图中主机P1.6就是输出到从机总线的禁止信号,该信号(置高电平后)经过U67驱动,加载到从机一侧的三个或门(U69、U70、U75),锁住从机访问系统总线的74HC245(U32、U42、U52)的EN、RAM片选(P1.4)、数据方向(U71)等3个信号,接着主机P1.1清0开放U64,使主机局部总线连通到系统总线,然后主机使用MOVX指令,在方向电路控制下(U64输出读写方向信号),将下行数据写入RAM.
第二步启动从机读取下行数据,主机P1.1置1,切断主机总线和系统总线的连接(关闭U31、U41、U51),将P1.6清0,开放从机的局部总线和系统总线的通道(开放U69、U70、U75),主机P1.5清0,通知从机读取RAM中数据,从机运行中,通过查询P3.5状态来确认是否需要读取RAM中的下行数据,一旦从机P3.5为0,则从机总线在方向电路(U71、U75)的控制下,启动读取下行数据,将共享RAM中数据块读走,完成后从机清P1.2为0,通知主机读取完成.
第三步恢复主机对系统总线的控制,主机检测到从机发来的P1.2为0的信号后,置P1.6为1,切断从机总线访问系统总线的通路,重新获得系统总线控制,接着主机置P1.5为1,通知从机退出读取下行数据操作,从机检测到P3.5为1后立即退出.
上述过程中,从机响应主机采用的是查询模式,也可以将主机P1.5经驱动后接到从机P3.2(或P3.3)中断脚,让从机采用中断方式响应主机读取RAM的操作.采用同样方式主机还可扩展多个从机,如果处理器/外设选择使用16/32位器件,稍加修改上述原理依然适用.
在自动控制化方面,该模式可以用于需要快速查询外部设备运行参数的场合,如数控车床主机操作拖板行走中,可以采用该方式扩展轴步进电机、轴步进电机、轴绝对值旋转编码器、轴绝对值旋转编码器、显示屏等5个从机模块,主机通过共享RAM将需要行走的插补数据下载(下行)到轴、轴步进电机模块,启动运行后,通过读取和轴绝对值编旋转码器(上行)检测拖板实际位置,并下发给显示模块进行显示(下行),假设拖板走刀速度是3 mm/S,控制精度0.01 mm,因此将上述流程每个循环周期控制在3 ms以内,即可将控制精度控制在0.01 mm内.
[1] 李朝青.单片机原理及接口技术(第五版)[M].北京:北京航空航天大学出版社,2017:197-200.
[2] 李全利.单片机原理与接口技术(第三版)[M].北京:高等教育出版社,2020.
[3] Philips Semiconductors.74HC245/74HCT245 Octal bus tranceiver/3-state Product data sheet.pdf[C]// Rev. 03-31 January 2005 (Document number: 9397 750 14502):22.
Application of High Resistance Interface Circuit
CHEN Heli
()
In microcomputer system, using bus to expand memory and other peripheral interface devices is the main way to realize the system function. The stability of bus is of great significance to the stable operation of the system. Processors generally need to connect multiple peripherals at the same time through bus. How to realize the normal operation of the system when a device fails is the main subject to improve the reliability, stability and safety of the system. In addition, the unitization and modularization of hardware design also has practical significance in improving the expansibility and maintainability of the system. Starting with the typical working mode of single chip microcomputer bus, this paper analyzes the working principle of circuit high resistance interface, and designs a method to realize bus protection and expansion by using the device 74hc245 with high resistance interface, so that the normal operation of system bus will not be affected when some devices fail and are disturbed. In addition, high resistance interface can be used to expand peripherals. Through practical application, it is proved that it has a good effect on improving the stability of system data transmission. By improving the circuit, it can be applied to different processor systems.
single chip microcomputer; Bus; interface; high resistance state; 74HC245
TP368.1
A
1672-0318(2022)03-0037-07
10.13899/j.cnki.szptxb.2022.03.006
2021-09-27
陈鹤立,男,江苏南京人,学士,工程师,研究方向:建筑智能化.
(责任编辑:王璐)