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程序结构
Verilog 描述硬件的基本设计单元是模块 module
复杂的电子电路构建主要是通过模块之间的相互连接调用来实现的,在Verilog中将模块包含在关键字 module endmodule之间。
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变量?