好像对wire类型条件下赋值只能用assign = ()?xxx:xxx方式,在使用的时候遇见两个问题
第一个问题是assign = ()?xxx:xxx好像只能在inout端口使用,不能在内部使用否则会提示:WARNING:Xst:2042 internal tristates
are replaced by logic (pull-up yes),但是内部的wire类型条件赋值怎么办呢?我尝试用一个reg类型变量进行中转(reg变量用if语句赋
值,然后reg赋值给wire),结果仍提示WARNING:Xst:2042 ,我的使用场景是一个内部模块的输出在一定条件下连接到另外模块,
第二个问题是wire类型变量怎么在多个条件下赋值,比如如下的例程:
inout[31:0] data;
reg[7:0] data_1;
reg[23:0] data_2;
assign data[7:0] = (condition_1)? data_1:8'bz; //条件1下给 data[7:0]赋值
assign data[31:8] = (condition_2)? data_2:8'bz; //条件2下给 data[31:8]赋值
综合的时候会提示WARNING:Xst:2040 - Unit top: 24 multi-source signals are replaced by logic (pull-up yes)
请问遇到这两种应用场景怎么办呢?
|