verilog语法中+:和-:用法

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

verilog语法中+:和-:主要用来进行位选择

      位选择从向量net、向量 reg、整数变量或时间变量中提取特定位。可以使用表达式寻址该位。如果位选择超出地址边界或位选择为 x 或 z,则引用返回的值应为 x。声明为实时或实时的变量的位选择或部分选择应被视为非法。 向量net、向量 reg、整数变量或时间变量中的几个连续位可以被寻址,称为部分选择。有两种类型的部分选择,常量部分选择和索引部分选择。

向量 reg 或 net 的常量部分选择由以下语法给出: vect[msb_expr:lsb_expr] 例如: vect[31:0] 两个表达式都应为常量表达式。第一个表达式必须处理比第二个表达式更重要的位。如果部分选择超出地址边界或部分选择是 x 或 z,则引用返回的值应为 x。 向量网络、向量 reg、整数变量或时间变量的索引部分选择使用以下语法给出:

reg [15:0] big_vect;
reg [0:15] little_vect;
big_vect[lsb_base_expr +: width_expr]
little_vect[msb_base_expr +: width_expr]
big_vect[msb_base_expr -:width_expr]
little_vect[lsb_base_expr -:width_expr]

 width_expr 应该是一个常量表达式。它也不受运行时参数分配的影响。 lsb_base_expr 和 msb_base_expr 可以在运行时变化。前两个示例选择从基数开始并递增位范围的位。选择的位数等于宽度表达式。后两个示例选择从基数开始并降序到位范围的位。部分选择寻址的位范围完全超出网络、reg、整数或时间的地址边界,或者当部分选择是 x 或 z 时,读取时应产生值 x,并且应具有写入时对存储的数据没有影响。 部分超出范围的部分选择应在读取时为超出范围的位返回 x,并且 写入时仅影响范围内的位。

例子:

reg [31:0] big_vect;
reg [0:31] little_vect;
reg [63:0] dword;
integer sel;

initial begin
if ( big_vect[0 +:8] == big_vect[7 : 0]) begin end
if (little_vect[0 +:8] == little_vect[0 : 7]) begin end
if ( big_vect[15 -:8] == big_vect[15 : 8]) begin end
if (little_vect[15 -:8] == little_vect[8 :15]) begin end
if (sel >0 && sel < 8) dword[8sel +:8] = big_vect[7:0];
// Replace the byte selected.*

 前四个 if 语句显示了两部分 select 构造之间的同一性。最后一个显示了可索引的性质。

区分一下大小端:

大端序是我们常用的描述位宽的方式,reg [31:0] big_vect;低位在右边,高位在左边。

小端序比如reg [0:31] little_vect;高位在右边,低位在左边。

位选则等效如下:

reg [31:0] big_vect;为大端,那么转化后的也一定是大端,**形式不变**
big_vect[0 +:8]转化后一定是       big_vect[较大的数值     **:**   较小的数值]
little_vect[0 +:8] 转化后一定是    little_vect[较小的数值    **:**     较大的数值]

big_vect    [0  +:   8]  从0 开始,升序,位宽为8     ======》》》》》big_vect   [7 :0]
little_vect  [0  +:   8]  从0 开始,升序,位宽为8     ======》》》》》little_vect  [0 :7]
big_vect   [15 -:   8]  从15开始,降序,位宽为8    ======》》》》》big_vect    [15 :8] 
little_vect [15 -:   8]  从15开始,降序,位宽为8    ======》》》》》little_vect   [8:15]

参考Verilog语法+:的说明_相顾无言_40994893的博客-CSDN博客_+: verilog文章来源地址https://www.toymoban.com/news/detail-574071.html

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

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

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

