1、可编程数字系统设计,-CPLD和FPGA应用,主讲人:徐莹隽,可编程数字系统设计,可编程器件概述 常用的可编程数字系统的设计输入方式 常用CPLD和FPGA硬件结构 可编程数字系统设计中的几个基本概念 可编程数字系统设计中的组合逻辑设计 可编程数字系统设计中的时序逻辑设计 状态机的设计 VHDL语言,第一部分,可编程器件概述,常见术语,EDA (Electronic Design Automatic ) 电子设计自动化技术是指以计算机为工作平台,融合了应用电子技术、计算机技术、智能化技术的最新成果而开发出的电子CAD通用软件包,它根据硬件描述语言HDL完成的设计文件,自动完成逻辑、化简、分割、
2、综合、优化、布局布线及仿真,直至完成对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA主要辅助进行三个方面的设计工作: IC设计 电子电路设计 PCB设计,常见术语,ESDA Electronic System Design Automatic电子系统设计自动化90年代,开始追求贯彻整个设计过程的自动化 FPGA(Field Programmable Gate Array)现场可编程门阵列CPLD (Complex Programmable Logic Device)复杂可编程逻辑器件,常见术语,HDL (Hardware Description Language)硬件描述语言 VH
3、DL VerilogHDL 两种语言作为IEEE的标准支持从算法级到门级多种抽象设计层次数字系统建模。VerilogHDL语言最初起源于美国业界 ,从语言中继承了多种操作符和结构 ,比VHDL更简练 ,并且由于VerilogHDL支持晶体管级设计层次 ,在进行ASIC设计时更为灵活。 VHDL语言最初是美国国防部资助的VHSIC项目开发的产品 , VHDL语言更为严谨 ,更易于被其他人理解 ,在较高抽象设计层次上比VerilogHDL更能准确快速地对数字系统建模,常见术语,行为描述模型 用输入/输出响应来描述器件的模型。其只描述电路的功能,而不是结构。同时不针对专门的硬件,用于综合和仿真,常见
4、术语,结构描述模型 用更低层次的器件的互连来描述器件的模型。它描述电路的功能和结构。,常见术语,寄存器传输级(RTL) 用于综合的一种行为描述模型 综合(Synthesis) 将HDL转换为电路并对该电路进行一定的优化 RTL Synthesis 将硬件的RTL模型转化为某种优化的特殊的门级电路来具体实现,RTL Synthesis,Process (a, b, c, d, sel) begin case (sel) is when “00” = mux_out mux_out mux_out mux_out = d; end case;,FPGA vs CPLD,FPGA是一种高密度的可编程
5、逻辑器件,自从Xilinx公司1985年推出第一片FPGA以来,FPGA的集成密度和性能提高很快,其集成密度最高达1000万门/片以上,系统性能可达300MHz。由于FPGA器件集成度高,方便易用,开发和上市周期短,在数字设计和电子生产中得到迅速普及和应用。,FPGA vs CPLD,CPLD是由 GAL发展起来的 ,其主体结构仍是与或阵列 ,自从 90年代初 Lattice公司高性能的具有在系统可编程 ISP(In System Programmable)功能的 CPLD以来 ,CPLD发展迅速。具有 ISP功能的 CPLD器件由于具有同 FPGA器件相似的集成度和易用性 ,在速度上还有一定
6、的优势,FPGA、CPLD的结构,FPGA器件在结构上 ,由逻辑功能块排列为阵列 ,并由可编程的内部连线连接这些功能块来实现一定的逻辑功能,FPGA、CPLD的结构,CPLD是将多个可编程阵列逻辑 (PAL)器件集成到一个芯片 ,具有类似 PAL的结构。一般情况下CPLD器件中至少包含三种结构 :可编程逻辑功能块 (FB);可编程 I/ O单元 ;可编程内部连线,FPGA vs CPLD,集成度FPGA可以达到比 CPLD更高的集成度 ,同时也具有更复杂的布线结构和逻辑实现 适合结构FPGA更适合于触发器丰富的结构 ,而 CPLD更适合于触发器有限而积项丰富的结构 编程CPLD通过修改具有固定
7、内连电路的逻辑功能来编程 ,FPGA主要通过改变内部连线的布线来编程 ;FPGA可在逻辑门下编程 ,而 CPLD是在逻辑块下编程 ,在编程上 FPGA比 CPLD具有更大的灵活性,FPGA vs CPLD,功率消耗CPLD的缺点比较突出。一般情况下 ,CPLD功耗要比 FPGA大 ,且集成度越高越明显 速度CPLD优于 FPGA。由于 FPGA是门级编程 ,且 CLB之间是采用分布式互连 ;而 CPLD是逻辑块级编程 ,且其逻辑块互连是集总式的。因此 ,CPLD比 FPGA有较高的速度和较大的时间可预测性 ,产品可以给出引腿到引腿的最大延迟时间,FPGA vs CPLD,编程方式目前的 CPL
8、D主要是基于E2 PROM或 FLASH存储器编程 ,编程次数达 1万次。其优点是在系统断电后 ,编程信息不丢失。CPLD又可分为在编程器上编程和在系统编程 (ISP) CPLD两种。FPGA大部分是基于 SRAM编程 ,其缺点是编程数据信息在系统断电时丢失 ,每次上电时 ,需从器件的外部存储器或计算机中将编程数据写入 SRAM中。其优点是可进行任意次数的编程 ,并可在工作中快速编程 ,实现板级和系统级的动态配置 ,因此可称为在线重配置的 PLD或可重配置硬件,FPGA vs CPLD,使用方便性CPLD比 FPGA要好。 CPLD的编程工艺采用 E2 CPLD的编程工艺采用 E2 CPLD的
9、编程工艺采用 E2 PROM或FASTFLASH技术 ,无需外部存储器芯片 ,使用简单 ,保密性好。而基于 SRAM编程的FPGA,其编程信息需存放在外部存储器上 ,需外部存储器芯片 ,且使用方法复杂 ,保密性差,可编程器件选择,从系统设计的角度选择目标器件的基本原则,电磁兼容设计的原则 能选用低速器件的不选择高速器件,以降低成本,减少电磁干扰 主流芯片原则 要尽量选择厂家的主流推广器件,以降低成本,缩短供货周期 多片系统原则 不一味追求单片化,可根据系统的实际情况适当选择多器件的结构,以加快设计过程,提高系统稳定性,多片方案: 优点:每个芯片内功能相对单一,单片内逻辑设计和调试相对容易,简化
10、系统实现的复杂度。 缺点:在整个系统调试时,不同子系统之间的信号调式较困难,在高速设计中存在明显缺陷。 单片方案: 优点:提高了系统的集成度,减少了故障点,降低系统时延,降低PCB布线复杂度 缺点:片内逻辑复杂度大,仿真激励波形和测试文件编写复杂,对设计人员要求较高,可编程器件选择,从器件资源的角度选择目标器件的原则,器件的逻辑资源和系统的逻辑要求相匹配 特征单元评估法 器件的I/O脚的数目满足目标系统的要求 专用功能脚 用户功能脚 双功能脚,引脚的绑定原则 1、尽量避免人为固定I/O引脚,除非是多次实现过程中可能存在的不固定I/O引脚 2、在FPGA中尽量避免将相关的引脚集中固定在相互靠近的
11、位置,在CPLD中则根据器件实际情况具体分析 3、适当考虑或禁止使用双功能脚,若必须使用,应对引脚加接上拉或下拉电阻 4、在FPGA设计实现中,I/O脚一般从左向右,从上到下设定。,部分FPGA厂家,Altera http:/ APEX20K,ACEX1K。 普遍认为其开发工具MaxplusII是较成功的PLD开发平台。新近推出的新一代完全集成设计环境Quartus提供了对APEX20K系列芯片的最好支持,弥补了MaxplusII某些功能的不足。,部分FPGA厂家,Lattice http:/ 1999年推出可编程模拟器件。99年收购Vantis(原AMD子公司),成为第三大可编程逻辑器件供应
12、商。主要产品有ispLSI2000/5000/8000, MACH4/5,部分FPGA厂家,Xilinx http:/ ,Spartan, Vertex 。开发软件为:Foundition3.1i 。通常来说,在欧洲用Xilinx的人多,在日本和亚太地区用ALTERA的人多,在美国则是平分秋色。全球PLD/FPGA产品60%以上是由Altera和Xilinx提供的。可以讲Altera和Xilinx共同决定了PLD技术的发展方向。,部分FPGA厂家,Actel http:/ 利用功能仿真技术,以确保设计的正确性 利用逻辑综合技术,把功能描述转换成某一具体结构芯片的网表文件,输出给厂商的布局布线器
13、进行布局布线。 布局布线结果反标回同一仿真器,进行包括功能和时序的后验证,以保证布局布线所带来的门延时和线延时不会影响设计的性能。,自顶向下设计法优点,大大缩短了设计周期 由于功能描述可完全独立于芯片结构在设计的最初阶段,设计师可不受芯片结构的约束,集中精力进行产品设计,进而避免了传统设计方法所带来的重新再设计风险,大大缩短了设计周期。 设计的再利用得到保证 目前的电子产品正向模块化发展,所谓模块化就是对以往设计成果进行修改,组合和再利用,产生全新的或派生设计,而自顶向下设计方法的功能描述可与芯片结构无关。因此可以以一种的方式进行存档,以便将来的重新利用。,自顶向下设计法优点,设计规模大大提高
14、 简单的语言描述即可完成复杂的功能,而不需要手工绘图。 芯片选择更加灵活 设计师可在较短的时间内采用各种结构芯片来完成同一功能描述,从而在设计规模、速度、芯片价格及系统性能要求等方面进行平衡,选择最佳结果。,层次化设计方法分层原则,将所有的算术运算安排在同一层中,状态机、随机逻辑、数据路径等逻辑类型作为独立的模块设计 模块的输入尽量不要悬空,输出应尽量寄存。 单个功能块应保持在30006000门之间,HDL语言的行数不超过400行 尽量采用专用的IP核进行设计,HDL,VHDL具有强大的行为描述能力,丰富的仿真语句和库函数,对设计的描述也具有相对独立性 Verilog 最大特点就是易学易用,语
15、法比较自由 ABEL一种早期的硬件描述语言支持逻辑电路的多种表达形式,其中包括逻辑方程,真值表和状态图。 AHDL(Altera HHDL) 是ALTERA公司发明的HDL,特点是非常易学易用,学过高级语言的人可以在很短的时间(如几周)内掌握AHDL。它的缺点是移植性不好,通常只用于ALTERA自己的开发系统。,VHDL,VHDL语言最初于1981年由美国国防部为解决所有电子产品存档而提出的一种统一标准语言,1983年至1985年,由IBM、TI等公司对VHDL进行细致开发,1987年成为IEEE 107687标准。1993年,修订版IEEE 107693出台。随后,IEEE分别提出IEEE
16、1076 3(可综合标准)和IEEE 1076.4(标准),以解决可综合VHDL描述在不同EDA厂商之间的移植问题,以及ASIC/FPGA的门级库描述问题。,VERILOG,VERILOG语言最早由GATEWAY设计自动化公司于1981年提出,并提供相应的VERILOG仿真器。1985年,仿真器增强版VERILOG-XL推出。CADENCE公司于1989年收购GATEWAY公司,并于1990年把VERILOG语言推向市场,而保留了VERILOG-XL的所有权。1995年, VERILOG成为IEEE 1364标准。,VHDL & VERILOG,描述能力 两种语言均可有效地描述RTL级, 在行
17、为/系统级,Verilog需要PLI的支持,门级及以下级Verilog则有较大的优势。 数据类型 VHDL提供大量的数据类型,设计者还可自定义一些数据类型。很多数据类型对于设计描述是非常方便的,如枚举型等。 Verilog的数据类型相对比较简单,所有数据类型由语言定义,设计者不可自定义数据类型。 由于VHDL语法非常严格,数据操作必须在相同数据类型之间进行,优点是设计明了,不易产生设计错误;缺点是需要使用数据类型转换函数进行不同类型数据之间的运算操作。 Verilog可在不同字长数据间进行操作,语句比较简单,但设计者必须掌握尺度,否则可能产生不可预料的综合结果。,VHDL & VERILOG,
18、运算操作 两种语言比较相似。例外是Verilog中无求幂运算、与非、或非、算术左/右移、循环左/右移等。但有非常有用的约简运算,在VHDL中则可通过循环语句完成这一算法。 结构描述 VHDL语言中有丰富的语法定义来帮助设计者进行高层次结构管理、参数化设计和处理较大规模的电路。如Package,Configuration,Generate,Generic等,并可运用于逻辑综合。 Verilog除参数化设计外,则无相应的语法定义,但在门级描述方面有较大的优势,被广泛采用进行ASIC和FPGA库的开发。这与Verilog语言本身最初的设计思想有关。目前,IEEE 1076.4标准解决了VHDL门级描
19、述的问题。,VHDL & VERILOG,库 VHDL可通过库的方式来管理和存储编译后的设计数据,过程和函数可写在Package中,以便不同设计的调用。 Verilog没有Package和库的概念,过程和函数的再利用需通过Include语句。 易用性 VHDL是语法非常严格的语言,同时,对于同一功能模块,描述方法可以有各种形式,因此,VHDL对于初学者较为困难,但对高级用户来说,却是强有力的编程语言。 如果不考虑PLI以及仿真编译的指令集部分,Verilog要比VHDL容易得多,但一旦考虑这些因素,设计者相当于需要学习三种语言。,VHDL & VERILOG,市场份额 在国内,目前FPGA设计
20、者多采用VHDL,日本市场Verilog一统天下,欧洲市场VHDL占主流,而在美洲市场,两种语言平分秋色。 结论 就标准而言,两种语言并无优劣、先后可言。至于设计者采用哪种语言,与设计者的习惯、喜好以及目前EDA、FPGA行业的支持有关。由于VHDL在系统设计方面的语法支持,各FPGA厂商对VHDL语言的支持明显多于Verilog,这可从各厂商所提供的设计开发包中得到明证。而Verilog由于在门级描述上的优势,从而被众多的IC设计人员所采用。,设计工具的选择输入方法,图形化设计输入方法: 以方框图、真值表、状态图或流程图的方式进行功能描述,工具本身可自动生成HDL描述。 这种方法有利于HDL
21、语言初学者, 更贴切于设计人员的思维方式, 易于设计数据管理,设计师的经验交流,以及设计产品的存档、再利用等。,设计工具的选择输入方法,HDL语言标准的支持 工具应当充分支持VHDL IEEE 107687及93标准,充分支持Verilog IEEE 1364标准。 VHDL/Verilog混合描述环境支持 HDL语言有两种国际标准,不同设计人员、设计小组、设计单位间可能采用不同的语言环境。设计工具必须做到支持混合语言环境。 IP支持 支持对设计成果的调用。,设计工具的选择输入方法,差错定位能力 设计过程中不可避免地会产生各种错误,包括输入错误、语法错误、编译错误等。设计工具必须具备自动定位错
22、误的能力,而无需人工查找,这对于较大的设计是非常有用的。 设计调试能力 以各种生动形象的方式进行设计调试(如状态图的动画调试),检查设计本身的功能错误。,设计工具的选择输入方法,设计数据管理 当设计规模增大后,设计数据也随之增加,设计工具应能自动管理设计数据,特别是设计过程中不可避免需要对设计进行修改,能否自动识别修改与未修改数据,直接影响设计者的效率。工具还应当支持小组设计,数据版本管理等。 即插即用能力 即工具的开放性,工具应当具有开放的数据结构,能够与目前业界最优秀的工具结合使用,保护用户投资。 易用性 工具应有友好的用户界面,完整的在线文档帮助。设计结果文档的生成,不同平台的支持,以及
23、各平台间的数据统一等。,设计工具的选择仿真工具,由于设计规模的增加以及设计复杂度的提高,仿真器的仿真速度和仿真容量成为衡量仿真器的最重要因素,这包括行为级、级和门级,其它考虑因素包括: HDL语言标准支持 包括对VHDL IEEE107687、IEEE107693、IEEE1076.4和Verilog IEEE1364标准的完全支持 VHDL / Verilog混合仿真环境支持 仿真调试能力,设计工具的选择仿真工具,FPGA厂商的支持 系统仿真能力 主要是对外部模块的调用仿真能力,如语言等 易用性 如友好的用户界面、在线文档帮助、数据管理、平台支持、平台间的数据统一等,设计工具的选择逻辑综合工
24、具,逻辑综合是自顶向下设计方法过程中的最重要环节。逻辑综合工具的好坏直接影响设计产品的性能。在选择逻辑综合工具时,应当考虑以下因素: 不同厂商及其芯片系列的支持 目前FPGA厂商众多,给设计师提供了广泛的选择空间,综合工具应当最大程度地支持不同厂商。同时应当保证对各厂商最新芯片的快速响应。,设计工具的选择逻辑综合工具,针对不同厂商芯片结构的算法支持 FPGA综合不同于ASIC,对于ASIC而言,其结构无非包括门阵列和标准单元两种,差别在于所选择的工艺不同。而不同厂商的FPGA,甚至同一厂商不同系列的产品,都存在结构上的差别,是否考虑不同的芯片结构,采用不同的优化算法,以便得到相应的最优结果,成
25、为考查综合工具的最关键因素。,设计工具的选择逻辑综合工具,综合结果性能 逻辑综合的目的不仅是简单地用某一芯片完成设计功能,更重要的是在于在满足设计功能和性能要求的同时,以尽量较低档次(门数和速度)的芯片来实现设计要求。这样就可以降低设计者在芯片上的开销。 设计的再利用 设计师以往的设计大多采用原理图的方法进行描述,并生成一些特定的网表文件,如EDIF,XNF等。逻辑综合工具应当支持对这些网表文件的读入能力,以便保护设计者以往的设计成果。,设计工具的选择逻辑综合工具,综合速度 即综合工具的运算速度。 设计规模 对大规模设计的支持能力,能否支持设计的层次结构管理。 设计的调试、错误定位能力 能够很
26、好地在语言和综合电路之间建立数据联系,便于设计调试、查错以及对综合结果的理解。 时序优化能力 不仅可以做到面积和延时的优化,还应当具有基于设计者时序约束(如时钟周期,信号的时序要求等)的时序优化能力。,设计工具的选择逻辑综合工具,芯片的重映射 支持不同结构的FPGA之间的相互映射,FPGA到ASIC以及ASIC到FPGA的重映射。 VHDL/Verilog语言的标准支持 VHDL/Verilog混合描述环境支持 与后端工具的集成能力 即与各FPGA厂家布局布线器的无缝连接,支持厂商的特定网表格式,综合约束条件到布局布线器的传递等。 易用性,常见的HDL工具,FPGAExpress: VHDL/
27、VerilogHDL综合软件,简单易用,但有人反映其对VerilogHDL的支持不够强, Synopsys公司出品。,FPGA CompilerII VHDL/VerilogHDL综合软件,Synopsys公司出品,Leonardo.Spectrum:VHDL/VerilogHDL综合软件,可以加比较多的约束条件。可控性较强。Exemplar Logic公司出品(Mentor子公司)。,常见的HDL工具,Synplify : VHDL/VerilogHDL综合软件。Synplicity公司出品。,Active HDL VHDL/VerilogHDL仿真软件,简单易用。Aldec公司出品,Mod
28、elsim : 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和Veri
29、log语言的相互自动转化,常见的HDL工具,Visial VHDL / Visal Verilog: 可视化的HDL/Verilog编辑工具,功能类似于Renoir,Renoir 通过画框图来完成PLD/FPGA的系统设计,可自动生成部分VHDL/VerilogHDL源代码文件,亦可由VHDL/VerilogHDL源代码生成原理框图。 Renoir(输入),Leonardo.Spectrum(综合)和Modelsim(仿真)构成了Mentor公司引以为豪的VHDL/VerilogHDL完整开发系统:FPGA Advantage,推荐参考书,VHDL与数字电路设计卢毅 科学出版社 Verilog
30、 HDL 硬件描述语言清华大学出版社 CPLD技术及应用宋万杰等 西安电子科技大学出版社 可编程逻辑系统的VHDL设计技术Kevin Skahill 东南大学出版社 ALTERA可编程器件及其应用刘宝琴 清华大学出版社 Xinlinx数字系统现场集成技术朱明程东南大学出版社 在系统编程技术及其应用黄正瑾东南大学出版社,第三部分,常用CPLD和FPGA硬件结构,A 为什么要了解硬件结构,我没有理由要了解硬件结构! 那应该是芯片设计师的工作!,问题的提出,A:要求设计一个逻辑方程:P=(A2 XNOR B2) XOR (A1 XNOR B1) XOR (A0 XNOR B0) B:要求设计二个10
31、进制计数器,其中一个时钟为 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:该可编程器件所有寄存器 的时钟脚都连到了一起,所 以只能有一个时钟
32、输入信号,解决方案,A:多级宏单元级连 将P=(A2 XNOR B2) XOR (A1 XNOR B1) XOR (A0 XNOR B0) 改为: P1=(A2 XNOR B2) XOR (A1 XNOR B1)8个乘积项 P=P1 XOR (A0 XNOR B0)4个乘积项B:选用其他器件,结 论,我们有必要对可编程器件的硬件结构有一个较深入的了解,B CPLD硬件结构分析比较,Lattice1032E和Altera7128E,B1 结构框图比较,ispLSI 1032器件结构框图,MAX7000E结构框图,比较结果,总体结构大致相同,CPLD一般都包括:1、I/O控制区域2、可编程的连线区
33、域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,可扩展到20 7128为5,可单方向并联扩展到20,比较结果(续),寄存器 1032同一GLB中的4个宏单元公用一可编程时钟、清零、置数信号 7128可单独编程为D、T、JK、RS触发器,单独
34、使用一可编程时钟、清零、置数、使能信号,B3 I/O控制比较,1032 大块方框图,1032大块的输出使能控制,1032 I/O单元结构图,1032 I/O组态,输出布线池,7128 I/O控制块,比较结果,输入 1032有直接输入和寄存器输入 7128只有直接输入 输出 1032的全局输出使能信号比较灵活,有专用的输出布线池 7128的全局输出使能信号只有固定的6个,但有输出摆率控制,C FPGA的结构分析,ALTERA10K10,查找表(Look-Up-Table)的原理,查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。 FPGA中多使用4输入的LUT,每一个
35、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芯片的管脚输入后进入可编程连线,然
36、后作为地址线连到到LUT,LUT中已经事先写入了所有可能的逻辑结果,通过地址查找到相应的数据然后输出,这样组合逻辑就实现了。 该电路中D触发器是直接利用LUT后面D触发器来实现。时钟信号CLK由I/O脚输入后进入芯片内部的时钟专用通道,直接连接到触发器的时钟端。触发器的输出与I/O脚相连,把结果输出到芯片管脚。,FLEX10K10结构框图,EAB结构框图,LE结构框图,进位链操作,用n+1个LE实现n位加法器,级连链操作,逻辑单元的工作模式,正常模式 适合于一般逻辑应用和各种译码功能 运算模式 提供两个3输入LUT,适合完成加法器、累加器和比较器。一个计算3输入函数,1个生成进位 加减计数模式
37、 提供计数器使能,时钟使能,同步加减控制和数据加载选择 可清除的计数模式 类似加减计数方式,但支持同步清除而不是加减控制,正常模式,运算模式,加减计数模式,可清除的计数模式,内部三态仿真,提供了除物理三态以外的内部三态 可避免多个物理三态的OE选通造成的冲突和没有OE选通所造成的悬浮,清除置位逻辑控制,异步清除,异步置位,异步清除和置位,清除置位逻辑控制,带清除的异步加载,带置位的异步加载,清除置位逻辑控制,无清除和置位的异步加载,LAB结构框图,快速通道连接,FLEX10K的互连资源,IOE结构框图,第三部分,可编程数字系统设计中的几个基本概念,组合逻辑电路,组合逻辑电路任意时刻的输出只取决
38、于该时刻的输入,于电路原来的状态无关 常用的组合逻辑电路有: 地址编码器、加法器、多路选择器等,时序逻辑电路,时序逻辑电路任一时刻的输出信号不仅取决于当时的输入信号还取决于电路原来的状态 常用的时序逻辑电路有: 计数器、移位寄存器、序列发生器等,同步时序电路,同步时序电路的存储器件为触发器,且触发器是在同一个时钟操作下工作的,异步时序电路,异步时序电路的存储器件可以是触发器也可以是延迟器件。电路不需要统一的系统时钟,竞争和冒险,建立时间和保持时间,建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间 保持时间(hold time)是指在触发器的时钟信号上升沿
39、到来以后,数据稳定不变的时间,第四部分,组合逻辑电路设计进阶,组合逻辑电路举例,组合电路,仿真结果分析,理论结果,实际结果,可编程器件有问题 我再也不用它了,No, no, no 这不是可编程 器件的问题,一个最简单的组合逻辑电路,一个两输入的与门或者两输入的或门是最简单的电路,!可编程器件对这么简单的电路的处理结果是什么呢,两输入与门的仿真结果,输入波形,输出波形,再进一步分析,假设与门的内部延时是0.2nS,对信号B进行简单计算: (Trace delay of b) + AND gate internal delay = 8.1ns (Trace delay of b) + 0.2ns
40、= 8.1ns (Trace delay of b) = 7.9ns 对信号A进行简单计算: (Trace delay of a) + AND gate internal delay = 11.1ns (Trace delay of a) + 0.2ns = 11.1ns (Trace delay of a) = 10.9ns,结果再分析,(Trace delay of b) = 7.9ns,(Trace delay of a) = 10.9ns,Output C change from “0” to “1” at 8.1ns,A 3 ns Pulse generate (10.9-7.9 =
41、 3ns),Output C change back from “1” to “0” as the final result,总 结,设计一个 2输入的与门也不是象1+1=2那么简单 在组合逻辑设计中我们需要考虑 Trace Delay and Gate Delay 函数 : C的输出为 “0” 时序 : C的输出有一个3ns宽的毛刺 这3ns的毛刺主要是由 Trace Delay造成的 组合电路工作时不仅和逻辑函数相关还和时序相关,深入总结,当某一时刻同时有一个以上的信号发生变化时容易产生毛刺 组合逻辑电路是会产生毛刺的,再讨论第一个例子,分 析,No,No,No,No,No,仿真结果分析,
42、毛刺的宽度,“3” to “4” 011 - 100,“5” to “6” 101 - 110,结 论,如果我们知道毛刺是什么产生的 我们可以计算出毛刺出现的具体时间 我们可以计算出毛刺的脉冲宽度 当组合逻辑输出用做以下功能时必须加以注意 触发器的CLEAR端 触发器的PRESET 端 触发器的CLOCK 端 锁存器的控制端 其他 ,q0 = 3.9ns q1 = 3.7ns q2 = 2ns,方法: 1.) 外加 +0.2ns 给q1 2.) 外加 +1.9ns 给q2 3.) 这样 q20 的延时为 3.9ns,1.)有些软件支持这种做法(如Xinlinx) 2.)实现方式看起来比较简单,
43、消除毛刺的方法(一),方法一的缺点,1.) 电路只能工作在此处能给你提供0.2nS延时的时候 2.)电路只能工作在此处能给你提供1.9nS延时的时候 3.) 做起来很费时间,还要考虑以下问题 : 1.) 不同的温度 (0C, 50C, 60C, 70C) 会有不同的延时值 2.) 不同的工作电压 (5V, 4.5V or 5.5V)会有不同的延时值 3.) 附加的逻辑有可能导致其他错误,影响布线和总体时延 4.) 还有很多不可预测的问题,消除毛刺的方法(二),消除毛刺的方法(二),毛刺仍然存在但由于附加触发器的存在不会在产生误操作,消除毛刺的方法(三),subdesign modcount (
44、 clk, reset : input;q20 : output; ) variable counter3 :MACHINE OF BITS (rr20)WITH STATES(r0 = B”101“,r1 = B”100“,r2 = B”000“,r3 = B“001“,r4 = B”011“,r5 = B”010“,r6 = B“110“,r7 = B“111“);,begin q = rr; counter3.reset = reset; counter3.clk = clk; CASE counter3 ISwhen r0 = counter3 = r1; when r1 = coun
45、ter3 = r2;when r2 = counter3 = r3; when r3 = counter3 = r4;when r4 = counter3 = r5;when r5 = counter3 = r6;when r6 = counter3 = r7;when r7 = counter3 = r0; END CASE; end;,消除毛刺的方法(三),重新设计结构,消除毛刺的方法(三),疑问,为什么这种情况在平时用74系列中规模集成电路设计时不会出现呢?,等效电路,分布电容的产生,在这个节点有710pf的电容,常规电路分析,用74中规模集成电路设计的系统中,毛刺被PCB板的 分布电容
46、所滤除,3ns pulse width = 167Mhz,CPLD电路分析,X,此处不存在 PCB板的分 布电容,第五部分,时序逻辑电路的设计进阶,在FPGA设计中采用同步时序电路,一般认为同步时序电路不存在竞争冒险现象 FPGA存在内部逻辑实现时延不确定性,所以用时延关系要求苛刻的异步电路实现起来比较困难。 FPGA中具有丰富的触发器资源、灵活低延时的多时钟资源、三态的总线结构资源,有利于同步电路的设计,在FPGA设计中采用同步时序电路,一般情况下同步电路将比异步电路要用更多的门 ASIC 门数计算方法: 1 gate = 1 个2输入与非门 7 gate = 1 DFF 一个4输入与非门等
47、于3个ASIC等效门 一个4输入与非门+ 1 DFF = 3 + 7 = 10 gate,在FPGA设计中采用同步时序电路,在CPLD/FPGA中有点不一样 在CPLD中是以宏单元 (MC)做最小计算单位的 在FPGA中是以逻辑单元 (LC)做最小计算单位 不管 MC 还是 LC 都包含触发器,MC (FF),LC(FF),在FPGA设计中采用同步时序电路,异步电路中 1个 4 NAND 将使用 1 MC 同步电路中 1个4 NAND + 1 D FF 也使用 1 MC 异步设计和同步设计花费了同样数目的MC,触发器对毛刺的敏感程度,EN,时钟信号,全局时钟 门控时钟 行波式时钟 多时钟系统,全局时钟,由专用的全局时钟输入引脚驱动的单个主时钟去钟控设计项目中的每一个触发器 全局时钟提供器件中最短的时钟到输出的延时 最简单和最可预测的时钟。 PLD/FPGA设计中最好的时钟方案,