Verilog HDL基本语法
1. 常量 常量是一个恒定不变的值数,一般在程序前部定义。 常量定义格式为 parameter 常量名1 = 表达式,常量名2 = 表达式,…, 常量名n = 表达式; parameter是常量定义关键字,常量名是用户定义的标 识符,表达式是为常量赋的值。例如 parameter vcc = 5,fbus = 8’b11010001;
【例2.2】8位二进制加法计数器的设计。
module cnt8(out,cout,data,load,cin,clk,clr); input [7:0] data; input load, cin, clk, clr; output [7:0] out; output cout; reg [7:0] out; //寄存器型参量,具有寄存功能
操作符通常由1~3个字符组成,例如,“+”表 示加操作,“= =”(两个=字符)表示逻辑等操作, “= = =”(3个=字符)表示全等操作。
有些操作符的操作数只有1个,称为单目操作; 有些操作符的操作数有2个,称为双目操作;有些操 作符的操作数有3个,称为三目操作。
1. 算术操作符(Arithmetic operators) 常用的算术操作符:
⑤ 可以用/*……*/或//……对Verilog HDL程序的任 何部分作注释。
一个完整的源程序都应当加上需要的注释, 以加强程序的可读性。
2.2 Verilog HDL的词法
2.2.1 空白符和注释
Verilog HDL的空白符包括空格、tab符号、换行 和换页。
空白符如果不是出现在字符串中,编译源程序 时将被忽略。
125//表示十进制数125
X和Z表示位数的特殊性:
8’b1111xxxx //等价8’hfx
8’b1101zzzz
//等价8’hdz
2.2.3 字符串
字符串是用双引号括起来的可打印字符序列,它必须 包含在同一行中。 例如, ”ABC”,”A BOY.”,”A”,”1234” 都是字符串。
2.2.4 标识符
等值运算的结果也是1位逻辑值,当运算结果为 真时,返回值1;为假则返回值0。
相等操作符(= =)与全等操作符(= = =)的区 别:当进行相等运算时,两个操作数必须逐位相等, 其比较结果的值才为1(真),如果某些位是不定或 高阻状态,其相等比较的结果就会是不定值;而进行 全等运算时,对不定或高阻状态位也进行比较,当两 个操作数完全一致时,其结果的值才为1(真),否 则结果为0(假)。
endmodule
(4)用initial块语句建模
initial块语句与always语句类似,不过在程序中它 只执行1次就结束了。
Verilog HDL程序设计模块的基本结构小结:
① Verilog HDL程序是由模块构成的。每个模块的 内容都是嵌在module和endmodule两语句之间,每 个模块实现特定的功能,模块是可以进行层次嵌套 的。
作用:即将操作数1的某些位与操作数2的某些位 与…与操作数n的某些位并接在一起。 例如,将1位全加器进位cont与和sum并接在一起使用, 它们的结果由两个加数ina、inb及低位进位cin相加决 定的表达式为 {cont,sum}= ina+inb+cin;
2.2.7 Verilog HDL数据对象
位运算操作符包括:~(按位取反)、&(按位与)、 |(按位或)、^(按位异或)、^~或~^(按位同或)。
在进行位运算时,当两个操作数的位宽不同时, 计算机会自动将两个操作数按右端对齐,位数少的操 作数会在高位用0补齐。
4. 关系操作符(Pelational operators)
关系操作符有:
<(小于)、<=(小于等于)、>(大于)、>=(大 于等于)。
3. 功能描述
功能描述是Verilog HDL程序设计中最主要的部分,用来 描述设计模块的内部结构和模块端口间的逻辑关系,在电路 上相当于器件的内部电路结构。
功能描述可以用assign语句、元件例化(instantiate)、 always块语句、initial块语句等方法来实现,通常把确定这些 设计模块描述的方法称为建模。
<位宽>’<进制符号><数字>
其中,位宽表示数字对应的二进制数的位数宽度; 进制符号包括b或B(表示二进制数),d或D(表示 十进制数),h或H(表示十六进制数),o或O(表 示八进制数)。
例如
8’b10110001 //表示位宽为8位的二进制数
8’hf5 //表示位宽为8位的十六进制数
十进制数的位宽和进制符号可以缺省,例如
标识符是用户编程时为常量、变量、模块、寄存 器、端口、连线、示例和begin-end块等元素定义的名 称。标识符可以是字母、数字和下划线“_”等符号组 成的任意序列。定义标识符时应遵循如下规则:
① 首字符不能是数字。
② 字符数不能多于1024个。
③ 大小写字母是不同的。
④ 不要与关键字同名。
2.2.5 关键字
c a b
源程序如下
1
&
&
&
out
module example_2_3(out,a,b,c);
input
a,b,c;
output out;
assign out = a? b:c;
endmodule
9. 位并接操作符(Concatenation operators) 并接操作符为:{} 并接操作符的使用格式: {操作数1的某些位,操作数2的某些位,…,操作数n 的某些位};
其中,<=也是赋值运算的赋值符号。
关系运算的结果是1位逻辑值。在进行关系运算 时,如果关系是真,则计算结果为1;如果关系是假, 则计算结果为0;如果某个操作数的值不定,则计算 结果不定(未知),表示结果是模糊的 。
5. 等式操作符(Equality operators) 等值操作符包括: = =(等于)、!=(不等于)、= = =(全等)、 != =(不全等)4种。
注释分为行注释和块注释两种方式。行注释用 符号//(两个斜杠)开始,注释到本行结束。块注 释用/*开始,用*/结束。块注释可以跨越多行,但 它们不能嵌套。
2.2.2 常数
Verilog HDL的常数包括数字、未知X和高阻Z三 种。数字可以用二进制、十进制、八进制和十六进制 等4种不同数制来表示,完整的数字格式为
例如,module adder(sum,cont,ina,inb,cin);
2.1.2 模块内容
模块内容包括I/O说明、信号类型声明和功能描述。
1. 模块的I/O说明
模块的I/O说明用来声明模块端口定义中各端口数据流动方向 包括输入(input)、输出(output)和双向(inout)。I/O说 明格式如下
第二部分 Verilog HDL基本语法
2.1 Verilog HDL程序模块结构
模块端口定义
设
模块内容
计
I/O说明
模 块
信号类型说明
功能描述
2.1.1 模块端口定义
模块端口定义用来声明设计电路模块的输入输出 端口。端口定义格式如下
module 模块名(端口1,端口2,端口3,…);
在端口定义的圆括弧中,是设计电路模块与外界 联系的全部输入输出端口信号或引脚,它是设计实体 对外的一个通信界面,是外界可以看到的部分(不包 含电源和接地端),多个端口名之间用“,”分隔。
② 每个模块首先要进行端口定义,并说明输入 (input)、输出(output)或双向(inouts),然 后对模块的功能进行逻辑描述。
③ Verilog HDL程序的书写格式自由,一行可以一 条或多条语句,一条语句也可以分为多行写。
④ 除了endmodule语句外,每条语句后必须要有 分号“;”。
6. 缩减操作符(Reduction operators) 缩减操作符包括: &(与)、~&(与非)、|(或)、~|(或非)、 ^(异或)、^~或~^(同或)。
缩减操作运算法则与逻辑运算操作相同,但操作 的运算对象只有一个。在进行缩减操作运算时,对操 作数进行与、与非、或、或非、异或、同或等缩减操 作运算,运算结果有1位1或0。 例如,设A = 8’b11010001,则& A = 0(在与缩减运算 中,只有A中的数字全为1时,结果才为1); |A = 1(在或缩减运算中,只有A中的数字全为0时, 结果才为0)。
8. 条件操作符(Conditional operators)
条件操作符为:?:
条件操作符的操作数有3个,其使用格式为
操作数 = 条件 ? 表达式1:表达式2;
即当条件为真(条件结果值为1)时,操作数 = 表达式1;为假(条件结果值为0)时,操作数 = 表达 式2。
【例2.3】用Verilog HDL语言描述下图所示的电路。
+(加)、-(减)、*(乘)、/(除)、%(求余)。 其中%是求余操作符, 在两个整数相除的基础上,取 出其余数。例如,5 % 6的值为5;13 % 5的值是3。
2. 逻辑操作符(Logical operators ) 逻辑操作符包括:
&&(逻辑与)、||(逻辑或)、!(逻辑非)
3. 位运算(Bitwise operators) 位运算是将两个操作数按对应位进行逻辑操作。
(1)用assign语句建模
用 assign语 句 建 模 的 方 法 很 简 单 , 只 需 要 在 “assign”后面再加一个表达式即可。
assign语句一般适合对组合逻辑进行赋值,称为连续 赋值方式。
【例2.1】1位全加器的设计。
ina
inb
adder1
verilog语法
第三章 Verilog HDL的基本语法前言Verilog HDL是一种用于数字逻辑电路设计的语言。
用Verilog HDL描述的电路设计就是该电路的Verilog HDL模型。
Verilog HDL既是一种行为描述的语言也是一种结构描述的语言。
这也就是说,既可以用电路的功能描述也可以用元器件和它们之间的连接来建立所设计电路的Verilog HDL模型。
Verilog模型可以是实际电路的不同级别的抽象。
这些抽象的级别和它们对应的模型类型共有以下五种:∙系统级(system):用高级语言结构实现设计模块的外部性能的模型。
∙算法级(algorithm):用高级语言结构实现设计算法的模型。
∙RTL级(Register Transfer Level):描述数据在寄存器之间流动和如何处理这些数据的模型。
∙门级(gate-level):描述逻辑门以及逻辑门之间的连接的模型。
∙开关级(switch-level):描述器件中三极管和储存节点以及它们之间连接的模型。
一个复杂电路系统的完整Verilog HDL模型是由若干个Verilog HDL模块构成的,每一个模块又可以由若干个子模块构成。
其中有些模块需要综合成具体电路,而有些模块只是与用户所设计的模块交互的现存电路或激励信号源。
利用Verilog HDL语言结构所提供的这种功能就可以构造一个模块间的清晰层次结构来描述极其复杂的大型设计,并对所作设计的逻辑电路进行严格的验证。
Verilog HDL行为描述语言作为一种结构化和过程性的语言,其语法结构非常适合于算法级和RTL级的模型设计。
这种行为描述语言具有以下功能:∙可描述顺序执行或并行执行的程序结构。
∙用延迟表达式或事件表达式来明确地控制过程的启动时间。
∙通过命名的事件来触发其它过程里的激活行为或停止行为。
∙提供了条件、if-else、case、循环程序结构。
∙提供了可带参数且非零延续时间的任务(task)程序结构。
Verilog基本语法
18
整数和实数常量小结
整数的大小可以定义也可以不定义。整数表示为: 数字中(_ )忽略,便于查看 没有定义大小(size)整数缺省为32位 /*特别注意*/ 缺省数基为十进制 数基(base)和数字(16进制)中的字母无大小写之分 当数值value大于指定的大小时,截去高位。如 2'b1101表示的是 2'b01
13
3.2.1 术语及定义
1.空白符:空格、tabs及换行 2. 标志符(Identifier):Verilog中对象(如模块或信号)的名字 3.LSB:最低有效位(Lease significant bit) 4.MSB:最高有效位(Most significant bit)
14
3.2.2 空白符和注释
– include保存在文件中的全局的或经常用到的一些定义,如文本宏
– 在模块内部include一些任务(tasks),提高代码的可维护性。
26
3.2.10 文本替换`define (了解)
编译指导`define提供了一种简单的文本替换的功能 `define <macro_name> <macro_text>
多行注释,在/* */内
and and2 (b1, b, sel);
or or1 (out, a1, b1);
endmodule
15
3.2.3 Verilog采用的四值逻辑系统
‟0‟, Low, False, Logic Low, Ground,VSS, Negative Assertion
„1‟, High, True, Logic High, Power, VDD, VCC, Positive Assertion
Verilog HDL的基本语法
常量
什么是常量?
在程序运行过程中,其值不能被改变的 量称为常量。 例如:数字、参数等
常量----数字
1、整数: 在Verilog HDL中,整型常量即整常数有以 下四种进制表示形式:
1) 2) 3) 4) 二进制整数(b或B) 十进制整数(d或D) 十六进制整数(h或H) 八进制整数(o或O)
常量----数字
4、下划线:
下划线可以用来分隔开数的表达以提高程 序可读性。但不可以用在位宽和进制处,只 能用在具体的数字之间。见下例: 16'b1010_1011_1111_1010 //合法格式 8'b_0011_1010 //非法格式
常量----参数
在Verilog HDL中用parameter来定义常 量,即用parameter来定义一个标识符代表 一个常量,称为符号常量,即标识符形式的 常量,采用标识符代表一个常量可提高程序 的可读性和可维护性。
常量----参数
parameter型格式如下: parameter 参数名1=表达式,参数名2=表 达式, …, 参数名n=表达式; parameter msb=7; //定义参数msb为常量7 parameter e=25, f=29; //定义二个常数参 数 parameter r=5.7; //声明r为一个实型参数
模块内容
2、功能定义: 模块中最重要的部分是逻辑功能定义部分。有三 种方法可在模块中产生逻辑。 1).用“assign”声明语句 2).用实例元件 3).用“always”块
模块内容
2、功能定义: 1).用“assign”声明语句
如: assign a = b & c;
模块内容
2、功能定义: 2).用实例元件 如: and and_inst( q, a, b );
VerilogHDL语法基础
VerilogHDL语法基础⼀个复杂电路的完整Verilog HDL模型是由若个Verilog HDL 模块构成的,每⼀个模块⼜可以由若⼲个⼦模块构成。
利⽤Verilog HDL语⾔结构所提供的这种功能就可以构造⼀个模块间的清晰层次结构来描述极其复杂的⼤型设计。
每个模块的内容都是嵌在module和endmodule两个语句之间,每个模块实现特定的功能,模块是可以进⾏层次嵌套的。
每个模块⾸先要进⾏端⼝定义.并说明输⼊(input)和输出(output),然后对模块的功能进⾏逻辑描述。
Verilog HDL程序的书写格式⾃由,⼀⾏可以写⼏个语句,⼀个语句也可以分多⾏写。
除了endmodule语句外,每个语句的最后必须有分号。
⼀个模块是由两部分组成的,⼀部分描述接⼝;另⼀部分描述逻辑功能,即定义输⼊是如何影响输出的。
模块(block)的组成Verilog HDL结构完全嵌在module和endmodule声明语句之间,每个Verilog程序包括4个主要部分:端⼝定义,I/O说明,信号类型声明和功能描述。
module<模块名>(<端⼝列表>);端⼝说明(input,output,inout)参数定义(可选)数据类型定义连续赋值语句(assign)过程块(initial 和 always)⾏为描述语句低层模块实例任务和函数延时说明块endmodule模块声明模块声明包括模块名和端⼝列表。
其格式如下:module 模块名(端⼝1,端⼝2,端⼝3,…);模块结束的标志为关键字:endmodule。
端⼝定义input(输⼊端⼝),output(输出端⼝)和inout(双向端⼝)。
格式如下:input 端⼝名1,端⼝名2,………,端⼝名N; //输⼊端⼝output 端⼝名1,端⼝名2,………,端⼝名N; //输出端⼝inout 端⼝名1,端⼝名2,………,端⼝名N; //输⼊输出端⼝也可以写在端⼝声明语句⾥,其格式如下(为了代码的可读性,⼀般不这么写):module module_name(input port1,input port2,…output port1,output port2… );信号类型说明信号可以分为端⼝信号和内部信号;1. 所有信号都必须进⾏数据类型的定义,如寄存器类型(reg等),连线类型(wire等);2. 如果信号没有定义数据类型,则综合器将其默认为wire型;3. 端⼝的位宽最好定义在端⼝定义中,不要放在数据类型定义中;4. 不能将input和inout类型声明为reg型;模块的端⼝表⽰的是模块的输⼊和输出⼝名,也就是说,它与别的模块联系端⼝的标识。
Verilog-HDL中的基本语法
一个完整的源程序都应当加上需要的注释, 以加强程序的可读性。
2.2 Verilog HDL的语法
2.2.1 空白符和注释
Verilog HDL的空白符包括空格、tab符号、换行 和换页。
空白符如果不是出现在字符串中,编译源程序 时将被忽略。
8. 条件操作符(Conditional operators)
条件操作符为:?:
条件操作符的操作数有3个,其使用格式为
操作数 = 条件 ? 表达式1:表达式2;
即当条件为真(条件结果值为1)时,操作数 = 表达式1;为假(条件结果值为0)时,操作数 = 表达 式2。
9. 位并接操作符(Concatenation operators) 并接操作符为:{} 并接操作符的使用格式: {操作数1的某些位,操作数2的某些位,…,操作数n 的某些位};
位运算操作符包括:~(按位取反)、&(按位与)、 |(按位或)、^(按位异或)、^~或~^(按位同或)。
在进行位运算时,当两个操作数的位宽不同时, 计算机会自动将两个操作数按右端对齐,位数少的操 作数会在高位用0补齐。
4. 关系操作符(Pelational operators)
关系操作符有:
<(小于)、<=(小于等于)、>(大于)、>=(大 于等于)。
② 每个模块首先要进行端口定义,并说明输入 (input)、输出(output)或双向(inouts),然 后对模块的功能进行逻辑描述。
③ Verilog HDL程序的书写格式自由,一行可以一 条或多条语句,一条语句也可以分为多行写。
④ 除了endmodule语句外,每条语句后必须要有 分号“;”。
FPGA笔记之verilog语言(基础语法篇)
FPGA笔记之verilog语言(基础语法篇)笔记之verilog语言(基础语法篇)写在前面:verilogHDL语言是面对硬件的语言,换句话说,就是用语言的形式来描述硬件线路。
因此与等软件语言不同,假如想要在实际的中实现,那么在举行verilog语言编写时,就需要提前有个硬件电路的构思和主意,同时,在编写verilog语言时,应当采纳可综合的语句和结构。
1. verilog 的基础结构1.1 verilog设计的基本单元——module在数字电路中,我们经常把一些复杂的电路或者具有特定功能的电路封装起来作为一个模块用法。
以后在运用这种模块化的封装时,我们只需要知道:1.模块的输入是什么;2.模块的输出是什么;3.什么样的输入对应什么样的输出。
而中间输入是经过什么样的电路转化为输出就不是我们在用法时需要特殊重视的问题。
当无数个这样的模块互相组合,就能构成一个系统,解决一些复杂的问题。
verilog语言的基础结构就是基于这种思想。
verilog中最基本的模块是module,就可以看做是一个封装好的模块,我们用verilog来写无数个基本模块,然后再用verilog描述多个模块之间的接线方式等,将多个模块组合得到一个系统。
那么一个module应当具有哪些要素呢?首先对于一个module,我们应当设计好其各个I/O,以及每个I/O的性质,用于与模块外部的信号相联系,让用法者知道如何连线。
第二,作为开发者,我们需要自己设计模块内部的线路来实现所需要的功能。
因此需要对模块内部浮现的变量举行声明,同时通过语句、代码块等实现模块的功能。
综上所述,我们把一个module分成以下五个部分:模块名端口定义I/O解释第1页共9页。
verilog知识点总结
verilog知识点总结Verilog是一种硬件描述语言(HDL),用于描述数字电路和系统,它广泛应用于数字系统设计和仿真领域。
本文将总结一些Verilog 的重要知识点,以帮助读者更好地理解和应用Verilog。
一、Verilog的基本语法Verilog的基本语法包括模块声明、端口声明、信号声明、数据类型、运算符等。
Verilog中的模块是设计的基本单元,模块声明包括模块名和端口声明。
端口可以是输入、输出或双向的。
信号声明用于定义内部信号,可以是寄存器或线网类型。
Verilog支持多种数据类型,包括整数、浮点数、向量、数组等。
Verilog还提供了丰富的运算符,包括算术运算符、逻辑运算符、位运算符等。
二、组合逻辑电路描述Verilog可以用来描述各种组合逻辑电路,如与门、或门、非门等。
通过使用逻辑运算符和条件语句,可以很方便地描述组合逻辑电路的功能。
Verilog还提供了多种语法结构,如if语句、case语句等,用于描述复杂的逻辑功能。
三、时序逻辑电路描述时序逻辑电路是一种带有状态的电路,Verilog可以用来描述各种时序逻辑电路,如触发器、计数器、状态机等。
通过使用时钟信号和触发器,可以实现电路的时序行为。
Verilog提供了多种触发器类型,如D触发器、JK触发器、T触发器等,可以根据实际需求选择合适的触发器类型。
四、模块实例化和层次化设计Verilog支持模块的实例化和层次化设计,可以将一个模块实例化为另一个模块的一部分。
通过模块实例化,可以方便地实现模块的复用和层次化设计。
层次化设计可以使整个系统更加清晰和模块化,方便调试和维护。
五、仿真和验证Verilog可以用于对设计进行仿真和验证,以确保设计的正确性。
Verilog提供了仿真器,可以对设计进行时序仿真和波形查看。
通过仿真,可以验证设计的功能和时序行为是否符合要求。
Verilog 还支持测试向量的生成和自动验证,可以自动生成测试向量并进行自动验证。
Verilog基本语法
”This string formats a value: val = %b”
20
格式符
%h hex %o oct %d dec %b bin %c ACSII %s string %t time
转义符
\t tab \n 换行 \\ 反斜杠 \” \<1-3 digit octal number>
18
整数和实数常量小结
整数的大小可以定义也可以不定义。整数表示为:
数字中(_ )忽略,便于查看 没有定义大小(size)整数缺省为32位 /*特别注意*/ 缺省数基为十进制 数基(base)和数字(16进制)中的字母无大小写之分 当数值value大于指定的大小时,截去高位。如 2'b1101表示的是 2'b01
- 4. 功能定义:
assign d = a | x ; assign x = ( b & ~c ); endmodule
6
3.1.3 逻辑功能描述
两路选择器的RTL级描述1: module mux2to1 (out, a, b, sel); input a, b, sel; output out; wire out; assign out=(sel)?b:a; endmodule
13
3.2.1 术语及定义
1.空白符:空格、tabs及换行
2. 标志符(Identifier):Verilog中对象(如模块或信号)的名字 3.LSB:最低有效位(Lease significant bit) 4.MSB:最高有效位(Most significant bit)
14
3.2.2 空白符和注释
module MUX2_1 (out, a, b, sel); 单行注释 // Port declarations
verilog宏定义格式
verilog宏定义格式Verilog是一种硬件描述语言(HDL),常用于数字电路设计和验证。
使用合适的宏定义格式可以提高代码的可读性和可维护性。
本文将介绍Verilog宏定义的常用格式和示例。
一、Verilog宏定义的基本语法在Verilog中,使用宏定义可以将一段代码或者常量进行命名,方便在后续代码中引用。
其基本语法如下:`define 常量名常量值其中,`define是定义宏的关键字,常量名是用户自定义的标识符,常量值可以是任何合法的Verilog表达式,例如数字、连续赋值或者其他宏定义。
二、无参数宏定义的示例无参数宏定义是最常见的一种宏定义形式,其格式如下:`define 常量名常量值下面是一个简单的示例:`define CLK_FREQ 100000000在上述示例中,定义了一个名为CLK_FREQ的宏,其值为100000000。
三、带参数宏定义的示例带参数宏定义可以根据传入的参数生成不同的代码片段。
其格式如下:`define 宏名(PARAM_1, PARAM_2, ...) 代码片段下面是一个简单的示例:`define ADD(a, b) a + b在上述示例中,定义了一个名为ADD的宏,它接受两个参数a和b,并返回它们的和。
四、多行宏定义的示例有时候,宏定义的代码片段比较复杂,需要跨多行进行书写。
此时,可以使用反斜杠(\)将代码连成一行。
下面是一个示例:`define MULTILINE_MACRO(a, b, c) \begin \if (a > b) \c = a; \else \c = b; \end在上述示例中,定义了一个多行宏MULTILINE_MACRO,根据a和b的大小比较结果,将较大值赋给c。
五、条件宏定义的示例条件宏定义可以根据条件编译实现不同的代码生成。
其格式如下:`ifdef 宏名代码片段`endif下面是一个示例:`ifdef DEBUG$display("Debug mode enabled");`endif在上述示例中,如果宏DEBUG已定义,则输出调试模式已启用的信息。
硬件描述语言VerilogHDL基础
入zz x x x
CSLG
4、设计举例
试用Verilog语言的门级 元件描述2线-4线译码器.
E1
& Y0
//Gate-level description of a 2-to-4-
line decoder
module _2to4decoder (A1,A0,E,Y);
input A,B,E;
output [3:0] Y;
常量
格式为:<+/-><位宽>’<基数符号><数 例值如>:3’b101、5’o37、8’he3,8’b1001_0011
实数型常量 十进制记数法 如: 0.1、2.0、5.67
科学记数法 如: 23_5.1e2、5E-4
23510.0、 0.0005
CSLG
❖Verilog允许用参数定义语句定义一个标识 符来代表一个常量,称为符号常量。
CSLG
CSLG
用Verilog HDL描述组合逻辑电路
用VerilogHDL描述组合逻辑电路
❖用VerilogHDL描述组合逻辑电路有三种不 同抽象级别:
▪ 门级描述 ▪ 数据流描述 ▪ 行为级描述
❖VerilogHDL描述的电路就是该电路的 VerilogHDL模型。
CSLG
•门级描述:
一般使用Primitive(内部元件)、自定义的下层模块对电 路描述。主要用于层次化设计中。
多输入端的或非门
多输入端的异或非门
多输出端的反相器
控制信号高电平有效的 三态反相器
控制信号低电平有效的 三态反相器
CSLG
Verilog 基本门级元件
and n-input AND gate
