Verilog硬件描述语言基础.

Slides:



Advertisements
Similar presentations
声明 本课件供《虚拟仪器技术》、《自动测试技术》等相关课程教师授课使用与参考. 教师可根据课程需要和实际情况在此课件基础上增删内容
Advertisements

102-1 Under-Graduate Project FFT
第2章 SOPC硬件开发环境及流程.
自衛消防編組任務職責 講 義 This template can be used as a starter file for presenting training materials in a group setting. Sections Right-click on a slide to add.
D、結構化技術 主要的結構化技術 結構化程式設計 (Structured Programming)
第4章 VHDL设计初步.
Chapter 5 Sequential Logic Circuit
Combinational Logic 組合邏輯
YARN & MapReduce 2.0 Boyu Diao
第三章 组合逻辑电路 第一节 组合电路的分析和设计 第二节 组合逻辑电路中的竞争与冒险 第三节 超高速集成电路硬件描述语言VHDL
水煮FPGA 传统FPGA设计流程简介.
Operating System Concepts 作業系統原理 Chapter 3 行程觀念 (Process Concept)
数字系统设计 I Digital System Design I
第10章 Verilog操作符 学习内容: 熟悉Verilog语言的操作符.
VHDL數位電路實習與專題設計 文魁資訊-UE301
触发器和时序电路分析 刘鹏 浙江大学信息与电子工程学院 March 30, 2017 ZDMC.
第5章 程序结构.
第4章 处理器(CPU) 4.1 引言 4.2 逻辑设计的一般方法 4.3 建立数据通路 4.4 一个简单的实现机制 4.5 多周期实现机制.
VHDL數位電路實習與專題設計 文魁資訊-UE301
Chapter 5 Verilog 硬體描述語言
Basis基本操作、使用者 管理與權限設定
Chapter 5 Verilog硬體描述語言
Ch01-2 Verilog語法 資料流(DataFlow)設計 行為(Behavior)設計
第17章 Verilog中的高级结构 学习内容: 任务和函数的定义和调用 怎样使用命名块 怎样禁止命名块和任务 有限状态机(FSM)及建模.
EDA技术 廖义奎.
VHDL 硬體描述語言 數位電路設計實務 第四章 VHDL 的語言結構.
版权所有,禁止未经授权的商业使用行为 何宾 Tel: 北京中教仪装备技术有限公司.
EDA技术实用教程 第1章 概 述.
The Processor: Datapath and Control
EDA原理及应用 何宾
EDA原理及应用 何宾
第四阶段实验 ISP器件的设计与应用 一、实验目的 二、实验内容与要求 三、ISP器件的开发流程 四、EDA Pro2K实验系统介绍
第5章 結構化分析與設計-流程塑模.
Chapter 3 行程觀念 (Process Concept)
微程序控制器 刘鹏 Dept. ISEE Zhejiang University
欢迎参加VHDL培训 VHDL培训教程 浙江大学电子信息技术研究所 电子设计自动化(EDA)培训中心
数字系统设计复习 Digital System Design Summary
C 語言簡介 - 2.
Danny Mok Altera HK FAE AHDL培训教材 Danny Mok Altera HK FAE 2018/12/9 P.1.
第14章 其它DSP设计库 14.1 总线控制库 14.2 复数信号库 14.3 Gates库 14.4 状态机函数库
Programmable Logic Architecture Verilog HDL FPGA Design
使用VHDL設計--Moore Machine
重點 資料結構之選定會影響演算法 選擇對的資料結構讓您上天堂 程式.
JTAG INTERFACE SRAM TESTER WITH C-LCM
软件工程 Software Engineering
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2013年5月28日
语法进阶.
时序电路设计 刘鹏 浙江大学信息与电子工程系 Apr. 24, 2011 EE141
数字集成电路设计入门 --从HDL到版图 于敦山 北大微电子学系.
精简指令集(RISC)CPU的构造原理和设计方法
触发器和时序电路分析 刘鹏 浙江大学信息与电子工程学院 March 29, 2016 ZDMC.
第五章 VHDL主要描述语句.
第一次上机安排 第六周 第七周 周一晚(提高1、2,通信001~012) 周二上(通信014~085) 周四上(通信086~154)
高性能计算与天文技术联合实验室 智能与计算学部 天津大学
软件工程 第四章 软件设计 软件过程设计技术与工具.
第14章 对验证的支持 学习内容 理解Verilog文本输出 理解不同的读取仿真时间的系统函数 理解 Verilog文件I/O功能.
计算机学院 数字逻辑实验的要求.
虚 拟 仪 器 virtual instrument
计算机EDA设计 教 程 北航计算机学院 艾明晶.
设计示例一 用门级结构描述D触发器:.
數位邏輯設計 VHDL.
5. Combinational Logic Analysis
第七章 软件测试 Software Testing
第6章 详细设计 Detailed Design
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2009年10月22日
FPGA组合逻辑 王安然.
Verilog HDL 基本语法 STEP 2016/12/3.
按键处理部分 王安然.
Programmable Logic System Design
Presentation transcript:

