EDAEDAEDAEDAEDAEDAEDAEDA原理与原理与原理与原理与原理与原理与原理与原理与应用应用应用应用应用应用应用应用第第22222222章章EDAEDAEDAEDAEDAEDAEDAEDA工具设计流程工具设计流程第2222章EDAEDAEDAEDA工具设计流程本章首先介绍FPGA/CPLD和ASIC设计的流程,然后分别介绍与这些设计流程中各环节密切相关的EDA工具软件,最后就Max+PlusII的基本情况和IP核作一简述。一个完整的、典型的EDA设计流程既是自顶向下设计方法的具体实施途径,也是EDA工具软件本身的组成结构。图形/HDL/HDL/HDL/HDL文本方式综合FPGA/CPLDFPGA/CPLDFPGA/CPLDFPGA/CPLD适配FPGA/CPLDFPGA/CPLDFPGA/CPLDFPGA/CPLD编程下载FPGA/CPLDFPGA/CPLDFPGA/CPLDFPGA/CPLD器件和电路系统时序与功能门级仿真1111、功能仿真2222、时序仿真逻辑综合器结构综合器1、针对SRAM结构的配置2、JTAG方式下载功能仿真2.1FPGA2.1FPGA2.1FPGA2.1FPGA/CPLDCPLDCPLDCPLD设计流程应用FPGA/CPLD的EDA开发流程:2.1.1设计输入(原理图/HDL文本编辑)1.图形输入图形输入原理图输入状态图输入波形图输入设计者将所设计的系统或电路以开发软件要求的某种形式表现出来,此过程称为设计输入。设计输入有两种形式:图形输入和文本输入。原理图输入方式:利用EDA工具提供的图形编辑器以原理图的方式进行输入,原理图由逻辑器件和连接线构成。原理图输入方式比较容易掌握,直观且方便,而且编辑器中有许多现成的单元器件可以利用,自己也可以根据需要设计元件。设计方式接近于底层电路布局,因此容易控制逻辑资源的耗用,节省面积。2.1.1设计输入(原理图/HDL文本编辑)•然而原理图输入法的优点同时也是它的缺点:①随着设计规模的增大,设计的易读性迅速下降,对于图中密密麻麻的电路连线,极难搞清电路的实际功能;②一旦完成,电路结构的改变将十分困难,因而几乎没有可再利用的设计模块;③综合优化的空间很小,不能实现自顶向下设计;④移植困难、入档困难、交流困难、设计交付困难,因为不可能存在一个标准化的原理图编辑器。2.1.1设计输入(原理图/HDL文本编辑)•状态图输入方式:–根据电路的控制条件和不同的转换方式,以图形的方式表示状态图进行输入。在EDA工具的状态图编辑器上绘出状态图,填好时钟信号名、状态转换条件、状态机类型等要素后,就可以自动生成VHDL程序。•波形图输入方式:–将待设计的电路看成是一个黑盒子,只需要告诉EDA工具黑盒子电路的输入和输出时序波形图,EDA工具就能据此完成黑盒子电路的设计。2.1.1设计输入(原理图/HDL文本编辑)基本RSRSRSRS触发器电路组成和逻辑符号SRQQSRQQ(a)逻辑图(b)逻辑符号&&SR信号输入端,低电平有效。信号输出端:Q=0Q=0Q=0Q=0、Q=1Q=1Q=1Q=1的状态称0000状态Q=1Q=1Q=1Q=1、Q=0Q=0Q=0Q=0的状态称1111状态,SRQQ&&工作原理RSQ1001010①R=0R=0R=0R=0、S=1S=1S=1S=1时:由于R=0R=0R=0R=0,不论原来QQQQ为0000还是1111,都有Q=1Q=1Q=1Q=1;再由S=1S=1S=1S=1、Q=1Q=1Q=1Q=1可得QQQQ=0000。即不论触发器原来处于什么状态都将变成0000状态,这种情况称将触发器置0000或复位。RRRR端称为触发器的置0000端或复位端。SRQQ&&0110RSQ010②R=1R=1R=1R=1、S=0S=0S=0S=0时:由于S=0S=0S=0S=0,不论原来QQQQ为0000还是1111,都有Q=1Q=1Q=1Q=1;再由R=1R=1R=1R=1、Q=1Q=1Q=1Q=1可得QQQQ=0000。即不论触发器原来处于什么状态都将变成1111状态,这种情况称将触发器置1111或置位。SSSS端称为触发器的置1111端或置位端。101SRQQ&&1110③R=1、S=1时:根据与非门的逻辑功能不难推知,触发器保持原有状态不变,即原来的状态被触发器存储起来,这体现了触发器具有记忆能力。RSQ10001111不变100SRQQ&&0011RSQ10001111不变00不定??④R=0、S=0时:Q=Q=1,不符合触发器的逻辑关系。并且由于与非门延迟时间不可能完全相等,在两输入端的0同时撤除后,将不能确定触发器是处于1状态还是0状态。所以触发器不允许出现这种情况,这就是基本RS触发器的约束条件。1=+DDRS0=DDRSRSnQ1+nQ功能000001不用不用不允许0100110001=+nQ置01001011111=+nQ置111011101nnQQ=+1保持特性表(真值表)现态:触发器接收输入信号之前的状态,也就是触发器原来的稳定状态。次态:触发器接收输入信号之后所处的新的稳定状态。见MAx+plusMAx+plusMAx+plusMAx+plus工程RS_SCHRS_SCHRS_SCHRS_SCH波形图反映触发器输入信号取值和状态之间对应关系的图形称为波形图RSQQ置1置0置1置1置1保持不允许保持2.HDL文本输入这种方式与传统的计算机软件语言编辑输入基本一致,就是将使用了某种硬件描述语言(HDL)的电路设计文本,如VHDL或Verilog的源程序,进行编辑输入。可以说,应用HDL的文本输入方法克服了上述原理图输入法存在的所有弊端,为EDA技术的应用和发展打开了一个广阔的天地。2.1.1设计输入(原理图/HDL文本编辑)LIBRARYLIBRARYLIBRARYLIBRARYIEEE;--RS.vhdIEEE;--RS.vhdIEEE;--RS.vhdIEEE;--RS.vhdUSEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYRSISENTITYRSISENTITYRSISENTITYRSISPORT(PORT(PORT(PORT(S,R,resS,R,resS,R,resS,R,res:IN:IN:IN:INstd_logicstd_logicstd_logicstd_logic;;;;Q,NOT_Q:outQ,NOT_Q:outQ,NOT_Q:outQ,NOT_Q:outstd_logicstd_logicstd_logicstd_logic););););ENDRS;ENDRS;ENDRS;ENDRS;ARCHITECTUREARCHITECTUREARCHITECTUREARCHITECTUREbehavbehavbehavbehavOFRSISOFRSISOFRSISOFRSISsignalsel1,sel2:signalsel1,sel2:signalsel1,sel2:signalsel1,sel2:std_logicstd_logicstd_logicstd_logic;;;;BEGINBEGINBEGINBEGINprocess(res,sel1,sel2)process(res,sel1,sel2)process(res,sel1,sel2)process(res,sel1,sel2)beginbeginbeginbeginifres='0'thensel1='0';sel2=ifres='0'thensel1='0';sel2=ifres='0'thensel1='0';sel2=ifres='0'thensel1='0';sel2='1';'1';'1';'1';elsif(S=elsif(S=elsif(S=elsif(S=‘‘‘‘1'andR=1'andR=1'andR=1'andR=‘‘‘‘0')thensel1='0';sel2='1';0')thensel1='0';sel2='1';0')thensel1='0';sel2='1';0')thensel1='0';sel2='1';elsifelsifelsifelsif(S(S(S(S====‘‘‘‘0'0'0'0'andRandRandRandR====‘‘‘‘1')1')1')1')thensel1='1';sel2='0';thensel1='1';sel2='0';thensel1='1';sel2='0';thensel1='1';sel2='0';elsifelsifelsifelsif(S(S(S(S====‘‘‘‘1'1'1'1'andRandRandRandR====‘‘‘‘1')1')1')1')thensel1=thensel1=thensel1=thensel1=sel1sel1sel1sel1;sel2=;sel2=;sel2=;sel2=sel2sel2sel2sel2;;;;endif;endif;endif;endif;Q=sel1;Q=sel1;Q=sel1;Q=sel1;NOT_Q=sel2;NOT_Q=sel2;NOT_Q=sel2;NOT_Q=sel2;endprocess;endprocess;endprocess;endprocess;ENDENDENDENDbehavbehavbehavbehav;;;;2.1.1设计输入(原理图/HDL文本编辑)整个综合过程就是将设计者在EDA平台上编辑输入的HDL文本、原理图或状态图形描述,依据给定的硬件结构和约束条件进行编译、转换、优化,最终获得门级电路甚至更底层的电路描述网表文件。由此可见,综合器工作前,必须给定最后实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用某种网表文件的方式对应起来,成为相应的映射关系。这个映射过程不是唯一的,并且综合优化也不是单一方向的,为了达到速度、面积、性能的要求,往往需要对综合加以约束,即综合约束。2.1.2综合2.1.3适配适配器也称结构综合器,它的功能是将由综合器产生的网表文件配置于指定的目标器件中,使之产生最终的下载文件。逻辑综合通过后必须利用适配器将综合后网表文件针对某一具体的目标器件进行逻辑映射操作,其中包括底层器件配置、逻辑分割、逻辑优化、逻辑布局布线操作。适配所选定的目标器件(FPGA/CPLD芯片)必须属于原综合器指定的目标器件系列。适配器适配对象直接与器件的结构细节相对应。适配完成后可以利用适配所产生的仿真文件作精确的时序仿真,同时产生可用于编程的文件。2.1.4时序仿真和功能仿真在编程下载前必须利用EDA工具对适配生成的结果进行模拟测试,即仿真。时序仿真功能仿真就是接近真实器件运行特性的仿真,仿真文件中己包含了器件硬件特性参数,因而,仿真精度高。是直接对VHDL、原理图描述或其他描述形式的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计的要求的过程,仿真过程不涉及任何具体器件的硬件特性。2.1.5编程下载如果编译、综合、适配和仿真等过程都没有发现问题,即满足原设计的要求,则可以将由适配器产生的配置/下载文件通过编程器或下载电缆载入目标芯片FPGA或CPLD中。通常,将对CPLD的下载称为编程(Program),对FPGA中的SRAM进行直接下载的方式称为配置(Configure)。FPGA与CPLD的辨别和分类主要是根据其结构特点和工作原理。通常的分类方法是:将以乘积项结构方式构成