Verilog parameter的用法

news2024/11/18 21:43:07

parameter简介

parameter”是Verilog HDL中的一个关键字,代表着参数型常量,即用parameter来定义一个标识符代表一个常量,这样可以提高程序的可读性与可维护性。

parameter应用场景

#(parameter number=500) 表示定义一个number是一个值为500的常量,在模块中用到这个定义的时候,用number代替就可以,便于程序的维护和升级。通常用来定义时间延迟和数据位宽,这里我们举个例子,已时间延时为例子。延时模块在我们程序设计中,经常用到,这里我们设计一个延时的IP。

parameter 应用实例介绍

应用实例:

module delay

#(parameter num_fir=5)

(

clk,reset,out

    );

 input clk;

 input reset;

 output out;

 reg out;

 reg [23:0] cnt_fir;

 reg [23:0] cnt_sec;

 parameter num_sec=4;

 always @ (posedge clk)

 if(reset==0)

 begin

 cnt_fir<=24'b0;

 cnt_sec<=24'b0;

 out<=0;

 end

 else if(cnt_fir==num_fir)

 begin

 cnt_sec<=cnt_sec+1;

 cnt_fir<=24'b0;

 end

 else if(cnt_sec==num_sec)

 begin

 cnt_sec<=24'b0;

 out<=1 ;

 end

 else

 cnt_fir<=cnt_fir+1;

endmodule

测试实例:

module test(  );

reg clk,reset;

wire out;

always #5 clk=~clk;

initial

begin

reset=0;

clk=0;

#20 reset=1;//设计时,仿真复位很关键,本案例中,本案例中要保持

#1000 $stop;

end

delay delay (.clk(clk),.reset(reset),.out(out));

endmodule

参数传递方案

结合上述示例,这里分别介绍三种在verilog中参数传递的方案,并在vivado中进行仿真,查看实际参数传递效果。先看案例初始状态的仿真结构,判断情况

09258703a2df48b59bf16761f797d43e.png

可以看出,不管定义在外部,还是定义在内部,参数均已生效。

下面通过修改测试例程,来体验参数传递,这里的测试例程,其实就相当于顶层文件,来调用底层文件。

方法一:例化过程中使用#(A)进行参数的传递。

module test( );

reg clk,reset;

wire out;

always #5 clk=~clk;

initial

begin

reset=0;

clk=0;

#20 reset=1;//设计时,仿真复位很关键,本案例中,本案例中要保持

#1000 $stop;

end

delay#(9,9) delay (.clk(clk),.reset(reset),.out(out));

endmodule

通过仿真发现,只有一个参数传递成功,这种方法不推荐,应该只能传递一个参数。

比较推荐方法2,参数传递一目了然。

方法二:

在例化模块名前使用#(.(参数1),.(参数2))

module test(    );

reg clk,reset;

wire out;

always #5 clk=~clk;

initial

begin

reset=0;

clk=0;

#20 reset=1;//设计时,仿真复位很关键,本案例中,本案例中要保持

#1000 $stop;

end

delay#(.num_fir(9),.num_sec(1))  delay (.clk(clk),.reset(reset),.out(out));

endmodule

10336f5ed1fc41eeab6f1c290e90ae64.png

方法三:

使用defparam,进行参数更改,这种方法适合在不通的模块,调用多次。多层次调用时,运用。

04c755f351e94766a3f587e15ccdb445.png

module test(   );

reg clk,reset;

wire out;

always #5 clk=~clk;

initial

begin

reset=0;

clk=0;

#20 reset=1;//设计时,仿真复位很关键,本案例中,本案例中要保持

#1000 $stop;

end

delay  delay (.clk(clk),.reset(reset),.out(out));

defparam delay.num_fir=5;

defparam delay.num_sec=5;

endmodule

以上就是三种办法进行的参数

总结:

本文通过学习分享parameter的各类参数细节,并根据实际的例子,分享了一些学习心得。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/726812.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

零代码开发平台免费,未来企业数字化转型常用工具

