Verilog 语法小结
Verilog 语法小结
下面的内容是常用的Verilog语法小结。
数据类型语法小结
- wire型数据通常用assign关键字进行赋值。wire只能被assign连续赋值,reg只能在initial和always中赋值。input端口只能定义成wire型。如果端口没有声明,则默认是wire线网型,且输入端口只能是wire线网型。
- reg是寄存器数据类型的关键字。寄存器是数据存储单元的抽象,通过赋值语句可以改变寄存器存储的值,相当于改变触发器存储的值。reg型常用来表示always模块内的指定信号,代表触发器。在always块内被赋值的每一个信号都必须定义为reg型,即赋值操作符的左端变量必须是reg型。
- 所谓的always必须用reg的意思是always里面的赋值语句中的被赋值变量为reg型,而不是说在always里面出现的变量都为reg型。
- reg型与wire型的区别在于:reg型保持最后一次的赋值,而wire型需要持续的驱动。
- memory型通过对reg型变量建立数组以对存储器建模。
reg [n-1:0]
的存储器名[m-1:0] reg [n-1:0]
定义了存储器中每一个存储单元的大小,即该存储器单元是一个n
位宽的寄存器,[m-1:0]
代表了存储器的大小,即该存储器中有多少个这样的存储器。 - 一个n位寄存器可以在一条赋值语句中直接赋值,而一个完整的存储器则不行,如果要对memory型存储单元进行读写,则必须要指定地址。
- 用parameter定义常量。
数制表示语法小结
- 下划线‘_’可以随意用在整数和实数中,没有实际意义,只是为了提高可读性。例如
56
等效于5\_6
; - 整数负数使用补码形式表示,而不能表示为诸如:
16'h-9
之类的形式。 - 在进行基本算数运算时,如果某一操作数有不确定的值
X
,则运算结果也是不确定值X
。
赋值过程语法小结
- 连续赋值语句只能用来对线网型变量进行赋值,而不能对寄存器变量进行赋值。一个线网型变量一旦被连续赋值语句赋值之后,赋值语句有段的赋值表达式将持续对被赋值的变量产生连续驱动。只有右端表达式中任一操作数的值发生变化,就会立即触发对被赋值变量的更新操作。
- 过程赋值主要用于两种结构化模式(initial模块和always模块)中的赋值语句。在过程块中只能使用过程赋值语句(不能在过程块中出现连续赋值语句),同时过程赋值语句也只能用在过程赋值模块中。
- 过程赋值语句只能对寄存器类型的变量(reg、integer、real和time)进行操作,经过赋值后,上面这些变量的取值将保持不变,直道另一条赋值语句对变量重新赋值为止。
- memory型只能对制定地址单元的整个字进行赋值,不能对其中的某些位单独赋值。
- 在关系运算符中,若某个操作数的值不定,则关系是模糊的,返回的是不定值
X
。 - 实例算子
===
和!==
可以用于比较含有X
,Z
的操作数,在模块的功能仿真中有着广泛应用。 - 对组合逻辑建模采用阻塞赋值;对时序逻辑建模采用非阻塞赋值;用多个always块分别对组合和时序逻辑建模;尽量不要在同一个always块内混合使用阻塞赋值和非阻塞赋值,如果在同一个always块里面既为组合逻辑,又为时序逻辑建模,应使用非阻塞赋值;不要在多个always块中为同一个变量赋值。
结构描述小结
- 一个程序可以有多个initial模块、always模块、task模块和function模块。initial模块和always模块都是同事并行执行的,区别在于inital模块只执行一次,而always模块则是不断重复运行,task模块和function模块能被多次调用。initial模块式面向仿真的,是不可综合的。
- begin……end块定义语句中的语句是串行执行的,而fork……join语句块中的语句是并行执行的。
- 利用always实现组合逻辑时,要将所有的信号放进敏感列表中,而实现时序逻辑时却不一定要将所有的结果放进敏感信号列表中。
- 延时控制只能在仿真中使用,是不可综合的,在综合时,所有的延时控制都会被忽略。
- if语句中的else不能省,case语句的default分支虽然可以默认,但一般不要默认(这条与笔者的习惯不同,笔者习惯带有默认)。
- case语句中的分支是并行执行的,各个分支没有优先级,而if语句的选择分支是串行执行的。
- forever循环语句用于连续执行过程语句,必须写在initial模块中。
- repeat循环语句执行指定循环数,如果循环计数表达式的值不确定,即为X或Z时,那么循环次数按0处理。
Verilog实现相关小结
- 组合逻辑电路在逻辑功能上的特点是:任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关。而时序逻辑电路在逻辑功能上的特点是:任意时刻的输出不仅取决于当时的输入信号,而且还取决与电路原来的状态,或者说,还与以前的输入有关。
- 状态机一般包括组合逻辑和寄存器逻辑部两部分。组合电路用于状态译码和产生输出信号,寄存器用于存储状态。
- 所谓高阻是输出端属于浮空状态,只有很小的漏电流流动,其电平随外部电平高低而定,门电平放弃对输出电路的控制或者可以理解为输出与电路是断开的。双向引脚的输出就是在不使能情况下,输出为高阻,而在使能情况下输出为正常。
参考
本文主要内容来自《通信IC设计》,仅用于学习参考。
2021-04-13.
Verilog 语法小结相关推荐
- [转]verilog语法学习心得
verilog语法学习心得 1.数字电路基础知识: 布尔代数.门级电路的内部晶体管结构.组合逻辑电路分析与设计.触发器.时序逻辑电路分析与设计 2.数字系统的构成: 传感器 AD 数字处理器 D ...
- System Verilog学习小结
System Verilog课程小结 第一周 问题1:设计人员和验证人员他们的协作关系体现在哪些地方? 1.设计人员和验证人员都需要围绕功能描述文档开展工作 2.设计只有经过充分量化验证,才有信心去流 ...
- Verilog 语法入门知识
Verilog 语法入门知识 一.变量类型 ①数值 数值表示采用 <二进制位数>'<数值表示的进制><数值>的结构. 其中进制可以为b.o.d.h分别代表二.八.十 ...
- Verilog语法-005—宏定义
Verilog语法-005-宏定义 1.Verilog宏定义-`ifdef `ifndef `ifdef FOR_FPGA //如果定义了FOR_FPGA宏,则会执行如下 语句/或者没有语句 `els ...
- 【系统设计】Verilog语法及示例(2)
参考Verilog语法 | 教程 (ustc.edu.cn) 1.7 D触发器 D触发器是一个具有记忆功能.具有两个稳定状态的信息存储器件,是构成时序逻辑的最基本逻辑单元.其具有两个稳定状态,即&qu ...
- verilog语法学习目录
verilog语法实例学习(1) Verilog中注释 Verilog代码中的信号 标识符 信号的值 Verilog中的数字 Verilog中的参数 verilog语法实例学习(2) 线网类型 变量类 ...
- Verilog语法之运算符
本文转自知乎罗成的文章Verilog语法之四:运算符 总的文章小白如何快速入门Verilog Verilog HDL语言的运算符范围很广,其运算符按其功能可分为以下几类: 算术运算符(+,-,×,/, ...
- Verilog语法和典型电路
这里写目录标题 Verilog语法知识 Q:锁存器 Q:D触发器 Q:消除毛刺 Q:同步复位和异步复位 Q:边沿检测 Q:握手信号 Q:脉冲展宽(单bit慢采快) Q:二进制与格雷码的转换 Q:二进制 ...
- Verilog语法之变量
本文转自知乎罗成的Verilog语法之三:变量 总的文章链接地址小白如何快速入门Verilog 本文首发于微信公众号"花蚂蚁",想要学习FPGA及Verilog的同学可以关注一下. ...
- verilog语法中+:和-:用法
verilog语法中+:和-:主要用来进行位选择. 位选择从向量net.向量 reg.整数变量或时间变量中提取特定位.可以使用表达式寻址该位.如果位选择超出地址边界或位选择为 x 或 z,则引用返回的 ...
最新文章
- 8种方案解决重复提交问题
- 构建轻量级的Table View注意事项[UIKit]
- linux下查看cpu负载及分析
- 快速撑握C#知识点之变量,类型及类型转换
- Hadoop机架感知
- IP地址的简单说明---Linux学习笔记
- 【机器学习】机器学习从零到掌握之四 -- 教你使用可视化分析数据
- 新手小白该怎么学习前端?附学习路线和资料
- python获取当前线程_Python爬虫(线程,进程)
- java打印计算机_在Java程序中实现高精度打印
- 永城职业学院计算机专业分类,计算机专业师资队伍
- max_workers解释
- 计算机硬件驱动备份,驱动备份还原软件工具
- pgp解密 java_Java PGP加密解密实例教程详细操作步骤
- 不确定度在线计算_测氡仪校准结果不确定度产生的5个因素
- 治愈系插画PSD源文件+笔刷分享
- 因子图优化原理(iSAM、iSAM2论文解析)
- 用python输出斐波那契数列的前20项_python输出斐波那契数列
- 以太网PHY接口直连设计
- 【IoT】 产品设计:如何做MRD和BRD?
热门文章
- 文件系统性能测试工具 IOZONE工具
- RadASM with Masm32
- nx零件库插件_ug标准件库下载
- 文件太大打不开,可以使用LogViewer
- 重置计算机的本地策略,手把手教你win10系统本地组策略重置恢复默认的详细方案...
- 机器人编程常用语言汇总(WeDo/EV3/Arduino/Scratch)
- java进制转换所有方法_Java进制转换方法整理
- matlab符号运算报错,matlab符号运算符
- android webview 获取cookie,Android WebView 之Cookie
- RANSAC算法理解