使用单个组件进行故障处理的 2:1 MUX 编译错误

Posted

技术标签:

【中文标题】使用单个组件进行故障处理的 2:1 MUX 编译错误【英文标题】:Error in compiling of 2:1 MUX with fault handling using individual components 【发布时间】:2020-04-11 11:18:13 【问题描述】:

我正在使用 AND、OR、NOT 等进行故障处理来实现 2:1 MUX,但是代码中存在问题,我之前没有完成这个复杂的代码。我想制作一个模块,当我向任何节点注入故障时,我可以通过它看到输出的变化。我没有找到错误,所以任何人都可以帮助我。

我附上了在命令提示符下运行的输出代码和截图。

module Inverter (in, out, fault);
    input in, fault;
    output out;
    assign out = fault ? in : ~in;
endmodule

module LShapedWire(in, out, fault);
    input in, fault;
    output out;
assign out =  fault ? ~in : in;
endmodule

module Fanout(in, out1, out2, fault1 fault2);
    input in, fault1,fault2;
    output out1, out2;
    assign out1 = fault1 ? ~in : in;
    assign out2 = fault2 ? ~in : in;
endmodule

module And (input1 , input2 , out2, fault)
    input input1, input2, fault;
    output out2 , out1;
    assign out1 = input1 & input2;
    assign out2 = fault ? ~out1 : out1;
endmodule

module Or (input1 , input2 , out2, fault)
    input input1,input2 ,fault;
    output out1, out2;
    assign out1 = input1 | input2;
    assign out2 = fault ? ~out1 : out1;
endmodule

module mux:

reg A , B , Sel;
reg faultLS1 , faultLS2;
reg faultAND1 , faultAND2;
reg faultINV1;
reg faultOR1;
reg fault1FO1, fault2FO1;

wire outAND1 , outAND2;
wire outLS1 , outLS2;
wire outINV1;
wire outOR1;
wire out1FO1 , out2FO1;


initial
begin
A=0;B=0;Sel=0;
faultLS1 = 0; faultLS2 = 0;
faultAND1 = 0; faultAND2 = 0;
faultINV1 = 0;
faultOR1 = 0;
fault1FO1 = 0; fault2FO1 = 0;
#10 B=0;Sel=1;
#10 B=1;Sel=0;
#10 Sel=1;
#10 A=1;B=0;Sel=0; 
#10 B=0;Sel=1;
#10 B=1;Sel=0;
#10 Sel=1;
end

Fanout FO1(Sel, out1FO1 , out2FO1 , fault1FO1, fault2FO1);
LShapedWire LS1(out1FO1, outLS1, faultLS1);
And AND1(A , outLS1 , outAND1 , faultAND1);
Inverter INV1(out2FO1 , outINV1 , faultINV1);
And AND2(outINV1, B , outAND2, faultAND2);
LShapedWire LS2( outAND2 , outLS2 , faultLS2);
Or OR1(outAND1 , outLS2 ,outOR1 , faultOR1);

initial
begin
$monitor($time,,,,,Sel,,A,,B,,,,,,outOR1);
end
endmodule

【问题讨论】:

【参考方案1】:

fault1 fault2 缺少逗号。

out2 , out1;没有out1。

【讨论】:

我已经更正了逗号,是否可以在 AND 和 OR 模块中不添加 out1 并且仍然得到输出,因为我的最终输出是 out2。请帮助

以上是关于使用单个组件进行故障处理的 2:1 MUX 编译错误的主要内容,如果未能解决你的问题,请参考以下文章

VHDL组件多路复用器不在modelsim中返回值

没有处理程序的 Mux 中间件

小白学标准库之 mux

请教高手,MATLAB仿真,simulink中BUS CREATOR ,BUS SELECTOR,MUX,DEMUX,怎么使用?

Mux 处理程序未接收到从 curl post 传递的所有查询参数

MySQL主从同步报错故障处理记录