第3章 Verilog设计入门

合集下载

第 3 章 Verilog HDL 基础知识

第 3 章    Verilog HDL 基础知识

第三章
Verilog 基础知识
module D_ff(q,data,enable,reset,clock); output q; input data,enable,reset,clock; reg q; always @(posedge clock) //时钟上升沿有效 if (reset == 0) q = 1’b0; else if (enable==1) q = data; //隐含: else q = q: endmodule
第三章
Verilog 基础知识
3) 指定位宽的基数格式 这种格式的表示形式为: <size>’<base_format><number> 参数<size>用来指定所表示数的位宽。当位宽小于数 值的实际位数时,相应的高位部分被忽略;当位宽大于数 值的实际位数,且数值的最高位是 0 或 1 时,相应的高位 部分补0;而当位宽大于数值的实际位数,但数值的最高 位是 x 或 z 时,相应的高位部分补 x 或z。二进制的一个 x 或 z 表示 1 位处于 x 或 z,八进制的一个 x 或 z 表示 3 位 二进制位都处于 x 或 z,十六进制的一个 x 或 z 表示 4 位 二进制位都处于 x 或 z。另外,数值中的 z 可以用“ ?” 来代替。
第三章
Verilog 基础知识
第3章
Verilog HDL 基础知识
希望通过本章的介绍,能够对 Verilog HDL 有初步 的了解。 (1)词法:包括间隔符与注释符、数值、字符串与关键字。 (2)数据类型:包括物理数据类型与抽象数据类型。 (3)运算符:包括算术运算符、逻辑运算符、关系运算 符、相等关系运算符、按位运算符、归约运算符、移 位运算符、条件运算符、连接与复制操作及其优先级。 (4)系统任务与系统函数:包括标准输出任务、文件管理 任务、仿真控制任务、时间函数及其他常用函数。 (5)编译指令:宏编译指令、文件包含指令、条件编译指 令、时间定标指令与工作库定义指令。

第3章 Verilog设计入门

第3章 Verilog设计入门
省为wire型。 可用做任何方程式的输入,或“ assign ”语句和实例
元件的输出。
格式
wire 数据名1,数据名2, ……,数据名n;
wire型向量(总线)
wire[n-1:0] 数据名1,数据名2, ……,数据名m; 或 wire[n:1] 数据名1,数据名2, ……,数据名m;

总 结


Verilog HDL程序是由模块构成的。每个模块嵌套在module 和endmodule声明语句中。模块是可以进行层次嵌套的。
每个模块要进行端口定义,并说明输入输出端口,然后对模 块的功能进行行为逻辑描述。 程序书写格式自由,一行可以写几个语句,一个语句也可以 分多行写。
Verilog HDL关键字
and always assign begin buf bufif0 bufif1 case casex casez cmos deassign default defparam disable edge else end endcase endfunction endprimitive endmodule endspecify endtable endtask event for force forever fork function highz0 highz1 if ifnone initial inout input integer join large macromodule medium module nand

与C 语言一致
规范的书写格式

规定了文本布局、命名和注释的约定,以提 高源代码的可读性和可维护性。



最顶层的module_endmodule模块放在最左 侧 低一层次的语句向右靠一个TAB键的距离 同一语句关键字对齐

2024版华为Verilog入门教程

2024版华为Verilog入门教程

目录•Verilog概述•Verilog基础语法•组合逻辑电路设计•时序逻辑电路设计•数字系统设计方法学•华为Verilog编程规范与技巧Verilog概述1 2 3Verilog语言诞生,最初用于模拟电子系统的行为。

1980年代初期Verilog逐渐发展成为硬件描述语言(HDL),用于描述数字电路和系统的结构和行为。

1980年代中期Verilog不断完善和发展,成为电子设计自动化(EDA)领域的重要标准之一,广泛应用于集成电路设计、FPGA开发等领域。

1990年代至今Verilog历史与发展集成电路设计Verilog可用于描述数字集成电路的逻辑功能、时序关系和电路结构,是IC设计领域的重要工具。

FPGA开发Verilog可用于FPGA的逻辑设计和编程,实现复杂的数字系统和算法。

ASIC设计Verilog可用于ASIC设计的各个阶段,包括逻辑设计、综合、布局布线等。

系统级建模与仿真Verilog可用于构建系统级模型,进行系统仿真和性能分析。

Verilog应用领域01Verilog 是一种硬件描述语言(HDL ),用于描述数字电路和系统的结构和行为。

02与其他硬件描述语言(如VHDL )相比,Verilog具有更接近C 语言的语法风格,易于学习和使用。

Verilog 支持多种抽象层次的描述,包括行为级、寄存器传输级(RTL )、门级和开关级,方便设计师在不同设计阶段使用。

