verilog中带有reg类型的inout

verilog中带有reg类型的inout,verilog,inout,Verilog,Inout,我已经将inout与c一起使用,但是对于程序赋值的LHS,c需要是reg类型的变量。有人能帮我解决这个问题吗 module multiedgeclk(input clk ,[7:0] a,b,d, inout [7:0] c, output reg [7:0]f); always @(posedge clk) c <= a + b; always @(negedge clk) f = c & d; endmodule 在verilog中,inout是端口的方向。wire或reg

我已经将inout与c一起使用,但是对于程序赋值的LHS,c需要是reg类型的变量。有人能帮我解决这个问题吗

module multiedgeclk(input clk ,[7:0] a,b,d, inout [7:0] c, output reg [7:0]f); 
always @(posedge clk)
c <= a + b;
always @(negedge clk)
f = c & d;
endmodule
在verilog中,inout是端口的方向。wire或reg是信号的类型。 如果您想要驱动一个双向端口,它应该声明为inout wire或inout,并使用enable信号驱动它 下面是一个双向端口的示例

module ABC( inout [7:0] c );
reg [7:0] c_out;
reg out_en;
assign c = out_en ? 8'hz : c_out; 
/* something here
... 
*/
endmodule
无法按程序分配inout端口。没有任何内容指示在端口上保留该值的时间。这是任何电线的问题。但是,电线有一个多连续驱动的力量机制,最高的力量获胜。因此,您可以使用连续赋值来选择性地驱动值,或通过驱动z值来关闭该值

导线c; 注册c_注册

分配c=c_reg

现在您可以按程序将c_reg指定给值或8'bz

看我的