Verilog 语法小结

下面的内容是常用的Verilog语法小结。

数据类型语法小结

  1. wire型数据通常用assign关键字进行赋值。wire只能被assign连续赋值,reg只能在initial和always中赋值。input端口只能定义成wire型。如果端口没有声明,则默认是wire线网型,且输入端口只能是wire线网型。
  2. reg是寄存器数据类型的关键字。寄存器是数据存储单元的抽象,通过赋值语句可以改变寄存器存储的值,相当于改变触发器存储的值。reg型常用来表示always模块内的指定信号,代表触发器。在always块内被赋值的每一个信号都必须定义为reg型,即赋值操作符的左端变量必须是reg型。
  3. 所谓的always必须用reg的意思是always里面的赋值语句中的被赋值变量为reg型,而不是说在always里面出现的变量都为reg型。
  4. reg型与wire型的区别在于:reg型保持最后一次的赋值,而wire型需要持续的驱动。
  5. memory型通过对reg型变量建立数组以对存储器建模。reg [n-1:0]的存储器名[m-1:0] reg [n-1:0]定义了存储器中每一个存储单元的大小,即该存储器单元是一个n位宽的寄存器,[m-1:0]代表了存储器的大小,即该存储器中有多少个这样的存储器。
  6. 一个n位寄存器可以在一条赋值语句中直接赋值,而一个完整的存储器则不行,如果要对memory型存储单元进行读写,则必须要指定地址。
  7. 用parameter定义常量。

数制表示语法小结

  1. 下划线‘_’可以随意用在整数和实数中,没有实际意义,只是为了提高可读性。例如56等效于5\_6
  2. 整数负数使用补码形式表示,而不能表示为诸如:16'h-9之类的形式。
  3. 在进行基本算数运算时,如果某一操作数有不确定的值X,则运算结果也是不确定值X

赋值过程语法小结

  1. 连续赋值语句只能用来对线网型变量进行赋值,而不能对寄存器变量进行赋值。一个线网型变量一旦被连续赋值语句赋值之后,赋值语句有段的赋值表达式将持续对被赋值的变量产生连续驱动。只有右端表达式中任一操作数的值发生变化,就会立即触发对被赋值变量的更新操作。
  2. 过程赋值主要用于两种结构化模式(initial模块和always模块)中的赋值语句。在过程块中只能使用过程赋值语句(不能在过程块中出现连续赋值语句),同时过程赋值语句也只能用在过程赋值模块中。
  3. 过程赋值语句只能对寄存器类型的变量(reg、integer、real和time)进行操作,经过赋值后,上面这些变量的取值将保持不变,直道另一条赋值语句对变量重新赋值为止。
  4. memory型只能对制定地址单元的整个字进行赋值,不能对其中的某些位单独赋值。
  5. 在关系运算符中,若某个操作数的值不定,则关系是模糊的,返回的是不定值X
  6. 实例算子===!==可以用于比较含有XZ的操作数,在模块的功能仿真中有着广泛应用。
  7. 对组合逻辑建模采用阻塞赋值;对时序逻辑建模采用非阻塞赋值;用多个always块分别对组合和时序逻辑建模;尽量不要在同一个always块内混合使用阻塞赋值和非阻塞赋值,如果在同一个always块里面既为组合逻辑,又为时序逻辑建模,应使用非阻塞赋值;不要在多个always块中为同一个变量赋值。

结构描述小结

  1. 一个程序可以有多个initial模块、always模块、task模块和function模块。initial模块和always模块都是同事并行执行的,区别在于inital模块只执行一次,而always模块则是不断重复运行,task模块和function模块能被多次调用。initial模块式面向仿真的,是不可综合的。
  2. begin……end块定义语句中的语句是串行执行的,而fork……join语句块中的语句是并行执行的。
  3. 利用always实现组合逻辑时,要将所有的信号放进敏感列表中,而实现时序逻辑时却不一定要将所有的结果放进敏感信号列表中。
  4. 延时控制只能在仿真中使用,是不可综合的,在综合时,所有的延时控制都会被忽略。
  5. if语句中的else不能省,case语句的default分支虽然可以默认,但一般不要默认(这条与笔者的习惯不同,笔者习惯带有默认)。
  6. case语句中的分支是并行执行的,各个分支没有优先级,而if语句的选择分支是串行执行的。
  7. forever循环语句用于连续执行过程语句,必须写在initial模块中。
  8. repeat循环语句执行指定循环数,如果循环计数表达式的值不确定,即为X或Z时,那么循环次数按0处理。

Verilog实现相关小结

  1. 组合逻辑电路在逻辑功能上的特点是:任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关。而时序逻辑电路在逻辑功能上的特点是:任意时刻的输出不仅取决于当时的输入信号,而且还取决与电路原来的状态,或者说,还与以前的输入有关。
  2. 状态机一般包括组合逻辑和寄存器逻辑部两部分。组合电路用于状态译码和产生输出信号,寄存器用于存储状态。
  3. 所谓高阻是输出端属于浮空状态,只有很小的漏电流流动,其电平随外部电平高低而定,门电平放弃对输出电路的控制或者可以理解为输出与电路是断开的。双向引脚的输出就是在不使能情况下,输出为高阻,而在使能情况下输出为正常。

