搜索
bottom↓
回复: 6

马老师教材之5.5.2外部扩展并行I/O接口设计

[复制链接]

出0入0汤圆

发表于 2008-6-2 22:30:45 | 显示全部楼层 |阅读模式
马老师的教材《高档8位单片机ATmega128原理与开发应用指南(上)》之5.5.2节外部扩展并行I/O接口设计中使用的扩展方法(利用74HC373扩展输入口,同理也可以扩展输出口)我在使用51单片机时就使用过,现在使用ATmega128也扩展过,是一种有效、快速、低成本的扩展方法,我非常喜欢使用这种方式!
不过今天对这种扩展时序又深入思考了一下,突有以前不曾想过的疑问,提出与大家探讨!

    先简要说明扩展方法:充分利用总线时序,地址线进行译码选择373(译码线接373之OC引脚PIN1),然后利用ALE的高电平使能LE(即教材中的C引脚PIN11),使输入数据出现在373的Q端口,在ALE的低电平时数据锁存在Q端口,总线进行数据读取。

    现在我突然想到存在的问题是在总线时序的T2周期(参考教材或者128的PDF的外部扩展存储器操作时序图),地址已经输出,373被选通,ALE处于高电平状态,此时373已经完全处于工作状态,即外部输入信号已经能够直接反映在Q端口即当前数据总线上,而在T2周期MCU的PA口是输出状态,即输出低8位地址数据,此时就存在的问题是在当前总线上有两个输出(373的Q端口和MCU的PA端口)同时有效,势必会有冲突或者说短路(CMOS输出,如果一个端口输出高电平,另一个相连端口输出低电平,相当于上下两个MOS同时导通,这种情况是不合适的),虽然时间比较短暂(8M晶振,约125ns),但此种状态是存在的,如果这种操作很频繁,不知长期工作对MCU有什么影响?或者有没有更好的改进方式,使其更加完善一些?我也在思考改进,但不知道是不是画蛇添足!

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2008-6-3 20:20:43 | 显示全部楼层
今天将新做的PCB中这种扩展做了改进,在373的Q端口和PA端口之间串了一个电阻,具体阻值调试再定吧,我想这样可以解决上面出现的问题,保护芯片端口!
    另外将373的选通信号增加了使用MCU的RD信号触发的电路,如果调试成功以后就不使用ALE了,因为使用RD的地址选择性更好,抗干扰更好(个人认为),而且同一个片选地址可以同时扩展输入和输出IO口(两种373的处理不一样)!

出0入0汤圆

发表于 2008-6-3 23:00:52 | 显示全部楼层
这是一个非常好的问题.而且在这个电路中确实存在你说的现象.

书中的电路是一个"简单"的扩展.所谓简单,就是希望少用外围的器件.但的确存在PA的输出和373的输出冲突的问题,尽管此时两面输出的数据是不使用的,可是存在将PA口或373的口烧毁的隐患.

改善的办法是在PA口上串入8个1K-2K的电阻.

使用RD控制373的选通信号不妥,因为ALE锁存先于RD,如果373未被选通,那么锁存的数据没有意义.

实际上,正规方式的扩展输入输出并口是使用373(输出)和244/245(输入),地址译码输出是需要经过RD和WR的控制,分别与373的锁存(373的片选接地)和244的片选连接,这样需要多使用一个或门器件.

谢谢你的问题.

出0入0汤圆

发表于 2008-6-3 23:04:21 | 显示全部楼层
165+595不是很简单

出0入0汤圆

发表于 2008-6-3 23:17:12 | 显示全部楼层
不同的方法,要根据实际情况选择的.

在我以M16为主的书中,介绍的就是165+595.因为M16外部没有并行总线接口.

而M128外部有并行总线接口,利用该接口扩展,软件编写方便,速度快,至少对于学习过51的人比较习惯.缺点是,PCB上的布线多.

两种方法的对比,在我的教程中有讨论的.两种方法都应该掌握的.

出0入0汤圆

 楼主| 发表于 2008-6-4 22:02:07 | 显示全部楼层
谢谢马老师!

    “使用RD控制373的选通信号不妥,因为ALE锁存先于RD,如果373未被选通,那么锁存的数据没有意义”
当前前提是373片选是通过地址译码(我使用的是138低电平信号使能)选通的,否则输出为高阻态的,我的意思是说在373片选有效的情况下使用RD进行信号选通应该更好些!这样抗干扰性更强些!因为ALE的信号在MCU访问 内外 部RAM时包括读写时都是有效的,而RD在指定的外部扩展空间读时序才有效!
    另外马老师的正规扩展输入输出方式更加有效!我的输出采取的是373,其中片选时钟接地,选通使用的是138产生的片选(低电平有效)和WR信号 或非 后的信号!输入如果按照马老师所说我想就应该是采用138产生的CS(低电平有效)和RD信号相 或 后进行选通244,这样就可以避免前面的总线输出冲突的问题了,是吗?

出0入0汤圆

发表于 2008-6-4 22:53:33 | 显示全部楼层
1.你是指使用RD取反作为373的锁存信号吗?这样T1,T2期间还是存在冲突的问题,还要增加一个器件.最好你有个图.

2.正规输入输出的扩展方法不是我的,很多书上都有,看看8086的微机原理书.
输出采用373,其中片选始终接地,选通(正确叫锁存)使用的是138产生的片选(低电平有效)和WR信号 或非 后的信号!输入采用138产生的CS(低电平有效)和RD信号相 或 后进行选通244,这样就肯定避免总线输出冲突的问题了.
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 04:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表