Betrachten Sie den folgenden Code.Verwenden von Inouts mit dem Stift
module TriState
(
// Outputs
O,
// Inouts
IO,
// Inputs
OE, I
);
parameter width = 1;
input OE;
input [width-1:0] I;
output [width-1:0] O;
inout [width-1:0] IO;
assign IO = (OE) ? I : { width { 1'b1 } };
assign O = IO;
endmodule // TriState
module m1(.a(inout line_P1$IO));
reg val_P1 ;
wire line_P1$IO,line_P1$O;
TriState #(.width(32'd1)) line_SCL(.I(val_P1),
.OE(1),
.O(line_P1$O),
.IO(line_P1$IO));
always @(*) begin
val_P1 <= 1;
end
endmodule //m1
module m2(.a(inout line_P1$IO));
reg val_P1 ;
wire line_P1$IO,line_P1$O;
TriState #(.width(32'd1)) line_SCL(.I(val_P1),
.OE(1),
.O(line_P1$O),
.IO(line_P1$IO));
always @(*) begin
val_P1 <= 0;
end
endmodule //m2
module top();
wand P1;
assign P1 = 1;
m1 ins1(.a(P1));
m2 ins2(.a(P1));
endmodule //top
Es tut mir leid, ich weiß, das ist viel Code ist aber ein Testszenario zu bauen ich von kleineren zu denken, als diese nicht in der Lage war. Das Problem ist jetzt, wenn der obige Code simuliert wird,
Der Wert der Variablen die folgenden In m1,
Tri-State, I = 1, wie erwartet.
. , IO = 0, unerwartet als IO = I?
. , O = 0; // = IO wie erwartet
. , OE = 1 // offensichtlich
In m2,
Tri-State, I = 0, wie erwartet.
. , IO = 0, erwartet als IO = I
. , O = 0; // = IO wie erwartet
. , OE = 1 // offensichtlich
Jetzt verstehe ich nicht, wie der Wert von IO in m1 0 ist? Ist es, weil ich Zauberstab als Argument bin vorbei, zu InOut ist, dass inout einen Stab Typ machen, wenn das so ist es die folgende Frage aufwirft,
A link to my another question on stackoverflow
ich die (Frage in Verbindung) zuerst gefragt, aber es Es gab einige Klarstellungen, die hinzugefügt werden mussten, also fügte ich den Klarstellungsteil in Bezug auf eine neue Frage hinzu. Grundsätzlich möchte ich wissen, wie es ist, dass inout verhält sich wie Zauberstab, und wenn ja, wie mache ich inout wie Zauberstab ohne ein anderes Top-Modul zu instanziieren.
Ausschneiden und Einfügen Fehler? Dieser Code wird nicht kompiliert (siehe die Zeile, in der m1 definiert ist) und nichts wird als Zauberstab deklariert. –