Verilog 与硬件描述语言关系02Verilog基础语法标识符与关键字标识符用于标识变量、模块、函数等程序实体的名称,由字母、数字和下划线组成,首字符必须是字母或下划线。

关键字Verilog语言中的保留字,用于定义语言结构和控制语句,如`module`、`input`、`output`、`if`、`else`等。

数据类型与运算符数据类型包括整型(`integer`)、实型(`real`)、时间型(`time`)以及用户自定义类型等。

verilog学习

verilog学习

关系运算符是用来确定指定的两个操作数之间的关系是 否成立的, 如果成立, 结果为1(真); 如果不成立, 结果 为0(假)。 假设:m =19; n = 5; a=x
那么: m > n
m<n m<a
结果为1 (真)
结果为0 (假) 结果为x
第3章 Verilog HDL的基本语法
4. 等值运算符
== (逻辑相等) != (逻辑不等) === (全等) !== (非全等)
第3章 Verilog HDL的基本语法
例如: reg [7:0] a; reg b b=&a; 程序中, “b=&a;” 语句与“b=a[0] & a[1] & a [2] & a[3] & a[4] & a[5] & a[6] & a [ 7];”语 句等价。
第3章 Verilog HDL的基本语法
X={a[7:4], b[3], c[2:0]} 表示X是由a的第7~4位、 b的第3位和c的第2~0位拼接而 成的。
第3章 Verilog HDL的基本语法
10. 运算符的优先级 在一个表达式中出现多种运算符时, 运算的优先级顺序如下:
!a
!b
判断一个数是否为真时, 以0代表“假”, 以非0代表“真”。 假设: ABus = ′b0111; BBus = ′b0101;那么 ! ABus 0(假)
ABus || BBus 1(真)
ABus && BBus 1(真)
第3章 Verilog HDL的基本语法
3. 关系运算符
< > (小于) (大于) <= >= (小于等于) (大于等于)

EDA 第3章 Verilog设计入门

EDA 第3章 Verilog设计入门

www.themBiblioteka
5.注释符号

3.1.4 4选1多路选择器及其if语句描述方式

1.if_ else条件语句
执行过程:当if后的条件表达式为真时,执行赋值语句, 否则执行else后的If语句,如此数据的执行下去,直到完 成所有if语句。 同样,如果执行多条语句时,应该用begin-end块语句将 它们括起来。
5.并位操作和数字表达
(1)并位操作
大括号{}:并位运算符,将两个或多个信号按二进制位拼接起来, 作为一个信号使用。

(2)数字表示 表示二进制数的一般格式:
说明: 1. B表示二进制,O表示八进制,H表示十六进制,D表示十进制,且 不分大小写。 2. verilog2001规定可定义有符号二进制数,如8„b10111011和 8‟sb10111011是不一样的。前者是普通无符号数,后者是有符号数,最 高位1是符号。

3.1.2 4选1多路选择器及其case语句表述方式


1.reg型变量定义
(1)verilog中最常用的变量:寄存器型变量(reg)和网线型变量 (wire)。 (2)模块中功能描述涉及的所有信号都必须定义相应的变量类型, 如果没有在模块中显式地定义信号的类型,verilog默认定义为 wire型。 (3)当需要信号为寄存器型信号时必须使用reg进行显示定义,在 过程语句always@引导的顺序语句中规定必须是reg型变量。 (4)输入或双向口信号不能定义为寄存器型信号类型
(2)条件数值虽为整数1、2、3的表达式,但综合器自 动转化为case的变量{a,b}与对应数据类型的数值进 行比较判定。

说明:例3.8直接使用了加法算术操作符“+”的描述方式。

verilogHDL培训教程华为

verilogHDL培训教程华为

VerilogHDL培训教程——华为第一章:引言随着电子设计自动化(EDA)技术的不断发展,硬件描述语言(HDL)在数字电路设计领域扮演着越来越重要的角色。

VerilogHDL 作为一种主流的硬件描述语言,因其强大的功能、灵活的语法和广泛的应用范围,已成为数字集成电路设计工程师必备的技能之一。

本教程旨在帮助读者掌握VerilogHDL的基本概念、语法和设计方法,为华为等企业培养合格的数字电路设计人才。

第二章:VerilogHDL基础2.1VerilogHDL简介VerilogHDL是一种用于数字电路设计的硬件描述语言,它可以在多个层次上对数字系统进行描述,包括算法级、寄存器传输级(RTL)、门级和开关级。

VerilogHDL的设计初衷是为了提高数字电路设计的可重用性、可移植性和可维护性。

