为什么可以';在Verilog中的过程块内实例化
我需要实例化一些模块,这些模块的需求会在过程块中弹出。但是我不允许在过程块内部实例化。我还应该在哪里实例化这些模块,以便在过程块中访问它们 我只需要1个实例化,所以我不使用generate语句。我只是使用…为什么可以';在Verilog中的过程块内实例化,verilog,Verilog,我需要实例化一些模块,这些模块的需求会在过程块中弹出。但是我不允许在过程块内部实例化。我还应该在哪里实例化这些模块,以便在过程块中访问它们 我只需要1个实例化,所以我不使用generate语句。我只是使用…Center data_cent(.clk(clk),.dummy_4(dummy_6))实例化它 但在检查语法时,会出现一个错误,说明“数据不是任务”。我想不出这个问题。如果有人能帮上忙,我会很高兴。您可以在模块内实例化它,但在任何过程块之外。如果要访问子实例的内部网络,可以使用层次说明符。
Center data_cent(.clk(clk),.dummy_4(dummy_6))实例化它代码>
但在检查语法时,会出现一个错误,说明“数据不是任务”。我想不出这个问题。如果有人能帮上忙,我会很高兴。您可以在模块内实例化它,但在任何过程块之外。如果要访问子实例的内部网络,可以使用层次说明符。例如,如果您的实例包含名为foo
的内部网络:
module top;
Center data_cent(.clk(clk),.dummy_4(dummy_6));
initial begin
$display(data_cent.foo);
end
endmodule
SystemVerilog还提供了绑定结构。根据您的描述,我可以想到两种可能性:
您可能正在编写通用代码,并且需要根据参数值进行实例化。如果是这种情况,可以使用generate If李>
您可能希望在运行时根据信号值进行实例化。在这种情况下,您是作为程序员而不是硬件设计师来思考的。实例化意味着添加硬件,而不能让信号值决定硬件是否存在。硬件就在那里或不在那里-除了FPGA,没有第三种选择,也没有那么简单。
我认为您需要的是在外部始终实例化模块,并发出您可以在内部始终修改的启用信号,以便在满足条件时使模块工作
这是用于合成还是模拟?请在你的问题中加入更多的代码,以便我们看到你正在尝试做什么。我在for循环中使用它一个接一个地传递1000个值,但它给出了相同的错误“数据不是任务”。我感到困惑。