如何共享数据总线?

[复制链接]
2329|3
 楼主| 情场探花 发表于 2012-5-9 07:04 | 显示全部楼层 |阅读模式
本帖最后由 情场探花 于 2012-5-9 07:07 编辑

请看附图,FPGA有16个脚作为数据总线。FPGA内部有一个FIFO BUFFER 和一个计数器。有时要读写FIFO,有时要读计数器,都是通过数据总线。
而且,读计数器是一个进程,读写FIFO是另一个进程。
如果我分别在两个进程里给数据总线赋值,显然不允许。
请问该怎么办?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
drentsi 发表于 2012-5-10 13:31 | 显示全部楼层
这个不是个问题吧
如果你有一根地址线作为选择控制就可以了。
 楼主| 情场探花 发表于 2012-5-10 18:08 | 显示全部楼层
请问这样写可以吗:
bus <= fifoOut OR counterOut;
然后分别在两个进程里把 fifoOut 或者 counterOut 设为Z,这样它就失效了,另外一个不是Z的就可以只有输出了。

顺便问一下,如果两个STD_LOGIC,其中一个是Z,那它们逻辑运算的结果是什么呢?
drentsi 发表于 2012-5-10 21:57 | 显示全部楼层
不可以的,这样会造成内部三态。
假如你有一根地址线s来选择,可以这么写
bus<=fifoout when s='1' else counterout;
那么你外面的CPU读地址1的时候就读fifo,读地址0的时候就读counter
如果你没有这么一个地址线,那就要做些处理了,比如:
定义个锁存器s,让外面的cpu每次读之前写个数,
比如写1就将s置1,写0就将s清0,然后再按照前面的方式读就行了

评分

参与人数 1威望 +2 收起 理由
GoldSunMonkey + 2 谢谢分享~

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

472

主题

1259

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部