2.2VerilogHDL编程环境(1)文本编辑器:Notepad++、SublimeText等;(2)仿真工具:ModelSim、IcarusVerilog等;(3)综合工具:XilinxISE、AlteraQuartus等。

2.3VerilogHDL语法基础(1)关键字:VerilogHDL中的关键字具有特定含义,如module、endmodule、input、output等;(2)数据类型:包括线网类型(wire)、寄存器类型(reg)、整数类型(integer)等;(3)运算符:包括算术运算符、关系运算符、逻辑运算符等;(4)模块与端口:模块是VerilogHDL设计的基本单元,端口用于模块之间的信号传递;(5)行为描述与结构描述:行为描述用于描述电路的功能,结构描述用于描述电路的结构。

第三章:VerilogHDL设计流程3.1设计流程概述(1)需求分析:明确设计任务和功能要求;(2)模块划分:根据需求分析,将设计任务划分为若干个模块;(3)编写代码:使用VerilogHDL编写各个模块的代码;(4)仿真验证:对设计进行功能仿真和时序仿真,确保设计正确;(5)综合与布局布线:将VerilogHDL代码转换为实际电路,并进行布局布线;(6)硬件测试:在FPGA或ASIC上进行实际硬件测试。

3第3章Veri讲义log设计入门

3第3章Veri讲义log设计入门

3.1 组合电路的Verilog描述
3.1.2 4选1多路选择器及其case语句表述方式 6.赋值操作符 “<=”,只能用于顺序语句,不能用于assign引 导的并行语句 两种过程赋值操作: (1)阻塞式赋值“=”:语句执行结束,右侧表达式的值立刻赋给左侧 目标变量。 对于always引导的块语句中含有多条阻塞式赋值语句时,当执行 某一条语句时,其它语句不允许执行,被阻塞了,具有顺序执行的特点。
精品
3第3章Verilog设计入门
3.1 组合电路的Verilog描述
3.1.1 2选1多路选择器及其Verilog描述
3.1 组合电路的Verilog描述
3.1.1 2选1多路选择器及其Verilog描述
1)关键字module endmodule引导的完整的电路模块描述。 2)标识符MUX21a是用户自定义电路名,有其命名规则。 3)端口表的表述。 4)关键字input output描述电路外部端口的信号类型和流动方向。 5)关键字assign引导的赋值语句,条件语句的表述。
3.1 组合电路的Verilog描述
3.1.2 4选1多路选择器及其case语句表述方式 assign连续赋值语句的特点: ✓只能引导一条语句,多条语句要用多个assign引导; ✓并行性,当驱动表达式中的变量发生变化时,语句才被执行,否则不执行; ✓assign引导的语句中的所有信号为wire型; ✓同一目标变量名不允许有多个驱动源,例如以下表达方式不允许:
3.1 组合电路的Verilog描述
3.1.2 4选1多路选择器及其case语句表述方式
3.1 组合电路的Verilog描述
3.1.2 4选1多路选择器及其case语句表述方式 5.并位操作和数字表达

Verilog设计入门

Verilog设计入门

2.等式操作符
等式运算符


(==)和 (!=)不比较x和z位 (===)和(!==)将x 和 z 当确定值进 行比较 例:(3==4)=0;(3!=4)=1; (4’b1010==4’b1010)=1; (4’b0z1x===4’b0z1x)=1; (4’b0z1x==4’b0z1x)=0;
3.assign连续赋值语句
常量

