Presentation is loading. Please wait.

Presentation is loading. Please wait.

第四阶段实验 Verilog HDL简介 1 Verilog描述的一般结构 2 Verilog HDL基础知识 3 设计举例

Similar presentations


Presentation on theme: "第四阶段实验 Verilog HDL简介 1 Verilog描述的一般结构 2 Verilog HDL基础知识 3 设计举例"— Presentation transcript:

1 第四阶段实验 Verilog HDL简介 1 Verilog描述的一般结构 2 Verilog HDL基础知识 3 设计举例
4 层次化设计方法举例

2 1 Verilog描述的一般结构 (1) Verilog HDL的组成部分 Verilog HDL PLI SDF
编程语言接口(PLI)是Verilog仿真器和一种编程语言(如C语言)之间路径和数据结构的接口; 标准延时格式(SDF:standard delay format)是模型反标延时信息用的文件格式。

3 Verilog程序由关键词module和endmodule进行定义。
module name (ports); port declarations data type declarations functionality timing specification endmodule Verilog HDL 大小写敏感

4 Verilog程序的组成部分 这5个组件的排列顺序是任意的,可以选择其中的一个或几个组件构成一个Verilog程序 endmodule
module Name, port list, port declarations(if ports present) parameters(optional), Declarations of wires, regs and other variables Data flow statements ( assign ) Instantiation of lower level modules Tasks and functions Always and initial blocks, All behavioral statements go in these blocks.

5 简单Verilog实例: module gate1(F,A,B,C,D); input A,B,C,D; output F;
assign F=~(A & B)|(B & C & D); endmodule

6 2 Verilog HDL基础知识 空白符:空格、TAB键、换行符及换页符 注释行:单行注释、多行注释 标识符取名规则:
必须是由字母或下划线开头,长度小1024字符 后续部分可以是字母、数字、下划线 以反斜杠“\”开头,以空白符结尾的任何字符序列 标识符区分大、小写 关键词:Verilog HDL 内部已使用的词。关键词都是小写。

7 四种逻辑状态: 逻辑零、逻辑非、低电平 1 逻辑1、逻辑真、高电平 x或X 不确定的逻辑状态 z或Z 高阻态

8 常量及其表示方法 三类常量:整数、实数、字符串 1.整数 基数格式表示:
+/-< 位宽><基数符号><按基数表示的数值> 0~9, a~f, A~F, x, X, z, Z, ?, _ H or h 十六进制 0~9, _ D or d 十进制 0~7, x, X, z, Z, ?, _ O or o 八进制 0, 1, x, X, z, Z, ?, _ B or b 二进制 合法的表示值 基数符号 数制

9 2.实数 两种表示方法:十进制记数法 例:10.2 科学记数法 例:3.1e2 3.字符串:为两个双引号“ ”之间的字符, 字符串不允许跨行

10 变量的数据类型 1.连线类型(Net-type) 2.寄存器类型( Register-type) 3.标量与矢量
标量:线宽只有一条的连线,位数只有一位的寄存器 矢量:线宽大于一条的连线,位数大于一位的寄存器 4.标量类矢量与矢量类矢量 标量类矢量:可以按位、或部分位赋值的矢量 矢量类矢量:不能按位、或部分位赋值的矢量,只 能作为一个统一的整体进行赋值

11 运算符(9类) +, -, *, /, % ~, &, |, ^, ^~ or ~^ &, ~&, |,~|, ^,^~ or ~^
?: 条件运算符 { } 连接运算符 <<, >> 逻辑移位运算符 ==, !=, ===, !== 相等与全等运算符 <, >, <=, >= 关系运算符(双目) !, &&, || 逻辑运算符 &, ~&, |,~|, ^,^~ or ~^ 缩位运算符(单目) ~, &, |, ^, ^~ or ~^ 位运算符 +, -, *, /, % 算术运算符 所含运算符 运算符分类

12 运算符的优先级 ! ~ 最高优先级 * / % + - << >> < <= > >=
! ~ * / % << >> < <= > >= == != === !== & ~& ^ ~^ | ~| && || ?: 最高优先级 最低优先级

13 Verilog 基本门级元件 多输入门:and、nand、or、nor、xor、xnor 只有单个输出,1个或多个输入
多输出门:not、buf 允许有多个输出,但只有一个输入 三态门:bufif0、bufif1、notif0、notif1 有一个输出,一个数据输入和一个控制输入

14 Verilog 基本门级元件(原型) 在VerilogHDL语言中已预定义了门级原型 buf n-output buffer
and n-input AND gate nand n-input NAND gate or n-input OR gate nor n-input NOR gate xor n-input exclusive OR gate xnor n-input exclusive NOR gate buf n-output buffer not n-output inverter bufif0 tri-state buffer; Io enable bufif1 tri-state buffer; hi enable notif0 tri-state inverter; notif1 tri-state inverter;

15 3 Verilog的设计举例 例1 用Verilog HDL语言描述一个上升沿D触发器。 module dff (q,clk,data);
output q; input clk,data; reg q; clk) q = data; endmodule 句尾分号 模块名 端口类型说明 数据类型说明 功能描述 (行为描述)

16 Verilog HDL行为描述方法 过程块的组成: 过程语句@(事件控制敏感表) begin (:块名) 块内局部变量说明
一条或多条过程赋值或高级程序语句 end

17 在always下面使用的高级程序语句 (1)if-else 条件语句 if (条件表达式) 块语句1
…….. else if (条件表达式n) 块语句n else 块语句n+1

