2017-03-15 2 views
0

ich einen bidirektionalen Datenbus verwenden möchten, in den Code der controller.HereWie bidirektionale Stift (inout) in einer Verilog Aufgabe behandeln

module controller (clk, data_out); 
// Port Declaration 
input clk; 
inout [7:0] data_out; 

reg  [7:0] a; 
reg  [7:0] b; 
wire [7:0] c; 

// data should write to data_out (data_out act as output) 

task write; 
input c; 
begin 

assign data_out = a; 
data_out <= c; 

end 
endtask 

// data should read from data_out (data_out act as input) 

task read; 
output b; 
begin 

assign data_out = 8'bz; 
b <= data_out; 

end 
endtask 

endmodule 

, wenn ich das kompilieren ich einen Fehler bin immer sagen

LHS in prozeduraler fortlaufender Zuweisung darf kein Netz sein: data_out.

es sagt, es ist ein Fehler in assign data_out = a; und assign data_out = 8'bz; Ich weiß, in immer oder Anfangsblock durchgeführt werden, sondern in einer Aufgabe zuweisen, sollte diese Blöcke verwendet nutzlos/geben eroor

Dann, wie wir ändern können Richtungen des Busses in der Seite eine Aufgabe?

Antwort

1

Sie sollten nicht in ersten und immer Blöcke zuweisen verwenden. Ich verstehe nicht, warum Sie es unbedingt in der Aufgabe haben wollen? Verwenden Sie einfach nur zuweisen. Der Assing-Wert für den bidirektionalen Port benötigt ein Flag, das angibt, welche Aktion - lesen oder schreiben - ausgeführt werden soll. Syntax ist wie:

assign bidir_port = [flag] ? a : 1'bz; 
+1

* kann nicht * sollte ersetzt werden mit *** sollte nicht ***. Eine prozedurale Zuweisung (Assign innerhalb von immer/initial) ist derzeit zulässig, obwohl sie als veraltet eingestuft ist. [IEEE1800-2012] (http://standards.ieee.org/getieee/1800/download/1800-2012.pdf) Anhang C.4.2 "Die prozeduralen Assign- und Deassign-Anweisungen können eine Quelle von Designfehlern sein und können ein Hindernis bei der Tool-Implementierung. Die prozeduralen Assign- und Deassign-Anweisungen bieten keine Möglichkeit, die nicht mit einer anderen Methode erledigt werden kann, die diese Probleme vermeidet. Daher befinden sich die Anweisungen processing assign und deassign in einer deprecation-Liste. " – Greg

+0

@Greg Danke, fertig :) – Laleh

Verwandte Themen