什么是零代码开发平台 零代码开发平台指的是一种软件开发工具&#xff0c;能够使开发人员在不编写代码的情况下构建应用程序或快速应用程序。它们一般是通过拖放的方式创建用户界面&#xff0c;配置业务逻辑&#xff0c;集成数据库等操作&#xff0c;节省开发周期和人力成本。…

安森美-深力科NC7SV08P5X能成为极高速、高驱动和低功耗应用的理想选择吗?

描述&#xff1a; 关于安森美-深力科NC7SV08P5X是飞兆超低功率 (ULP-A) TinyLogic 系列的一个 2 输入“与”门。 ULP-A 是要求极高速、高驱动和低功耗应用的理想选择。 用于宽低电压工作范围&#xff08;0.9 V 到 3.6 V VCC&#xff09;&#xff0c;适合驱动和速度要求高于 Ti…

需求分析的概念和原则

概念和原则 需求分析是指在软件开发和项目管理中&#xff0c;通过收集、理解、分析和记录用户和系统对系统或产品的需求&#xff0c;以确定其详细的特征和功能。它是一个关键的过程&#xff0c;旨在确保项目成功地满足用户的需求和期望。 在进行需求分析时&#xff0c;有一些…

常用数据聚类算法总结记录

本文的主要目的是总结记录日常学习工作中常用到的一些数据聚类算法&#xff0c;对其原理简单总结记录&#xff0c;同时分析对应的优缺点&#xff0c;以后需要的时候可以直接翻看&#xff0c;避免每次都要查询浪费时间&#xff0c;欢迎补充。 聚类算法是一种无监督学习的方法&am…

Docker安装 Nginx

相关文章&#xff1a; Docker容器之间的连接和通信(四)_做测试的喵酱的博客-CSDN博客 一、 Docker安装 Nginx 1.1、查看可用的 Nginx 版本 docker search nginx 1.2、安装最新 Nginx 版本 docker pull nginx:latest 1.3 查看本地镜像 docker images 1.4 运行容器 运行…

架构-新教材补充内容

系统工程 两分&#xff0c;需要计算的选择题 #mermaid-svg-opoH5AvD05BTqVHp {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-opoH5AvD05BTqVHp .error-icon{fill:#552222;}#mermaid-svg-opoH5AvD05BTqVHp .error-te…

关系型数据库全栈入选唯一厂商!GBASE南大通用的“可信”时刻

作为国产数据库的领军企业&#xff0c;业界公认的“可信”力量&#xff0c;GBASE南大通用深度参与大会&#xff0c;与各协会领导、学术大咖、技术领军共同论道我国数据库自立自强之路。 现在让我们一起盘点为期两天的议程中GBASE南大通用的“高光”时刻&#xff0c;且看GBASE是…

7.7工作总结

一、前言&#xff1a;这周三领导让我修改一个入库接口&#xff0c;需要加入三个参数&#xff0c;我直接把相应的数据加进去了忽略了这个参数是放在一个List中的同时还需要转成json的形式。因此我又修改了一遍。 二、错误的形式&#xff1a; 在接口文档中是这样的形式&#xff…

最新版Flink CDC MySQL同步Elasticsearch(一)

1.环境准备 首先我们要基于Flink CDC MySQL同步MySQL的环境基础上&#xff08;flink-1.17.1、Java8、MySQL8&#xff09;搭建Elasticsearch7-17-10和Kibana 7.17.10。笔者已经搭建好环境&#xff0c;这里不做具体演示了&#xff0c;如果需要Es的搭建教程情况笔者其他博客 注意…

【案例教程】GPT模型支持下的Python-GEE遥感云大数据分析、管理与可视化技术及多领域案例实践实践技术

随着航空、航天、近地空间等多个遥感平台的不断发展&#xff0c;近年来遥感技术突飞猛进。由此&#xff0c;遥感数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量也大幅增长&#xff0c;使其越来越具有大数据特征。对于相关研究而言&#xff0c;遥感大数据的出现为其提…