下画线 - 下画线可以提高程序的可读性,只能用在具 体的数字之间。 例: 16’b1010_1011_1111_1010 //合法 8’b_0011_1010 //非法格式
3.1.2 4选1多路选择器及其case语句表述方式
练习3 写出2选1多路选择器Verilog描述(用always结构,
3.块语句begin_ end
4.case条件语句和4种逻辑状态
3.1.2 4选1多路选择器及其case语句表述方式
5.并位操作和数字表达
数字表达

常量 数字的表达方式 <位宽> <进制> <数字> 例: 8’b10101100 8’ha2 , 4’b1010 , 3’d5 位宽默认(32)位,进制默认(十进制)
3.2.6 Verilog的时钟过程表述的特点和规律 对于边沿触发型时序模块,遵循以下规律: 1.某信号被定义成边沿敏感时钟信号,则posedge A或
negedge A放敏感表中,但always结构块中不能再出现信
号A了。 2.若B被定义成对应于时钟的电平敏感异步控制信号,则除
posedge B或negedge B放敏感表中,always块中必须

____ muxtwo (out, __, __, __ ); input __, __, __; ____ out; reg out; always@ (sl or a or b) if (! sl) out=a; else out=b; ____

第三讲 verilog的基本语法

第三讲 verilog的基本语法
在Verilog中有两大主要数据类型:线网类型(wire)、寄存 器类型(reg)。 线网类型
包含下述不同种类的线网子类型。 wire, tri 用于连线的最常见的线网类型 wor, trior 线或 wand, triand 线与 trireg 此线网存储数值,用于电容节点的建模 tri1, tri0 用于线逻辑的建模,上拉或下拉驱动 supply0, supply1 supply0用于对“地”建模,supply1对电源建 模
如 a[1]
向量的常数型部分选择
如:a[3:1]
上述类型的任意的拼接运算结果
29
连续赋值语句举例
module F A _ D f (A, B, Cin, Sum, Cout ) ; input A, B, Cin; output Sum, Cout ; assign S u m = A ^B ^Cin; assign C o u t = (A & Cin) | (B & Cin) | (A & B) ; endmodule
8
下划线
下划线可以用来分割数的表达式以提高程序的可读 性,但不能用在位宽和进制处,只能用于具体的数字 之间 比如 16’b1010_1011_11111_000 //合法格式 8’b_0011_1011 //非法格式
9
负数
一个数字可以被定义成负数,只要在位宽表达式前 加一个减号 - 8’d5 // 合法格式 8’d-5 //非法格式
BpW和BpR电路图
31
寄存器(register)类型变量
寄存器( 寄存器(register)类型变量 ) register 型变量能保持其值,直到它被赋于新的值。 register 型变量常用于行为建模,产生测试的激励信号。 常用行为语句结构来给寄存器类型的变量赋值。

Verilog入门教程笔记

Verilog入门教程笔记
译码器(Decoder)
将编码后的信号还原成原始信号,常用于数据解压缩和控制信号生成。例如, 将3个输入信号译码成8个输出信号的3-8译码器。
多路选择器设计实例
多路选择器(Multiplexer)
根据选择信号从多个输入信号中选择一个输出,常用于数据选择和路由。例如,2选1 多路选择器、4选1多路选择器等。
明确CPU需要实现哪些指令集,具备哪些功能,以及达到什么样的性 能指标。
选择合适的架构
根据需求和性能指标,选择适合的CPU架构,如RISC或CISC。
设计指令集
根据所选架构,设计相应的指令集,包括指令格式、操作码、寻址方 式等。
规划寄存器组
设计寄存器组,包括通用寄存器、特殊功能寄存器等,以满足指令执 行和数据存储的需求。
03
组合逻辑电路设计
基本门电路实现方法
01
02
03
04
05
与门(AND Gate)或门(OR Gate) 非门(NOT Gate)与非门(NAND 或非门(NOR
Ga…
Gat…
实现逻辑与操作,当所有输 入为高电平时输出高电平。
实现逻辑或操作,当任一输 入为高电平时输出高电平。
实现逻辑非操作,将输入信 号取反后输出。
实现二进制数的减法运算,可 以通过加法器和取反器来实现。
实现二进制数的乘法运算,通 常采用逐位相乘再相加的方式 实现。
实现二进制数的除法运算,通 常采用逐位相除再减去的方式 实现,也可以使用更高效的算 法如SRT除法算法等。
04
时序逻辑电路设计
触发器类型及特点介绍
RS触发器
具有置0、置1和保持功能,是基 本存储单元。
数字电路的设计。
发展历程

VerilogHDL程序设计教程

VerilogHDL程序设计教程

Verilog HDL程序设计教程红色:做后有错。

粉红色:有疑问。

紫色:第二次仍有错。

绿色:文字错误第1章EDA技术综述 1.1引言1.摩尔定律1.2EDA的发展阶段1.阶段1.3设计方法与设计技术1.两种设计思路2.IP的含义3. IP核的分类。

4. SOC的含义1.4EDA的实现1.实现方法第2章EDA设计软件与设计流程 2.2EDA的设计流程1(FPGA的设计流程 2(综合的定义与类型。

3(仿真的类型第3章Verilog HDL设计初步(P18) 3.2完整的Verilog HDL设计1. 4位全加器的和4位计数器的程序。

2. 4位全加器的仿真程序(1.时间头文件 2.模块名(没有参数)3.参数规定(端口、延时、时钟)4.调用测试对象 5.设置参数(所有的输入端口都应初始化赋值)6.显示设置)。

3.3Verilog模块基本结构剖析 1.端口定义注意事项。

2.逻辑功能定义的几种方式第4章Verilog HDL语言要素(P32)4.1词法1.verilog中的四种基本逻辑状态4.2数据类型1.连线型(Net Type)的特点2.寄存器型(Register Type):定义、与连线型区别(赋值、保值)3.Parameter的使用格式4.3寄存器和存储器1.寄存器定义格式和标矢性2.存储器:定义、格式、位区选择方法4.3运算符1.等式与全等式的区别2.位拼接运算符第5章Verilog HDL行为语句(P45)5.2 Verilog HDL中的过程语句1.always过程语句格式。

2.initial过程语句格式。

5.3 块语句1.块语句。

2.用begin—end产生周期为10的个单位时间的方波.3.用fork—join产生周期为10的个单位时间的方波5.4赋值语句1.分类。

2.阻塞赋值和非阻塞赋值的区别5.5条件语句1.例5.11(模为60的BCD码加法计数器)2.case语句的三种表达形式5.6循环语句1.Verilog HDL中4种类型循环语句。

10第三章verilog入门

10第三章verilog入门

算术运算符
关系运算符 (双目运算符)
位运算符 (双目运算符)
~ & | ^ ^~ 或 ~^ ! && || {,} {{}}
按位取反 按位与 按位或 按位异或 按位同或 逻辑非 逻辑与 逻辑或 将多个操作数 拼接成为一个 操作数
缩位运算符( 单目运算符)
逻辑运算符 (双目运算符)
移位运算符( 双目运算符) 条件运算符( 三目运算符)
条件语句
根据条件表达式的真假, 确定下一步进行的运算。
(1) if (condition_expr) true_statement;
(2) if (condition_expr)true_statement; else fale_ statement;
(3) if (condition_expr1) true_statement1; else if (condition_expr2) true_statement2; else if (condition_expr3) true_statement3; …… else default_statement;
一、硬件描述语言 Verilog HDL 基础
1. 什么是硬件描述语言
HDL:Hardware Description Language
逻辑电路图 表示 逻辑表达式 复杂数字逻辑系统 易于存储和修改 编写说明文档 不同设计人员交流 被计算机识别 类似于高级 程序设计语 言的文本形 式来描述数 字系统硬件 的结构和行 为的语言。 逻辑仿真 逻辑综合
3. Verilog的基本语法规则
运算符
类型 符号 + * / 功能说明 二进制加 二进制减 2的补码 二进制乘 二进制除 类型 符号 > < >= <= == != & ~& | ~| ^ ^~ 或 ~^ >> << ?: 功能说明 大于 小于 大于或等于 小于或等于 相等 不相等 缩位与 缩位与非 缩位或 缩位或非 缩位异或 缩位同或 右移 左移 根据条件表达 式是否成立,选择 表达式

第3章 Verilog HDL语言基础

第3章 Verilog HDL语言基础

Verilog HDL语言基础--本章概述
Verilog的门级描述语句; Verilog编译指示语句; Verilog系统任务和函数; Verilog用户定义任务和函数和Verilog语言模块描 述方式。 本章内容对于初步掌握Verilog语言规则非常重 要。
--Verilog语言概述
Verilog HDL(以下简称Verilog)是一种硬件描述语 言,用于从算法级、门级到开关级的多种抽象设计层次的 数字系统建模。
--Verilog语言概述
Verilog HDL语言具有下述描述能力: 设计的行为特性 设计的数据流特性 设计的结构组成 包含响应监控和设计验证方面的时延和波形产生机制。 所有这些都使用同一种建模语言。此外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、 验证期间从设计外部访问设计,包括模拟的具体控制和运 行。
Verilog程序结构
--逻辑功能定义
逻辑功能定义是Verilog程序结构中最重要的部分, 逻辑功能定义用于实现模块中的具体的功能。 主要的方法有: 1.assign连续赋值语句 赋值语句是最简单的逻辑功能描述,用assign赋值语 句定义: 【例3.4】赋值语句用于逻辑功能定义的例子。 assign F=~((A&B)|(~(C&D)));
Verilog HDL硬件描述语言功能
4.提供显式语言结构指定设计中的端口到端口的时 延及路径时延和设计的时序检查。
5.可采用三种不同方式或混合方式对设计建模。这
些方式包括:
行为描述方式—使用过程化结构建模;
数据流方式—使用连续赋值语句方式建模;
结构化方式—使用门和模块实例语句描述建模。
Verilog程序结构

第一部分 Verilog数字设计基础

第一部分 Verilog数字设计基础
以上三种都属于行为描述,只有RTL级才与逻辑电路有明确的对应关系。
(4)门级(gate—level):描述逻辑门以及逻辑门之间连接的模型。 与逻辑电路有确定的连接关系,以上四种数字系统设计工程师必须掌 握。 (5)开关级(switch—level):描述器件中三极管和储存节点以及它们 之间连接的模型。
在美国,应用Verilog和VHDL的比例是80%和20%;日本和台湾 与美国相同;而在欧洲VHDL发展的比较好。
Verilog HDL适用的描述层次:
1、系统级(System) 部分可物理实现,主要用于仿真 2、算法级(Alogrthem)部分可物理实现,主要用于仿真 3、寄存器传输级(RTL)可完全物理实现,用于电路设计 4、逻辑级(Logic) 可完全物理实现,用于电路设计 5、门级(Gate) 可完全物理实现,用于电路设计 6、电路开关级(Switch)软件中不涉及,用于芯片设计
§1.6 Verilog HDL的设计流程
1.6 Verilog HDL的设计流程
方法:Top-Down(自顶向下)设计思想。
系统级设计
模块A
模块B
模块C
模块 A1
模块 A2
模块 A3
模块 B1
模块 B2
模块 B3
模块 C1
模块 C2
图1.3 Top-Down设计思想
电路图设计文件
HDL设计文件
注:它是目前应用最广泛的一种硬件描述语言。
目前在美国使用Verilog HDL进行设计的工程师大约有10万多人,全美国有200 多所大学讲授Verilog语言的设计方法。在台湾地区几乎所有著名大学的电子和计 算机工程系都讲授与Verilog有关的课程。
§1.2.2 VerilogHDL的产生及发展

使用Verilog的基本概念

使用Verilog的基本概念

3.1.3運算子(Operators) 運算元有三種形式:一元(Unary)、二元(Binary),和三元(Ter nary)。 一元運算子放在運算元之前,二元運算子放在二個運算元之間 ,三元運算子有兩個運算子分隔三個單元。
a=~b;
// ~ 是一個元運算子,b是運算元。
a=b && c; // && 是二元運算子,b和c是運算元。
large
Storage
weak
Driving
medium
Storage
small
Storage
highz
High impedance
程度 最強
最弱
表3-2 強度位準
目的是為了解決在實際邏輯電路中,兩個不同強度的驅動源 (Driver)衝突(Conflicts)的問題。
1.如果strong1和weak0皆在同一條線上,結果會是strong1。 (因為strong1的強度比較強)。
a
圖3-1 接線範例
接線最主要的關鍵字為“wire”,接線預設為一個位元,預設 值是z,(除非trireg接線,其預設值為x),接線的值由它的接線時,我們會用交替使用的關鍵字是Net或Wire,不過要注 意的是wire是Verilog的關鍵字,而net並不是。
23456 // 定義為32 bits 十進位數 ‘hc3 // 32 bits 十六進位數 ‘o21 // 32 bits 八進位數
x或z值 x是代表不確定的值,z是代表高阻抗。一個x在十六進制 代表四位元的不確定之值,八進制代表三位元的不確定之 值。一個z在十六進制代表四位元的高阻抗,八進制代表 三位元的高阻抗,八進制代表三位元的高阻抗。當最大位 元數為0、x、z時,該數以該數值延伸至最高位元。若最 大位元數為1時,該數以0延伸至最高位元。

Verilog入门训练3—二选一数据选择器

Verilog入门训练3—二选一数据选择器

在出现的编辑界面左侧右键,选择如下:
在“Insert Node or Bus”里选择“Node Finder…”
在弹出来的 “Node Finder” 中 ,首先 在“Filter” 中 选择 “Pins: Unassigned” , 然 后点 击“list” ,
在“Nodes Found”中会列出所有的引脚,第三步选择全部引脚(鼠标拉) ,点击“>>” , 最 后点击“OK”即可。在回到的“Insert Node or Bus”界面点击“OK” 。
得到:F=AS + BS
A S
0
&
0
0
F
&
0 0
B
0
3. 使用 Quartus 8.0 建立项目, 建立过程和注意事项见前两周的实验指导, 选择器件时随便 指定一个。这里的项目名称为 mux21。 (切记项目保存路径和实验过程中新建的文件保 存路径都不要出现中文) 4. 项目建好后,新建 Verilog 选择“File”——“New”——“Verilog HDL file” 。输入以下代码
A S
not_s
0
&
0
andcntrl1
0
F
&
0 0
B
0
andcntrl2
其他设置全部不要改变,回到 Verilog 代码,将原来的代码改写为下述代码:
代码主体部分中的 not、and 和 or 是 quartus 中已经定义好的基本门电路,代码相当于直接 调用。这点非常重要,意味着写好了一个电路的代码,如果它可以作为其他更复杂电路的一 部分, 直接调用即可。 这样不管怎么复杂的电路,都可以由一个一个的小电路 “堆砌” 而成, 这就是 Verilog 的核心思想, “建模” !更复杂的用法将在后面的学习中接触,这里不必深究。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


(3)赋值符号“<=” 说明:只能用于顺序语句中

• 改错:
module mux41a (a,b,c,d,s1,s0,y) input a,b,c,d,s1,s0; output y; reg a,b,c,d; always @ * begin : mux41 case({s1,s0}) 2'b1: y=a; 2'b2: y=b; 2'b3: y=c; 2'b4: y=d; endcase endmodule

Verilog中的四种基本数值:
0:即二进制数0、低电平、逻辑0、事件为伪 的判断结果; 1:即二进制数1、高电平、逻辑1、事件为真 的判断结果; z或Z:高阻态,或高阻值,还可用“?”表示。 x或X:不确定,或未知的逻辑状态。


3.assign连续赋值语句
由assign引导的赋值语句方式也称为数据流描述方式,即当等号右侧 的驱动表达式中的任一信号发生变化时,表达式被计算一遍,赋给左 侧的目标变量;

当一个模块中有多个assign语句时,不允许有多个不同赋值表 达式,即在同一个模块中,wire型变量不允许有多个驱动源。 如果驱动表达式为高阻态,是可以允许的。

2.等式操作符
(1)当关系为真时,等式操作的结果为1,当关系为假时,结果为0; (2) ==等于操作符,两个二进制数比较必须每一位都相等,结果才为1, 否则为0,且如果其中有的位是未知值X或高阻值z都判断为假,输出0; (3)全等比较操作符===,将两个比较值当成确定的值进行比较,当表述 相同为1.

3.1.3 4选1多路选择器及其数据流描述方式
数据流描述方式:即直接用布尔逻辑表达式来描述模块的功能。

1.按位逻辑操作符
如果两个操作数位矢量不同长度,综合器将自动根据最长位 的操作数的位数把较短的数据按右端补0对齐的规则进行运 算操作,如C和E的操作。


2.过程语句
模块中任何顺序语句都必须放在过程语句结构中,格式如下:

(1)过程语句首先需要用always@引导;
(2)要求将过程语句中所有的输入信号都放在敏感信号中;
(3)当过程语句的执行依赖于敏感信号的变化,当某一敏感信号变化时, 将启动此过程语句,于是always@引导的所有顺序语句被执行一遍,然 后返回起始端,进入等待状态; (4)所有过程语句本身都属于并行语句,而任一过程引导的语句结构都是 顺序语句;

3.赋值语句和条件操作符
关键词assign引导不同形式的赋值语句,如:
注:assign语句属于并行语句,即无论有多少行语句,都是同时执行。

3.赋值语句和条件操作符
条件操作符的一般格式:
说明: 当条件表达式的计算值为真时(数值等于1),选择并计算表达式1的值,否则 (数值等于0),选择并计算表达式2的值。

1.reg型变量定义
(1)verilog中最常用的变量:寄存器型变量(reg)和网线型变量 (wire)。 (2)模块中功能描述涉及的所有信号都必须定义相应的变量类型, 如果没有在模块中显式地定义信号的类型,verilog默认定义为 wire型。 (3)当需要信号为寄存器型信号时必须使用reg进行显示定义,在 过程语句always@引导的顺序语句中规定必须是reg型变量。 (4)输入或双向口信号不能定义为寄存器型信号类型

敏感信号的表达方式:
(1)用文字or连接所有敏感信号; (2)用逗号区分或连接所有的敏感信号; (3)省略形式; 试图通过选择性地列出敏感信号来改变逻辑设计 是无效的。

3.块语句begin_ end
(1)块语句begin_ end 本身没什么功能,仅限于在always@引导的过程 语句中使用,通常用来组合顺序语句,相当于括号的作用; (2)verilog规定,若某语句结构中仅包含一条语句,则无需显式定义块语句, 若含多条语句,包含语句结构,如case语句,也包含含有局部变量定义的单 条语句,则必须用begin_ end 将它们括起来;

4.case条件语句和4种逻辑状态
• Case语句是一种多分支条件语句,类似真值表的描述 方式,其表述方式有三种,case、casez(变量是高阻 值)和casex(变量是未知值)语句。 • Case语句一般格式如下:

• Case语句注意三项:
(1)表达式中的值必须在case以下列出的取值范围内,且数 据类型要匹配; 如例3.2的s1和s0只能对应2位二进制数; (2)与VHDL不同,verilog的case语句各分支表达式间未必 是并列关系,当多个分支取值同时满足表达式时,执行最 先满足的表达式分支,其余分支不检测; (3)除非所有条件句能完整覆盖case语句中的取值,否则最 末必须加上default语句。


3. 数据表示方式
例如:SEL==2 当等式不匹配时,verilog综合器会自动使其匹配;上例中将整数2变换成2’b10.
{S1,S0}=2‘b10,(SEL==2),(SEL==2’D2)
当所赋值大于某变量已定义的矢量位可能的值,综合器会将赋值符号右侧的数 据折算成二进制数,然后根据被赋值变量所定义的位数,向左截去多余位数。
L/O/G/O
第3章 Verilog 设计入门
Verilog设计入门
• 3.1 组合电路的Verilog描述 • 3.2 时序模块及其Verilog表述 • 3.3 二进制计数器及其Verilog设计

3.1 组合电路的Verilog描述
3.1.1 2选1多路选择器及其Verilog描述

Verilog的端口模式: (1)input:输入端口。数据只能由此端口被读入模块 实体中。 (2)output:输出端口。数据只能通过此端口从模块实 体向外流出,或者说可以将模块中的数据向此端口赋 值。 (3)inout:双向端口。即可以对此端口赋值,也可以 向此端口输入信号,如RAM的数据口、单片机的I/O口 等。
5.并位操作和数字表达
(1)并位操作
大括号{}:并位运算符,将两个或多个信号按二进制位拼接起来, 作为一个信号使用。

(2)数字表示 表示二进制数的一般格式:
说明: 1. B表示二进制,O表示八进制,H表示十六进制,D表示十进制,且 不分大小写。 2. verilog2001规定可定义有符号二进制数,如8‘b10111011和 8’sb10111011是不一样的。前者是普通无符号数,后者是有符号数,最 高位1是符号。
例如:Y定义为Y[1:0],当编译赋值语句Y<=9,Y是多少(用二进制表示?)

3.1.1 2选1多路选择器及其Verilog描述

1.模块表达
说明: 1. 任何可综合的基本模块都必须以关键词module开头,模块名属于标识符, 由设计者自定;
2. 模块名右侧括号称为模块端口列表,列出所有输入、输出或双向端口名,端 口名之间用逗号分开,括号外加分号,端口名也属于标识符; 3. 以endmodule关键词结束模块,旁边没有标点符号; 4. 不应用数字或中文定义实体名,也不应用与EDA软件工具库中以定义好的 关键词或元件作为模块名,如or2,不能用数字起头的模块名,如74LS160; 5. Verilog规定,所有关键词必须小写,如INPUT、MODULE都不是关键词, 标识符对大小写敏感,与VHDL不同。

5.注释符号

3.1.4 4选1多路选择器及其if语句描述方式

1.if_ else条件语句
执行过程:当if后的条件表达式为真时,执行赋值语句, 否则执行else后的If语句,如此数据的执行下去,直到完 成所有if语句。 同样,如果执行多条语句时,应该用begin-end块语句将 它们括起来。

4.wire定义网线型变量
端口变量被默认为网线型变量,assign语句中需要的端口以外的信 号 或连线性质的变量,必须用网线型变量显式定义。
wire和assign在表达信号及信号赋值性质上是一致的。如下:

用wire语句描述的4选1多路选择器:

4. 关键字 (Key word)是指verilog语言中预定义的有特色含义的英文词 语,如3.1中input、output、module、endmodule,assign等。 5. 标示符 (Identifier)是设计者在verilog程序中自定义的,用于表 示不同的名词的词语,如模块名、信号名、端口名等。例3.1中的 MUX21a、a和b等。 6. 规范的程序书写格式 verilog程序对书写格式十分宽松,可以一行写多条语句 (只要能写下),也可以分行书写。
2.端口语句、端口信号名和端口模式
端口或端口信号是模块与外部电路连接的通道,端口关键词有三种, 一般格式如下:
说明: 端口关键词旁的端口名可以有多个,端口名之间用逗号分开,最后加分号。

2.端口语句、端口信号名和端口模式
(1)单逻辑位,或标量位,如例中用input和output定义的端口a、 b、s、y; (2)逻辑矢量位,描述一个多信号端口或总线端口,使用第四句的 端口描述,其中msb和lsb分别表示信号矢量的最高和最低位数; 如信号C定义为: output [3:0] C;
www.thБайду номын сангаас
改错: Module 21a (A; B; S; Y) Input A;B;S; Output Y; Y=(S ? A;B) Endmodule;

3.1.2 4选1多路选择器及其case语句表述方式


7. 文件取名和存盘 (1)文件名可以由设计者任意给定,文件后缀扩展 名必须是“.V”,如adder.v; (2)对于QuartusⅡ,文件名与该程序的模块名必 须一致。如例3.1的文件名应该是MUX21a.v; (3)文件取名对大小写敏感; (4)verilog程序必须存入某文件夹中(要求非中 文文件夹名),不要存在根目录或桌面上。
相关文档
最新文档