论文部分内容阅读
编者按 随着电子技术的发展,可编程逻辑器件成为电子设计中常用的技术,有许多读者发邮件或写信,希望本刊增加这方面的内容。本刊从今年开始,将“相约单片机”栏目改为“单片机与可编程逻辑器件”,并特约东北大学的杜玉远老师撰写系列文章,以使读者对其有一基本的认识。
近年,数字化进程的不断加快,推动了具有高速度、高集成度、低功耗的可编程ASIC器件的发展,同时也推动了用于开发这类器件的EDA技术发展和进步,电路设计构成逐步地从中、小规模芯片转为大规模、超大规模(LSI、VLSI)芯片,因此掌握EDA设计技术,使用可编程大规模、超大规模(LSI、VLSI)芯片已经成为从事电子设计人员必需具有的基本能力。本文将介绍如何在短时间内学习掌握这项技术,并在实际设计中运用。
1. 可编程ASIC器件选择
在电路设计中使用可编程ASIC器件,简单地说就是用大规模、超大规模(LSI、VLSI)芯片来代替中、小规模的芯片。在设计中主要依据芯片的内部结构、性能来选择器件。在EDA技术中所使用的大规模、超大规模(LSI、VLSI)芯片被称为可编程ASIC芯片,这些芯片包含有通用的逻辑资源,经过设计编程,就可以实现所需的功能。这些芯片根据其内部结构可划分为CPLD(Complex Programmable Logic Device)和FPGA (Field Programmable Gate Array)。CPLD是复杂可编程逻辑器件的简称,其结构与早期的PAL、GAL相似,内部包含多个逻辑宏单元或宏模块;FPGA是现场可编程门阵列的简称。
CPLD的内部结构是基于乘积项(Product-Term)技术的可编程ASIC芯片。代表的器件有Altera公司的MAX7000系列和Xilinx公司的XC9500系列等等。图1是Altera公司MAX7000S系列的内部基本编程结构,从图1中可以看出,MAX7000S系列的基本编程结构是由逻辑阵列、乘积项选择矩阵和可编程触发器构成的,这三部分都可以通过编程配置实现各种逻辑功能。不同型号器件中所包含的基本编程单元机构相似,但包含基本单元的数量多少不等,即它们的容量不同。CPLD的编程信息是采用E2CMOS工艺实现的,这种工艺具有非易失性,编程数据可以保持数十年,此类器件只能对其进行有限次(几千次)编程。另外,可以对器件进行加密,而且一旦被加密,很难破解。
FPGA的内部结构是基于查找表(LUT)技术的可编程ASIC芯片。代表的器件有Altera公司的FLEX、ACEX、APEX系列和Xilinx公司的XC4000、Spartan、Virtex系列等等。图2是Xilinx公司的XC4000系列的基本可配置逻辑块CLB结构,从图2可以看出,一个CLB由两个独立的4输入查找表、一个3输入查找表和两个触发器构成。查找表实际上是一个RAM结构,一个4输入的查找表就是一个16×1 RAM单元,通过编程可以实现4输入变量的任意逻辑函数。CLB内部的两个触发器通过编程,可以配置成不同类型的触发器。图2中的梯形符号均为可编程的数据选择器符号,对这些数据选择器的控制端编程,就可以改变CLB的配置结构,进而实现对器件的编程控制。数据选择器的选择控制端是由SRAM控制的,也就是说,FPGA的编程信息是通过SRAM实现的。由于器件掉电后,SRAM中的数据会丢失,因此,设计中需要根据情况为器件提供上电配置的电路,以保证上电后器件可以正常工作。配置FPGA的数据是存储在非易失数据存储器中的,使用时不便对其加密。
由此可见,CPLD内部具有大量的乘积项和较少的触发器,而FPGA正好相反,其内部具有较少的组合逻辑资源和较多的触发器。当设计中组合逻辑电路成分较多,而时序电路成分较少的电路时,或者需要很好的加密功能时,选择CPLD比较适合,例如设计宽译码器和复杂编码器时,最好选择CPLD。当我们要设计功能较为复杂的时序电路时,由于复杂的时序电路需要大量的触发器单元,例如设计ALU,选择FPGA则比较适合。
2. EDA开发系统选择
为了学习和使用可编程ASIC器件,需要有一个合适的开发平台,即EDA开发系统。EDA开发系统按功能划分为集成开发系统、综合系统和仿真系统。集成开发系统一般是由可编程ASIC器件生产厂商开发的开发系统平台,用户利用这些开发平台可以完成全部设计工作。代表的开发平台如Xilinx公司的Foundation系列、Altera公司的MaxplusII 系列和QuartusII系列。综合系统一般是由第三方软件开发商开发的,为各器件厂商和普通用户提供对原始设计输入进行综合产生编程数据的软件,代表的综合系统如Synplicity公司的Synplicity 系列。仿真系统是仅用于对设计进行功能仿真的EDA软件,一般也是由第三方开发的,它不能生成编程数据,只用作设计初期工作,也就是说它不涉及具体的器件。代表的仿真系统如Aldec公司的Active-HDL。
由此可见,作为初学者应将功能齐全、能够完成全部设计工作的集成开发系统作为EDA开发系统的首选。附表是Xilinx公司的Foundation系列和Altera公司的QuartusII系列的性能对比表,从附表中可以看出:两种集成系统的设计流程基本相同,只是各自采用的具体程序不同,初学用户可以根据自己喜好的需要选择一种作为入门系统来学习,一旦掌握一种系统,很容易学习其它系统。笔者认为,Altera公司的Quartus II系统提供了较多与74系列中小规模器件完全相同的设计元件,对于初学者更容易开始设计;Xilinx公司的Foundation系统提供了较好的图形导航界面,对于初学者更容易掌握软件的使用。
3. EDA实验系统选择
无论集成开发系统功能如何强大,仿真功能如何准确,为了更快更好地学习和使用CPLD/FPGA,都需要有一个开发实验平台。实验平台根据其性能可以分为两类:评估平台和实验系统。评估平台是用来对某一个具体的器件的功能进行验证的实验平台,评估板大多占用CPLD/FPGA的引脚资源,用户只能在此硬件约束的条件下,对器件验证和评估,而不能进行其它设计。在这类评估平台上,只可以完成特定的实验验证,例如各厂商提供的EVM板就属于这一类平台。实验系统则是一种开放的平台。所谓开放的实验平台是与各种评估板相对而言的。图3所示为一个开放式的实验系统(多功能EDA实验系统),从图3中可以看出,该多功能EDA实验系统由主板和子板构成,用户通过更换不同类型的子板,就可以实现对不同厂家的不同类型芯片进行设计开发。在该实验系统中,还提供了丰富的辅助资源以及单片机调试接口。在这个系统中,不仅可以对CPLD/FPGA进行设计,还可以利用单片机开发系统方便地进行CPLD/FPGA与单片机之间数据传输的设计。另外,多功能EDA实验系统还应该提供独立的下载编程电缆,并且编程接口与各公司所提供的编程电缆接口完全相同,这样可以为用户的目标系统提供器件编程服务。
4. EDA开发流程
根据自己的需要选择了器件、开发系统和实验系统后,就可以开始EDA设计了。利用集成开发系统进行EDA设计的流程如图4所示。设计一般可分为设计输入、设计综合和器件编程三个步骤。设计输入是由设计者完成,作为最原始的设计输入;设计综合包括优化、合并、映射、布局、布线等工作,并产生最终的下(上接25页)载数据文件;器件编程是将设计输出的数据文件通过下载电缆写入到可编程器件内部,使其实现设计的功能。 EDA开发系统同时还具有功能仿真和时序仿真的功能,通常情况下,这些仿真结果是可以信赖的,开发系统一般是以最坏的情况给出仿真结果的,实际的工作情况比仿真结果会好一些。为了提高设计效率,必须正确掌握功能仿真和时序仿真的方法,准确理解仿真结果,以便于及时修改设计,而不必采用反复下载方式来验证设计结果。图4中的虚器件测试是EDA设计的最后一步,是在EDA实验系统或目标系统中完成的。在整个设计过程中,设计输入是最关键的,是由设计者对器件所实现的数字系统的逻辑功能进行描述阶段。设计输入一般有电路图输入法、真值表输入法、状态机输入法、波形输入法、硬件描述语言输入法等等,其中电路图输入和硬件描述语言输入是最常用的两种输入形式。
电路图输入法是把数字系统用逻辑图来表示的输入方法,使用元件符号和连线等来描述设计。电路图描述要求设计工具提供必要的元件库和逻辑宏单元库。这种输入方法具有条理清楚、易学、易用等优点。比较适用于初学者使用和较小的系统设计。几乎所有的可编程器件开发系统都支持这种输入方法。但是电路图输入法具有可移植性、可读性较差、不便于交流的缺点。
硬件描述语言是用文本形式描述设计,常用的硬件描述语言有不同语言形式。常用的有ABEL-HDL、VHDL和Verilog HDL。 ABEL-HDL支持布尔方程、真值表、状态机等逻辑表达方式。适合对计数器、译码器、比较器和状态机等逻辑功能的描述。VHDL和Verilog HDL类似于C语言,在描述复杂设计时,非常简洁,具有很强的逻辑描述功能,适合设计比较复杂的数字系统。
在设计过程中,往往采用层次化设计方法,分模块、分层次地进行设计描述。描述系统总功能的设计为顶层设计,描述系统中较小单元的设计为底层设计。层次化设计方法比较自由,可以在任何层次使用电路图或硬件描述语言进行描述。根据两种输入方式的特点,通常我们在顶层设计中采用电路图输入方式,而在底层设计中,采用硬件描述语言描述模块的逻辑功能。
结语
在学习EDA技术过程中,无论选择何种器件和开发系统,采用何种设计输入方式和设计方法,一旦掌握了这种技术,它一定会给电路设计带来巨大效益。作为初学者还应注意的是,无论集成开发系统的功能如何完备,其仿真能力多么准确,仅在集成开发系统中学习EDA技术,都将是“纸上谈兵”,只有将设计下载到器件中,才算完成设计全部过程,才能真正把握和理解器件的性能,真正体会到EDA技术的优越性,也才能真正发挥EDA技术的作用。
近年,数字化进程的不断加快,推动了具有高速度、高集成度、低功耗的可编程ASIC器件的发展,同时也推动了用于开发这类器件的EDA技术发展和进步,电路设计构成逐步地从中、小规模芯片转为大规模、超大规模(LSI、VLSI)芯片,因此掌握EDA设计技术,使用可编程大规模、超大规模(LSI、VLSI)芯片已经成为从事电子设计人员必需具有的基本能力。本文将介绍如何在短时间内学习掌握这项技术,并在实际设计中运用。
1. 可编程ASIC器件选择
在电路设计中使用可编程ASIC器件,简单地说就是用大规模、超大规模(LSI、VLSI)芯片来代替中、小规模的芯片。在设计中主要依据芯片的内部结构、性能来选择器件。在EDA技术中所使用的大规模、超大规模(LSI、VLSI)芯片被称为可编程ASIC芯片,这些芯片包含有通用的逻辑资源,经过设计编程,就可以实现所需的功能。这些芯片根据其内部结构可划分为CPLD(Complex Programmable Logic Device)和FPGA (Field Programmable Gate Array)。CPLD是复杂可编程逻辑器件的简称,其结构与早期的PAL、GAL相似,内部包含多个逻辑宏单元或宏模块;FPGA是现场可编程门阵列的简称。
CPLD的内部结构是基于乘积项(Product-Term)技术的可编程ASIC芯片。代表的器件有Altera公司的MAX7000系列和Xilinx公司的XC9500系列等等。图1是Altera公司MAX7000S系列的内部基本编程结构,从图1中可以看出,MAX7000S系列的基本编程结构是由逻辑阵列、乘积项选择矩阵和可编程触发器构成的,这三部分都可以通过编程配置实现各种逻辑功能。不同型号器件中所包含的基本编程单元机构相似,但包含基本单元的数量多少不等,即它们的容量不同。CPLD的编程信息是采用E2CMOS工艺实现的,这种工艺具有非易失性,编程数据可以保持数十年,此类器件只能对其进行有限次(几千次)编程。另外,可以对器件进行加密,而且一旦被加密,很难破解。
FPGA的内部结构是基于查找表(LUT)技术的可编程ASIC芯片。代表的器件有Altera公司的FLEX、ACEX、APEX系列和Xilinx公司的XC4000、Spartan、Virtex系列等等。图2是Xilinx公司的XC4000系列的基本可配置逻辑块CLB结构,从图2可以看出,一个CLB由两个独立的4输入查找表、一个3输入查找表和两个触发器构成。查找表实际上是一个RAM结构,一个4输入的查找表就是一个16×1 RAM单元,通过编程可以实现4输入变量的任意逻辑函数。CLB内部的两个触发器通过编程,可以配置成不同类型的触发器。图2中的梯形符号均为可编程的数据选择器符号,对这些数据选择器的控制端编程,就可以改变CLB的配置结构,进而实现对器件的编程控制。数据选择器的选择控制端是由SRAM控制的,也就是说,FPGA的编程信息是通过SRAM实现的。由于器件掉电后,SRAM中的数据会丢失,因此,设计中需要根据情况为器件提供上电配置的电路,以保证上电后器件可以正常工作。配置FPGA的数据是存储在非易失数据存储器中的,使用时不便对其加密。
由此可见,CPLD内部具有大量的乘积项和较少的触发器,而FPGA正好相反,其内部具有较少的组合逻辑资源和较多的触发器。当设计中组合逻辑电路成分较多,而时序电路成分较少的电路时,或者需要很好的加密功能时,选择CPLD比较适合,例如设计宽译码器和复杂编码器时,最好选择CPLD。当我们要设计功能较为复杂的时序电路时,由于复杂的时序电路需要大量的触发器单元,例如设计ALU,选择FPGA则比较适合。
2. EDA开发系统选择
为了学习和使用可编程ASIC器件,需要有一个合适的开发平台,即EDA开发系统。EDA开发系统按功能划分为集成开发系统、综合系统和仿真系统。集成开发系统一般是由可编程ASIC器件生产厂商开发的开发系统平台,用户利用这些开发平台可以完成全部设计工作。代表的开发平台如Xilinx公司的Foundation系列、Altera公司的MaxplusII 系列和QuartusII系列。综合系统一般是由第三方软件开发商开发的,为各器件厂商和普通用户提供对原始设计输入进行综合产生编程数据的软件,代表的综合系统如Synplicity公司的Synplicity 系列。仿真系统是仅用于对设计进行功能仿真的EDA软件,一般也是由第三方开发的,它不能生成编程数据,只用作设计初期工作,也就是说它不涉及具体的器件。代表的仿真系统如Aldec公司的Active-HDL。
由此可见,作为初学者应将功能齐全、能够完成全部设计工作的集成开发系统作为EDA开发系统的首选。附表是Xilinx公司的Foundation系列和Altera公司的QuartusII系列的性能对比表,从附表中可以看出:两种集成系统的设计流程基本相同,只是各自采用的具体程序不同,初学用户可以根据自己喜好的需要选择一种作为入门系统来学习,一旦掌握一种系统,很容易学习其它系统。笔者认为,Altera公司的Quartus II系统提供了较多与74系列中小规模器件完全相同的设计元件,对于初学者更容易开始设计;Xilinx公司的Foundation系统提供了较好的图形导航界面,对于初学者更容易掌握软件的使用。
3. EDA实验系统选择
无论集成开发系统功能如何强大,仿真功能如何准确,为了更快更好地学习和使用CPLD/FPGA,都需要有一个开发实验平台。实验平台根据其性能可以分为两类:评估平台和实验系统。评估平台是用来对某一个具体的器件的功能进行验证的实验平台,评估板大多占用CPLD/FPGA的引脚资源,用户只能在此硬件约束的条件下,对器件验证和评估,而不能进行其它设计。在这类评估平台上,只可以完成特定的实验验证,例如各厂商提供的EVM板就属于这一类平台。实验系统则是一种开放的平台。所谓开放的实验平台是与各种评估板相对而言的。图3所示为一个开放式的实验系统(多功能EDA实验系统),从图3中可以看出,该多功能EDA实验系统由主板和子板构成,用户通过更换不同类型的子板,就可以实现对不同厂家的不同类型芯片进行设计开发。在该实验系统中,还提供了丰富的辅助资源以及单片机调试接口。在这个系统中,不仅可以对CPLD/FPGA进行设计,还可以利用单片机开发系统方便地进行CPLD/FPGA与单片机之间数据传输的设计。另外,多功能EDA实验系统还应该提供独立的下载编程电缆,并且编程接口与各公司所提供的编程电缆接口完全相同,这样可以为用户的目标系统提供器件编程服务。
4. EDA开发流程
根据自己的需要选择了器件、开发系统和实验系统后,就可以开始EDA设计了。利用集成开发系统进行EDA设计的流程如图4所示。设计一般可分为设计输入、设计综合和器件编程三个步骤。设计输入是由设计者完成,作为最原始的设计输入;设计综合包括优化、合并、映射、布局、布线等工作,并产生最终的下(上接25页)载数据文件;器件编程是将设计输出的数据文件通过下载电缆写入到可编程器件内部,使其实现设计的功能。 EDA开发系统同时还具有功能仿真和时序仿真的功能,通常情况下,这些仿真结果是可以信赖的,开发系统一般是以最坏的情况给出仿真结果的,实际的工作情况比仿真结果会好一些。为了提高设计效率,必须正确掌握功能仿真和时序仿真的方法,准确理解仿真结果,以便于及时修改设计,而不必采用反复下载方式来验证设计结果。图4中的虚器件测试是EDA设计的最后一步,是在EDA实验系统或目标系统中完成的。在整个设计过程中,设计输入是最关键的,是由设计者对器件所实现的数字系统的逻辑功能进行描述阶段。设计输入一般有电路图输入法、真值表输入法、状态机输入法、波形输入法、硬件描述语言输入法等等,其中电路图输入和硬件描述语言输入是最常用的两种输入形式。
电路图输入法是把数字系统用逻辑图来表示的输入方法,使用元件符号和连线等来描述设计。电路图描述要求设计工具提供必要的元件库和逻辑宏单元库。这种输入方法具有条理清楚、易学、易用等优点。比较适用于初学者使用和较小的系统设计。几乎所有的可编程器件开发系统都支持这种输入方法。但是电路图输入法具有可移植性、可读性较差、不便于交流的缺点。
硬件描述语言是用文本形式描述设计,常用的硬件描述语言有不同语言形式。常用的有ABEL-HDL、VHDL和Verilog HDL。 ABEL-HDL支持布尔方程、真值表、状态机等逻辑表达方式。适合对计数器、译码器、比较器和状态机等逻辑功能的描述。VHDL和Verilog HDL类似于C语言,在描述复杂设计时,非常简洁,具有很强的逻辑描述功能,适合设计比较复杂的数字系统。
在设计过程中,往往采用层次化设计方法,分模块、分层次地进行设计描述。描述系统总功能的设计为顶层设计,描述系统中较小单元的设计为底层设计。层次化设计方法比较自由,可以在任何层次使用电路图或硬件描述语言进行描述。根据两种输入方式的特点,通常我们在顶层设计中采用电路图输入方式,而在底层设计中,采用硬件描述语言描述模块的逻辑功能。
结语
在学习EDA技术过程中,无论选择何种器件和开发系统,采用何种设计输入方式和设计方法,一旦掌握了这种技术,它一定会给电路设计带来巨大效益。作为初学者还应注意的是,无论集成开发系统的功能如何完备,其仿真能力多么准确,仅在集成开发系统中学习EDA技术,都将是“纸上谈兵”,只有将设计下载到器件中,才算完成设计全部过程,才能真正把握和理解器件的性能,真正体会到EDA技术的优越性,也才能真正发挥EDA技术的作用。