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

Slides:



Advertisements
Similar presentations
计算机系统综合课程设计 Verilog HDL语言初步 主讲 杨全胜 东南大学计算机科学与工程学院 P.1.
Advertisements

《 E D A 技 术》 课 程 教 学 讲授:伍宗富 湖南文理学院电气与信息工程学院 2017年3月10日星期五.
4.1 Verilog HDL入门 Verilog HDL程序模块结构 模块端口定义 模块内容 设 计 模 块 I/O说明
Introduction to Verilog
实验四 利用中规模芯片设计时序电路(二).
第4章 VHDL设计初步.
5.4 顺序脉冲发生器、 三态逻辑和微机总线接口 顺序脉冲发生器 顺序脉冲 计数型 分类 移位型.
Chapter 5 Sequential Logic Circuit
數位邏輯設計與實習 ch04 組合邏輯電路設計.
Combinational Logic 組合邏輯
水煮FPGA 传统FPGA设计流程简介.
一、實習目的 1、瞭解各種閂鎖器之特性。 2、瞭解各種正反器之特性。 3、瞭解各種正反器之邏輯功能。 4、瞭解正反器之應用。
第10章 Verilog操作符 学习内容: 熟悉Verilog语言的操作符.
VHDL數位電路實習與專題設計 文魁資訊-UE301
触发器和时序电路分析 刘鹏 浙江大学信息与电子工程学院 March 30, 2017 ZDMC.
时序电路 计数器分析及设计 刘鹏 浙江大学信息与电子工程学院 April 10, 2018 EE141
Chapter 5 Verilog 硬體描述語言
Chapter 5 Verilog硬體描述語言
數位邏輯設計-邏輯閘 以LabView實作驗證理論
邏輯設計.
计算机系统综合课程设计(2) Verilog HDL语言初步 主讲 杨全胜 东南大学计算机科学与工程学院 P.1.
Ch01-2 Verilog語法 資料流(DataFlow)設計 行為(Behavior)設計
第17章 Verilog中的高级结构 学习内容: 任务和函数的定义和调用 怎样使用命名块 怎样禁止命名块和任务 有限状态机(FSM)及建模.
EDA技术 廖义奎.
VHDL 硬體描述語言 數位電路設計實務 第四章 VHDL 的語言結構.
时序电路 计数器分析及设计 刘鹏 浙江大学信息与电子工程学院 March 31, 2016 EE141
第四阶段实验 ISP器件的设计与应用 一、实验目的 二、实验内容与要求 三、ISP器件的开发流程 四、EDA Pro2K实验系统介绍
欢迎参加VHDL培训 VHDL培训教程 浙江大学电子信息技术研究所 电子设计自动化(EDA)培训中心
数字系统设计复习 Digital System Design Summary
FPGA设计.
Danny Mok Altera HK FAE AHDL培训教材 Danny Mok Altera HK FAE 2018/12/9 P.1.
Verilog硬件描述语言基础.
第14章 其它DSP设计库 14.1 总线控制库 14.2 复数信号库 14.3 Gates库 14.4 状态机函数库
Programmable Logic Architecture Verilog HDL FPGA Design
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
JTAG INTERFACE SRAM TESTER WITH C-LCM
数字系统设计 Digital System Design
实验四 组合逻辑电路的设计与测试 一.实验目的 1.掌握组合逻辑电路的设计 方法 2.学会对组合逻辑电路的测 试方法.
语法进阶.
时序电路设计 刘鹏 浙江大学信息与电子工程系 Apr. 24, 2011 EE141
时序逻辑电路实验 一、 实验目的 1.熟悉集成计数器的功能和使用方法; 2.利用集成计数器设计任意进制计数器。 二、实验原理
第二章 Java语言基础.
数字集成电路设计入门 --从HDL到版图 于敦山 北大微电子学系.
CPU结构和功能.
精简指令集(RISC)CPU的构造原理和设计方法
触发器和时序电路分析 刘鹏 浙江大学信息与电子工程学院 March 29, 2016 ZDMC.
Verilog HDL 硬件描述语言 刘鹏 浙江大学信息与电子工程系 Mar. 6, 2012
第五章 VHDL主要描述语句.
学习目标 1、什么是字符集 2、字符集四个级别 3、如何选择字符集.
第14章 对验证的支持 学习内容 理解Verilog文本输出 理解不同的读取仿真时间的系统函数 理解 Verilog文件I/O功能.
计算机学院 数字逻辑实验的要求.
计算机EDA设计 教 程 北航计算机学院 艾明晶.
设计描述 从16位乘法器的设计谈起.
或閘的特性與符號 所有的輸入均為0,輸出才為0 ▲ 圖 3-1 或閘的邏輯概念 ▲ 圖 3-2 或閘的電路符號.
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
设计示例一 用门级结构描述D触发器:.
资金时间价值概述 主讲人 任晓宇 去除PPT模板上的--无忧PPT整理发布的文字 首先打开PPT模板,选择视图,然后选择幻灯片母版
數位邏輯設計 VHDL.
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
第九节 赋值运算符和赋值表达式.
长春理工大学 电工电子实验教学中心 数字电路实验 数字电路实验室.
实验二 带进位控制8位算术逻辑运算实验 带进位控制8位算术逻辑运算: ① 带进位运算 ② 保存运算后产生进位
ASP.NET实用教程 清华大学出版社 第4章 C#编程语言 教学目标 教学重点 教学过程 2019年5月5日.
学习目标 1、了解基本运算符 2、运算符优先级.
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
數位邏輯 第9章循序邏輯 9-1 正反器 9-2 暫存器 9-3 計數器.
FPGA组合逻辑 王安然.
Verilog HDL 基本语法 STEP 2016/12/3.
按键处理部分 王安然.
编译原理实践 6.程序设计语言PL/0.
Presentation transcript:

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

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

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

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.

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

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

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

常量及其表示方法 三类常量:整数、实数、字符串 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 二进制 合法的表示值 基数符号 数制

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

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

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

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

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

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;

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

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

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

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

例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

行为描述 module mux2_1(out1, a, b, sel) ; output out1; input a, b; input sel; reg out1; always @(sel 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; always @(sel or a or b) begin if (sel) out1 = b; else out1 = a; end endmodule

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 结构描述

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

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

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) 列出结构化的元件 并按网表连接

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

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

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 注意:该描述应严格保持名字的一致!

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

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

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

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

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

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