verilog的module中怎样循环调用另外几个module?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog的module中怎样循环调用另外几个module?相关的知识,希望对你有一定的参考价值。

我现在再用verilog编写一个DES加密的程序,其中实现加密需要重复调用两个module,请问有什么方法在module里实现循环调用其他module吗?谢谢

module topmod();
...
submod1 u1(...); //这里就是调用子模块
submod2 u2(...);
endmodule

module submod1(...)
...
endmodule

module submod2(...)
...
endmodule

上述所有放主程序topmod.v里即可。子程序也可以拆分出去,分别命名为submod1.v, submod2.v。
参考技术A

模块和模块之间的调用,简单的认为就是模块之间端口的匹配连接,要调用两次,就直接例化两次调用的模块,并与当前模块进行接口匹配连接就行了


从事音频设备开发好多年——VX:xuquanfugui-2020


追问

是要重复调用很多次不止两次,请问有什么方法吗?

追答

这个估计没有什么好的办法,因为你多次调用也就是多次例化,同一个模块中例化名要不一样。如果你找到了这个多次调用的方法,还望帮哥们普及一下。(^o^)

参考技术B 模块之间调用不靠谱吧,反正我是没有用过,因为不同的模块之间是并行执行的,过程块才是顺序执行。你如果是想写出能像C函数一样可调用的,你可以试下把其它模块写成任务啊;任务(task)可以在always块中调用而达到循环调用, 参考技术C 试试状态机追问

能具体一点吗?

追答

简单点可以 例化一次,加上复位使能信号,每调用一次,使能复位一次

本回答被提问者采纳

VerilogHDL学习

No.1 Verilog HDL程序结构

  1. Verilog 描述硬件的基本设计单元是模块 module

  2. 复杂的电子电路构建主要是通过模块之间的相互连接调用来实现的,在Verilog中将模块包含在关键字 module endmodule之间。

  3. Verilog中的模块类似于C语言中的函数,它可以提供输入、输出端口,并且可以通过例化调用其他模块(就这点而言可以理解成C++中的类实例化对象)


No.2 Verilog的程序结构

端口定义 数据类型说明 逻辑功能定义
input wire assign
output ... parameter ... function ...

No.3 模块声明与模块端口定义

module <module_name>(port_name1,...port_namen);
    .
    .
    .
endmodule

例子:

module test(a,b,c,d,e,f,g,h);
    input[7:0] a;       //没有明确的说明,网络是无符号的
    input[7:0] b;
    input signed[7:0] c; 
    input signed[7:0] d;//明确的网络说明,网络是有符号的
    output [7:0] e;
    output [7:0] f;
    output signed[7:0] g;
    output signed[7:0] h;
    wire signed[7:0] b; //从网络声明中端口b继承了有符号的属性
    wire [7:0] c;       //网络c继承了来自端口的有符号属性
    reg [7:0] g;        //从寄存器声明中端口f继承了有符号的属性
    reg signed[7:0] f;  //寄存器类型的g继承了...的有符号属性
endmodule
2019.7.7.21.08
Crf.Kevin

以上是关于verilog的module中怎样循环调用另外几个module?的主要内容,如果未能解决你的问题,请参考以下文章

Verilog中,如何实现一个module调用另一个module中的reg变量?

verilog 初始化十进制数组

如何每小时调用一次函数?另外,我怎样才能循环这个?

verilog 模块端口说明

verilog中如何调用另一个module里面的task?include有用吗?我试了没成功,望高人解答

9.Verilog端口定义以及模块例化和调用