如何共享数据总线?
本帖最后由 情场探花 于 2012-5-9 07:07 编辑请看附图,FPGA有16个脚作为数据总线。FPGA内部有一个FIFO BUFFER 和一个计数器。有时要读写FIFO,有时要读计数器,都是通过数据总线。
而且,读计数器是一个进程,读写FIFO是另一个进程。
如果我分别在两个进程里给数据总线赋值,显然不允许。
请问该怎么办?
这个不是个问题吧
如果你有一根地址线作为选择控制就可以了。 请问这样写可以吗:
bus <= fifoOut OR counterOut;
然后分别在两个进程里把 fifoOut 或者 counterOut 设为Z,这样它就失效了,另外一个不是Z的就可以只有输出了。
顺便问一下,如果两个STD_LOGIC,其中一个是Z,那它们逻辑运算的结果是什么呢? 不可以的,这样会造成内部三态。
假如你有一根地址线s来选择,可以这么写
bus<=fifoout when s='1' else counterout;
那么你外面的CPU读地址1的时候就读fifo,读地址0的时候就读counter
如果你没有这么一个地址线,那就要做些处理了,比如:
定义个锁存器s,让外面的cpu每次读之前写个数,
比如写1就将s置1,写0就将s清0,然后再按照前面的方式读就行了
页:
[1]