Verilog硬件描述语言基础

简介 HDL——Hardware Description Language

简介 发展概况 Verilog: 1983年Gateway Design Automation为其模拟器开发的硬件建模语言; 专用、用于模拟、仿真 1990 OVI(Open Verilog International) 1995 成为IEEE标准Std1364-1995 可用于模拟、仿真、综合的硬件建模

简介 Verilog 的特征 支持多级建模方式 算法、行为级建模 寄存器传输(RTL)级建模 门级建模 开关级建模

简介 支持多种建模方式 行为功能建模方式 结构建模方式 数据流建模方式

简介 层次描述,在描述中显式进行时序建模 提供了强大的硬件建模能力,内嵌的任务和函数 类C语言,易学 已成为业界标准 可通过PLI与C接口 提供原语描述能力

简介 EDA工具对Verilog的支持良好 Simulation Tools Verilog-XL: 业界的黄金模拟器 VCS(ViewLogic) NC-Verilog NC_Sim(兼容Verilog、VHDL混合结构的描述形式) Synthesis Tools Synopsys DesignCompiler VeriBest、 Ambit 、 RTL-Compiler Magma Emulation Tools QuickTurn、 Palladium ModelSource、 Vstation Arms、 Motorola

简介 混合建模能力

二、 Verilog的总体结构 1 总体描述方式

二、 Verilog的总体结构 模块的基本描述形式: module module_name(input/output_port list); Declarations: input/output_port declarations; reg,wire,parameter,function,task,UDP…. Statements: initial statements always statements Gate/Module instantiation UDP instantiation assign statements endmodule

二、 Verilog的总体结构 描述方式说明

二、 Verilog的总体结构 行为功能描述

二、 Verilog的总体结构 数据流描述方式

一、Verilog HDL描述的层次 1、结构化、层次式描述 2、行为、功能描述 3、电路级描述

Verilog类C语言的特征 行为描述时可采用类C的语言结构 赋值语句结构与C的语言结构相似 算术、逻辑操作与C的语言相似 if…else case for while 赋值语句结构与C的语言结构相似 算术、逻辑操作与C的语言相似

三、Verilog语言要素 模块的基本描述形式: module module_name(input/output_port list); Declarations: input/output_port declarations; reg,wire,parameter,function,task,UDP…. Statements: initial statements always statements Gate/Module instantiation UDP instantiation assign statements endmodule

三、Verilog语言要素 1、标识符 不能使用保留字作标识符

三、Verilog语言要素 2、数据类型 2.1 verilog 的允许基本逻辑值 0: 逻辑0/真 1: 逻辑1/假 x: 未知() 0: 逻辑0/真 1: 逻辑1/假 x: 未知() z: 高阻

三、Verilog语言要素 2.2 常量类型 整型 b、o、d、h分别表示二进制数、八进制数、十进制数、十六进制数 实型 字符串型 2.2 常量类型 整型 b、o、d、h分别表示二进制数、八进制数、十进制数、十六进制数 用数字表示数据宽度 3´b101表示3位二进制数101 8´hdf表示8位16进制数df 实型 字符串型

三、Verilog语言要素 2.3 信号类型 线网类型 寄存器类型

三、Verilog语言要素 线网类型 wire tri wor wand trior triand trireg tri1 tri0 supply0 supply1

三、Verilog语言要素 wand: 线与

