1、1. EDA技术及发展 2. 可编程片上系统(sopc)开发环境 3. 步进电机驱动器可编程片上系统(sopc)的总体设计 4. 步进电机驱动器IP核设计及优化,讲座内容安排(初稿),1.1 EDA技术的发展概况,1.5 IP核,1.2 可编程逻辑器件的发展概况,1.3 硬件描述语言VHDL,1.4 EDA与传统电子设计方法,1.1 EDA技术的发展概况,电子设计自动化(EDA,Electronic Design Automation)是指利用计算机完成电子系统的设计。EDA技术是以计算机和微电子技术为先导,汇集了计算机图形学、拓扑、逻辑学、微电子工艺与结构学和计算数学等多种计算机应用学科最新
2、成果的先进技术。EDA技术以计算机为工具,代替人完成数字系统的逻辑综合、布局布线和设计仿真等工作。设计人员只需要完成对系统功能的描述,就可以由计算机软件进行处理,得到设计结果,而且修改设计如同修改软件一样方便,可以极大地提高设计效率。,EDA,1.1 EDA技术的发展概况,从20世纪60年代中期开始,人们就不断开发出各种计算机辅助设计工具来帮助设计人员进行电子系统设计。电路理论和半导体工艺水平的提高,对EDA技术的发展起了巨大的推进作用,使EDA作用范围从PCB板设计延伸到电子线路和集成电路设计,直至整个系统的设计,也使IC芯片系统应用、电路制作和整个电子系统生产过程都集成在一个环境之中。根据
3、电子设计技术的发展特征,EDA技术发展大致分为三个阶段。,EDA,CAD阶段(20世纪60年代中期20世纪80年代初期)第一阶段的特点是一些单独的工具软件,主要有PCB(Printed Circuit Boatd)布线设计、电路模拟、逻辑模拟及版图的绘制等,通过计算机的使用,从而设计人员从大量繁琐重复的计算和绘图工作中解脱出来。例如,目前常用的Protel早期版本Tango,以及用于电路模拟的 PSPICE软件和后来产品化的IC版图编辑与设计规则检查系统等软件,都是这个阶段的产品。这个时期的EDA一般称为CAD(Computer Aided Design)。,EDA,2.CAE阶段(20世纪8
4、0年代初期20世纪90年代初期)这个阶段在集成电路与电子设计方法学以及设计工具集成化方面取得了许多成果。各种设计工具,如原理图输入、编译与连接、逻辑模拟、测试码生成、版图自动布局以及各种单元库已齐全。由于采用了统一数据管理技术,因而能够将各个工具集成为一个CAE(Computer Aided Engineering)系统。按照设计方法学制定的设计流程,可以实现从设计输入到版图输出的全程设计自动化。这个阶段主要采用基于单元库的半定制设计方法,采用门阵列和标准单元设计的各种ASIC得到了极大的发展,将集成电路工业推入了ASIC时代。多数系统中集成了PCB自动布局布线软件以及热特性、噪声、可靠性等分
5、析软件,进而可以实现电子系统设计自动化。,3. EDA阶段(20世纪90年代以来)20世纪90年代以来,微电子技术以惊人的速度发展,其工艺水平达到深亚微米级,在一个芯片上可集成数百万乃至上千万只晶体管,工作速度可达到GHz,这为制造出规模更大,速度更快和信息容量很大的芯片系统提供了条件,但同时也对EDA系统提出了更高的要求,并促进了EDA技术的发展。此阶段主要出现了以高级语言描述、系统仿真和综合技术为特征的第三代EDA技术,不仅极大地提高了系统的设计效率,而且使设计人员摆脱了大量的辅助性及基础性工作,将精力集中于创造性的方案与概念的构思上。下面简单介绍这个阶段EDA技术的主要特征。,(1)高层
6、综合(HLS,High Level Synthesis)的理论与方法取得较大进展,将EDA设计层次由RT级提高到了系统级(又称行为级),并划分为逻辑综合和测试综合。逻辑综合就是对不同层次和不同形式的设计描述进行转换,通过综合算法,以具体的工艺背景实现高层目标所规定的优化设计,通过设计综合工具,可将电子系统的高层行为描述转换到低层硬件描述和确定的物理实现,使设计人员无须直接面对低层电路,不必了解具体的逻辑器件,从而把精力集中到系统行为建模和算法设计上。测试综合是以设计结果的性能为目标的综合方法,以电路的时序、功耗、电磁辐射和负载能力等性能指标为综合对象。测试综合是保证电子系统设计结果稳定可靠工作
7、的必要条件,也是对设计进行验证的有效方法,其典型工具有Synopsys公司的Behavioral Compiler 以及Mentor Graphics公司的Monet和Renoir。,EDA,(2)采用硬件描述语言HDL(Hardware Description Language)来描述10万门以上的设计,并形成了VHDL(Very High Speed Integrated Circuit HDL)和Verilog HDL两种标准硬件描述语言。它们均支持不同层次的描述,使得复杂IC的描述规范化,便于传递、交流、保存和修改,也便于重复使用。它们多应用于FPGA/CPLD/EPLD的设计中。大多
8、数EDA软件都兼容这两种标准。,(3)可测性综合设计。随着ASIC的规模与复杂性的增加,测试难度与费用急剧上升,由此产生了将可测性电路结构制作在ASIC芯片上的想法,于是开发了扫描插入、BLST(内建自测试)、边界扫描等可测性设计(DFT)工具,并已集成到EDA系统中。其典型产品有Compass公司的Test Assistant和Mentor Graphics公司的LBLST Architect、BSD Architect、DFT Advisor等。,EDA,(4)为带有嵌入IP模块(IP核)的ASIC设计提供软硬件协同系统设计工具。协同验证弥补了硬件设计和软件设计流程之间的空隙,保证了软硬件
9、之间的同步协调工作。协同验证是当今系统集成的核心,它以高层系统设计为主导,以性能优化为目标,融合逻辑综合、性能仿真、形式验证和可测性设计,产品如Mentor Graphics公司的Seamless CAV。,全球EDA厂商有近百家之多,大体可分两类:一类是EDA专业软件公司,较著名的有Mentor Graphics、Cadence Design Systems、Synopsys、Viewlogic Systems 和Protel等;,EDA,另一类是半导体器件厂商,他们为了销售他们的产品而开发EDA工具,较 著名的公司有Altera、Xilinx、AMD、TI和Lattice等。EDA专业软件
10、公司独立于半导体器件厂商,推出的EDA系统具有较好的标准化和兼容性,也比较注意追求技术上的先进性,适合于搞学术性基础研究的单位使用。而半导体厂商开发的EDA工具,能针对自己器件的工艺特点作出优化设计,提高资源利用率,降低功耗,改善性能,比较适合于产品开发单位使用。,EDA,随着系统开发对EDA技术的目标器件各种性能要求的提高,ASIC和FPGA将更大程度相互融合。这是因为虽然标准逻辑ASIC芯片尺寸小、功能强大、耗电省,但设计复杂,并且有批量生产要求。可编程逻辑器件开发费用低廉,能在现场进行编程,但却体积大、功能有限,而且功耗较大。因此,FPGA和ASIC正在走到一起,互相融合,取长补短。,现
11、今也在进行将ASIC嵌入可编程逻辑单元的工作。目前,许多PLD公司开始为ASIC提供FPGA内核。PLD厂商与ASIC制造商结盟,为SOC设计提供嵌入式FPGA模块,使未来的ASIC供应商有机会更快地进入市场,利用嵌入式内核获得更长的市场生命期。,EDA,ASIC制造商增加可编程逻辑的另一个原因是,考虑到设计产品的许多性能指标变化太快,特别是通信协议,为已经完成设计并投入应用的IC留有多次可自由更改的功能是十分有价值的事,这在通信领域中的芯片设计方面尤为重要。现在,传统ASIC和FPGA之间的界限正变得模糊。系统级芯片不仅集成RAM和微处理器,也集成FPGA。整个EDA和IC设计工业都朝这个方
12、向发展。,EDA,1.2 可编程逻辑器件的发展概况,ASIC(Application Specific Integrated Circuit)的设计与制造,已不再完全由半导体厂商独立承担,系统设计师在实验室里就可以设计出合适的ASIC芯片,并且立即投入实际应用之中,这都得益于可编程逻辑器件PLD(Programmabil Logic Dveice)的出现。现在应用最广泛的PLD主要是现场可编程门阵列FPGA(Field Programmable Gaate Array)、复杂可编程逻辑器件CPLD(Complex Programmable Logic Device)。,最早的PLD是1970年
13、制成的PROM(Programmable Read Only Memory),即可编程只读存储器,它是由固定的与阵列和可编程的或阵列组成。PROM采用熔丝工艺编程,只能写一次,不能擦除和重写。随着技术的发展和应用要求,此后又出现了UVEPROM(紫外线可擦除只读存储器)、EEPROM(电可擦除只读存储器),由于它们价格低,易于编程,速度低,适合于存储函数和数据表格,因此主要用作存储器。典型的EPROM有2716、2732等。,PLD,1.2 可编程逻辑器件的发展概况,可编程逻辑阵列PLA(Programmable Logic Array)于20世纪70年代中期出现,它是由可编程的与阵列和可编程
14、的或阵列组成,但由于器件的资源利用率低,价格较贵,编程复杂,支持PLA的开发软件有一定难度,因而没有得到广泛应用。,PLD,可编程阵列逻辑PAL(Programmable Array Logic)器件是1977年美国MMI公司(单片存储器公司)率先推出的,它由可编程的与阵列和固定的或阵列组成,采用熔丝编程方式,双极性工艺制造,器件的工作速度很高。由于它的输出结构种类很多,设计很灵活,因而成为第一个得到普遍应用的可编程逻辑器件,如PALl6L8。,通用阵列逻辑器件GAL(Generic Array Logic)器件是1985年Lattice公司最先发明的可电擦写、可重复编程、可设置加密位的PLD
15、。GAL在PAL基础上,采用了输出逻辑宏单元形式E2CMOS工艺结构。具有代表性的GAL芯片有GALl6V8、GAL20V8,这两种GAL几乎能够仿真所有类型的PAL器件。在实际应用中,GAL器件对PAL器件仿真具有百分之百的兼容性,所以GAL几乎完全代替了PAL器件,并可以取代大部分SSI、MSI数字集成电路,如标准的54/74系列器件,因而获得广泛应用。,可擦除可编程逻辑器件EPLD(Erasable PLD)是20世纪80年代中期Altera公司推出的基于UVEPROM和CMOS技术的PLD,后来发展到采用E2CMOS工艺制作的PLD。EPLD基本逻辑单元是宏单元。宏单元由可编程的与或阵
16、列、可编程寄存器和可编程I/O三部分组成。,从某种意义上讲EPLD是改进的GAL,它在GAL基础上大量增加输出宏单元的数目,提供更大的与阵列,灵活性较GAL有较大改善,集成密度大幅度提高,内部连线相对固定,延时小,有利于器件在高频率下工作,但内部互连能力十分弱。 复杂可编程逻辑器件CPLD(Complex PLD)是20世纪80年代末Lattice公司提出的在线可编程(ISP,In System rogrammability)技术以后于20世纪90年代初出现的。CPLD是在EPLD的基础上发展起来的,采用E2CMOS工艺制作,与EPLD相比,增加了内部连线,对逻辑宏单元和I/O单元也有重大的改
17、进。其典型器件有Altera的MAX7000系列,,Xilinx的7000和9500系列,Lattice的PLSI/ispLSI系列和AMD的MACH系列。,现场可编程门阵列FPGA(Field Programmable GateArray)器件是Xilinx公司1985年首家推出的它是一种新型的高密度PLD,采用CMOS-SRAM工艺制作。FPGA的结构与门阵列PLD不同,其内部由许多独立的可编程逻辑模块(CLB)组成,逻辑块之间可以灵活地相互连接。 FPGA出现后受到电子设计工程师的普遍欢迎,发展十分迅速。Xilinx、Altera和Actel等公司都提供高性能的FPGA芯片。,20世纪末
18、出现了SOPC(片上可编程系统)器件,SOPC是现代电子技术和电子系统设计的汇聚点和最新发展方向,它将普通EDA技术、计算机系统、嵌入式系统、工业自动化控制系统、DSP及无线电等溶为一体,涵盖了嵌入式系统设计技术的全部内容。SOPC结合了SOC和PLD、FPGA各自的优点,集成了硬核或软核CPU、DSP、存储器、外围I/O及可编程逻辑,用户可以利用SOPC平台自行设计各种高速高性能的DSP处理器或特定功能的CPU处理器,从而使电子系统设计进入了一个全新的模式。在应用的灵活性和价格上SOPC有极大的优势,SOPC被称为“半导体产业的未来”。XILINX公司和ALTERA公司的新一代FPGA集成了
19、中央处理器(CPU)或数字处理器(DSP)内核,在一片FPGA上进行软硬件协同设计,为实现SOPC提供了强大的硬件支持。,DSP,存储器,外围I/O,可编程逻辑,Nios,PLL,ALTERA公司SOPC器件,1.3 硬件描述语言VHDL,硬件描述语言是EDA技术的重要组成部分,VHDL是作为电子设计主流硬件的描述语言,本课将重点介绍它的编程方法和使用技术。 VHDL的英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware Description Language,于1983年由美国国防部(DOD)发起创建,由IEEE(The instit
20、ute of Electrical and E1ectronics Engineers)进一步发展并在1987年作为“IEEE标准1076”发布。从此,VHDL成为硬件描述语言的业界标准之一。自IEEE公布了VHDL的标准版本(1EEE Std l076)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具支持VHDL。此后VHDL在电子设计领域得到了广泛应用,并逐步取代了原有的非标准硬件描述语言。,1.3 硬件描述语言VHDL,作为电路系统的设计工具;可以利用软件工具将VHDL源码自动地转化为文本方式表达的基本逻辑元件连接图,即网表文件。这种方法显然对于电路自动设计是一个
21、极大的推进。很快,电子设计领域出现了第一个软件设计工具,即VHDL逻辑综合器,它把标准VHDL的部分语句描述转化为具体电路实现的网表文件。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展了VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。,图1.3.1 编译器和综合功能比较,1.4 EDA与传统电子设计方法,1.4.1 传统的电子设计方法传统的电子设计技术通常是自底向上的,即首先确定构成系统的最底
22、层的电路模块或元件的结构和功能,然后根据主系统的功能要求,将它们组合成更大的功能块,使它们的结构和功能满足上层系统的要求。以此流程,逐步向上递推,直至完成整个目标系统的设计。,例如,对于般电子系统的设计,使用自底向上的设计方法,必须首先决定使用的器件类别和规格,如74系列的器件、某种RAM和ROM、某类CPU或单片机以及某些专用功能芯片等:然后是构成多个功能模块,如数据采集控制模块、信号处理模块、数据交换和接口模块等,直至最后利用它们完成整个系统的设计。以一个六进制计数器设计为例作以说明:,1.4 EDA与传统电子设计方法,第一步,选择逻辑元、器件。由数字电路的基本知识可知,可以用与非门,或非
23、门,D触发器,JK触发器等基本逻辑元、器件来构成一个计数器。设计者根据电路尽可能简单,价格合理,购买和使用方便及各自的习惯来选择六进制计数器的逻辑元、器件。本例中我们选择JK触发器和D触发器作为六进制计数器的主要逻辑元、器件。,第二步,进行电路设计。假设六进制计数器采用约翰逊计数器(环扭型)。3个触发器应该产生8种状态,现在只使用6个状态,将其中的010和101两种状态禁止掉。,图1.4.1 六进制计数器逻辑图,自底向上设计方法的特点是必须首先关注并致力于解决系统最底层硬件的可获得性,以及它们的功能特性方面的诸多细节问题;在整个逐级设计和测试过程中,始终必须顾及具体目标器件的技术细节。在这个设
24、计过程中的任一时刻,最底层目标器件的更换,或某些技术参数不满足总体要求,或缺货,或由于市场竞争的变化,临时提出降低系统成本,提高运行速度等等不可预测的外部因素,都将可能使前面的工作前功尽弃,工作又得重新开始。由此可见,在某些情况下,自底向上的设计方法是一种低效、低可靠性、费时费力、且成本高昂的设计方法。,1.4.2 自顶向下的电子设计方法在电子设计领域,自顶向下的设计方法,只有在EDA技术得到快速发展和成熟应用的今天才成为可能。自顶向下设计方法的有效应用必须基于功能强大的EDA工具、具备集系统描述、行为描述和结构描述功能为一体的VHDL硬件描述语言,以及先进的ASIC制造工艺和FPGA开发技术
25、。当今,自顶向下的设计方法已经是EDA技术的首选设计方法,是ASIC或FPGA开发的主要设计手段。,在EDA技术应用中,自顶向下的设计方法,就是在整个设计流程中各设计环节逐步求精的过程。一个项目的设计过程包括从自然语言说明到VHDL的系统行为描述、系统的分解、RTL模型的建立、门级模型产生,到最终的可以物理布线实现的底层电路,就是从高抽象级别到低抽象级别的整个设计周期。后端设计还必须包括涉及硬件的物理结构实现方法和测试(仍然利用计算机完成)。,自顶而下的设计方法能使系统被分解为各个模块的集合之后,可以对设计的每个独立模块指派不同的工作小组。这些小组可以工作在不同地点,甚至可以分属不同的单位,最
26、后将不同的模块集成为最终的系统模型,并对其进行综合测试和评价。,(2)建立VHDL行为模型,这一步是将设计说明书转化为VHDL行为模型。在这一项目的表达中,可以使用满足IEEE标准的VHDL的所有语句而不必考虑可综合性。这一建模行为的目标是通过VHDL仿真器对整个系统进行系统行为仿真和性能评估。在行为模型的建立过程中,如果最终的系统中包括目标ASIC或FPGA以外的电路器件,如RAM、ROM、接口器件或某种单片机,也同样能建立一个完整统一的系统行为模型而进行整体仿真。这是因为可以根据这些外部器件的功能特性设计出VHDL的仿真模型,然后将它们并入主系统的VHDL模型中。,(3)VHDL行为仿真。
27、这一阶段可以利用VHDL仿真器(如ModelSim)对顶层系统的行为模型进行仿真测试,检查模拟结果,继而进行修改和完善。这一过程与最终实现的硬件没有任何关系,也不考虑硬件实现中的技术细节,测试结果主要是对系统纯功能行为的考察,其中许多VHDL的语句表达主要为了方便了解系统各种条件下的功能特性,而不可能用真实的硬件来实现的。,(4)VHDL-RTL级建模。 可以通过EDA工具自动完成。,(5)前端功能仿真。在这一阶段对VHDL-RTL级模型进行仿真,称为功能仿真。,(6)综合。使用逻辑综合工具将VHDL行为级描述转化为结构化的门级电路。在ASIC设计中,门级电路可以由ASIC库中的基本单元组成。
28、,(7)门级时序仿真。在这一级中将使用门级仿真器或仍然使用VHDL仿真器(因为结构综合后能同步生成VHDL格式的时序仿真文件)进行门级时序仿真,在计算机上了解更接近硬件目标器件工作的功能时序。对于ASIC设计,被称为布局后仿真。在这步,将带有从布局布线得到的精确时序信息映射到门级电路重新进行仿真,以检查电路时序,并对电路功能进行最后检查。这些仿真的成功完成称为ASIC sign off。接下去的工作就可以将设计提供给硅铸造生产工序了。,(8)硬件测试。这是对最后完成的硬件系统(如ASIC或FPGA)进行检查和测试。,与其他的硬件描述语言相比,VHDL具有较强的行为仿真级与综合级的建模功能,这种
29、能远离具体硬件,基于行为描述方式的硬件描述语言恰好满足典型的自顶向下设计方法,因而能顺应EDA技术发展的趋势,解决现代电子设计应用中出现的各类问题。,仍以上面六进制计数器为例 说明行为描 述与RTL方式描 述的区别. 第一层次是行为描述。 VHDL程序如下:,该段VHDL语言程序勾画出了六进制计数器的输入输出引脚和内部计数器过程的技术状态变化时序和关系。这实际上是计数器工作模型的描述。当该程序仿真通过以后,说明六进制计数器模型是正确的。,第二层次是RTL方式描述。这一层次称为寄存器传输描述(又称数据流描述)。行为方式描述的系统结构的程序,抽象程度高,是很难直接映射到具体逻辑元件结构的硬件实现的
30、。要想得到硬件的具体实现,必须将行为方式描述的VHDL语言程序改写为RTL方式描述的VHDL语言程序。可通过EDA软件自动完成。,第三层次是逻辑综合。逻辑综合这一阶段是利用逻辑综合工具,将RTL方式描述的程序转换成用基本逻辑元件表示的文件(门级网络表)。此时,如果需要,可以将逻辑综合结果,以逻辑原理图方式输出。也就是说,逻辑综合的结果相当于在人工设计硬件电路时,根据系统要求画出了系统的逻辑电路原理图。,1.4.3 EDA与传统电子设计方法的比较,由此可见,传统的数字电子系统或IC设计中,手工设计占了较大的比例。一般先按电子系统的具体功能要求进行功能划分,然后对每个子模块画出真值表,用卡诺图进行
31、手工逻辑简化,写出布尔表达式,画出相应的逻辑线路图,再据此选择元器件,设计电路板,最后进行实测与调试。 一、手工设计方法的缺点 (1)复杂电路的设计、调试十分困难。 (2)如果某一过程存在错误,查找和修改十分不便。 (3)设计过程中产生大量文档,不易管理。 (4)对于集成电路设计而言,设计实现过程与具体生产工艺直接相关,因此可移植性差。 (5)只有在设计出样机或生产出芯片后才能进行实测。,二、EDA设计方法的特点,(1)采用硬件描述语言作为设计输入。 用HDL对数字电子系统进行抽象的行为与功能描述到具体的内部线路结构描述,从而可以在电子设计的各个阶段、各个层次进行计算机模拟验证,保证设计过程的
32、正确性。可以大大降低设计成本,缩短设计周期。(2)库(Library)的引入。 EDA工具之所以能够完成各种自动设计过程,关键是有各类库的支持。如逻辑仿真时的模拟库、逻辑综合时的综合库、版图综合时的版图库、测试综合时的测试库等。这些库都是EDA设计公司与半导体生产厂商紧密合作、共同开发的。 (3)设计文档的管理。 某些HDL语言也是文档型的语言(如VHDL),极大地简化了设计文档的管理。 (4)强大的系统建模、电路仿真功能。,(5)具有自主知识产权。 无论传统的应用电子系统设计得如何完美,使用了多么先进的功能器件,如某公司的单片机、CPU、DSP处理器、数字锁相环或其他特定功能的IC,都掩盖不
33、了一个无情的事实,即该系统对于设计者来说,没有任何自主知识产权可言,因为系统中的关键性的器件并非出自设计者之手,这将导致该系统在许多情况下的应用直接受到限制,而且有时是致命的。如该系统中某关键器件失去供货来源,或作为极具竞争性的产品批量外销,或应用于关键的军事设备中等情况。基于EDA技术的设计则不同,由于用HDL表达的成功的专用功能设计在实现目标方面有很大的可选性,它既可以用不同来源的通用FPGACPLD实现,也可以直接以ASIC来实现,设计者拥有完全的自主权,再无受制于人之虞。 (6)开发技术的标准化、规范化以及IP核的可利用性。,(7)适用于高效率大规模系统设计的自顶向下设计方案。从电子设
34、计方法学来看,EDA技术最大的优势就是能将所有设计环节纳入统一的自顶向下的设计方案中。传统的电子设计技术中,由于没有规范的设计工具和表达方式,无法进行这种先进的设计流程。 (8)全方位地利用计算机自动设计、仿真和测试技术。,(9)对设计者的硬件知识和硬件经验要求低。对于传统的电子设计而言,对电子设计工程师似乎有更多的要求:他在电子技术理论和设计实践方面必须是行家里手;他不但应该是软件高手,同时还是经验丰富的硬件设计能工巧匠;他必须熟悉针对不同单片机或DSP器件开发系统的使用方法和性能,还必须知道许多器件的封装形式和电器特性,知道不同的在线测试仪表的使用方法和性能指标;他要熟练掌握大量的与设计理
35、论和优化技术毫无关系的技能技巧,不得不事无巨细,事必躬亲。,所有这一切显然不符合现代电子技术发展的需求,首先不符合快速换代的产品市场要求,不符合需求巨大的人才市场的要求。EDA技术的标准化和HDL设计语言与设计平台对具体硬件的无关性,使设计者能更大程度地将自己的才智和创造力集中在设计项目性能的提高和成本的降低上,而将更具体的硬件实现工作让专业部门来完成。显然,高技术人才比经验性人才的培养效率要高得多。,(10)高速性能好。这是与以CPU为主的电路系统相比。以软件方式控制操作和运算的系统速度显然无法与纯硬件系统相比,因为软件是通过顺序执行指令的方式来完成控制和运算步骤的,而用HDL语言描述的系统
36、是以并行方式工作的。以对AD进行数据采样控制为例,采样周期包括对AD工作时序的控制和将每一次获得的数据存入RAM(或FIFO)中。工作于12MHz晶振频率的MCS51系列单片机对AD控制的采样频率为20KHz上下,即约每秒两万次。但若用FPGA中设计的状态机来完成同样的工作,如对于具有流水线采样工作时序的AD来说,只需两个状态即可完成一次采样,状态间转换的时间仅为一个时钟周期,而如果FPGA的工作频率是100MHz,则采样速度可达50MHz。,(11)纯硬件系统的高可靠性。 大量事实表明,由CPU(或单片机)为核心的系统的可靠性通常不高,而且与CPU的种类关系不大,即任何由CPU为主控单元的系
37、统,都不得不受到用户的特别关注。其主要原因是,以软件运行为核心的CPU的指令地址指针在外部干扰下,容易发生不可预测的变化,而使运行陷入不可预测的非法循环中,使系统瘫痪。,1.5 IP核 IP(Intellectual Property)就是知识产权核或知识产权模块的意思,在EDA技术和开发中具有十分重要的地位。著名的美国Dataquest咨询公司将半导体产业的IP定义为用于ASIC或FPGA/CPLD中的预先设计好的电路功能模块。IP分软IP、固IP和硬IP。,步进电机驱动器可编程片上系统(sopc)的总体设计,FPGA内部设计总框图,模块例化,实例化时钟管理模块、微处理器模块、脉冲发生器模块
38、、接口模块、反馈电流测试模块PI调节模块、PWM发生器模块。 微处理器模块和脉冲发生器模块属于控制器,剩下的模块属于驱动器。,工作过程,用户输入在MicroBlaze微处理器中进行处理,并产生转速和转向信号,转速信号送入CP脉冲发生器产生CP脉冲和细分等级数,同转向信号CCW共同送入正弦表数据接口模块中,通过内部逻辑产生三相相电流给定数据。电流反馈模块采样相电流,产生相电流反馈数据。在PI模块中,通过当前以及此前的给定数据/反馈数据,进行PI调节,并产生控制信号送入PWM发生器中,PWM发生器模块将输出PWM控制信号,控制三相逆变器的6个IGBT通断,实现电机控制,时钟管理模块,模块使用两个D
39、CM,将输入的晶振时钟进行二倍频和四倍频,输出CLK50,CLK100,CLK200三个时钟信号。DCM锁定信号后,三个时钟信号均通过BUFGMUX切换到稳定后的时钟源上去。 本模块输出一个G_Reset信号,在所有时钟都完全稳定后才置G_Reset为无效。为了消除异步Reset导致部分DFF的建立时间不够的现象,模块使用一个DFF在时钟的上升沿同步Reset信号,提供足够的时间裕量,控制器CPU软核的硬件设计,控制器采用Xilinx的32位软CPU核。在Xilinx的嵌入式开发软件包EDK中添加MicroBlaze软核、代码ROM、数据RAM和外部I/O接口。,控制器CPU软核部件说明,mi
40、croblaze:CPU内核,实现了一个32位RISC CPU。 lmb_bram_if_cntrl:片内存储器控制层逻辑,本设计中使用了两个实例,分别用于数据存储器和指令存储器的实现。 bram_block:片内块RAM,作为指令和数据存储区。 opb_gio:符合IBM的开放总线规范opb的标准I/O口,本设计中使用了多个实例,实现CPU核与外部模块的数据交互。其中DIP_Switches用于拨码按钮的输入,LEDS用于发光二级管的输出,Push_Buttons用于按钮的输入,SpeedSet用于设定CP Pattern模块的速度输入寄存器,ControlPort控制片内关键控制信号,OC
41、_IN来自外部过流信号的输入,Prob_Monitor作为调试的通用预留管脚。 opb_7segled:opb总线兼容的自定义驱动器,用于驱动7段数码管的显示。在程序中通过该驱动器能非常方便地控制数码管显示各类数字和符号。,CPU软核的C+程序设计框图,脉冲发生器模块,实现转速CP脉冲对应的功能,给定一个转速信号后,通过查表得到对应的计数溢出数据。内部的计数器计数溢出时即产生一个CP脉冲。 查找表输出的数据分为两部分,低位是CP计数器的计数数据,高位是对应转速的最佳细分等级,这两个信号都将输出给接口模块,决定三相地址数据的改变。,接口模块,内部例化了一个单端口只读存储器,存放一个周期的正弦数据
42、表。外部输入CP和CCW信号后,通过顺序的给出三相绕组对应的地址数据,即可查得三相相电流的给定数据,并同时更新三个给定数据寄存器。 转向交换也在本模块实现。输入的CCW信号将控制一个多路选择器,控制更新后的数据是否进行B/C两相交换。三相电机只要交换任意两相信号即可实现换向。 通过输入的细分层次信号和CP脉冲信号共同决定三相绕组的地址数据的每次增量大小,当细分层次最高时,地址计数器每次递增1;当处于非最高细分精度时,地址计数器每次递增2的N次幂,N由当前的细分精度确定。,反馈电流测试模块,本模块的功能实现反馈电流的检测,并将反馈电流送入PI调节模块,与给定电流进行电流闭环调节。电流检测过程由状
43、态机进行控制,由驱动器的顶层模块发出电流检测使能信号,启动电流检测状态机,将控制AD读取与转换的R/C信号的默认输出设定为0,因此启动状态机后AD直接进入转换状态。本模块的驱动时钟为100MHz,而AD的R/C信号的低电平有效时间最小应为50ns,所以状态机在R/C信号为低时要延迟五个时钟周期,保证数据可靠转换后才将R/C信号置高电平,等待读取数据。AD转换结束后,AD_STS信号发出一个低电平,状态机检测到该信号后立即进行数据的读取,同时将读取的数据进行一次寄存。完成一次反馈电流测试后发出一个状态机停止信号,等待下一次的数据读取。,PI调节模块,当误差e大于一个阀值时,采用P调节算法;小于该
44、阀值时,采用PI调节算法。设阀值为Em,其离散化公式为: 当E(K)Em时使用PI调节:U(K)=U(K-1)+KP* (E(K)- E(K-1) )+KI*E(K) 当E(K)Em时使用P调节: U(K)=U(K-1)+KP*(E(K)- E(K-1),PI调节模块设计,模块在收到启动信号后,先寄存给定数据/反馈数据,再对二者扩宽符号位做有符号减法,并启动KI乘法器计算KI乘以误差e的结果。对减法的计算结果取绝对值,并与阀值作比较(常数比较器),比较的结果存入寄存器。计算e的误差增量,即E(K)-E(K-1) ,并启动KP乘法器计算KP乘以误差增量的结果。判断寄存器的值确定采用PI算法还是P
45、算法:如果采用PI算法,将KI乘法器计算的结果先送入累加器,然后再将KP乘法器计算的结果送入累加器;如果采用P算法,仅仅将KP乘法器计算的结果送入累加器。最后将累加器的数据输出即为控制数据。 模块的累加器在每次累加的时候会进行溢出处理和数据超出边界处理,无论哪种情况都会置为边界值(最大/最小值)。,PWM波形的生成是通过将给定控制数据和载波数据比较,通过比较二者大小情况确定PX的高低电平,实现PWM调制 模块例化比较器、死区保护、载波发生器三个组件,能够产生单相PWM波形,其中PWM寄存器14位,对应范围:0-16383,死区寄存器8位,对应范围:2.5us5us。,PWM发生器模块框图,PW
46、M发生器模块设计,载波发生器模块产生锯齿波作为PWM载波,驱动时钟频率为200MHz,14位寄存器宽度。为减少计数器的进位链长度,采用Prescaled计数器,拆分为3位计数器和11位计数器,减少了组合逻辑延迟 比较器模块实现了一个时序等于比较器,不同于普通综合器推论出来的等于比较器,该等于比较器内部存在一级DFF,比较结果需要延迟一个时钟周期才能够输出,减少了组合逻辑延迟。由于应用在PWM调制算法中,14位精度情况下可以接受比较结果的一个时钟周期延迟,因此采用了该比较器,PWM发生器模块设计,死区保护模块根据给定的死区长度数据,将输入的PX信号输出为PH和PL信号,分别对应IGBT的上下桥臂
47、,并在PH和PL数据的变沿插入死区保护(同时置为高电平)。由于模块工作在100MHz,对于PX信号进行本地时钟同步,得到IPX信号。 插入的死区保护是通过上升计数器和下降计数器来实现的:上桥臂控制信号PH在IPX信号为1时并且上升计数器计数完成后才置0,此时上桥臂开通;下桥臂控制信号PL在IPX信号为0时并且下降计数器计数完成后才置0,此时下桥臂开通。这个机制能够保证上下桥臂不会同时导通。,手动布局对FPGA进行优化,FPGA局部放大,器件资源占用情况,FPGA行为仿真波形,FPGA时序仿真波形,电机绕组波形,16细分,32细分,电机绕组波形,1024细分,4096细分,正反转切换瞬时绕组电流波形,交换BC两相,反向查表,