Chinaunix首页 | 论坛 | 博客
  • 博客访问: 900130
  • 博文数量: 61
  • 博客积分: 2315
  • 博客等级: 大尉
  • 技术积分: 2560
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-22 18:00
文章分类

全部博文(61)

文章存档

2015年(3)

2014年(3)

2013年(9)

2012年(23)

2011年(23)

分类: 嵌入式

2011-12-11 11:32:56

  1. 原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。
  2. http://blog.chinaunix.net/space.php?uid=26470037&do=blog&id=3039135

本文的内容本来是打算放在我刚出版的《专业嵌入式软件开发 — 全面走向高质高效编程》一书中的。但后来由于将该书定位为偏向软件,所以将本文所在的章全部删除了,打算将之放在我另一本偏向硬件的书中。最近,由于网友在我的博客空间中问起如何通过3/8译码器扩展地址空间,所以在此将之整理与大家分享。

假设我们希望实现图1所示的采用3/8译码器将处理器的CS1片选信号扩展成两个以分别控制以太网芯片和Flash芯片。为了方便解释,进一步假设CS1的片选空间是0xFFE00000~0xFFFFFFFF。我们希望经过片选扩展以后,Flash位于0xFFE00000~0xFFEFFFFF地址空间,而以太网芯片位于0xFFF00000~0xFFFFFFFF地址空间。
图1

先来说一说3/8译码器的功能是什么,从名字来看就是将3位比特转换为8(2的3次方)根独立的信号线。3/8译码器有三根输入信号线(图1中74LS138的A、B和C)和八根输出信号线(Y0~Y7)。注意:图1中如在管脚名称上加了一条横线则表示该信号是低电平有效,否则是高电平有效。

图 2是74LS138译码器的真值表,其表达了输入与输出之间的对应关系,表中的“X”表示信号是高阻态。从图中可以看出,这一3/8译码器的作用,其实就是将CBA的二进制数值分别转换为Y0~Y7中一根线的低电平信号。从图 1中的原理图来看,CS1与G1是相连的,即只有当CS1为高电平有效时,Y0~Y7才会有低电平信号输出。另外,Y6和Y7是被用作片选信号扩展的两根管脚,当Y6为低电平时,CBA三根信号线的电平组合分别是110,而Y7为低电平时CBA的组合变为了111。如何将CBA三根信号线与处理的地址线连接,以实现片选信号扩展呢?
图2

图 3列出了Flash和以太网芯片各自开始地址所对应的比特位,其中只列出了四个比特。可以看出,A20地址线将能决定是选择哪一块芯片。如果将A22与74LS138的C相连、A21与74LS138的B相连以及A20与74LS138的A相连,则完全可以实现将Y6和Y7作为两个片选信号,且各片选信号的地址空间也是我们所希望的。
 图3

本文出自 “李云” 博客,请务必保留此出处 http://blog.chinaunix.net/space.php?uid=26470037&do=blog&id=3039135
阅读(3372) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~