module InoutConnect(
.X1(internal),
.X2(internal)
);
parameter width = 1;
inout [ width - 1 : 0 ] internal;
endmodule // InoutConnect
在上面的代码中使用了什么格式, 我知道虽然实例化模块.x1用于匹配变量名称,但模块定义如何。 这里是什么意思?这个模块的目的是什么?
module InoutConnect(
.X1(internal),
.X2(internal)
);
parameter width = 1;
inout [ width - 1 : 0 ] internal;
endmodule // InoutConnect
在上面的代码中使用了什么格式, 我知道虽然实例化模块.x1用于匹配变量名称,但模块定义如何。 这里是什么意思?这个模块的目的是什么?
它被称为explicit port declaration
,这意味着外部世界就会知道其明确的名称该端口,X1和X2在你的情况下,虽然在内部相同的端口会被称为你的情况内部。
所以,在你的榜样,你两个端口连接到同一个内部变量(看起来对我不好:))虽然,这是可能的用途之一,特别是如果你需要相同的输出端口。所以
module m(
output .arr1(array[2:0]),
output .arr2(array[7:3]),
input logic [7:0] input_array
)
logic [7:0] array;
...
always_ff @(posedge clk)
array <= input_array;
...
endmodule
,上面可以在内部使用数组作为整体,但它会在外部世界不同的表示:另一个例子是重新映射的内部结构或阵列到多个potrts。
有关更多信息,请参阅23.2.2.2 ANSI style list of port declarations
。
如果我想用魔杖连接输入信号但不INOUT,可以将其以类似的方式来完成或其他方式? – user2984602
'inout'是港口的**方向**。 “wand”是具有用于乘法驱动状态的特定分辨率算法的网络的**类型**。所以,你不能用椅子替换苹果。默认情况下,端口的类型是** wire **(这是另一种类型)。 – Serge
InoutConnect模块用于在两个不同的信号名称之间创建一个别名。例如
wire [7:0] color;
wire [7:0] colour;
InoutConnect #7 a1(color,colour);
现在,颜色和颜色是同一信号的两个名称。
SystemVerilog添加alias
构造来做同样的事情,而无需创建一个单独的模块。
如果我想使用魔杖连接输入信号,但不能输入,是否可以用类似的方式或其他方式完成? – user2984602
不确定你的意思。可能需要一个单独的问题。 –
请删除VHDL标签 –
阅读免费手册:IEEE标准1800年至2012年,第23条模块和层次 – toolic