三、Verilog语言要素 寄存器类型 reg 并不一定代表设计中实际的寄存器 reg数据类型说明时要注意数据长度问题 integer数据类型说明时要注意数据长度问题 integer数据默认长度为64位

三、Verilog语言要素 存储器说明及操作 说明方式: reg [msb:lsb] memory_name[upper:lower]; reg [15:0] mem1[255:0]; mem1定义为深度为256的16位存储器

三、Verilog语言要素 存储器说明及操作 存储器赋值方式: 单个存储单元的赋值 reg [15:0] mem1[255:0]; mem1[I] = 16’h8c; mem1[8] = 16’ha9; 使用系统任务对存储器赋值 $readmemb(“filename”, memory_name); $readmemh(“filename”, memory_name);

存储器说明及操作 reg [7:0] mem1[4:0]; $readmemb(“memory1”,mem1); memory1内容如下: 01001001 10110110 11010001 10011100 11000111

三、Verilog语言要素 2.4 参数说明 parameter 参数名 = 值; parameter BUS_SIZE = 16; 2.4 参数说明 parameter 参数名 = 值; parameter BUS_SIZE = 16; parameter filename = “/export/home/joe/my_file” 使用参数的优点: 增加可读性; 可修改性好; 设计的可重用性好

四、表达式 4.1 操作数 寄存器类型数据 线网类型数据

四、表达式 4.2 操作符 算术操作 + - * / % << >> 逻辑操作 && || ! ~ ^ 4.2 操作符 算术操作 + - * / % << >> 逻辑操作 && || ! ~ ^ & | ~ ^ ^~ ~^ < = = >= <= != 条件操作 ?:

五、 行为建模 5.1 建模机制 initial 语句 always 语句

五、 行为建模 5.2 always语句 always @(敏感信号表) 描述体 always #timing 描述体 always 描述体 敏感信号表的完整性问题: 敏感信号不完整会导致逻辑模拟结果错误; 信号过多会导致逻辑模拟速度慢、逻辑模拟结果错误。

五、 行为建模 5.3 时序控制 延时控制 事件控制

五、 行为建模 事件控制 边沿触发事件控制 电平触发事件控制 @(event) Procedure_statements @(posedge clk) Current_State = Next_State; @(negedge clk) Current_State = Next_State; 电平触发事件控制 @(信号表) Procedure_statements @(a or b) Sum = a ^ b ; wait (表达式) Procedure_statements wait (DataReady) Data = Bus ; wait ( Sum >= 22) Sum = 0 ;

五、 行为建模 描述语句块 顺序语句块:语句块内的语句按书写的次序执行; begin 描述语句1; 描述语句2; 。。。 描述语句n; end

五、 行为建模 描述语句块 并行语句块:语句块内的语句并行执行; fork 描述语句1; 描述语句2; 。。。 描述语句n; join

五、 行为建模 描述语句块 顺序语句块内可嵌套并发语句块; 并发语句块内可嵌套顺序语句块。

五、 行为建模 分支、条件语句 if …else及其嵌套语句 case语句 case 、casex、casez 基本语法结构与C语言类似

五、 行为建模 循环语句 forever 循环 forever procedural_statement repeat 循环 repeat (loop_number)

五、 行为建模 循环结构 while循环语句 while (condition) for循环语句 procedural_statement for循环语句 for (initial_assignment;condition;step_assignment)

五、 行为建模 function定义 function [range] function_id; input_declarations other declarations procedural_statements endfunction function适合描述组合逻辑块

五、 行为建模 function [BUS_SIZE-1:0] function_example; 函数调用 input [BUS_SIZE-1:0] Din; integer k; begin for (k=0;k<BUS_SIZE-1; k=k+1) function_example[BUS_SIZE-k] = Din[k]; end endfunction 函数调用 func_id(exp1,…expn); reg [BUS_SIZE-1:0] din,dout; dout=function_example(din);

五、 行为建模 Task定义 task task_id; input_declaration other declaration procedural statements endtask task适合于描述时序任务

五、 行为建模 一个建模实例

五、 行为建模

六、UDP定义 6.1 UDP定义 primitive UDP_name(Output_Name,List_of_inputs); output_declaration declaration of List_of_inputs [other declarations | initial 语句] table List of table entries endtable endprimitive