相关文章

  • verilog语法中+:和-:用法

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

    2024年02月16日
    浏览(26)
  • FPGA | Verilog基础语法

    菜鸟教程连接 举例(\\\"//\\\"符号后的内容为注释文字): initial $dumpfile (“myfile.dump”); //指定VCD文件的名字为myfile.dump,仿真信息将记录到此文件 可以指定某一模块层次上的所有信号,也可以单独指定某一个信号。 典型语法为$dumpvar(level, module_name); 参数level为一个整数,用于指

    2024年02月05日
    浏览(49)
  • 【Verilog刷题篇】硬件工程师进阶1|序列检测

    硬件工程师近年来也开始慢慢吃香,校招进大厂年薪总包不下30-40w的人数一大把!而且大厂人数并没有饱和! - 本期是【Verilog刷题篇】硬件工程师进阶1|序列检测,有不懂的地方可以评论进行讨论! 推荐给大家一款刷题、面试的神器 ,我也是用这一款神器进行学习 Verilog硬件

    2024年02月03日
    浏览(45)
  • 【FPGA学习记录3-1】Verilog语法之Verilog的数据类型

    写在前面 本科时学过FPGA的相关课程,因此对于Verilog相关语法的学习重在回顾。 1.Verilog的数据类型 Verilog 最常用的 2 种数据类型就是 线(wire)与寄存器(reg) ,其余类型可以理解为这两种数据类型的扩展或辅助。 1.1wire类型 wire 类型表示硬件单元之间的物理连线,由其连接

    2024年02月02日
    浏览(42)
  • 【FPGA入门】第一篇、Verilog基本语法常识

    目录 第一部分、不同的变量类型 1、wire和reg的区别  2、如何对变量进行赋值呢? 3、什么是阻塞?什么是非阻塞? 第二部分、变量位宽的定义 1、各种系统默认情况 2、变量位宽声明方式 3、表明位宽的情况下,赋值方式 4、两个模块之间例化,不定义变量直接用的方式 5、常

    2024年02月04日
    浏览(49)
  • FPGA学习笔记-知识点3-Verilog语法1

    按其功能可分为以下几类: 1) 算术运算符(+,-,×,/,%) 2) 赋值运算符(=,=) 3) 关系运算符(,,=,=) 4) 逻辑运算符(,||,!) 5) 条件运算符( ? :) 6) 位运算符(,|,^,,^) 7) 移位运算符(,) 8) 拼接运算符({ }) 9) 其它 按其所带操作数的个数运算符可分为三种: 1) 单目运算符(unary operator):可以带一个

    2024年02月06日
    浏览(55)
  • 【Verilog刷题篇】硬件工程师从0到入门3|组合逻辑复习+时序逻辑入门

    硬件工程师近年来也开始慢慢吃香,校招进大厂年薪总包不下30-40w的人数一大把!而且大厂人数并没有饱和! - 本期是【Verilog刷题篇】硬件工程师从0到入门3|组合逻辑复习+时序逻辑入门,有不懂的地方可以评论进行讨论! 推荐给大家一款刷题、面试的神器 ,我也是用这一款

    2024年02月03日
    浏览(37)
  • 【FPGA】verilog语法的学习与应用 —— 位操作 | 参数化设计

    学习新语法,争做新青年 计数器实验升级,让8个LED灯每个0.5s的速率循环闪烁,流水灯ahh好久不见~ 去年光这个就把我折磨够呛。。我肉眼可见的脱发就是从那时候开始的。。在那两个月我直接掉了10斤啊喂~ (没节食、没运动、没失恋哈哈哈 产生0.5s周期的计数器 为了避免仿

    2024年02月11日
    浏览(43)
  • AES算法基于FPGA的硬件实现(3)AES算法的Verilog实现(完结)

    本设计实现AES加密算法为ecb模式,填充模式未设置,同时支持AES-128/192/256三种密钥长度。 代码完全开源,开源链接在文章末尾。 下图为GitHub仓库中上传的文件第一级结构,第一级为matlab和user,matlab中存储的是在进行列混淆运算时查表所用的coe文件,这些文件用来初始化viv

    2024年01月18日
    浏览(52)
  • FPGA_学习_04_Verilog基础语法和Modelsem仿真

    前言:对于以前学过C/C++/C#的作者来讲,Verilog的基础语法算是 特别简单 的。本文主要介绍Verilog的基础语法和Modelsem仿真。 FPGA开发是以模块为基础的,每个可 综合 的.v文件都是一个模块,模块由 module 和 endmodule 来声明。在这两个的内部,完成模块功能的实现。 在Vi

    2024年02月05日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包