18 (2)case 语句 case (敏感表达式) 值1:块语句1 值2:块语句2 …… 值n: 块语句n default:块语句n+1 endcase (3)for循环语句 for (表达式1;表达式2;表达式3)块语句

19 例2 用Verilog HDL语言描述2选1的数据选择器。
module mux2_1(out1, a, b, sel) ; output out1; input a, b; input sel; assign out1= sel ? b : a; endmodule 数据流描述 例2 用Verilog HDL语言描述2选1的数据选择器。 module mux2_1(out1, a, b, sel) ; output out1; input a, b; input sel; assign out1=(sel & b) | (~sel & a); endmodule 数据流描述 a b sel out1

20 行为描述 module mux2_1(out1, a, b, sel) ; output out1; input a, b;
input sel; reg out1; or a or b) begin case (sel) 1’b0 : out1 = a; 1’b1 : out1 = b; endcase end endmodule module mux2_1(out1, a, b, sel) ; output out1; input a, b; input sel; reg out1; or a or b) begin if (sel) out1 = b; else out1 = a; end endmodule

21 module mux2_1(out1,a,b,sel);
output out1; input a,b,sel; not (sel_, sel); and (a1, a, sel_); and (b1, b, sel); or (out1, a1, b1); endmodule 结构描述

22 小结: 行为描述方式: 数据流描述方式: 结构描述方式: 一般使用下述语句描述,可以对组合、时序逻辑电路建模。 1)initial 语句
2)always 语句 数据流描述方式: 一般使用assign语句描述,主要用于对组合逻辑电路建模。 结构描述方式: 一般使用Primitive(内部元件)、自定义的下层模块对电路描述。主要用于层次化设计中。

23 4 层次化设计方法举例 例3 请用层次化的方法设计一个4位全加器,框图如下: 实现方案如下: 4-bit Adder (add4.v)
(addbit.v)

24 1. 底层模块——1位全加器实例: module addbit (a, b, ci, sum, co); input a, b, ci;
output sum, co; wire a, b, ci, sum, co, n1, n2, n3; xor (n1, a, b,); xor (sum, n1, ci); and (n2, a, b); and (n3, n1, ci); or (co, n2, n3); endmodule 一些Verilog原型(Primitive) 列出结构化的元件 并按网表连接

25 模块的调用方法 基本方式: 模块名 调用名(端口名表项) 调用方式一:位置对应调用方式 调用方式二:端口名对应调用方式
基本方式: 模块名 调用名(端口名表项) 调用方式一:位置对应调用方式 调用方式二:端口名对应调用方式 调用方式三:存在不连接端口的调用方式 (未连PORT允许用(,)号空出其位置)

26 2. 顶层模块调用底层模块实例-通过位置关联 Order must match exactly
models add4 (result, carry, r1, r2, ci); output [3:0] result; output carry; input [3:0] r1, r2; input ci; wire [3:0] r1, r2, result; wire ci, carry, c1, c2, c3; addbit u1 (r1[0], r2[0], ci, result[0], c1); addbit u2 (r1[1], r2[1], c1, result[1], c2); addbit u3 (r1[2], r2[2], c2, result[2], c3); addbit u4 (r1[3], r2[3], c3, result[3], carry); endmodule module addbit (a, b, ci, sum,co); input a, b, ci; output sum, co; endmodule Structural or behavioral model

27 here names must match exactly
3. 顶层模块调用底层模块实例-通过名字关联 module add4 (result, carry, r1, r2, ci); output [3:0] result; output carry; input [3:0] r1, r2; input ci; wire [3:0] r1, r2 , result; wire ci, carry, c1, c2 c3; addbit u0 (.co(c1) , .sum(result[0]), .ci(ci),.b(r2[0]),.a(r1[0])); addbit u1 (.co(c2) , .sum(result[1]), .ci(c1),.b(r2[1]),.a(r1[1])); addbit u2 (.co(c3) , .sum(result[2]), .ci(c2),.b(r2[2]),.a(r1[2])); addbit u3 (.co(carry), .sum(result[3]), .ci(c3),.b(r2[3]),.a(r1[3])); endmodule here names must match exactly 注意:该描述应严格保持名字的一致!

28 PORT连接的规则 module top; *input:符号内部总是net,外部可连net和reg数据类型
*output:其内部可为net或reg,而外部必须连各种net数据类型 *inouts:它的内外都用net且只能连各种net数据类型 module top; module dev (a, b, c); inputs outputs net reg or net net reg or net c b a z y x inouts

29 例4 四位异步二进制计数器的设计 (原理图+Verilog混合设计)
4-bit counter (asy_count4.v) T触发器 (T_FF.v) D触发器 (D_FF.v) 反相器 (not)

30 例4 四位异步二进制计数器的设计 (原理图+Verilog混合设计)

31 Ripple Carry Counter Top-level Design Block
module ripple_counter (q, clk, reset); output [3:0] q; input clk,reset; T_FF tff0 (q[0], clk, reset); T_FF tff1 (q[1], q[0], reset); T_FF tff2 (q[2], q[1], reset); T_FF tff3 (q[3], q[2], reset); endmodule

32 Flip-flop T-FF module T_FF (q, clk, reset); output q;
input clk, reset; wire d; D_FF dff0(q, d, clk, reset); not n1(d, q); endmodule

33 Flip-flop D-FF module D_FF (q, d, clk, reset); output q;
input d, clk, reset; reg q; reset or negedge clk) if (reset) q=1'b0; else q=d; endmodule


Download ppt "第四阶段实验 Verilog HDL简介 1 Verilog描述的一般结构 2 Verilog HDL基础知识 3 设计举例"

Similar presentations


Ads by Google