VerilogHDL复杂数字系统设计-本.ppt_第1页
VerilogHDL复杂数字系统设计-本.ppt_第2页
VerilogHDL复杂数字系统设计-本.ppt_第3页
VerilogHDL复杂数字系统设计-本.ppt_第4页
VerilogHDL复杂数字系统设计-本.ppt_第5页
已阅读5页,还剩502页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2020 3 27 南通大学电子信息学院 1 VerilogHDL复杂数字系统设计 讲解人 邵蔚电话公地点 12 617室E mail ntsw 2020 3 27 南通大学电子信息学院 2 什么是复杂的数字逻辑系统 嵌入式微处理机系统数字信号处理系统高速并行计算逻辑高速通信协议电路高速编码 解码 加密 解密电路复杂的多功能智能接口门逻辑总数超过几万门达到几百甚至达几千万门的数字系统 2020 3 27 南通大学电子信息学院 3 为什么要设计复杂数字逻辑系统 对嵌入式系统的性能要求越来越高 通用的微处理机不能满足要求 硬件结构是提高系统总体性能的关键 软件只能提高系统的灵活性能 军用系统的实时 高可靠 低功耗要求 系统的功能专一 但对其各种性能要求极高 降低系统的设计和制造成本 2020 3 27 南通大学电子信息学院 4 设计数字系统的基本方法 传统的 线路图现代的 硬件描述语言 2020 3 27 南通大学电子信息学院 5 数字信号处理 计算 程序算法和硬线逻辑的基本概念 数字信号处理计算 Computing 算法和数据结构编程语言和程序体系结构硬线逻辑 2020 3 27 南通大学电子信息学院 6 数字信号处理 现代电子系统设备中广泛使用了数字信号处理专用集成电路 用于数字信号传输中所必需的滤波 变换 加密 解密 编码 解码 纠检错 压缩 解压缩等操作 处理工作从本质上说都是数学运算 完全可以用计算机或微处理器来完成处理工作 2020 3 27 南通大学电子信息学院 7 计算 Computing Computing这门学问研究怎样系统地有步骤地描述和转换信息 实质上它是一门覆盖了多个知识和技术范畴的学问 其中包括了计算的理论 分析 设计 效率和应用 它提出的最基本的问题是什么样的工作能自动完成 什么样的不能 摘自Denningetal ComputingasaDiscipline CommunicationofACM January 1989 2020 3 27 南通大学电子信息学院 8 算法和数据结构的基本概念 算法就是解决特定问题的有序步骤 数据结构就是解决特定问题的相应的模型 2020 3 27 南通大学电子信息学院 9 编程语言和程序 编程语言 程序员利用一种由专家设计的既可以被人理解 也可以被计算机解释的语言来表示算法问题的求解过程 这种语言就是编程语言 程序 由编程语言所表达的算法问题的求解过程就是 常用的编程语言 C Pascal Fortran Basic或汇编语言 2020 3 27 南通大学电子信息学院 10 计算机体系结构和硬线逻辑 计算机体系结构 是一门讨论和研究通用的计算机中央处理器如何提高运算速度性能的学问 硬线逻辑 由与门 或门 非门 触发器 多路器等基本逻辑部件造成的逻辑系统 2020 3 27 南通大学电子信息学院 11 数字信号处理系统的分类 非实时系统 信号处理的工作是可以事后进行 实时系统 信号处理的工作必须在规定的很短的时间内完成 2020 3 27 南通大学电子信息学院 12 数字信号处理系统的实现 非实时系统 通用的计算机和利用通用计算机改装的设备 主要工作量是编写 C 程序 输入 输出数据大多为文本 实时系统 信号处理专用的微处理器为核心的设备 主要工作量是编写汇编程序 输入 输出数据大多为数据流 直接用于控制 2020 3 27 南通大学电子信息学院 13 实时数字信号处理系统实现中存在的技术难点 算法问题 电路实现问题 如果由最快的信号处理专用的微处理器为核心的设备也来不及处理如此大量的数据怎么办呢 2020 3 27 南通大学电子信息学院 14 解决办法 算法问题 研究并行快速算法 电路实现问题 设计并研制具有并行结构的数字和计算逻辑结构和相应的接口逻辑 两个方向 FPGA 专用集成电路 2020 3 27 南通大学电子信息学院 15 第一部分VerilogHDL入门 2020 3 27 南通大学电子信息学院 16 1 1数字电子系统CAD技术的发展 三个阶段 1 20世纪60年代 80年代初期CAD ComputerAidedDesign 阶段 2 20世纪80年代初期 90年代初期CAE ComputerAidedEngineering 阶段 3 20世纪90年代以来EDA ElectronicDesignAutomation 阶段 第1章Verilog复杂数字设计综述 2020 3 27 南通大学电子信息学院 17 数字系统EDA技术就是以计算机为工具 设计者在EDA软件平台上 用硬件描述语言 HardwareDescriptionLanguage 完成设计文件 然后由计算机自动地完成逻辑编译 化简 分割 综合 优化 布局 布线和仿真 直至对于特定目标芯片的适配编译 逻辑映射和编程下载等工作 EDA技术的出现 极大地提高了电路设计的效率和可行性 减轻了设计者的劳动强度 20世纪90年代 国际上电子和计算机技术较先进的国家 一直在积极探索新的电子电路设计方法 并在设计方法 工具等方面进行了彻底的变革 取得了巨大成功 在电子技术设计领域 可编程逻辑器件 如CPLD FPGA 的应用已得到普及 这些器件可以通过软件编程而对其硬件结构和工作方式进行重构 从而使得硬件的设计可以如同软件设计那样方便快捷 2020 3 27 南通大学电子信息学院 18 1 2硬件描述语言VerilogHDL 1 2 1什么是VerilogHDLVerilogHDL是硬件描述语言的一种 它是目前应用最广泛的硬件描述语言之一 用于数字系统的设计 设计者用它进行数字逻辑系统的仿真模拟 时序分析 逻辑综合 2020 3 27 南通大学电子信息学院 19 1 2 2VerilogHDL的发展历史 1989Cadence公司购买VerilogHDL的版权 1990VerilogHDL公开发表 1980 sVerilog XL诞生 1990有关VerilogHDL的全部权利都移交给OVI OpenVerilogInternational 组织 1995VerilogIEEE1364标准公开发表 1999模拟和数字都适用的Verilog标准公开发表 2001VerilogIEEE1364 2001标准公开发表 VerilogIEEE1364 2005 2020 3 27 南通大学电子信息学院 20 VHDL 比VerilogHDL早几年成为IEEE标准 语法 结构比较严格 因而编写出的模块风格比较清晰 比较适合由较多的设计人员合作完成的特大型项目 一百万门以上 2020 3 27 南通大学电子信息学院 21 VerilogHDL和VHDL的比较 VHDL发展的较早 语法严格 而VerilogHDL是在C语言的基础上发展起来的一种硬件描述语言 语法较自由 VHDL的书写规则比Verilog烦琐一些 但Verilog自由的语法也容易让少数初学者出错 国外电子专业很多会在本科阶段教授VHDL 在研究生阶段教授Verilog 从国内来看 VHDL的参考书很多 而VerilogHDL的参考书相对较少 这给学习VerilogHDL带来一些困难 2020 3 27 南通大学电子信息学院 22 两者建模能力的比较 2020 3 27 南通大学电子信息学院 23 1 2 3VerilogHDL的优点VerilogHDL是一种通用的硬件描述语言 易学易用 具有C语言编程经验的设计者很容易学习和掌握 VerilogHDL允许在同一个电路模型内进行不同抽象层次的描述 设计者可以从开关 门级 RTL和行为等各个层次对电路模型进行定义 VerilogHDL是在全球最大的EDA供应商Cadence公司的扶持下针对EDA工具开发的HDL语言 绝大多数流行的综合工具都支持VerilogHDL 这是VerilogHDL成为设计者的首选语言的重要原因之一 VerilogHDL的编程风格简洁明了 高效便捷 所有的制造厂商提供用于VerilogHDL综合之后的逻辑仿真的元件库 使用VerilogHDL进行设计 即可在更广泛的范围内选择委托制造的厂商 在ASIC设计领域 VerilogHDL占有明显的优势 2020 3 27 南通大学电子信息学院 24 1 3复杂数字系统的设计方法 1 3 1复杂数字逻辑系统嵌入式微处理机系统数字信号处理系统高速并行计算逻辑高速通信协议电路高速编码 解码 加密 解密电路复杂的多功能智能接口门逻辑总数超过几万门达到几百甚至达几千万门的数字系统 2020 3 27 南通大学电子信息学院 25 1 3 2传统的设计方法 查用器件手册 选用合适的微处理器和电路芯片 设计面包板和线路板 调试 定型 设计复杂的系统 几十万门以上 极其困难 2020 3 27 南通大学电子信息学院 26 1 3 3VerilogHDL设计法 选用合适的EDA仿真工具 选用合适电路图输入和HDL编辑工具 逐个编写可综合HDL模块 逐个编写HDL测试模块 逐个做HDL电路逻辑访真 编写HDL总测试模块 做系统电路逻辑总仿真 选用合适的基本逻辑元件库和宏库租用或购买必要的IP核 选用合适的综合器 进行综合得到门级电路结构 布局布线 得到时延文件 后仿真 定型 FPGA编码或ASIC投片 2020 3 27 南通大学电子信息学院 27 采用VerilogHDL输入法时 由于VerilogHDL的标准化 可以很容易把完成的设计进行移植到不同厂家的不同芯片 采用VerilogHDL输入法最大的优点是其与工艺无关性 2020 3 27 南通大学电子信息学院 28 1 3 4软核 固核和硬核 软核 SoftCore 经过验证的 可综合的 实现后门数在5000门以上的HDL模型固核 FirmCore 在某FPGA器件上实现的 经过验证 5000门以上的电路结构编码文献硬核 HardCore 以某种工艺实现的 经过验证 5000门以上的电路结构版图掩膜 2020 3 27 南通大学电子信息学院 29 1 4典型设计流程 Top Down设计思想 系统级设计 模块A 模块B 模块C 模块A1 模块A2 模块A3 模块B1 模块B2 模块B3 模块C1 模块C2 2020 3 27 南通大学电子信息学院 30 2020 3 27 南通大学电子信息学院 31 用EDA设计数字系统的典型流程 电路图设计 HDL设计 电路功能仿真 HDL功能仿真 逻辑综合 时序验证 优化 布局布线 布线后门级仿真 工艺文件 电路制造版图或FPGA码流文件 设计要求 实现 2020 3 27 南通大学电子信息学院 32 1 5硬件描述语言的发展趋势 当前集成电路的设计面临一些问题 如设计重用 知识产权和内核插入 高层次综合和混合模型的总和 验证包括仿真验证和形式验证等自动验证手段 深亚微米效应 等等 这些问题给EDA技术的发展提出了新的要求 因此硬件描述语言的改进和发展非常必要 2020 3 27 南通大学电子信息学院 33 1 6设计资源 设计工具CadenceSYNOPSYSMentorGraphics ModelSimSynplicity SynplifyXILINX ISEAltera Quartus华大 ZeniFPGA芯片厂商XILINXAlteraLatticeEDA网站 2020 3 27 南通大学电子信息学院 34 第2章Verilog的模块 2020 3 27 南通大学电子信息学院 35 2 1概述 VerilogHDL能够描述电路的5种抽象级别 1 系统级 用高级结构实现外部性能的模型2 算法级 用高级结构实现算法运行的模型3 RTL级 RegisterTransferLevel 描述数据在寄存器之间的流动和如何处理 控制这些数据流动的模型4 门级 描述逻辑门及其互相之间连接的模型5 开关级 描述器件中三极管和存储节点以及互相之间连接的模型 VerilogHDL既是一种行为描述语言 也是一种结构描述语言 即 描述电路功能行为的模型或描述元器件或较大部件互连的模型均可以用VerilogHDL实现 2020 3 27 南通大学电子信息学院 36 2020 3 27 南通大学电子信息学院 37 VerilogHDL特别适合算法级和RTL级的模型设计提供了一套完整的组合逻辑基本元件 双向通路和电阻器件的原语可建立MOS器件的电荷分享和衰减动态模型VerilogHDL与C语言的风格很类似 2020 3 27 南通大学电子信息学院 38 一个完整系统的VerilogHDL模型由若干个VerilogHDL模块构成 每个模块又由若干个子模块构成 Verilog模型 模块 Verilog的基本设计单元 层次化的模型 2 2Verilog的模块 2020 3 27 南通大学电子信息学院 39 例2 1a2选1modulemuxtwo out a b sl inputa b sl outputout regout always sloraorb if sl out a elseout b endmodule sl out a b 2020 3 27 南通大学电子信息学院 40 例2 1b4选1多路选择器modulemux4 to 1 out i0 i1 i2 i3 s1 s0 outputout inputi0 i1 i2 i3 s1 s0 regout always s1ors0ori0ori1ori2ori3 begincase s1 s0 2 b00 out i0 2 b01 out i1 2 b10 out i2 2 b11 out i3 default out 1 bx endcaseendendmodule s1 out i0 i1 i3 i2 s0 2020 3 27 南通大学电子信息学院 41 例2 2a2选1modulemuxtwo out a b sl inputa b sl outputout notu1 nsl sl and 1u2 sela a nsl and 1u3 selb b sl or 2u4 out sela selb endmodule 2020 3 27 南通大学电子信息学院 42 例2 2b4选1多路选择器modulemux4 to 1 out i0 i1 i2 i3 s1 s0 outputout inputi0 i1 i2 i3 inputs1 s0 wires1n s0n wirey0 y1 y2 y3 notnot0 s1n s1 notnot1 s0n s0 andand0 y0 i0 s1n s0n andand1 y1 i1 s1n s0 andand2 y2 i2 s1 s0n andand3 y3 i3 s1 s0 oror0 out y0 y1 y2 y3 endmodule 2020 3 27 南通大学电子信息学院 43 分析 例2 1模块属于行为描述 例2 2模块属于门级描述 通过综合 行为描述的模块可能转化为门级描述的模块 2020 3 27 南通大学电子信息学院 44 例2 3加法器 moduleadder count sum a b cin input 2 0 a b inputcin outputcount output 2 0 sum assign count sum a b cin endmodule说明 求a b cin的和sum count为进位 2020 3 27 南通大学电子信息学院 45 例2 4比较器 modulecompare equal a b input 1 0 a b outputequal assignequal a b 1 0 endmodule 2020 3 27 南通大学电子信息学院 46 例2 5三态驱动器 moduletrist2 out in enable outputout inputin enable bufif1mybuf out in enable endmodule 2020 3 27 南通大学电子信息学院 47 例2 6三态驱动器 moduletrist1 sout sin ena outputsout inputsin ena mytritri inst out sout in sin enable ena endmodulemodulemytri out in enable outputout inputin enable assignout enable in bz endmodule 2020 3 27 南通大学电子信息学院 48 例2 7测试 include muxtwo v modulet regain bin select regclock wireoutw initialbeginain 0 bin 0 select 0 clock 0 endalways 50clock clock always posedgeclock beginain random 2 3bin random 2 endalways 10000select select muxtwom out outw a ain b bin sl select endmodule 2020 3 27 南通大学电子信息学院 49 第3章模块的结构 数据类型 变量和基本运算符号 2020 3 27 南通大学电子信息学院 50 模块 block 由两部分组成 端口定义 接口描述 模块内容 逻辑功能描述 3 1模块的结构 例如 moduleblock a b c d inputa b outputc d assignc a b assignd aendmodule a b c d 2020 3 27 南通大学电子信息学院 51 3 1 1模块的端口定义格式 module模块名 口1 口2 例 modulemytri out in enable outputout inputin enable assignout enable in bz endmodule调用 mytritri inst sout sin ena mytritri inst out sout enable ena in sin 2020 3 27 南通大学电子信息学院 52 3 1 2模块的内容 1 I O说明例如 inputk1 k2 in0 input 7 0 data output 3 0 out inout 15 0 db 2 内部信号的说明例如 reg 2 0 a wireb c d 2020 3 27 南通大学电子信息学院 53 3 功能定义 有3种方法实现逻辑功能 1 用assign声明语句assigna b c assignf x y z 2 用实例元件and 2u1 q a b 3 用always块always posedgeclkorposedgeclr beginif clr q 0 elseif en q d end 2020 3 27 南通大学电子信息学院 54 要点所有过程块 initial always 连续赋值语句assign和实例应用都是并行的 过程块内的语句是顺序执行的 连续赋值语句assign和实例应用都可以独立于过程块存在于模块的功能定义部分 2020 3 27 南通大学电子信息学院 55 3 2数据类型及其常量和变量 Verilog共有19种数据类型 仅介绍4种 reg型wire型integer型parameter型Verilog中有常量 变量之分 它们分别属于19种数据类型 2020 3 27 南通大学电子信息学院 56 3 2 1常量数字 二进制 八进制 十进制 十六进制 例 8 b001100118 h3316 d486 o17 2020 3 27 南通大学电子信息学院 57 要点 x代表不定值 z 代表高阻值负数的表达正确用下划线 增加可读性位数缺省时的数值 2020 3 27 南通大学电子信息学院 58 参数型 parameter 定义常量例 parameterdata width 8 addr width 16 parametercounter 8 1024 2020 3 27 南通大学电子信息学院 59 要点 模块应用时 可通过参数的传递改变已经规定的值 在一个模块中改变另一个模块的参数时 要用defparam命令 2020 3 27 南通大学电子信息学院 60 3 2 2变量 网络数据类型 wire tir 表示实体之间的物理连接 该类型的变量不能存储值 必须受到驱动器 门或assign语句 的驱动 wire 受单个驱动源的驱动 tir 受多个驱动源的驱动 2020 3 27 南通大学电子信息学院 61 wire型wire型变量可以是任何方程式的输入信号 也可以是assign语句或实例元件的输出 例 wirea b c wire 4 0 db 下表说明了wire型变量在多驱动情况时的结果 2020 3 27 南通大学电子信息学院 62 表 2020 3 27 南通大学电子信息学院 63 reg型 寄存器数据类型通过赋值语句可以改变reg型变量的值 always块中的每一个信号都必须定义为reg型 reg型信号通常是寄存器或触发器的输出 但并不一定总是 例 reg 7 0 data regq0 q1 q2 q3 reg 15 0 addr 2020 3 27 南通大学电子信息学院 64 reg型的扩展 memory型 存储器通过扩展reg型变量的地址实现例 reg 7 0 memp 1023 0 reg 7 0 memd 255 0 memory型不可综合 2020 3 27 南通大学电子信息学院 65 3 3运算符和表达式 1 基本的算术运算符 加法运算符 正 减法运算符 负 乘法运算符 除法运算符 模运算符 2020 3 27 南通大学电子信息学院 66 2 位运算符 按位取反 单目运算符 2020 3 27 南通大学电子信息学院 67 第4章运算符 赋值语句 结构说明语句 2020 3 27 南通大学电子信息学院 68 4 1逻辑运算符 结果为真 假 逻辑与 双目运算符 逻辑或 双目运算符 逻辑非 单目运算符 2020 3 27 南通大学电子信息学院 69 结果为真 假 4 2关系运算符 2020 3 27 南通大学电子信息学院 70 结果为真 假 等于 不等于 只在操作数为0或1的时候结果确定 当输入为x z时结果不确定 等于 不等于 输入为x z时 结果也确定 4 3等式运算符 2020 3 27 南通大学电子信息学院 71 4 4移位运算符 左移n位 a n 均以0补空 2020 3 27 南通大学电子信息学院 72 4 5位拼接运算符 信号1的某几位 信号2的某几位 信号n的某几位 例如 a b 7 0 c 15 8 2020 3 27 南通大学电子信息学院 73 4 6缩减运算符 所谓缩减运算就是对单个操作数进行 与 或 非 递推运算 使结果变成1位 例如 reg 3 0 b regc c 设b 4 b0110 则c 0 2020 3 27 南通大学电子信息学院 74 4 7优先级别 2020 3 27 南通大学电子信息学院 75 4 8关键词IEEEStd1364 2001IEEEstandardVeriloghardwaredescriptionlanguage 2020 3 27 南通大学电子信息学院 76 2020 3 27 南通大学电子信息学院 77 4 9 1赋值语句1 非阻塞赋值非阻塞赋值符 例如 f a 说明 块结束后才完成赋值 因此f不是立即被赋值 在always块描述的时序电路中应使用非阻塞赋值 4 9赋值语句和块语句 2020 3 27 南通大学电子信息学院 78 例4 1always posedgeclk beginb a c b end赋值在always块结束后执行 其功能是移位寄存器 a clk b c Q D CLK Q D CLK 2020 3 27 南通大学电子信息学院 79 例4 2always posedgeclk beginb a c b endb a立即执行 然后c b执行 即c等于a 得到的电路为 a clk b c Q D CLK 2020 3 27 南通大学电子信息学院 80 2 阻塞赋值阻塞赋值符 例如 f a 说明 赋值完成后块才结束 f立即被赋值 在always块描述的时序电路中使用阻塞赋值可能产生错误 一般用在组合逻辑电路中 2020 3 27 南通大学电子信息学院 81 4 9 2块语句1 顺序块格式 begin 块名块内声明语句语句1 语句2 语句n end特点 块内语句顺序执行 如参数声明 reg integer real型变量声明 2020 3 27 南通大学电子信息学院 82 例如 begina b c a end 2020 3 27 南通大学电子信息学院 83 2 并行块格式 fork 块名块内声明语句语句1 语句2 语句n join特点 块内语句并行执行 块内各语句的顺序是任意的 2020 3 27 南通大学电子信息学院 84 3 块名 为块取一个名字可以在块内定义局部变量可以被其它语句调用 2020 3 27 南通大学电子信息学院 85 作业1 P 38 3 5P 49 2 3 2020 3 27 南通大学电子信息学院 86 第5章条件语句 循环语句 块语句和生成语句 2020 3 27 南通大学电子信息学院 87 1 if语句例 if a 1 out a 5 1条件语句 if else语句 2020 3 27 南通大学电子信息学院 88 2 if else语句例 if a b q0 0 elsebeginq0 0 q1 1 end 2020 3 27 南通大学电子信息学院 89 3 if elseif语句例如 if x 5 a b elseif x 3 a c elseif x 7 a d 2020 3 27 南通大学电子信息学院 90 If语句的嵌套 注意 else总是与前面最近的if配对例如 c a b 补码表示 判是否有溢出 if sign a 0 2020 3 27 南通大学电子信息学院 91 5 2case语句 多分支选择语句 一般形式 case 控制表达式 endcasecasez 控制表达式 endcasecasex 控制表达式 endcasecase表达式 语句 默认项 语句 2020 3 27 南通大学电子信息学院 92 例如 reg 2 0 in reg 7 0 out case in 3 b000 out 8 b11111110 3 b001 out 8 b11111101 3 b010 out 8 b11111011 3 b011 out 8 b11110111 3 b100 out 8 b11101111 3 b101 out 8 b11011111 3 b110 out 8 b10111111 3 b111 out 8 b01111111 default out 8 bxxxxxxxx endcase 2020 3 27 南通大学电子信息学院 93 重要说明 分支表达式的值必须互不相同 只允许有一个default语句 所有表达式要有位宽 且必须相等 要有default分支语句 否则产生逻辑锁存 2020 3 27 南通大学电子信息学院 94 5 5循环语句 5 5 1forever语句格式 forever语句 或语句组 用于产生周期性波形 必须用在initial块中 2020 3 27 南通大学电子信息学院 95 5 5 2repeat语句 重复执行 次数由表达式决定 格式 repeat 表达式 语句 或语句组 常量 2020 3 27 南通大学电子信息学院 96 5 5 3while语句格式 while 表达式 语句 或语句组 功能 若表达式为真 或非0 则执行 语句 若表达式为假 或为0 就结束 2020 3 27 南通大学电子信息学院 97 5 5 4for语句格式 for 表达式1 表达式2 表达式3 语句 或语句组 循环变量初值循环条件增量其中循环条件 教材中称结束条件 表达式为真 或非0 则循环 2020 3 27 南通大学电子信息学院 98 例如 begin init memreg 7 0 tempi for tempi 0 tempi memsize tempi tempi 1 memory tempi 0 end 2020 3 27 南通大学电子信息学院 99 例统计rega中1的个数 begin count1sreg 7 0 tempreg count 0 for tempreg rega tempreg tempreg tempreg 1 if tempreg 0 1 count count 1 2020 3 27 南通大学电子信息学院 100 第6章结构语句 系统任务 函数语句和显示系统任务 2020 3 27 南通大学电子信息学院 101 第6章结构语句 系统任务 函数语句和显示系统任务 我们将学习4种结构说明语句 initialalwaystaskfunction任何过程块都属于以上4种结构说明语句 2020 3 27 南通大学电子信息学院 102 6 1 1initial语句格式 initialbegin语句1 语句2 语句n end 6 1结构说明语句 2020 3 27 南通大学电子信息学院 103 说明 一个程序模块可以有多个initial块 每个initial块只在仿真开始时执行一次 多个initial块是并行的运行的 作用之一 变量的初始化 作用之二 产生激励波形 用于测试文件 2020 3 27 南通大学电子信息学院 104 6 1 2always语句格式 always说明 always语句在仿真时不断重复执行 而后面的语句是否执行取决于 时序控制 条件是否满足 缺少 时序控制 将产生死锁 时序控制条件即触发条件 包括边沿触发 posedge negedge 电平触发 单个或多个 一个模块中可以有多个always块 2020 3 27 南通大学电子信息学院 105 回顾例2 1a2选1modulemuxtwo out a b sl inputa b sl outputout regout always sloraorb if sl out a elseout b endmodule sl out a b 2020 3 27 南通大学电子信息学院 106 例 8位数据寄存器modulehardreg d clk q inputclk input 7 0 d output 7 0 q reg 7 0 q always posedgeclk q d endmodule 2020 3 27 南通大学电子信息学院 107 例 8位具有清0端的数据寄存器modulehardreg d clk clrb q inputclk clrb input 7 0 d output 7 0 q reg 7 0 q always posedgeclkorposedgeclrb beginif clrb q 8 b00000000 清0elseq d 置数endendmodule 2020 3 27 南通大学电子信息学院 108 6 2task和function说明语句 任务和函数说明语句作用 把大的程序分解成比较小的程序 不同地方多次使用的相同程序段设计成task或function 能够简化程序 2020 3 27 南通大学电子信息学院 109 6 2 1task和function的区别函数只能和主模块共用一个仿真时间单位 任务可以有自己的仿真时间单位 任务可以调用函数 函数不能调用任务 函数必须要有输入变量 任务可以没有可以 函数有返回值 任务没有返回值 2020 3 27 南通大学电子信息学院 110 6 2 1task说明语句1 任务的定义 task endtask2 任务的调用 端口1 端口12 端口n 2020 3 27 南通大学电子信息学院 111 例如 modulecompare1 a b c d e f rega b c d e f always aorborc my task a b c d e f taskmy task inputa b c outputd e f begind 0 e 0 f 0 if a b d 1 if a c e 1 if b c f 1 endendtaskendmodule 2020 3 27 南通大学电子信息学院 112 例6 1 交通信号灯设计 moduletraffic lights regclock red amber green parameteron 1 off 0 red tics 350 amber tics 30 green tics 200 initialred off initialamber off initialgreen off 2020 3 27 南通大学电子信息学院 113 alwaysbeginred on light red red tics amber on light amber amber tics green on light green green tics endtasklight outputcolor input 31 0 tics beginrepeat tics posedgeclock 等待上升沿color off endendtaskalwaysbegin 100clock 0 100clock 1 endendmodule 2020 3 27 南通大学电子信息学院 114 6 4function 调用函数能够返回一个用于表达式的值 1 定义函数的语法function函数名 beginendendfunction 缺省时 返回值的类型为1位reg型 2020 3 27 南通大学电子信息学院 115 2 函数的返回值函数定义语句隐含对函数名相同的 函数内部寄存器的声明函数中必须对与函数名相同的寄存器赋值范围缺省时 返回值为1位reg型3 函数的调用函数名 调用时 函数被当作表达式中的操作数 2020 3 27 南通大学电子信息学院 116 函数调用举例 functionf and inputa b c d f and a 2020 3 27 南通大学电子信息学院 117 4 函数的使用规则函数中不能包含时间控制语句函数不能启动任务函数至少有一个输入参量函数中必须对与函数名相同的寄存器赋值 2020 3 27 南通大学电子信息学院 118 例6 2 计算 modulefunc function 31 0 f input 3 0 n reg 3 0 i beginf 1 for i 2 i n i i 1 f i f endendfunction 函数 2020 3 27 南通大学电子信息学院 119 reg 31 0 value reg 3 0 m initialbeginvalue 1 for m 2 m 9 m m 1 begin display partialvaluem dresult d m value value m m f m 1 end display finalvalue d value endendmodule 函数调用 2020 3 27 南通大学电子信息学院 120 第7章调试用系统任务和常用编译预处理语句 2020 3 27 南通大学电子信息学院 121 7 1系统任务 display和 write 例如 display Partialresultn dresult d n result 原样显示 格式说明 另有特殊字符 输出列表 引号内为格式控制 2020 3 27 南通大学电子信息学院 122 7 2编译预处理 1 宏定义 define标识符 宏名 字符串 宏内容 作用 当进行了宏定义后 就可以用标识符代替字符串 使程序易写 易读 2020 3 27 南通大学电子信息学院 123 说明 建议宏名用大写字母 宏定义只作置换 不作语法检查 编译时才报错 先定义 后使用 有效范围从定义处起直至程序末结束 引用时在宏名前加上 2020 3 27 南通大学电子信息学院 124 2 文件包含处理 include include 文件名 说明 一个 include只能指定一个文件名 建议分行写 文件包含是可以嵌套的 2020 3 27 南通大学电子信息学院 125 3 时间尺度 timescale作用 说明该命令后模块的仿真时间单位和时间精度 timescale 说明 时间单位和时间精度的参数值必须是整数 有效数字是1 10 100 单位是s ms us ns ps fs 2020 3 27 南通大学电子信息学院 126 2 条件编译 ifdef宏名程序段1 else程序段2 endif 2020 3 27 南通大学电子信息学院 127 第9章不同抽象级别的VerilogHDL模型 2020 3 27 南通大学电子信息学院 128 9 1门级结构描述 1 门类型 共26个 andnandornorxorxnorbufnot引用声明举例 and 10and0 f a b c d 门类型 延时 实例名 输出 输入 2020 3 27 南通大学电子信息学院 129 例9 1用基本逻辑门构成D触发器 moduleflop data clock clear q qb inputdata clock clear outputq qb nand 10nd1 a data clock clear nd2 b data clock nd4 d c b clear nd5 e c nclock nd6 f d nclock nd8 qb q f clear nand 9nd3 c a d nd7 q e qb not 10iv1 ndata data iv2 nclock clock endmodule 2020 3 27 南通大学电子信息学院 130 2 由已设计完成的模块构成更高层次的模块例9 2 由触发器构成的4位寄存器 include flop v modulehardreg d clk clrb q inputclk clrb input 3 0 d output 3 0 q flopf1 d 0 clk clrb q 0 f2 d 1 clk clrb q 1 f3 d 2 clk clrb q 2 f4 d 3 clk clrb q 3 endmodule 2020 3 27 南通大学电子信息学院 131 9 2VerilogHDL的行为级建模 例9 3 行为描述的4位寄存器modulehardreg d clk clrb q inputclk clrb input 3 0 d output 3 0 q reg 3 0 q always posedgeclkorposedgeclrb beginif clrb q 0 清0elseq d 置数endendmodule 2020 3 27 南通大学电子信息学院 132 例7 4 行为描述的74LS74 moduledff 7474 d clk clrn prn q qn inputd clk clrn prn outputq qn regq assignqn q always posedgeclkornegedgeclrnornegedgeprn beginif clrn 0 q 0 清0elseif prn 0 q 1 置1elseq d 置数endendmodule 2020 3 27 南通大学电子信息学院 133 仿真 2020 3 27 南通大学电子信息学院 134 9 3用户定义的原语 UDP 1 定义UDPprimitive元件名 输出端口名 输入端口名1 输入端口名2 output输出端口名 input输入端口名 输入端口名2 reg输出端口名 Initialbegin输出端口寄存器或内部寄存器赋初值 endtable逻辑值逻辑值逻辑值 逻辑值 逻辑值逻辑值逻辑值 逻辑值 逻辑值逻辑值逻辑值 逻辑值 endtableendprimitive 2020 3 27 南通大学电子信息学院 135 例9 5 电平触发的D触发器primitivedff q d clk clrb outputq inputd clk clrb regq initialbeginq 0 endtable dclkclrb qn qn 1 1 0 010 0 110 1 00 endtableendprimitive 2020 3 27 南通大学电子信息学院 136 第10章编写和验证纯组合逻辑模块 2020 3 27 南通大学电子信息学院 137 10 1加法器 2020 3 27 南通大学电子信息学院 138 2020 3 27 南通大学电子信息学院 139 2020 3 27 南通大学电子信息学院 140 加法器的行为级描述 moduleadd 4 x y sum c input 3 0 x y output 3 0 sum outputc assign c sum x y endmodule 拼接 2020 3 27 南通大学电子信息学院 141 这样设计的加法器在行为仿真时是没有延时的 借助综合器 可以根据以上VerilogHDL源代码自动将其综合成典型的加法器电路结构 综合器有许多选项可供设计者选择 以便用来控制自动生成电路的性能 设计者可以考虑提高电路的速度 也可以考虑节省电路元件以减少电路占用硅片的面积 综合器会自动根据选项为你挑选一种基本加法器的结构 有的高性能综合器还可以根据用户对运算速度的要求插入流水线结构 来提高运算器的性能 可见在综合工具的资源库中存有许多种基本的电路结构 通过编译系统的分析 自动为设计者选择一种电路结构 随着综合器的日益成熟它的功能将越来越强 然后设计者还需通过布局布线工具生成具有布线延迟的电路 再进行后仿真 便可知道该加法器的实际延时 根据实际的延迟便可以确定使用该运算逻辑的最高频率 若需要重复使用该运算器 则需要在控制数据流动的状态机中为其安排必要的时序 2020 3 27 南通大学电子信息学院 142 10 2乘法器 1 结构级的模型2 行为级的模型modulemult x y product input 3 0 x y output 7 0 product assignproduct x y endmodule 2020 3 27 南通大学电子信息学院 143 结构级的模型 2020 3 27 南通大学电子信息学院 144 2020 3 27 南通大学电子信息学院 145 2020 3 27 南通大学电子信息学院 146 10 3比较器 比较x y的大小 位数由参数决定 modulecompare n x y xgy xsy xey parameterwidth 8 input width 1 0 x y outputxgy xsy xey regxgy xsy xey always xory beginif x y xey 1 elsexey 0 if x y beginxgy 1 xsy 0 ende

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论