Verilog HDL中模块参数传递的方法
文章目录
- 前言
- 一、参数传递
- 二、参数传递方法
- 1.方法一
- 2.方法二
- 3.方法三
- 总结
前言
“parameter”是Verilog HDL中的一个关键字,代表着参数型常量,即用parameter来定义一个标识符代表一个常量,这样可以提高程序的可读性与可维护性。
例如:
parameter max_time = 10; //定义参数max_time为常量10
参数型常量在Verilog HDL中通常用来定义时间延迟和数据位宽。
一、参数传递
一方面,对于一个Verilog HDL模块而言,在实际中可能时间常量需要设置一个相对较大的值,这样才能符合设计预期,但是如果我们在仿真中依旧采用这样一个较大的值会导致仿真时间过长,耽误开发速度,因此可以仿真平台中(Testbench)利用参数传递改变底层模块中所设置的时间参数。
另一方面,如果我们在另一个模块中例化我们已经有的模块,但是又希望更改其中的一些参数值,这时利用参数传递就能很便捷地、灵活地通过顶层对底层的参数值进行更改。
二、参数传递方法
1.方法一
方法一是通过在例化过程中使用#(A)进行参数的传递。
例如:
module T( //模块一,底层。a,b,c);......parameter Width = 6, mem_num = 3;......
endmodulemodule Y( //模块二,顶层。d,e,f);......T #(5,7) T_inst0( //这样的话Width=5,mem_num =7;.a(),.b(),.c());......
endmodule
2.方法二
方法二是顶层在在例化时,在例化模块名前使用#(.(参数1),.(参数2))
例如:
module T( //模块一,底层。a,b,c);......parameter Width = 6, mem_num = 3;......
endmodulemodule Y( //模块二,顶层。d,e,f);......T #(.Width(5) ,.mem_num(7)) T_inst0( //这样的话Width=5,mem_num =7;.a(),.b(),.c());......
endmodule
3.方法三
当在多个层次的模块中改变参数,就可以用”defparam“关键字。
例如:
module T( //模块一,底层。a,b,c);......parameter Width = 6, mem_num = 3;......
endmodulemodule Y( //模块二,顶层。d,e,f);......T T_inst0( .a(),.b(),.c());defparam T_inst0.Width = 5;defparam T_inst0.mem_num = 7;//这样的话Width=5,mem_num =7;......
endmodule
总结
以上就是在Verilog HDL程序设计中,相对都层次模块中的参数进行改变时可以用到的参数传递方法。
Verilog HDL中模块参数传递的方法相关推荐
- 浅谈verilog hdl中parameter的用法
浅谈verilog hdl中parameter的用法 parameter 1.parameter参数使用 事例1: 事例2: 事例3 事例4 2.defparam使用 事例5 3.parameter与 ...
- (64)Verilog HDL多模块重复例化
(64)Verilog HDL多模块重复例化 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL多模块重复例化 5)结语 1.2 FPGA简介 FPG ...
- (65)Verilog HDL多模块重复例化:generate for
(65)Verilog HDL多模块重复例化:generate for 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL多模块重复例化:genera ...
- Verilog HDL中位运算符、逻辑运算符和缩减运算符的区别
文章目录 前言 一.单目运算符.双目运算符和三目运算符 二.位运算符 三.逻辑运算符 四.缩减运算符 五.总结 前言 我们在学习和理解Verilog HDL中的一些运算符的意义时,可能会对一些运算符的 ...
- (137)FPGA面试题-Verilog HDL中function和task的区别(一)
1.1 FPGA面试题-Verilog HDL中function和task的区别(一) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-Verilog H ...
- (138)FPGA面试题-Verilog HDL中function和task的区别(二)
1.1 FPGA面试题-Verilog HDL中function和task的区别(二) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-Verilog H ...
- Verilog HDL中使用系统任务 $readmemh遇到问题及解决方法
在Verilog HDL程序中有两个系统任务$readmemb和$readmemh,用来从文件中读取数据到存贮器中.这两个系统任务可以在仿真的任何时刻被执行使用,其使用格式共有以下六种: 1) $re ...
- Verilog HDL中容易生成锁存器的两种情况
在Verilog HDL的程序设计中,有两种情况会生成锁存器. 第一种情况 在always块中使用if语句,但是没有else,这会导致当条件不成立时,没有其他语句可执行,使得被赋值的寄存器一直保持不变 ...
- Verilog HDL中阻塞语句和非阻塞语句的区别
在Verilog中有两种类型的赋值语句:阻塞赋值语句("=")和非阻塞赋值语句("<=").正确地使用这两种赋值语句对于Verilog的设计和仿真非常重要 ...
最新文章
- mybatis中缓存的设计与原理
- 深入理解HashMap和TreeMap的区别
- WinXP系统下安装SQL SERVER 2000
- Intellij idea利用Statistic插件统计项目代码行数
- QZone V8改版之“相册从模糊到清晰”
- uniac是哪一代计算机的代表,Saint-Uniac
- python开发游戏脚本_Python开发游戏开服脚本
- redis数据类型之hash入门
- 【渝粤教育】电大中专消费者心理学作业 题库
- PetShop 4.0学习笔记:消息队列MSMQ
- static成员变量的使用
- 天空机器人 联动存档_Wood R4 V1.38内核下载,自选存档大小,修正天空机器人美版等反烧录...
- 二、T100库存杂收、杂发、报废管理篇
- AtCoder Beginner Contest 164 E Two Currencies【最短路】
- PPT资料如何免费转成PDF
- 从虚拟光驱启动计算机,让你的ISO文件成为光盘运行起来虚拟光驱Daemon Tools教程 -电脑资料...
- Java中哈希集(HashSet)概念,实现以及操作
- Python简单几行代码实现黑客电影镜头屏幕画面
- 记一次将动态磁盘转为基本磁盘(无损)
- STM32F767串口通信------USART中断接收
热门文章
- Java:使用Fork / Join框架的Mergesort
- OSGI –模块化您的应用程序
- Sublime Text 如何设置组合快捷键
- 包包各部位名称图解_品尝烤肉必备!日本和牛各部位名称中日翻译对照 点餐更轻松...
- dubbo中log4j检查(开发环境中建议设置为false)
- css 深度选择器 ,CSS的coped私有作用域和深度选择器
- python selenium循环判断元素是否存在_检查Python Selenium是否存在元素
- python 形参_python中参数总结
- 【安卓开发 】Android初级开发(十)Android中app自动更新版本号比较
- linux wordpress伪静态,wordpress程序在win和Linux系统下的伪静态设置 - 张力博客