参考

本文主要内容来自《通信IC设计》,仅用于学习参考。

2021-04-13.

Verilog 语法小结相关推荐

  1. [转]verilog语法学习心得

    verilog语法学习心得 1.数字电路基础知识: 布尔代数.门级电路的内部晶体管结构.组合逻辑电路分析与设计.触发器.时序逻辑电路分析与设计 2.数字系统的构成: 传感器  AD  数字处理器  D ...

  2. System Verilog学习小结

    System Verilog课程小结 第一周 问题1:设计人员和验证人员他们的协作关系体现在哪些地方? 1.设计人员和验证人员都需要围绕功能描述文档开展工作 2.设计只有经过充分量化验证,才有信心去流 ...

  3. Verilog 语法入门知识

    Verilog 语法入门知识 一.变量类型 ①数值 数值表示采用 <二进制位数>'<数值表示的进制><数值>的结构. 其中进制可以为b.o.d.h分别代表二.八.十 ...

  4. Verilog语法-005—宏定义

    Verilog语法-005-宏定义 1.Verilog宏定义-`ifdef `ifndef `ifdef FOR_FPGA //如果定义了FOR_FPGA宏,则会执行如下 语句/或者没有语句 `els ...

  5. 【系统设计】Verilog语法及示例(2)

    参考Verilog语法 | 教程 (ustc.edu.cn) 1.7 D触发器 D触发器是一个具有记忆功能.具有两个稳定状态的信息存储器件,是构成时序逻辑的最基本逻辑单元.其具有两个稳定状态,即&qu ...

  6. verilog语法学习目录

    verilog语法实例学习(1) Verilog中注释 Verilog代码中的信号 标识符 信号的值 Verilog中的数字 Verilog中的参数 verilog语法实例学习(2) 线网类型 变量类 ...

  7. Verilog语法之运算符

    本文转自知乎罗成的文章Verilog语法之四:运算符 总的文章小白如何快速入门Verilog Verilog HDL语言的运算符范围很广,其运算符按其功能可分为以下几类: 算术运算符(+,-,×,/, ...

  8. Verilog语法和典型电路

    这里写目录标题 Verilog语法知识 Q:锁存器 Q:D触发器 Q:消除毛刺 Q:同步复位和异步复位 Q:边沿检测 Q:握手信号 Q:脉冲展宽(单bit慢采快) Q:二进制与格雷码的转换 Q:二进制 ...

  9. Verilog语法之变量

    本文转自知乎罗成的Verilog语法之三:变量 总的文章链接地址小白如何快速入门Verilog 本文首发于微信公众号"花蚂蚁",想要学习FPGA及Verilog的同学可以关注一下. ...

  10. verilog语法中+:和-:用法

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

最新文章

  1. 8种方案解决重复提交问题
  2. 构建轻量级的Table View注意事项[UIKit]
  3. linux下查看cpu负载及分析
  4. 快速撑握C#知识点之变量,类型及类型转换
  5. Hadoop机架感知
  6. IP地址的简单说明---Linux学习笔记
  7. 【机器学习】机器学习从零到掌握之四 -- 教你使用可视化分析数据
  8. 新手小白该怎么学习前端?附学习路线和资料
  9. python获取当前线程_Python爬虫(线程,进程)
  10. java打印计算机_在Java程序中实现高精度打印
  11. 永城职业学院计算机专业分类,计算机专业师资队伍
  12. max_workers解释
  13. 计算机硬件驱动备份,驱动备份还原软件工具
  14. pgp解密 java_Java PGP加密解密实例教程详细操作步骤
  15. 不确定度在线计算_测氡仪校准结果不确定度产生的5个因素
  16. 治愈系插画PSD源文件+笔刷分享
  17. 因子图优化原理(iSAM、iSAM2论文解析)
  18. 用python输出斐波那契数列的前20项_python输出斐波那契数列
  19. 以太网PHY接口直连设计
  20. 【IoT】 产品设计:如何做MRD和BRD?

热门文章

  1. 文件系统性能测试工具 IOZONE工具
  2. RadASM with Masm32
  3. nx零件库插件_ug标准件库下载
  4. 文件太大打不开,可以使用LogViewer
  5. 重置计算机的本地策略,手把手教你win10系统本地组策略重置恢复默认的详细方案...
  6. 机器人编程常用语言汇总(WeDo/EV3/Arduino/Scratch)
  7. java进制转换所有方法_Java进制转换方法整理
  8. matlab符号运算报错,matlab符号运算符
  9. android webview 获取cookie,Android WebView 之Cookie
  10. RANSAC算法理解