打印

如何共享数据总线?

[复制链接]
1466|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 情场探花 于 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 谢谢分享~
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

446

主题

1203

帖子

6

粉丝