六、UDP定义 6.2 组合逻辑UDP 表中规定了不同的输入组合和相对应的输出值。 6.3 时序电路UDP 电平触发的触发器的描述 沿触发的触发器的描述

六、UDP定义

六、UDP定义

六、UDP定义

六、UDP定义 ?: 0、1、x b : 0, 1 - : 输出保持 (AB): 由A变到B r: 上跳变沿, 与(01)相同 - : 输出保持 (AB): 由A变到B r: 上跳变沿, 与(01)相同 f: 下跳变沿, 与(10)相同 p: (01)、(0x)、(x1)的任一种 n : (10)、(1x)、(x0)的任一种

七、系统任务和系统函数 7.1 显示和写入任务 $display $displayb $displayo $displayh $write $writeb $writeo $writeh 7.2 探测任务 $strobe $strobeb $strobeo $strobeh

七、系统任务和系统函数 7.3 监测任务 $monitor $monitorb $monitoro $monitorh 7.3 监测任务 $monitor $monitorb $monitoro $monitorh 7.4 文件输入、输出任务 文件的打开、关闭 $fopen $fclose 从文件中读取数据 $readmemb $readmemh

七、系统任务和系统函数 7.4 模拟控制任务 $finish; 退出模拟器,返回操作系统 7.4 模拟控制任务 $finish; 退出模拟器,返回操作系统 $stop; 模拟器挂起。 任何TestBench中的激励码须包含下述形式语句: initial begin …… $stop; $finish; end

七、系统任务和系统函数 7.5 值转储(VCD)任务 $dumpfile(file_name):指定VCD文件名 $dumpvars(level, module_name); $dumpall; $dumplimit(number); $dumpon; $dumpoff;

八、与模拟有关的论题 8.1 信号驱动强度

八、与模拟有关的论题 8.2 竞争问题 出现竞争的原因: Nonblocking assignment with nonedelay; 8.2 竞争问题 出现竞争的原因: Nonblocking assignment with nonedelay; Concurrent always statements; Signals are assigned in multiple always statements or in multiple nonblocking assignments.

八、与模拟有关的论题 8.3 如何避免竞争

How to write a good verilog code HDL Coding Style How to write a good verilog code

HDL Coding Style Objective Readable Modifiable Reuseable Optimal Result in Synthesis Fast Simulation 保证综合前后逻辑模拟结果的一致性

HDL Coding Style Basic Coding Practices Coding for Portability Guidelines for Clocks and Reset/Set Coding for Synthesis How to Partition a Design Designing with Memories Coding Profiling

Overview of the Coding Guidelines Simple structure Basic type (VHDL only) Simple Clocking Scheme Consistent coding style,consistent naming conventions, consistent structure for process and state machines Regular partitioning schema, all module outputs registered and each module roughly the same size Easy to read, modify,reuseable Usage of parameters

Basic Coding Practices 尽可能多使用function描述、少用Task描述 尽量少用循环结构 注意变量、信号、模块、块命名的协调 注意端口描述按一定次序、端口连接的方式

Basic Coding Practices 命名规则 常数名字大写且有确定意义 信号名、变量名、端口名小写 参数名大写 时钟名以clk、clock开头 低电平有效信号名为:信号名_n rst、reset/set为复/置为信号名 模块名应有意义 提高可读性 不使用保留字

Basic Coding Practices 模块端口描述及其引用时的连接 建议模块端口描述按次序进行: 输入信号 输出信号 clocks clocks resets resets enables enables other control signals other control signals data/address signals data 描述大的模块连接结构时,采用端口名、信号名相对应的连接方式,提高可读性和可修改性 .端口名(信号名)

Coding for Portability Objective Technology-independent Compatible with various simulation tools Compatible with various synthesis tools Easily translated from Verilog to VHDL Easily combined with C

Coding for Portability Don’t use hard-coded numeric valus a poor coding style: wire [7:0] my_in_bus; wire [7:0] my_out_bus; 建议采用: parameter BUS_SIZE = 8 wire [BUS_SIZE-1:0] my_in_bus; wire [BUS_SIZE-1:0] my_out_bus; Use technology-independent libraries 描述尽量避免与综合、模拟工具相关

