我有一个6位输入值,在整个逻辑中我想确保没有X(它们是未初始化的值(?))。无论如何,我可以强迫它确保其中的任何X都是0而不是X.我和它有什么关系吗?
module m(
input [5:0] switches,
);
endmodule;
任何帮助都会很棒!
答案 0 :(得分:0)
您可以使用其他初始化信号对其进行屏蔽。
例如。假设您知道条件init_condition
之后,您的输入中不再有X:
logic init_mask;
always_ff @(posedge clk, negedge rstn)
if (!rstn) init_mask <= 1'b0;
else if (init_condition) init_mask <= 1'b1;
assign outp = {6{init_mask}} & switches;
当复位为低时,init_mask
FF设置为0
,同时将输出屏蔽为零。当init_condition
在时钟的位置被捕获为高时,init_mask
FF被设置为1
,并且您的switches
输入将通过未屏蔽的输出。{/ p >
答案 1 :(得分:0)
通常在硬件中,双触发器同步器可用于删除let
Source = List.Times(#time(0,0,0) , 1440, #duration(0,0,1,0)),
convertToTable = Table.FromList(Source, Splitter.SplitByNothing(), {"DayTime"}, null, ExtraValues.Error),
createTimeKey = Table.AddColumn(convertToTable, "TimeKey", each Time.ToText([DayTime], "HHmmss")),
hourIndex = Table.AddColumn(createTimeKey, "HourIndex", each Time.Hour([DayTime])),
minuteIndex = Table.AddColumn(hourIndex, "MinuteIndex", each Time.Minute([DayTime])),
setDataType = Table.TransformColumnTypes(minuteIndex,{{"DayTime", type time}, {"TimeKey", type text}, {"HourIndex", Int64.Type}, {"MinuteIndex", Int64.Type}})
in
setDataType
值。但是,只有在X
一段时间内,这才有效。
如果您有X
常数,那么我认为没有数字硬件可以将其转换为有效的X
或0
。
这是双触发器同步器的代码。
1
答案 2 :(得分:0)
这不是可合成的,但如果您尝试在测试平台中屏蔽X
,则可以使用case equality
运算符===
来检查{{ 1}}或X
。
Z