Verilog中的parameter

这篇具有很好参考价值的文章主要介绍了Verilog中的parameter。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


1.module parameters

module parameters有parameter和localparam两种,它们所代表的值都可在编译时进行修改(参数传递),parameter可直接修改,localparam只能间接修改。

1.1 parameter

在模块中声明后,后续编译时还可以被重新声明的值所覆盖。
verilog修改parameter,Verilog语法知识分享,fpga开发
————————————————
【注】:
1)如果参数在声明时没有指定type和range,则默认为最后赋值给参数的type和range;
2)如果参数有指定range,但没有type,则它的符号默认为unsigned,并且range和符号都不会被后面的声明所覆盖;
3)如果参数有指定range,并且指定为有符号type,则它的range和符号都不会被后面的声明所覆盖;

1.2 localparam

localparam除了不能直接对其进行修改外,其他属性与parameter一样。可通过在声明时将parameter赋给localparam进行间接修改。状态机一般都使用localparam。

parameter       X = 3;
localparam      Y = X*2;

这样修改X就间接修改了localparam Y的值。

1.3 编译时parameter的参数传递

对parameter的修改有两种方式:
1)defparam声明
2)模块实例声明

————————————————
【注】:如果defparam声明和模块实例声明冲突了,则使用defparam声明的值。

1.3.1 defparam声明

defparam使用层次化名称对模块中的参数重新赋值,如下面的代码所示,
verilog修改parameter,Verilog语法知识分享,fpga开发
————————————————
【注】:如果有多个defparam声明一个parameter,则该parameter取文本(代码)中最后一个defparam声明的值。

1.3.2 模块实例声明

1)有序列表
列表的顺序必须严格按照模块中参数声明的顺序,且不可跳过任何一个参数。如下面代码,mod_mod中有三个参数,a = 4,b = 5,c = 6.

mod_mod #(1, 2, 3)        mod_a();      //三个参数都修改
mod_mod #(4, 2, 3)        mod_a();      //只修改b和c,但是也要将a的值声明
mod_mod #(1, 5, 3)        mod_a();      //只修改a和c,但是也要将b的值声明

2)参数名
声明时的参数名称需要和模块实例中的参数名称一致,不需要重新声明的参数可以缺省。
verilog修改parameter,Verilog语法知识分享,fpga开发

2. `define与parameter的区别

define作用于整个工程,而parameter只作用于本模块,一旦define指令被编译,则在整个编译过程中都有效,所以仿真时使用`define相对于parameter重声明占用更少的内存文章来源地址https://www.toymoban.com/news/detail-649169.html

到了这里,关于Verilog中的parameter的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java中的异常语法知识居然这么好玩!后悔没有早点学习

    学习异常后,发现异常的知识是多么的吸引人!不仅可以用来标记错误,还可以自己定义一个异常,用来实现自己想完成的业务逻辑,接下来一起去学习吧 目录 一、异常的概念及体系结构 1.异常的概念 2.异常的体系结构 3.异常的分类  二、怎么处理异常 1.防御式编程 2.异常

    2024年02月04日
    浏览(49)
  • 【Verilog】二、Verilog基础语法

    文章目录 前言 一、简单的Verilog知识 1.1、Verilog端口定义 1.2、Verilog的标识符 1.3、Verilog的逻辑值 1.4、Verilog的数字进制 1.5、Verilog的数据类型 1.5.1、reg型         1.5.2、wire型 1.5.3、参数类型 1.6、Verilog的运算符 1.6.1、算术运算符 1.6.2、关系运算符 1.6.3、逻辑运算符 1.6.4、条件

    2023年04月09日
    浏览(35)
  • PyTorch中的torch.nn.Parameter() 详解

    今天来聊一下PyTorch中的torch.nn.Parameter()这个函数,笔者第一次见的时候也是大概能理解函数的用途,但是具体实现原理细节也是云里雾里,在参考了几篇博文,做过几个实验之后算是清晰了,本文在记录的同时希望给后来人一个参考,欢迎留言讨论。 先看其名,parameter,中文

    2023年04月08日
    浏览(85)
  • 【Verilog语法013】verilog多维数组(多维矩阵)的写法

    有两种表示方法:一种是verilog语法的多维数组,另一种是system verilog语法的多维数组。 reg [A1:A0] a [B1:B0] [C1:C0] [D1:D0] ; 引用顺序是:a[B][C][D][A], 定义的a 的左边只有位宽,一对方括号[],a的右边可以扩展维数,多对方括号[],变化速度:BCDA packed维度: packed数组是一种将1个向量

    2024年02月08日
    浏览(39)
  • notepad++的Verilog语法检查(调用modelsim的语法)

    一、在modelsim中新建一个工程,然后写一个Verilog代码,然后编译,目的是为了得到此工程文件夹下的work文件。打开此工程的文件夹,找到work文件夹,复制到notepad++的安装路径下。   (图1.是我自己在D盘创建的一个文件夹project_mux,用来存放步骤一modelsim生成的文件,图2.可以

    2024年02月12日
    浏览(45)
  • Verilog语法(三)——赋值语句

    在 Verilog 中,阻塞赋值、非阻塞赋值和连续赋值是用于赋值操作的不同语法。它们之间的区别主要在于赋值时机和对后续代码执行的影响。 阻塞赋值使用等号 = 进行赋值,它的作用是在当前时钟周期内立即更新目标变量的值,然后继续执行下一条语句。因为它会阻塞后续语句

    2024年02月06日
    浏览(57)
  • verilog specify语法

    specify block用来描述从源点(source:input/inout port)到终点(destination:output/inout port)的路径延时(path delay),由specify开始,到endspecify结束,并且只能在模块内部声明,具有精确性(accuracy)和模块性(modularity)的特点。specify block可以用来执行以下三个任务: 一、 描述横穿

    2024年02月08日
    浏览(31)
  • verilog语法中+:和-:用法

    verilog语法中+:和-:主要用来进行 位选择 。       位选择 从向量net、向量 reg、整数变量或时间变量中提取特定位。可以使用表达式寻址该位。如果位选择超出地址边界或位选择为 x 或 z,则引用返回的值应为 x。声明为实时或实时的变量的位选择或部分选择应被视为非法。

    2024年02月16日
    浏览(26)
  • 【Verilog语法简介】

    Verilog语言是一种用于建模电子系统的硬件描述语言,这种硬件描述语言最多的用于进行数字电路系统的寄存器传输级建模和验证工作,同时一些例如生物电路等数模混合电路的建模和验证电路。Verilog语言的语法规则与C语言有很多相似之

    2024年02月04日
    浏览(27)
  • Verilog语法学习——边沿检测

    若为下降沿检测,则为: TB文件 注意,若TB文件中输入信号signal_in的上升下降沿和sys_clk同步,则检测不出边沿。所以我将输入信号的持续时间都设定为随机数字,来和sys_clk产生区别 仿真波形 若出现不定值x或高阻值z,则检测不准确。 可以改进为: 解释: == 和 !== 称为逻辑

    2024年02月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包