Guidelines for Clocks and Resets 最简单的设计 单个的全局时钟 上/下跳变沿触发器 优点 简单、易懂、易分析

Guidelines for Clocks and Resets Avoid Mixed Clock Edges Difficulty in timing analysis (the duty cycle is a critical issue in timing analysis, in addition to the clock frequency itself); Difficulty in scan_based test; Difficulty to maintain a design.

Guidelines for Clocks and Resets Avoid Use Gated Clock 使用内部产生时钟要特别注意: 设计的可测性受到严重影响(扫描测试难度大); 应将内部产生时钟模块描述放在设计描述的领层; 绝对禁止将内部产生时钟模块描述作为宏单元的子模块。

Guidelines for Clocks and Resets

Guidelines for Clocks and Resets Make sure your design are controlled only by a simple reset/set signals; 避免条件置复/位; 时序逻辑器件的置复/位不应放在initial描述块中(可综合性、保证综合前和综合后的模拟结果相同)

Coding for Synthesis Objective Performance  Testability  Synthesis  Simplification and Timing Analysis 保证综合前、后的逻辑模拟结果的一致

Coding for Synthesis 时序元件问题; always @(敏感信号/变量表)完整性问题; 组合电路的反馈问题; Blocking/Nonblocking赋值语句的使用问题; if…else/ case描述的选择; FSM的描述

Coding for Synthesis 1 时序元件问题: 避免不必要的Latch; 1 时序元件问题: 避免不必要的Latch; 触发器的初始赋值(reset/set)不应在initial描述块内定义,而应该在其功能描述中加以定义。 组合电路避免出现反馈回路

Coding for Synthesis 避免不必要的Latch: 在组合逻辑描述中,保证: 所有的if…else及其嵌套结构、case、casex、casez结构是满的描述 变量、信号的赋值在每一个分支中都应有明确的指定; if…else及其嵌套结构本身是满的; case、casex、casez必须包含default分支;

Coding for Synthesis

Coding for Synthesis 2 @(敏感信号/变量表)问题 2 @(敏感信号/变量表)问题 敏感信号/变量表必须完整,以保证综合前、后的模拟结果一致,但不相关的信号的加入则会降低模拟速度。 对组合块,每一个出现在赋值语句右边且没有在块内被预先赋值的信号应列入表中; 对时序块,1)时钟控制信号必须出现在敏感表中; 2)若为异步置/复位,则相应的置/复位信号必须列入敏感表。

Coding for Synthesis 3 Blocking and NonBlocking Assignments 对于组合逻辑块描述,建议采用阻塞赋值语句; 对于时序块描述,建议采用非阻塞赋值语句。

Coding for Synthesis

Coding for Synthesis

Coding for Synthesis 4 if…else 及其嵌套结构与case语句 尽量少用嵌套的if…else结构; 级联的二选一开关 采用case、casex、casez结构 多路选择开关

Coding for Synthesis

Coding for Synthesis 4 FSM描述 Mealy机 NS = f( PS, INPUT);  OUTPUT = h(PS, INPUT);  posedge Clk : PS <= NS;

Coding for Synthesis 描述方式: 组合块: always @(INPUT or PS ) 时序块: begin NS = f (PS, INPUT); OUTPUT = h(PS, INPUT); end 时序块:

Partitioning for Synthesis Objective Better Synthesis Results  Faster Compile Runtimes  Ability to Use Simple Strategy to meet Timing Constraints  Optimal Design

Partitioning for Synthesis Guidelines Register all output signals of the module  Separate modules that have different design goals  Complete combinational logic paths in a single module, and specially avoid glue logic  Considering resource sharing  Separate asychronous logic from synchronous logic  Separate blocks controlled by different clocks Separate memory from random logic

Partitioning for Synthesis Register all output signals of the module

Partitioning for Synthesis Separate modules that have different design goals

Partitioning for Synthesis combinational logic paths in a single module

Partitioning for Synthesis

Partitioning for Synthesis

Partitioning for Synthesis FSM Partition Objective: High performance Method: Cascade partition Master-Slave Partition

Partitioning for Synthesis

Partitioning for Synthesis

Partitioning for Synthesis