(3)HDL.ppt_第1页
(3)HDL.ppt_第2页
(3)HDL.ppt_第3页
(3)HDL.ppt_第4页
(3)HDL.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

第3章硬件描述语言 Agenda 硬件描述语言及Verilog简介可综合简介自顶向下分层设计的思路Verilog基本语法 硬件描述的方式 真值表 门级结构描述 原理图描述 硬件描述语言 HDL HardwareDiscriptionLanguage modulemux2s1 y a b sel inputa b sel outputy notu1 nsel sel andu2 sela a nsel andu3 selb b sel oru4 y sela selb endmodule 描述Discription 什么是Verilog Verilog在此表示VerilogHDL的简称 其中的HDL表示HardwareDiscriptionLanguage 即硬件描述语言 而Verilog只是一个单纯的名称 因此Verilog是一种硬件 描述 语言 Verilog可用于两个不同的用途 对数字电路进行建模仿真 设计的初衷 用于产生实际的数字电路 可综合部分 常用的硬件描述语言 Verilog 诞生于工业界 起源于C语言 因此非常类似于C语言 容易掌握 目前在工业界广泛应用于数字逻辑设计 侧重于电路级描述VHDL 诞生于美国国防部 起源于ADA语言 格式严谨 目前大学教育里用得较多 侧重于系统级描述 其中的V代表超高速集成电路 VHSIC VeryHighSpeedIntegratedCircuits HDL代表硬件描述语言 SystemC 由C 发展而来 主要面向片上系统 SoC SystemonChip 设计领域 较多的用于SoC的系统仿真SystemVerilog 由Verilog发展而来 类似于C 主要面向SoC设计领域 较多的用于SoC的系统仿真其他 ABEL AHDL Verilog与VHDL建模能力的比较 VHDL VITAL 系统级 算法级 寄存器传输级 逻辑门级 开关电路级 Verilog 两者的区别 VHDL侧重于系统级描述 多为系统级设计人员采用Verilog侧重于电路级描述 多为电路级设计人员采用 Verilog的历史 最初是于1983年由GatewayDesignAutomation公司 后被Cadence收购 为其数字电路模拟器产品开发的硬件建模语言1990年 Cadence公司成立OVI OpenVerilogInternational 组织来负责推广Verilog1995年 IEEE制定了VerilogHDL标准 即IEEEStd1364 19952001年 IEEEStd1364 2001 Agenda 硬件描述语言及Verilog简介可综合简介自顶向下分层设计的思路Verilog基本语法 可综合 Synthesisable 简介 Verilog设计的初衷是对数字电路进行仿真 因此其语法语句大部分是模拟仿真数字电路的行为 在现阶段 它们还没有对应的可实现的硬件电路 这些语法语句只能用于仿真用途 不能用于转化成真实的硬件电路 例如延时语句 可综合 Synthesisable 简介 Verilog当中只有很少的一部分语法语句存在对应能实现其功能的硬件电路 仅使用这部分语法语句描述数字电路系统的Verilog程序 可通过特定的软件工具将其转化为真实的硬件电路结构形式 这一过程称为综合 Synthesis 这些语法语句为可综合的语法语句 这样的Verilog程序为可综合的Verilog程序 描述Discription 综合Synthesis 可综合的设计思路 使用Verilog进行数字系统设计时 Verilog只是一个表达的工具 我们需要先构思设计好能实现的硬件结构 再用Verilog把这样的硬件结构描述出来 描述时 要做到 心中有硬件 即能够清楚地知道所使用的描述语句对应会产生什么样的电路结构 是否与期望的结构相符 这样得到的 肯定是可以综合的Verilog程序 我们在此只讲述可综合的Verilog程序设计 描述Discription 综合Synthesis 数字芯片系统结构 其中的单级结构 现在的数字系统 绝大部分都是基于D触发器与组合逻辑构成的系统结构 组合逻辑作数据处理 D触发器在时钟控制下作数据寄存 一级的组合逻辑处理完后 然后由D触发器寄存 再参与下一级的组合逻辑处理 然后再寄存 如此下去 构成一个完整的数据通路 输入一般先用1到2级的D触发器打拍寄存 去除毛刺干扰 FPGA的LE结构 Agenda 硬件描述语言及Verilog简介可综合简介自顶向下分层设计的思路Verilog基本语法 自顶向下 Top Down 分层设计 对复杂的设计任务进行细分 分解成一个个功能相对集中独立的子模块 对子模块可继续细分下去 直到简单易于设计为止 分层次简化设计示意图 分层次简化设计 现在的数字系统往往功能比较复杂 对应的硬件电路结构会很复杂 我们设计时 可对一个大系统进行分割 按功能把其分成规模较小的子系统模块 而子系统模块又可以继续进行分割 直到分割成足够小的便于设计的模块为止 例如分割到一个D触发器或一小块组合逻辑电路 对于这种足够小的模块 我们便容易设计出其硬件结构 也便于用Verilog把它描述出来 下面我们将结合一些简单模块进行可综合的Verilog的学习 Agenda 硬件描述语言及Verilog简介可综合简介自顶向下分层设计的思路Verilog基本语法 2选1多路选择器的描述mux2s1 v modulemux2s1 a b sel y 定义模块名称mux2s1及端口列表inputa 端口方向描述 input为输入inputb 分别声明了a b和sel为输入inputsel outputy 声明y为输出outputregy y要在下面的过程语句块中 被赋值 必须声明为reg类型always begin always过程语句块if sel 1 b0 begin if语句y a 阻塞赋值语句endelsebegin 数据寄存描述y b endendendmodule 与上面的module配对 表示模块描述至此结束 Verilog基本结构 module模块名 端口列表 端口描述数据类型描述电路功能描述endmodule modulemux2s1 a b sel y inputa inputb inputsel outputy regy always beginif sel 1 b0 beginy a endelsebeginy b endendendmodule Verilog基本结构1 模块名 端口列表 module模块名 端口列表 端口描述数据类型描述电路功能描述endmodule 模块名及端口列表用于给设计对象起个名字并描述其外观 例如 moduledff clk clr d q 其中 dff为模块名 端口列表中各端口名以逗号 隔开 且可按任意顺序排列 模块名和端口名等遵循Verilog标识符命名规则 且不能与关键字重名 标识符 Identifier Verilog中的标识符可以是任意一组字母 数字 和 下划线 的组合 但标识符的第一个字符必须是字母或者下划线 标识符是区分大小写的 不同的编译软件可能支持不同的最大长度 但不应小于1024个字符 以下是标识符的几个例子 CountCOUNT 与Count不同 R1 D2R56 68FIVE 转义标识符 Escapedidentifier 转义标识符以 反斜线 开头 以空白字符结尾 空白字符可以是空格 制表符Tab键或换行符 中间由任何可打印字符 ASCII码值从33到126 构成 下面例举了几个例子 7400 Q OutGate 与OutGate相同最后这个例子解释了在一条转义标识符中 反斜线和结束空格并不是转义标识符的一部分 也就是说 标识符 OutGate和标识符OutGate恒等 关键字 Keyword IEEEStd1364 1995 Verilog基本结构2 端口描述 module模块名 端口列表 端口描述数据类型描述电路功能描述endmodule 端口描述用于描述端口列表中各端口的方向及数据宽度 格式 方向 msb lsb 端口名 例如 inputclk 输入outputq 输出inout 3 0 dio 双向其中 方向关键字只有input output和inout三种 如果是单根信号 不需要写中间的数据宽度 端口列表中的所有端口名都需要进行端口描述 但不区分顺序 不同方向的端口结构图 input只能输入 实现为芯片引脚时可能会插入输入缓冲器output只能输出 实现为芯片引脚时可能会插入输出缓冲器inout既可以输入又可以输出 为双向端口 在输出方向由三态缓冲器构成 当不允许输出时 该三态缓冲器输出高阻态z 从而不影响端口上的电平状态 输入方向在实现时通常会插入输入缓冲器 端口描述之数据宽度 数据宽度既可以从大到小 也可以从小到大 例如 Verilog基本结构3 数据类型描述 module模块名 端口列表 端口描述数据类型描述电路功能描述endmodule 数据类型描述用于描述各端口及内部节点的数据类型格式 类型 msb lsb 节点名 例如 wireclk 线网型 单根wire 0 7 din 线网型 多根reg 3 0 dout 寄存器型其中 类型分为线网类型和寄存器类型 如果是单根信号 不需要写中间的数据宽度 线网类型 线网类型 nettype 表示Verilog结构化元件间的物理连线 它的值由驱动元件的值决定 例如连续赋值或者门的输出 如果没有驱动元件连接到线网 线网类型变量的缺省值为高阻态z 线网类型包含下述不同种类的线网子类型 wire tri wor trior wand triand trireg tri1 tri0 supply0 supply1 我们在此只要求学习掌握最常用的wire类型 例如 wireclk 线网型 单根wire 0 7 din 线网型 多根 线网类型之wire 没有声明数据类型的端口 其默认类型为单根的wire类型 因此单根wire类型的端口可以省略数据类型的声明 若是多根wire类型 则其数据类型的声明不可省略 wireclk 可省略声明wire 0 7 din 不可省略声明方向为输入或双向的端口 只能使用wire的数据类型 方向为输出的端口 可以使用wire或reg的类型 寄存器类型 寄存器类型 registertype 表示一个抽象的数据存储单元 它只能在always语句和initial语句中被赋值 并且它的值从一个赋值到另一个赋值被保存下来 寄存器类型变量的缺省值为不定态x 寄存器类型包含下述不同种类的子类型 reg integer time real realtime 我们在此重点学习掌握最常用的reg类型 例如 regdout 寄存器型 单比特reg 3 0 data 寄存器型 多比特reg类型在描述时其行为具有寄存器的特性 但并不一定实现为真实的寄存器 因此描述时需按照期望采用合适的方式进行描述 多路选择器的描述mux4s1 v modulemux4s1 in sel y 定义模块名称mux4s1及端口列表input 3 0 in 端口方向描述 input为输入input 1 0 sel 分别声明了in和sel为输入outputy 声明y为输出outputregy y要在下面的过程语句块中 被赋值 必须声明为reg类型always begin always过程语句块case sel case语句2 b00 y in 0 阻塞赋值语句2 b01 y in 1 阻塞赋值语句2 b10 y in 2 阻塞赋值语句2 b11 y in 3 阻塞赋值语句endcaseendendmodule 与上面的module配对 表示模块描述至此结束 D触发器的描述dff v moduledff clk clr d q 定义模块名称dff及端口列表inputclk 端口方向描

温馨提示

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

最新文档

评论

0/150

提交评论