海格里斯HEGERLS智能四向穿梭车系统是如何赋能企业降本增效的?

随着人工智能和物联网等新技术的更新迭代&#xff0c;物流行业数字化&#xff0c;智能仓储已成趋势。我国智能仓储在“互联网”战略的带动下快速发展&#xff0c;与大数据、云计算等新一代互联网技术深度融合&#xff0c;智能仓储整个行业向着运行高效、便捷、低成本的方向迈进…

Vision Transformer推理中线性-角度注意转换压缩自注意

文章目录 Castling-ViT: Compressing Self-Attention via Switching Towards Linear-Angular Attention at Vision Transformer Inference摘要本文方法实验结果 Castling-ViT: Compressing Self-Attention via Switching Towards Linear-Angular Attention at Vision Transform…

Angular 调试工具(Augury)

目录 1、简介 2、检验代码 3、Angury 本地构建和安装 3.1 添加到Chrome 浏览器&#xff1a; 3.2 添加到Firefox浏览器 4、项目中对应的Npm脚本 5、Augury 三大主要功能 5.1 组件树&#xff08;Component Tree&#xff09; 5.1.1 Component Tree 5.2 路由树&#xff0…

HarmonyOS学习路之开发篇—数据管理(对象关系映射数据库)

HarmonyOS对象关系映射&#xff08;Object Relational Mapping&#xff0c;ORM&#xff09;数据库是一款基于SQLite的数据库框架&#xff0c;屏蔽了底层SQLite数据库的SQL操作&#xff0c;针对实体和关系提供了增删改查等一系列的面向对象接口。应用开发者不必再去编写复杂的SQ…

港联证券|如何区分大盘股和小盘股?

1、依据个股的市值来区别。一般来说&#xff0c;大盘股&#xff1a;流转市值在500亿及以上&#xff0c;小盘股&#xff1a;流转市值一般在50亿及以下&#xff0c;市值在二者之间的被称为中盘股。 2、依据流转股本区别。一般来说&#xff0c;大盘股&#xff1a;流转股本大于5亿&…

mysql重点复习

1.MySQL如何对用户smart授权访问&#xff0c;密码为123456。 2.授权用户tom可以在网络中的192.168.4.254主机登录&#xff0c;仅对对userdb库下的user表有查看记录、更新name字段的权限 &#xff0c; 登录密码userweb888。 GRANT SELECT,UPDATE(name) ON userdb.user TO tom192…

零拷贝小结

零拷贝&#xff08;Zero-copy&#xff09;是一种优化技术&#xff0c;用于减少数据传输过程中的拷贝操作&#xff0c;从而提高系统性能和效率。在传统的数据传输中&#xff0c;涉及多个缓冲区之间的数据拷贝操作&#xff08;例如从磁盘到内存的拷贝、内存到网络缓冲区的拷贝等&…

gitlab ci/cd+harbor+k8s实现一键部署(python项目)

大致架构&#xff1a; gitlab变量 使用 kaniko 构建 Docker 镜像 .gitlab-ci.yml stages:- test- build- deployvariables:DOCKERFILE: "Dockerfile2"CONTAINER_IMAGE: "archeros/workspace/platform"GIT_SSL_NO_VERIFY: "true"before_script…

canvas.js、node-canvas的坑

一、依赖下载后半天没 install 完&#xff0c;最后还报错&#xff0c; \node_modules\canvas: Command failed. Exit code: 1 Command: node-pre-gyp install --fallback-to-build Arguments: 解决方法&#xff1a;官方&#xff1a; Installation: Windows Automattic/node-ca…

ArcGis如何通过Python进行插件开发?

文章目录 0.引言1.准备Python加载项工具2.创建一个加载项工具3.编写代码4.生成安装文件5.安装和调出加载项6.使用加载项 0.引言 ArcGIS 插件&#xff08;Add-ins&#xff09;可以让用户更加容易的自定义和扩展ArcGIS Desktop应用程序&#xff0c;它创建一系列自定义工具提供了一…