verilog语法总结

发布 2021-05-11 05:40:28 阅读 2868

整理:张步阳。

1.如果没有明确说明,则端口都是wire线网型的,且输入端口只能是wire线网型的。型数据通常以assign关键字指定的组合逻辑信号。wire只能被assign连续赋值,reg

只能在initial和always中赋值。input端口只能定义成wire型。

是寄存器数据类型的关键字。寄存器是数据存储单元的抽象,通过赋值语句可以改。

变寄存器存储的值,相当于改变触发器存储的值。reg型常用来表示always模块内的指定信号,代表触发器。在always块内被赋值的每一个信号都必须定义为reg型,即赋值操作符的左端变量必须是reg型。

reg型只能在initial和always中赋值。

4.所说的always必须用reg意思是always里面的赋值语句中的被赋值值的变量为reg型,而不是说在always里面出现的变量都为reg型。

型与wire型的区别在于:reg型保持最后一次的赋值,而wire型需要持续的驱动。型通过对reg型变量建立数组对存储器建模。

reg[n-1:0]存储器名[m-1:0] reg[n-1:

0]定义了存储器中每一个存储单元的大小,即该存存储器单元是一个n位位宽的寄存器,[m-1:0]代表了存储器的大小,即该存储器中有多少个这样的寄存器。

7.一个n位的寄存器可以在一条赋值语句中直接赋值,而一个完整的存储器则不行,如果。

要对memory型存储单元进行读写,则必须要指定地址。8.用parameter定义常量。

9.下划线“_”可以随意用在整数和实数中,没有实际意义,只是为了提高可读性。例如。

56等效于5_6。

10.整数负数使用补码形式表示。整数的基数格式[长度]‘基数数值长度是常量的位长,基数可以是二进制、十进制、十六进制之一。

数值不能为负数,是基于基数的数字序列。11.在进行基本算术运算时,如果某一操作数有不确定的值x,则运算结果也是不确定值x。

12.连续赋值语句只能用来对线网型变量进行赋值,而不能对寄存器变量进行赋值。一个线。

网型变量一旦被连续赋值语句赋值之后,赋值语句右端赋值表达式的值将持续对被赋值变量产生连续驱动。只要右端表达式任一操作数的值发生变化,就会立即触发对被赋值变量的更新操作。其基本的语法格式如下:

线网型变量类型[线网型变量位宽]线网型变量名;assign #(延时量)线网型变量名=赋值表达式;

13.过程赋值主要用于两种结构化模块(initial模块和always模块)中的赋值语句。在过程。

块中只能使用过程赋值语句(不能在过程块**现连续赋值语句),同时过程赋值语句也只能用在过程赋值模块中。

14.过程赋值语句只能对寄存器类型的变量(reg、integer、real和time)进行操作,经过赋。

值后,上面这些变量的取值将保持不变,直到另一条赋值语句对变量重新赋值为止。型只能对指定地址单元的整个字进行赋值,不能对其中某些位单独赋值。16.

关系运算符若某个操作数的值不定则关系是模糊的,返回的是不定值x

17.实例算子“==和“!=可以比较含有x和z的操作数,在模块的功能**中有着。

广泛应用。18.一个程序可以有多个initial模块、always模块、task模块和function模块。initial模块和。

always模块都是同时并行执行的,区别在于initial模块只执行一次,而always模块则是不断重复运行,task模块和function模块能被多次调用。initial模块是面向**的,是。

不可综合的。

块定义语句中的语句是串行执行的,而fork…join块语句中的语句定义是并行。

的。20.利用always实现组合逻辑时,要将所有的信号放进敏感列表,而实现时序逻辑时却不一。

定要将所有的结果放进敏感信号列表。

21.延时控制只能在**中使用,是不可综合的,在综合时,所有的延时控制都会被忽略。语句中的else不能省,case语句的default分支虽然可以默认,但是一般不要默认。

语句的分支是并行执行的,各个分支没有优先级,而if语句的选择分支是串行执行。

的。循环语句连续执行过程语句,必须写在initial模块中。

循环语句执行指定循环数,如果循环技术表达式的值不确定,即为x或z时,那。

么循环次数按0处理。

26.关于阻塞和非阻塞总结:对组合逻辑建模采用阻塞赋值;对时序逻辑建模采用非阻塞式。

赋值;用多个always块分别对组合和时序逻辑建模;尽量不要在同一个always块内混合使用“阻塞赋值”和“非阻塞赋值”,如果同一个always块里面既为组合逻辑又为时序逻辑建模,应使用“非阻塞赋值”;不要在多个always块中为同一个变量赋值。27.组合逻辑电路在逻辑功能上的特点是任意时刻的输出仅仅取决于该时刻的输入,与电路。

原来的状态无关。而时序逻辑电路在逻辑功能上的特点是任意时刻的输出不仅取决于当时的输入信号,而且还取决于电路原来的状态,或者说,还与以前的输入有关。

28.所谓高阻是输出端属于浮空状态,只有很小的漏电流动,其电平随外部电平高低而定,门电平放弃对输出电路的控制,或者可以理解为输出与电路是断开的。

29.状态机一般包括组合逻辑和寄存器逻辑两部分。组合电路用于状态译码和产生输出信号,寄存器用于存储状态。

verilog语法

第三章 verilog hdl的基本语法。前言。verilog hdl是一种用于数字逻辑电路设计的语言。用verilog hdl描述的电路设计就是该电路的verilog hdl模型。verilog hdl既是一种行为描述的语言也是一种结构描述的语言。这也就是说,既可以用电路的功能描述也可以用元器件和...

Verilog语法运用

verilog中条件编译命令 ifdef else endif用法。一般情况下,verilog?hdl源程序中所有的行都参加编译。但是有时候希望对其中的一部份内容只有在条件满足的时候才进行编译,也就是对一部分内容指定编译的条件,这就是 条件编译 有时,希望当满足条件时对一组语句进行编译,当条件不满足...

verilog语法提纲

reg 7 0 mema 255 0 这个例子定义了一个名为mema的存储器,该存储器有256个8位的存储器。该存储器的地址范围是0到255.4.运算符及表达式 1 算术运算符。2 赋值运算符 3 关系运算符 4 逻辑运算符 5 条件运算符 6 位运算符。7 移位运算符 8 拼接运算符 9 其它。说...