请教,FPGA中提示 has multiple drivers due to the non-tri-state driver

2019-03-25 07:42发布

我在FPGA中自定义了一个FIFO,一个RAM,两者都与DSP的总线XD(16位)相连,错误提示如下:
Error: The pin "XD[0]" has multiple drivers due to the non-tri-state driver "dataram:ram_hinbc2|altsyncram:altsyncram_component|altsyncram_lra1:auto_generated|q_a[0]"
一直到XD[15],都有同样的提示。
FIFO与RAM的片选地址并不相同,请问该如何处理,谢谢。
如下:
newfifo fifo2_armtodsp(//FIFO COMPONET
        .aclr(FIFO2CLR),
        .data(DATA),
        .rdclk(XCLK_DSPOUT),
        .rdreq(FIFO2RD),
        .wrclk(FIFO_CLK),
        .wrreq(FIFO2WR),
        .q(XD),
        .rdusedw(FIFO2RDDW),
        .wrusedw(FIFO2WRDW)
        );
以上是FIFO的定义。
dataram ram_hinab1(
        .address(add_hin),
        .clken (cs_hinab1),
        .clock(XCLK_DSPOUT),
        .data(RD_CNT_HINAB1),
        .wren(wr_hin),
        .q(XD)
        );
以上是RAM的定义。
两个模块都有.q(XD)。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
wangsunhust
1楼-- · 2019-03-25 11:26
 精彩回答 2  元偷偷看……
白丁
2楼-- · 2019-03-25 12:28
多个驱动导致,都连到一块了
wangsunhust
3楼-- · 2019-03-25 13:27
谢谢。
原因我明白,就是不知道如何解决。
事实上,两种模块的片选地址在定义模块的读写时,是分开的,但FPGA编译时显然做不到智能判断,该如何定义呢?两个模块的输出都需要连接到数据总线上去。
wangsunhust
4楼-- · 2019-03-25 17:51
说到底,就是在FPGA中如何处理并口总线,特别是写操作时。
除了这两个模块外,FPGA还需要控制其他外设的访问时序,所以XD总线是大于2个的多个设备总线共用。
wangsunhust
5楼-- · 2019-03-25 18:38
XD数据总线定义成inout,有人说inout端口不能声明为reg型,事实上,我把XD在always语句中赋值时定义成reg型,编译并没有出错。
我想用这个办法来解决XD多驱动的问题。
谢谢指导。
白丁
6楼-- · 2019-03-25 22:43
你应该想到总线这种情况很多,可能有多个模块都需要访问同一块地址,所以这个问题肯定是可以解决的。
试试多选一

一周热门 更多>