📝 Verilog教程
50篇技术文档📅  最后修改于: 2021-01-11 14:45:47        🧑  作者: Mango
Verilog阻止语句块语句是两个或多个语句的组合,在语法上类似于单个语句。 Verilog中有两种类型的块:顺序块平行块如果应执行多个语句,则可以使用这些块。顺序块中的所有语句将以给定顺序顺序执行。如果时序控制语句出现在一个块中,则在该延迟后将执行下一条语句。顺序块应由关键字begin和end分隔。并行块中的所有语句都同时或并行执行。这意味着即使前一条语句包含时序控制语句,也不会延迟下一条语句的...
📅  最后修改于: 2021-01-11 14:46:45        🧑  作者: Mango
Verilog分配将值放在变量和网络上称为分配。有三种必要的形式:程序连续程序连续合法的LHS值分配有两个部分,右侧(RHS)和左侧(LHS),中间有一个等号(=)或一个小于等号(<=)。Assignment TypeLeft-hand SideProceduralVariables (vector or scalar)Bit-select or part-select of an integer...
📅  最后修改于: 2021-01-11 14:47:41        🧑  作者: Mango
Verilog阻止和非阻止Verilog支持Always块内具有不同行为的阻塞和非阻塞分配语句。阻塞分配类似于大多数流行编程语言中的软件分配语句。非阻塞分配是描述许多硬件系统(尤其是用于综合)的更自然的分配声明。阻塞分配只能在少数情况下使用,例如对组合逻辑建模,定义函数或实现测试平台算法。要求所有符合IEEE P1364.1的综合工具都必须以显式样式代码支持阻塞和非阻塞分配,但要限制每个变量和每个...
📅  最后修改于: 2021-01-11 14:48:40        🧑  作者: Mango
Verilog控制块没有条件语句和其他控制逻辑流的方法,就无法实现硬件行为。 Verilog具有一组机制和控制流模块。如果-否则-如果此条件语句用于决定是否执行某些语句。它与C语言中的if-else-if语句非常相似。如果表达式的计算结果为true,则将执行第一条语句。如果表达式的计算结果为false,并且其他部分存在,则将执行else部分。句法以下是if-else-if条件语句的最简化语法:if...
📅  最后修改于: 2021-01-11 14:49:37        🧑  作者: Mango
Verilog功能函数的目的是返回要在表达式中使用的值。函数定义始终以函数关键字开头,后跟括号中的返回类型,名称和端口列表。它以endfunction关键字结束。函数应该至少有一个输入声明和一条语句,该语句为寄存器赋一个与函数相同名称的值。如果函数不返回任何内容,则返回类型可以为空。函数只能在模块声明中声明,并且可以通过始终块,连续赋值或其他函数来调用。在连续分配中,当其任何声明的输入发生更改时,...
📅  最后修改于: 2021-01-11 14:50:33        🧑  作者: Mango
Verilog任务函数旨在对输入进行一些处理并返回单个值。相反,任务比较笼统,可以计算多个结果值,并使用output和inout类型参数返回它们。任务可以包含耗时的模拟元素,例如@,posege和其他元素。任务在所有编程语言(通常称为过程或子例程)中使用。数据传递到任务,完成处理,并返回结果。必须使用数据输入和输出来专门调用它们,而不仅仅是将其连接到常规网表中。它们包含在代码主体中,可以多次调用,...
📅  最后修改于: 2021-01-11 14:51:34        🧑  作者: Mango
Verilog案例声明case语句检查给定的表达式是否与列表和分支内的其他表达式之一匹配。通常习惯于实现设备。如果存在测量单位要检查的许多条件,并且将其综合为优先级编码器而不是设备,则if-else构造可能不适用。在Verilog中,case语句包括Verilog关键字,case(“ casez”,“ casex”)和endcase之间的所有代码。案例陈述可以是多选一的构造,大致类似于护理if-e...
📅  最后修改于: 2021-01-11 14:52:34        🧑  作者: Mango
Verilog参数在Verilog中,参数是常量,并且不属于任何其他数据类型,例如寄存器或网络数据类型。常数表达式是指常数或先前定义的参数。我们无法在运行时修改参数值,但是可以使用defparam语句修改参数值。defparam语句只能在编译时修改参数。可以使用带有模块实例化的#delay规范来修改参数值。在Verilog中,有两种方法可以在模块实例化时覆盖模块参数值。通过使用defparam关键...
📅  最后修改于: 2021-01-11 14:53:36        🧑  作者: Mango
Verilog时序控制在仿真中需要时序控制语句以延长时间。程序语句的执行时间应使用时序控制来指定。Verilog中有以下类型的定时控件:延迟控制边缘敏感事件控制水平敏感事件控制命名事件延迟控制是在模拟器遇到语句与执行语句之间增加延迟的一种方式。通过事件表达式,可以将语句延迟到某个模拟事件发生之前,该事件可以更改网络或变量上的值或在另一个过程中触发的显式命名的事件。可以通过以下方法之一来提高仿真时间...
📅  最后修改于: 2021-01-11 14:54:33        🧑  作者: Mango
Verilog内部和内部延迟Verilog延迟语句可以在分配运算符右侧的左侧指定延迟。相互分配延迟分配间延迟语句的延迟值在分配运算符的左侧。内部分配是那些延迟了整个语句或分配的执行的延迟语句。在VHDL的常规延迟语句。它指示该语句本身在延迟到期之后执行,并且是延迟控制的最常用形式。例在这里,q在10个时间单位变为1,因为该语句以10个时间单位求值,并且RHS(由a,b和c组成的组合)求值为1。执行...
📅  最后修改于: 2021-01-11 14:55:35        🧑  作者: Mango
Verilog门延迟Verilog门延迟指定值如何通过网络或门传播。门延迟声明指定了将信号变化从门输入传播到其输出所需的时间。门延迟声明可用于门实例化。延迟还可以用于过程语句中的延迟控制。数字元件是二进制实体,并且仅保存两个值0和1。从0到1和1到0的转换具有转换延迟,因此每个门元件都将值从输入传播到其输出。例如,如果两个输入均变为1,则两个输入与门必须将输出切换为1,而当输入变为0时,则必须将其...
📅  最后修改于: 2021-01-11 14:56:33        🧑  作者: Mango
数据流建模数据流建模利用定义电路工作的功能代替其门结构。随着逻辑综合工具变得越来越复杂,数据流建模已成为一种流行的设计方法。该方法使设计人员可以专注于根据数据流优化电路。数据流建模使用多个操作符,这些运算符作用于操作数以产生所需的结果。 Verilog提供大约30种运算符类型。数据流建模从输入到输出的数据流来描述硬件。数据流建模风格主要用于描述组合电路。使用的主要机制是连续分配。连续作业将值分配给...
📅  最后修改于: 2021-01-11 14:57:35        🧑  作者: Mango
门级建模在Verilog中,大多数数字设计都是在更高的抽象水平(如RTL)下完成的。但是,通过使用诸如AND和OR之类的组合元素,在较低的水平上构建较小的确定性电路变得很自然。在此级别进行的建模称为门级建模,因为它涉及门,并且在硬件原理图和Verilog代码之间具有一对一的关系。Verilog支持一些称为原语的基本逻辑门,因为它们可以实例化,例如模块,并且它们已经预定义。门级建模实际上是最低的抽象...
📅  最后修改于: 2021-01-11 14:58:32        🧑  作者: Mango
开关级建模建模的开关级别提供了逻辑和模拟晶体管抽象级别之间的抽象级别。它描述了传输门的互连,传输门是各个MOS和CMOS晶体管的抽象。开关级晶体管被建模为导通或截止,导通或不导通。互连所承载的值从模拟电压或电流的整个范围抽象为少量离散值。这些值称为信号强度。Verilog还提供对晶体管级建模的支持。但是,由于电路的复杂性要求设计人员转移到更高的抽象级别,而不是使用开关级别的建模,因此设计人员很少使...
📅  最后修改于: 2021-01-11 14:59:34        🧑  作者: Mango
Verilog用户定义的原语一种建模技术,用户可以通过设计和指定称为用户定义基元(UDP)的新基元元素来虚拟地辩论预定义的门基元。这些原语是自包含的,不会实例化其他原语或模块。Verilog提供了一组标准的原语,例如AND,NAND,NOT,OR和NOR,作为语言的一部分。这些也称为内置原语。这些新UDP的实例可以与门原语相同的方式使用,以表示要建模的电路。此技术可以减少内存量并提高仿真性能。 V...