可编程数字系统设计 - 东南大学.ppt_第1页
可编程数字系统设计 - 东南大学.ppt_第2页
可编程数字系统设计 - 东南大学.ppt_第3页
可编程数字系统设计 - 东南大学.ppt_第4页
可编程数字系统设计 - 东南大学.ppt_第5页
已阅读5页,还剩222页未读 继续免费阅读

下载本文档

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

文档简介

可编程数字系统设计 CPLD和FPGA应用 主讲人 徐莹隽 可编程数字系统设计 可编程器件概述常用的可编程数字系统的设计输入方式常用CPLD和FPGA硬件结构可编程数字系统设计中的几个基本概念可编程数字系统设计中的组合逻辑设计可编程数字系统设计中的时序逻辑设计状态机的设计VHDL语言 第一部分 可编程器件概述 常见术语 EDA ElectronicDesignAutomatic 电子设计自动化技术是指以计算机为工作平台 融合了应用电子技术 计算机技术 智能化技术的最新成果而开发出的电子CAD通用软件包 它根据硬件描述语言HDL完成的设计文件 自动完成逻辑 化简 分割 综合 优化 布局布线及仿真 直至完成对于特定目标芯片的适配编译 逻辑映射和编程下载等工作 EDA主要辅助进行三个方面的设计工作 IC设计 电子电路设计 PCB设计 常见术语 ESDAElectronicSystemDesignAutomatic电子系统设计自动化90年代 开始追求贯彻整个设计过程的自动化FPGA FieldProgrammableGateArray 现场可编程门阵列CPLD ComplexProgrammableLogicDevice 复杂可编程逻辑器件 常见术语 HDL HardwareDescriptionLanguage 硬件描述语言VHDLVerilogHDL两种语言作为IEEE的标准支持从算法级到门级多种抽象设计层次数字系统建模 VerilogHDL语言最初起源于美国业界 从 语言中继承了多种操作符和结构 比VHDL更简练 并且由于VerilogHDL支持晶体管级设计层次 在进行ASIC设计时更为灵活 VHDL语言最初是美国国防部资助的VHSIC项目开发的产品 VHDL语言更为严谨 更易于被其他人理解 在较高抽象设计层次上比VerilogHDL更能准确快速地对数字系统建模 常见术语 行为描述模型用输入 输出响应来描述器件的模型 其只描述电路的功能 而不是结构 同时不针对专门的硬件 用于综合和仿真 常见术语 结构描述模型用更低层次的器件的互连来描述器件的模型 它描述电路的功能和结构 常见术语 寄存器传输级 RTL 用于综合的一种行为描述模型综合 Synthesis 将HDL转换为电路并对该电路进行一定的优化RTLSynthesis将硬件的RTL模型转化为某种优化的特殊的门级电路来具体实现 RTLSynthesis Process a b c d sel begincase sel iswhen 00 mux outmux outmux outmux out d endcase FPGAvsCPLD FPGA是一种高密度的可编程逻辑器件 自从Xilinx公司1985年推出第一片FPGA以来 FPGA的集成密度和性能提高很快 其集成密度最高达1000万门 片以上 系统性能可达300MHz 由于FPGA器件集成度高 方便易用 开发和上市周期短 在数字设计和电子生产中得到迅速普及和应用 FPGAvsCPLD CPLD是由GAL发展起来的 其主体结构仍是与或阵列 自从90年代初Lattice公司高性能的具有在系统可编程ISP InSystemProgrammable 功能的CPLD以来 CPLD发展迅速 具有ISP功能的CPLD器件由于具有同FPGA器件相似的集成度和易用性 在速度上还有一定的优势 FPGA CPLD的结构 FPGA器件在结构上 由逻辑功能块排列为阵列 并由可编程的内部连线连接这些功能块来实现一定的逻辑功能 FPGA CPLD的结构 CPLD是将多个可编程阵列逻辑 PAL 器件集成到一个芯片 具有类似PAL的结构 一般情况下CPLD器件中至少包含三种结构 可编程逻辑功能块 FB 可编程I O单元 可编程内部连线 FPGAvsCPLD 集成度FPGA可以达到比CPLD更高的集成度 同时也具有更复杂的布线结构和逻辑实现适合结构FPGA更适合于触发器丰富的结构 而CPLD更适合于触发器有限而积项丰富的结构编程CPLD通过修改具有固定内连电路的逻辑功能来编程 FPGA主要通过改变内部连线的布线来编程 FPGA可在逻辑门下编程 而CPLD是在逻辑块下编程 在编程上FPGA比CPLD具有更大的灵活性 FPGAvsCPLD 功率消耗CPLD的缺点比较突出 一般情况下 CPLD功耗要比FPGA大 且集成度越高越明显速度CPLD优于FPGA 由于FPGA是门级编程 且CLB之间是采用分布式互连 而CPLD是逻辑块级编程 且其逻辑块互连是集总式的 因此 CPLD比FPGA有较高的速度和较大的时间可预测性 产品可以给出引腿到引腿的最大延迟时间 FPGAvsCPLD 编程方式目前的CPLD主要是基于E2PROM或FLASH存储器编程 编程次数达1万次 其优点是在系统断电后 编程信息不丢失 CPLD又可分为在编程器上编程和在系统编程 ISP CPLD两种 FPGA大部分是基于SRAM编程 其缺点是编程数据信息在系统断电时丢失 每次上电时 需从器件的外部存储器或计算机中将编程数据写入SRAM中 其优点是可进行任意次数的编程 并可在工作中快速编程 实现板级和系统级的动态配置 因此可称为在线重配置的PLD或可重配置硬件 FPGAvsCPLD 使用方便性CPLD比FPGA要好 CPLD的编程工艺采用E2CPLD的编程工艺采用E2CPLD的编程工艺采用E2PROM或FASTFLASH技术 无需外部存储器芯片 使用简单 保密性好 而基于SRAM编程的FPGA 其编程信息需存放在外部存储器上 需外部存储器芯片 且使用方法复杂 保密性差 可编程器件选择 从系统设计的角度选择目标器件的基本原则 电磁兼容设计的原则能选用低速器件的不选择高速器件 以降低成本 减少电磁干扰主流芯片原则要尽量选择厂家的主流推广器件 以降低成本 缩短供货周期多片系统原则不一味追求单片化 可根据系统的实际情况适当选择多器件的结构 以加快设计过程 提高系统稳定性 多片方案 优点 每个芯片内功能相对单一 单片内逻辑设计和调试相对容易 简化系统实现的复杂度 缺点 在整个系统调试时 不同子系统之间的信号调式较困难 在高速设计中存在明显缺陷 单片方案 优点 提高了系统的集成度 减少了故障点 降低系统时延 降低PCB布线复杂度缺点 片内逻辑复杂度大 仿真激励波形和测试文件编写复杂 对设计人员要求较高 可编程器件选择 从器件资源的角度选择目标器件的原则 器件的逻辑资源和系统的逻辑要求相匹配特征单元评估法器件的I O脚的数目满足目标系统的要求专用功能脚用户功能脚双功能脚 引脚的绑定原则1 尽量避免人为固定I O引脚 除非是多次实现过程中可能存在的不固定I O引脚2 在FPGA中尽量避免将相关的引脚集中固定在相互靠近的位置 在CPLD中则根据器件实际情况具体分析3 适当考虑或禁止使用双功能脚 若必须使用 应对引脚加接上拉或下拉电阻4 在FPGA设计实现中 I O脚一般从左向右 从上到下设定 部分FPGA厂家 Altera 部分FPGA厂家 Lattice1999年推出可编程模拟器件 99年收购Vantis 原AMD子公司 成为第三大可编程逻辑器件供应商 主要产品有ispLSI2000 5000 8000 MACH4 5 部分FPGA厂家 Xilinx FPGA的发明者 老牌PLD公司 是最大可编程逻辑器件供应商之一 产品种类较全 主要有 XC9500 4000 Coolrunner XPLA3 Spartan Vertex 开发软件为 Foundition3 1i 通常来说 在欧洲用Xilinx的人多 在日本和亚太地区用ALTERA的人多 在美国则是平分秋色 全球PLD FPGA产品60 以上是由Altera和Xilinx提供的 可以讲Altera和Xilinx共同决定了PLD技术的发展方向 部分FPGA厂家 Actel 第二部分 常用的可编程数字系统设计方法 可编程数字系统设计流程 设计输入 HDL综合 布线前仿真 目标编译 布线后仿真 在系统编程 自顶向下设计法 采用可完全独立于芯片厂商及其产品结构的描述语言 在功能级对设计产品进行定义利用功能仿真技术 以确保设计的正确性利用逻辑综合技术 把功能描述转换成某一具体结构芯片的网表文件 输出给厂商的布局布线器进行布局布线 布局布线结果反标回同一仿真器 进行包括功能和时序的后验证 以保证布局布线所带来的门延时和线延时不会影响设计的性能 自顶向下设计法优点 大大缩短了设计周期由于功能描述可完全独立于芯片结构在设计的最初阶段 设计师可不受芯片结构的约束 集中精力进行产品设计 进而避免了传统设计方法所带来的重新再设计风险 大大缩短了设计周期 设计的再利用得到保证目前的电子产品正向模块化发展 所谓模块化就是对以往设计成果进行修改 组合和再利用 产生全新的或派生设计 而自顶向下设计方法的功能描述可与芯片结构无关 因此可以以一种 的方式进行存档 以便将来的重新利用 自顶向下设计法优点 设计规模大大提高简单的语言描述即可完成复杂的功能 而不需要手工绘图 芯片选择更加灵活设计师可在较短的时间内采用各种结构芯片来完成同一功能描述 从而在设计规模 速度 芯片价格及系统性能要求等方面进行平衡 选择最佳结果 层次化设计方法分层原则 将所有的算术运算安排在同一层中 状态机 随机逻辑 数据路径等逻辑类型作为独立的模块设计模块的输入尽量不要悬空 输出应尽量寄存 单个功能块应保持在3000 6000门之间 HDL语言的行数不超过400行尽量采用专用的IP核进行设计 HDL VHDL具有强大的行为描述能力 丰富的仿真语句和库函数 对设计的描述也具有相对独立性Verilog最大特点就是易学易用 语法比较自由ABEL一种早期的硬件描述语言支持逻辑电路的多种表达形式 其中包括逻辑方程 真值表和状态图 AHDL AlteraHHDL 是ALTERA公司发明的HDL 特点是非常易学易用 学过高级语言的人可以在很短的时间 如几周 内掌握AHDL 它的缺点是移植性不好 通常只用于ALTERA自己的开发系统 VHDL VHDL语言最初于1981年由美国国防部为解决所有电子产品存档而提出的一种统一标准语言 1983年至1985年 由IBM TI等公司对VHDL进行细致开发 1987年成为IEEE1076 87标准 1993年 修订版IEEE1076 93出台 随后 IEEE分别提出IEEE10763 可综合标准 和IEEE1076 4 标准 以解决可综合VHDL描述在不同EDA厂商之间的移植问题 以及ASIC FPGA的门级库描述问题 VERILOG VERILOG语言最早由GATEWAY设计自动化公司于1981年提出 并提供相应的VERILOG仿真器 1985年 仿真器增强版VERILOG XL推出 CADENCE公司于1989年收购GATEWAY公司 并于1990年把VERILOG语言推向市场 而保留了VERILOG XL的所有权 1995年 VERILOG成为IEEE1364标准 VHDL VERILOG 描述能力两种语言均可有效地描述RTL级 在行为 系统级 Verilog需要PLI的支持 门级及以下级Verilog则有较大的优势 数据类型VHDL提供大量的数据类型 设计者还可自定义一些数据类型 很多数据类型对于设计描述是非常方便的 如枚举型等 Verilog的数据类型相对比较简单 所有数据类型由语言定义 设计者不可自定义数据类型 由于VHDL语法非常严格 数据操作必须在相同数据类型之间进行 优点是设计明了 不易产生设计错误 缺点是需要使用数据类型转换函数进行不同类型数据之间的运算操作 Verilog可在不同字长数据间进行操作 语句比较简单 但设计者必须掌握尺度 否则可能产生不可预料的综合结果 VHDL VERILOG 运算操作两种语言比较相似 例外是Verilog中无求幂运算 与非 或非 算术左 右移 循环左 右移等 但有非常有用的约简运算 在VHDL中则可通过循环语句完成这一算法 结构描述VHDL语言中有丰富的语法定义来帮助设计者进行高层次结构管理 参数化设计和处理较大规模的电路 如Package Configuration Generate Generic等 并可运用于逻辑综合 Verilog除参数化设计外 则无相应的语法定义 但在门级描述方面有较大的优势 被广泛采用进行ASIC和FPGA库的开发 这与Verilog语言本身最初的设计思想有关 目前 IEEE1076 4标准解决了VHDL门级描述的问题 VHDL VERILOG 库VHDL可通过库的方式来管理和存储编译后的设计数据 过程和函数可写在Package中 以便不同设计的调用 Verilog没有Package和库的概念 过程和函数的再利用需通过Include语句 易用性VHDL是语法非常严格的语言 同时 对于同一功能模块 描述方法可以有各种形式 因此 VHDL对于初学者较为困难 但对高级用户来说 却是强有力的编程语言 如果不考虑PLI以及仿真编译的指令集部分 Verilog要比VHDL容易得多 但一旦考虑这些因素 设计者相当于需要学习三种语言 VHDL VERILOG 市场份额在国内 目前FPGA设计者多采用VHDL 日本市场Verilog一统天下 欧洲市场VHDL占主流 而在美洲市场 两种语言平分秋色 结论就标准而言 两种语言并无优劣 先后可言 至于设计者采用哪种语言 与设计者的习惯 喜好以及目前EDA FPGA行业的支持有关 由于VHDL在系统设计方面的语法支持 各FPGA厂商对VHDL语言的支持明显多于Verilog 这可从各厂商所提供的设计开发包中得到明证 而Verilog由于在门级描述上的优势 从而被众多的IC设计人员所采用 设计工具的选择 输入方法 图形化设计输入方法 以方框图 真值表 状态图或流程图的方式进行功能描述 工具本身可自动生成HDL描述 这种方法有利于HDL语言初学者 更贴切于设计人员的思维方式 易于设计数据管理 设计师的经验交流 以及设计产品的存档 再利用等 设计工具的选择 输入方法 HDL语言标准的支持工具应当充分支持VHDLIEEE1076 87及93标准 充分支持VerilogIEEE1364标准 VHDL Verilog混合描述环境支持HDL语言有两种国际标准 不同设计人员 设计小组 设计单位间可能采用不同的语言环境 设计工具必须做到支持混合语言环境 IP支持支持对设计成果的调用 设计工具的选择 输入方法 差错定位能力设计过程中不可避免地会产生各种错误 包括输入错误 语法错误 编译错误等 设计工具必须具备自动定位错误的能力 而无需人工查找 这对于较大的设计是非常有用的 设计调试能力以各种生动形象的方式进行设计调试 如状态图的动画调试 检查设计本身的功能错误 设计工具的选择 输入方法 设计数据管理当设计规模增大后 设计数据也随之增加 设计工具应能自动管理设计数据 特别是设计过程中不可避免需要对设计进行修改 能否自动识别修改与未修改数据 直接影响设计者的效率 工具还应当支持小组设计 数据版本管理等 即插即用能力即工具的开放性 工具应当具有开放的数据结构 能够与目前 业界最优秀的工具结合使用 保护用户投资 易用性工具应有友好的用户界面 完整的在线文档帮助 设计结果文档的生成 不同平台的支持 以及各平台间的数据统一等 设计工具的选择 仿真工具 由于设计规模的增加以及设计复杂度的提高 仿真器的仿真速度和仿真容量成为衡量仿真器的最重要因素 这包括行为级 级和门级 其它考虑因素包括 HDL语言标准支持包括对VHDLIEEE1076 87 IEEE1076 93 IEEE1076 4和VerilogIEEE1364标准的完全支持VHDL Verilog混合仿真环境支持仿真调试能力 设计工具的选择 仿真工具 FPGA厂商的支持系统仿真能力主要是对外部模块的调用仿真能力 如 语言等易用性如友好的用户界面 在线文档帮助 数据管理 平台支持 平台间的数据统一等 设计工具的选择 逻辑综合工具 逻辑综合是自顶向下设计方法过程中的最重要环节 逻辑综合工具的好坏直接影响设计产品的性能 在选择逻辑综合工具时 应当考虑以下因素 不同厂商及其芯片系列的支持目前FPGA厂商众多 给设计师提供了广泛的选择空间 综合工具应当最大程度地支持不同厂商 同时应当保证对各厂商最新芯片的快速响应 设计工具的选择 逻辑综合工具 针对不同厂商芯片结构的算法支持FPGA综合不同于ASIC 对于ASIC而言 其结构无非包括门阵列和标准单元两种 差别在于所选择的工艺不同 而不同厂商的FPGA 甚至同一厂商不同系列的产品 都存在结构上的差别 是否考虑不同的芯片结构 采用不同的优化算法 以便得到相应的最优结果 成为考查综合工具的最关键因素 设计工具的选择 逻辑综合工具 综合结果性能逻辑综合的目的不仅是简单地用某一芯片完成设计功能 更重要的是在于在满足设计功能和性能要求的同时 以尽量较低档次 门数和速度 的芯片来实现设计要求 这样就可以降低设计者在芯片上的开销 设计的再利用设计师以往的设计大多采用原理图的方法进行描述 并生成一些特定的网表文件 如EDIF XNF等 逻辑综合工具应当支持对这些网表文件的读入能力 以便保护设计者以往的设计成果 设计工具的选择 逻辑综合工具 综合速度即综合工具的运算速度 设计规模对大规模设计的支持能力 能否支持设计的层次结构管理 设计的调试 错误定位能力能够很好地在 语言和综合电路之间建立数据联系 便于设计调试 查错以及对综合结果的理解 时序优化能力不仅可以做到面积和延时的优化 还应当具有基于设计者时序约束 如时钟周期 信号的时序要求等 的时序优化能力 设计工具的选择 逻辑综合工具 芯片的重映射支持不同结构的FPGA之间的相互映射 FPGA到ASIC以及ASIC到FPGA的重映射 VHDL Verilog语言的标准支持VHDL Verilog混合描述环境支持与后端工具的集成能力即与各FPGA厂家布局布线器的无缝连接 支持厂商的特定网表格式 综合约束条件到布局布线器的传递等 易用性 常见的HDL工具 FPGAExpress VHDL VerilogHDL综合软件 简单易用 但有人反映其对VerilogHDL的支持不够强 Synopsys公司出品 FPGACompilerIIVHDL VerilogHDL综合软件 Synopsys公司出品 Leonardo Spectrum VHDL VerilogHDL综合软件 可以加比较多的约束条件 可控性较强 ExemplarLogic公司出品 Mentor子公司 常见的HDL工具 Synplify VHDL VerilogHDL综合软件 Synplicity公司出品 ActiveHDLVHDL VerilogHDL仿真软件 简单易用 Aldec公司出品 Modelsim VHDL VerilogHDL仿真软件 功能比ActiveHDL强大 使用比ActiveHDL复杂 Mentor公司出品 常见的HDL工具 NC Verilog NC VHDL Cadence公司出品 很好的Verilog VHDL仿真工具 其中NC Verilog的前身是著名的Verilog仿真软件 Verilog XL StateCAD状态机设计软件 通过画框图可自动生成状态机的VHDL VerilogHDL 或AHDL源代码文件 对熟练掌握HDL的人 实用价值不高 X HDL 可实现VHDL和Verilog语言的相互自动转化 X HDL 可实现VHDL和Verilog语言的相互自动转化 常见的HDL工具 VisialVHDL VisalVerilog 可视化的HDL Verilog编辑工具 功能类似于Renoir Renoir通过画框图来完成PLD FPGA的系统设计 可自动生成部分VHDL VerilogHDL源代码文件 亦可由VHDL VerilogHDL源代码生成原理框图 Renoir 输入 Leonardo Spectrum 综合 和Modelsim 仿真 构成了Mentor公司引以为豪的VHDL VerilogHDL完整开发系统 FPGAAdvantage 推荐参考书 VHDL与数字电路设计 卢毅科学出版社 VerilogHDL硬件描述语言 清华大学出版社 CPLD技术及应用 宋万杰等西安电子科技大学出版社 可编程逻辑系统的VHDL设计技术 KevinSkahill东南大学出版社 ALTERA可编程器件及其应用 刘宝琴清华大学出版社 Xinlinx数字系统现场集成技术 朱明程东南大学出版社 在系统编程技术及其应用 黄正瑾东南大学出版社 第三部分 常用CPLD和FPGA硬件结构 A为什么要了解硬件结构 我没有理由要了解硬件结构 那应该是芯片设计师的工作 问题的提出 A 要求设计一个逻辑方程 P A2XNORB2 XOR A1XNORB1 XOR A0XNORB0 B 要求设计二个10进制计数器 其中一个时钟为1M 另一个时钟为100K 要求用同步设计 所用器件均为GAL22V10 其包括10个I O口 12个输入口 10个寄存器单元 最高频率为125M 简单复习 假设组合逻辑的输出 AND3的输出 为f 则f A B C D A C D B C D 结果 A 器件适配出错无法实现设计B 器件适配出错无法实现设计 GAL22V10结构图 GAL22V10输出逻辑宏单元结构图 无法实现的理由 A 该方程化简后有32个乘积项 需输出宏单元提供32个或门 但或门最多的管脚也只有16个或门B 该可编程器件所有寄存器的时钟脚都连到了一起 所以只能有一个时钟输入信号 解决方案 A 多级宏单元级连将P A2XNORB2 XOR A1XNORB1 XOR A0XNORB0 改为 P1 A2XNORB2 XOR A1XNORB1 8个乘积项P P1XOR A0XNORB0 4个乘积项B 选用其他器件 结论 我们有必要对可编程器件的硬件结构有一个较深入的了解 BCPLD硬件结构分析比较 Lattice1032E和Altera7128E B1结构框图比较 ispLSI1032器件结构框图 MAX7000E结构框图 比较结果 总体结构大致相同 CPLD一般都包括 1 I O控制区域2 可编程的连线区域3 宏单元4 宏单元的组合5 可编程的全局时钟输入6 可编程的宏单元附加控制 B2宏单元结构比较 1032通用逻辑单元结构 1016高速直通组态 1016异或逻辑组态 1016混合组态 MAX7128E宏单元结构 7128E乘积项共享扩展 7128E乘积项的并联扩展 比较结果 输入信号1032为16 2 每GLB 7128为32 16 每LAB 可用或逻辑 每宏单元 1032为4 4 5 7 可扩展到207128为5 可单方向并联扩展到20 比较结果 续 寄存器1032同一GLB中的4个宏单元公用一可编程时钟 清零 置数信号7128可单独编程为D T JK RS触发器 单独使用一可编程时钟 清零 置数 使能信号 B3I O控制比较 1032大块方框图 1032大块的输出使能控制 1032I O单元结构图 1032I O组态 输出布线池 7128I O控制块 比较结果 输入1032有直接输入和寄存器输入7128只有直接输入输出1032的全局输出使能信号比较灵活 有专用的输出布线池7128的全局输出使能信号只有固定的6个 但有输出摆率控制 CFPGA的结构分析 ALTERA10K10 查找表 Look Up Table 的原理 查找表 Look Up Table 简称为LUT LUT本质上就是一个RAM FPGA中多使用4输入的LUT 每一个LUT可以看成一个有4位地址线的16x1的RAM 当用户通过原理图或HDL语言描述了一个逻辑电路以后 PLD FPGA开发软件会自动计算逻辑电路的所有可能的结果 并把结果事先写入RAM 这样 每输入一个信号进行逻辑运算就等于输入一个地址进行查表 找出地址对应的内容 然后输出即可 4输入与门的例子 实际逻辑电路 LUT的实现方式 A b c d输入 逻辑输出 地址 RAM中存储的内容 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 0000 0001 0000 0 0 0 1 查找表结构的FPGA逻辑实现原理 A B C D由FPGA芯片的管脚输入后进入可编程连线 然后作为地址线连到到LUT LUT中已经事先写入了所有可能的逻辑结果 通过地址查找到相应的数据然后输出 这样组合逻辑就实现了 该电路中D触发器是直接利用LUT后面D触发器来实现 时钟信号CLK由I O脚输入后进入芯片内部的时钟专用通道 直接连接到触发器的时钟端 触发器的输出与I O脚相连 把结果输出到芯片管脚 FLEX10K10结构框图 EAB结构框图 LE结构框图 进位链操作 用n 1个LE实现n位加法器 级连链操作 逻辑单元的工作模式 正常模式适合于一般逻辑应用和各种译码功能运算模式提供两个3输入LUT 适合完成加法器 累加器和比较器 一个计算3输入函数 1个生成进位加减计数模式提供计数器使能 时钟使能 同步加减控制和数据加载选择可清除的计数模式类似加减计数方式 但支持同步清除而不是加减控制 正常模式 运算模式 加减计数模式 可清除的计数模式 内部三态仿真 提供了除物理三态以外的内部三态可避免多个物理三态的OE选通造成的冲突和没有OE选通所造成的悬浮 清除置位逻辑控制 异步清除 异步置位 异步清除和置位 清除置位逻辑控制 带清除的异步加载 带置位的异步加载 清除置位逻辑控制 无清除和置位的异步加载 LAB结构框图 快速通道连接 FLEX10K的互连资源 IOE结构框图 第三部分 可编程数字系统设计中的几个基本概念 组合逻辑电路 组合逻辑电路任意时刻的输出只取决于该时刻的输入 于电路原来的状态无关常用的组合逻辑电路有 地址编码器 加法器 多路选择器等 时序逻辑电路 时序逻辑电路任一时刻的输出信号不仅取决于当时的输入信号还取决于电路原来的状态常用的时序逻辑电路有 计数器 移位寄存器 序列发生器等 同步时序电路 同步时序电路的存储器件为触发器 且触发器是在同一个时钟操作下工作的 异步时序电路 异步时序电路的存储器件可以是触发器也可以是延迟器件 电路不需要统一的系统时钟 竞争和冒险 建立时间和保持时间 建立时间 setuptime 是指在触发器的时钟信号上升沿到来以前 数据稳定不变的时间保持时间 holdtime 是指在触发器的时钟信号上升沿到来以后 数据稳定不变的时间 第四部分 组合逻辑电路设计进阶 组合逻辑电路举例 组合电路 仿真结果分析 理论结果 实际结果 可编程器件有问题我再也不用它了 No no no 这不是可编程器件的问题 一个最简单的组合逻辑电路 一个两输入的与门或者两输入的或门是最简单的电路 可编程器件对这么简单的电路的处理结果是什么呢 两输入与门的仿真结果 输入波形 输出波形 再进一步分析 假设与门的内部延时是0 2nS 对信号B进行简单计算 Tracedelayofb ANDgateinternaldelay 8 1ns Tracedelayofb 0 2ns 8 1ns Tracedelayofb 7 9ns对信号A进行简单计算 Tracedelayofa ANDgateinternaldelay 11 1ns Tracedelayofa 0 2ns 11 1ns Tracedelayofa 10 9ns 结果再分析 Tracedelayofb 7 9ns Tracedelayofa 10 9ns OutputCchangefrom 0 to 1 at8 1ns A3nsPulsegenerate 10 9 7 9 3ns OutputCchangebackfrom 1 to 0 asthefinalresult 总结 设计一个2输入的与门也不是象1 1 2那么简单在组合逻辑设计中我们需要考虑TraceDelayandGateDelay函数 C的输出为 0 时序 C的输出有一个3ns宽的毛刺这3ns的毛刺主要是由TraceDelay造成的组合电路工作时不仅和逻辑函数相关还和时序相关 深入总结 当某一时刻同时有一个以上的信号发生变化时容易产生毛刺组合逻辑电路是会产生毛刺的 再讨论第一个例子 分析 No No No No No 仿真结果分析 毛刺的宽度 3 to 4 011 100 5 to 6 101 110 结论 如果我们知道毛刺是什么产生的我们可以计算出毛刺出现的具体时间我们可以计算出毛刺的脉冲宽度当组合逻辑输出用做以下功能时必须加以注意触发器的CLEAR端触发器的PRESET端触发器的CLOCK端锁存器的控制端其他 q0 3 9nsq1 3 7nsq2 2ns 方法 1 外加 0 2ns给q12 外加 1 9ns给q23 这样q 2 0 的延时为3 9ns 1 有些软件支持这种做法 如Xinlinx 2 实现方式看起来比较简单 消除毛刺的方法 一 方法一的缺点 1 电路只能工作在此处能给你提供0 2nS延时的时候2 电路只能工作在此处能给你提供1 9nS延时的时候3 做起来很费时间 还要考虑以下问题 1 不同的温度 0C 50C 60C 70C 会有不同的延时值2 不同的工作电压 5V 4 5Vor5 5V 会有不同的延时值3 附加的逻辑有可能导致其他错误 影响布线和总体时延4 还有很多不可预测的问题 消除毛刺的方法 二 消除毛刺的方法 二 毛刺仍然存在但由于附加触发器的存在不会在产生误操作 消除毛刺的方法 三 subdesignmodcount clk reset input q 2 0 output variablecounter3 MACHINEOFBITS rr 2 0 WITHSTATES r0 B 101 r1 B 100 r2 B 000 r3 B 001 r4 B 011 r5 B 010 r6 B 110 r7 B 111 beginq rr counter3 reset reset counter3 clk clk CASEcounter3ISwhenr0 counter3 r1 whenr1 counter3 r2 whenr2 counter3 r3 whenr3 counter3 r4 whenr4 counter3 r5 whenr5 counter3 r6 whenr6 counter3 r7 whenr7 counter3 r0 ENDCASE end 消除毛刺的方法 三 重新设计结构 消除毛刺的方法 三 疑问 为什么这种情况在平时用74系列中规模集成电路设计时不会出现呢 等效电路 分布电容的产生 在这个节点有7 10pf的电容 常规电路分析 用74中规模集成电路设计的系统中 毛刺被PCB板的分布电容所滤除 3nspulsewidth 167Mhz CPLD电路分析 X 此处不存在PCB板的分布电容 第五部分 时序逻辑电路的设计进阶 在FPGA设计中采用同步时序电路 一般认为同步时序电路不存在竞争 冒险现象FPGA存在内部逻辑实现时延不确定性 所以用时延关系要求苛刻的异步电路实现起来比较困难 FPGA中具有丰富的触发器资源 灵活低延时的多时钟资源 三态的总线结构资源 有利于同步电路的设计 在FPGA设计中采用同步时序电路 一般情况下同步电路将比异步电路要用更多的门ASIC门数计算方法 1gate 1个2输入与非门7gate 1DFF一个4输入与非门等于3个ASIC等效门一个4输入与非门 1DFF 3 7 10gate 在FPGA设计中采用同步时序电路 在CPLD FPGA中有点不一样在CPLD中是以宏单元 MC 做最小计算单位的在FPGA中是以逻辑单元 LC 做最小计算单位不管MC还是LC都包含触发器 MC FF LC FF 在FPGA设计中采用同步时序电路 异步电路中1个4NAND将使用1MC同步电路中1个4NAND 1DFF也使用1MC异步设计和同步设计花费了同样数目的MC 触发器对毛刺的敏感程度 EN 时钟信号 全局时钟门控时钟行波式时钟多时钟系统 全局时钟 由专用的全局时钟输入引脚驱动的单个主时钟去钟控设计项目中的每一个触发器全局时钟提供器件中最短的时钟到输出的延时最简单和最可预测的时钟 PLD FPGA设计中最好的时钟方案 全局时钟 应遵守建立时间和保持时间的约束条件 全局时钟 建立和保持时间 全局时钟 建立和保持时间 打开Setup Holdtime选择项 存在Setup Holdtime问题 全局时钟 建立和保持时间 Setuptime 2 2nsHoldtime 0 7ns 全局时钟 建立和保持时间 Setuptime 2ns Holdtime 0 1ns Setuptimeneeds 2 2nsHoldtimeneeds 0 7ns 解决方法将Setuptime从2ns增加到2 2ns将Holdtime从0 1ns增加到0 7ns 全局时钟 建立和保持时间 增加Setup Holdtime在仿真图形上解决了该问题 要真正解决该问题必须从电路和布局上着手 全局时钟 建立和保持时间 全局时钟 建立和保持时间 解决方法 将输入信号频率降到允许的最大频率以下 全局时钟的问题 时序电路中的各个触发器虽然共用一个时钟信号 但在CPLD特别是FPGA实现时 由于各部分连线的长短的不一致 导致在触发器的时钟端处的延时并不相同 回造成时钟信号畸变 构成时钟信号偏移 解决方法 芯片提供商通过对时钟分配网络的优化设计 尽量减少时间偏移芯片内部采用延时锁相环提供一个超前于输入时钟信号的时钟 来补偿布线网络造成的时间延时 减少时钟偏移 门控时钟 组合逻辑输出直接作为时钟信号容易产生毛刺 导致触发器误翻转尽量避免采用门控时钟解决方法 插入 冗余逻辑 到设计项目中 但PLD或FPGA编译器在逻辑综合时可能会去掉这些冗余逻辑 可以利用时钟使能端将门控时钟转化为全局时钟 不可靠门控时钟 3位同步加法计数器 RCO 修改不可靠门控时钟 修改不可靠门控时钟 行波时钟 一个触发器的输出用作另一个触发器的时钟输入 异步串行计数器 通过仔细地设计 行波时钟可以象全局时钟一样地可靠工作行波时钟使得与电路有关的定时计算变得很复杂行波时钟在行波链上各触发器的时钟之间产生较大的时间偏移 并且会超出最坏情况下的建立时间 保持时间和电路中时钟到输出的延时 使系统的实际速度下降 行波时钟 全局时钟替代行波时钟 多时钟系统 同一个PLD或FPGA内采用多个时钟两个异步微处理器器之间的接口微处理器和异步通信通道的接口两个时钟信号之间要满足一定的建立和保持时间 多时钟系统 Clk1和Clk2是两个不同频率的时钟信号 多时钟系统 多时钟系统 多时钟系统 Clk1最大时钟频率可达294MHZ 多时钟系统 CLK2最大时钟频率可达151 51MHz 多时钟系统 如何解决这个问题呢 多时钟系统 多时钟系统 Max PlusII无法提供该段延时的信息 多时钟系统 要确保B采样到从A来的信号 必须考虑以下条件TcoA寄存器时钟到输出的延时TdA与B之间的线延时TsuB寄存器的建立时间clk1和clk2之间的差拍时间 A B 多时钟系统 Xns 要正常工作必须确保 X Tco Td TsuTco 和器件相关 可从手册上查得Tsu 和器件相关 可从手册上查得Td 与布线相关 FLEX器件的布线结构 LAB ROW FLEX器件的布线结构 FLEX器件的三种布线方式 FastTrack Interconnect MinimumDelayLC LC 方式一 FLEX器件的

温馨提示

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

评论

0/150

提交评论