语言不仅适用于电路逻辑的建模和仿真,还可以直接用于电路的设计。目前常用的 FPGA/CPLD设计的HDL综合器为 1. Synopsys公司的 FPGA Compiler、 FPGA Express 2. Synplicity公司的 Synplify Pro综合器; 3. Mentor子公司 Exemplar Logic的 Leonardo spectrum综合器; 综合器综合电路时,首先对Ⅴ IDL/Verilog进行分析处理,并将其转换成相应的电路 结构或模块,这是一个通用电路原理图的形成过程,与硬件无关。然后才对实际实现的目 标器件的结构进行优化,并使之满足各种约束条件,优化关键路径等。 综合器一般输出网表文件,如EDIF格式( Electronic Design Interchange Format),文 件后缀是cdf,或是直接用ⅤHDL/№erig语言表达的标准格式的网表文件,或是对应FPGA 器件厂商的网表文件,如 Xilinx的XNF网表文件。 适配器又称布局布线器,其任务是完成系统在器件上的布局布线。适配器输出的是厂 商自己定义的下载文件,用于下载到器件中以实现设计。布局布线通常由PLD厂商提供 的专门针对器件开发的软件完成,这些软件可以嵌在EDA开发环境中,也可以是专用的 适配器,例如Late公司的 ispEXPERT、 Altera公司的 MAX+plus2和 Quartus、 Xilinx公 司的 Foundation和ISE中都有各自的适配器。 下载器又称编程器,它把设计下载到对应的实际器件中,实现硬件设计,一般PLD 厂商都提供专门针对器件的下载或编程软件。 0.5硬件描述语言简介 数字系统的设计输入方式有多种,通常是由线信号和表示基本设计单元的符号连在 起组成线路图,符号取自器件库,符号通过信号(或网线)连接在一起,信号使符号互连, 这样设计的系统所形成的设计文件是若干张电路原理结构图,在图中详细标注了各逻辑单 元、器件的名称和相互间的信号连接关系。对于小的系统,这种原理电路图只要几十张至 几百张就可以了,但如果系统比较大,硬件比较复杂,这样的原理电路图可能要几千张 几万张甚至更多,这样就给设计归档、阅读、修改等都带来了不便。这一点在IC设计领 域表现得尤为突出,从而导致了采用硬件描述语言进行硬件电路设计方法的兴起。 硬件描述语言(HDL, Hardwhare Description Language)是用文本形式来描述数字电 路的内部结构和信号连接关系的一类语言,类似于一般的计算机高级语言的语言形式和结 构形式。设计者可以利用HDL描述设计的电路,然后利用EDA工具进行综合和仿真,最 后形成目标文件,再用ASC或PLD等器件实现 硬件描述语言的发展至今约有20多年的历史,并成功地应用于数字系统开发的各个 阶段:设计、综合、仿真和验证等,使设计过程达到高度自动化。硬件描述语言有多种类 型,最具代表性的、使用最广泛的是ⅤHDL( Very High Speed Intergated Circuit Hardware Description Language)语言和 Verilog Hdl语言 VHDL语言于八十年代初由美国国防部( The United States Department of Defense) 发起创建,当时制订了一个名为VHSC( Very High Speed Integrated Circuit)的计划,其 目的是为了能制定一个标准的文件格式和语法,要求各武器承包商遵循该标准描述其设计 的电路,以便于保存和重复使用电子电路设计。VHDL语言的全称为“超高速集成电路硬 件描述语言”( VHSIC Hardware Description Language),于1982年正式诞生,ⅤHDL吸取 了计算机高级语言语法严谨的优点,采用了模块化的设计方法,于1987年被国际电气电 子工程协会( nternational Electrical Electronic Engineering,EEE)收纳为标准;文件编 号为 IEEE standard10761993年,IEE对VHDL进行了修订,从更高的抽象层次和系 统描述能力上扩展了ⅤHDL的内容,公布了新版本的ⅤHDL,即IEEE标准的1076-1993 版本
语言不仅适用于电路逻辑的建模和仿真,还可以直接用于电路的设计。目前常用的 FPGA/CPLD 设计的 HDL 综合器为: 1.Synopsys 公司的 FPGA Compiler、FPGA Express; 2.Synplicity 公司的 Synplify Pro 综合器; 3.Mentor 子公司 Exemplar Logic 的 Leonardo Spectrum 综合器; 综合器综合电路时,首先对 VHDL/Verilog 进行分析处理,并将其转换成相应的电路 结构或模块,这是一个通用电路原理图的形成过程,与硬件无关。然后才对实际实现的目 标器件的结构进行优化,并使之满足各种约束条件,优化关键路径等。 综合器一般输出网表文件,如 EDIF 格式(Electronic Design Interchange Format),文 件后缀是.edf,或是直接用 VHDL/Verilog 语言表达的标准格式的网表文件,或是对应 FPGA 器件厂商的网表文件,如 Xilinx 的 XNF 网表文件。 适配器又称布局布线器,其任务是完成系统在器件上的布局布线。适配器输出的是厂 商自己定义的下载文件,用于下载到器件中以实现设计。布局布线通常由 PLD 厂商提供 的专门针对器件开发的软件完成,这些软件可以嵌在 EDA 开发环境中,也可以是专用的 适配器,例如 Lattice 公司的 ispEXPERT、Altera 公司的 MAX+plus2 和 Quartus、Xilinx 公 司的 Foundation 和 ISE 中都有各自的适配器。 下载器又称编程器,它把设计下载到对应的实际器件中,实现硬件设计,一般 PLD 厂商都提供专门针对器件的下载或编程软件。 0.5 硬件描述语言简介 数字系统的设计输入方式有多种,通常是由线信号和表示基本设计单元的符号连在一 起组成线路图,符号取自器件库,符号通过信号(或网线)连接在一起,信号使符号互连, 这样设计的系统所形成的设计文件是若干张电路原理结构图,在图中详细标注了各逻辑单 元、器件的名称和相互间的信号连接关系。对于小的系统,这种原理电路图只要几十张至 几百张就可以了,但如果系统比较大,硬件比较复杂,这样的原理电路图可能要几千张、 几万张甚至更多,这样就给设计归档、阅读、修改等都带来了不便。这一点在 IC 设计领 域表现得尤为突出,从而导致了采用硬件描述语言进行硬件电路设计方法的兴起。 硬件描述语言(HDL,Hardwhare Description Language)是用文本形式来描述数字电 路的内部结构和信号连接关系的一类语言,类似于一般的计算机高级语言的语言形式和结 构形式。设计者可以利用 HDL 描述设计的电路,然后利用 EDA 工具进行综合和仿真,最 后形成目标文件,再用 ASIC 或 PLD 等器件实现。 硬件描述语言的发展至今约有 20 多年的历史,并成功地应用于数字系统开发的各个 阶段:设计、综合、仿真和验证等,使设计过程达到高度自动化。硬件描述语言有多种类 型,最具代表性的、使用最广泛的是 VHDL(Very High Speed Intergated Circuit Hardware Description Language)语言和 Verilog HDL 语言。 VHDL 语言于八十年代初由美国国防部(The United States Department of Defense ) 发起创建,当时制订了一个名为 VHSIC(Very High Speed Integrated Circuit)的计划,其 目的是为了能制定一个标准的文件格式和语法,要求各武器承包商遵循该标准描述其设计 的电路,以便于保存和重复使用电子电路设计。VHDL 语言的全称为“超高速集成电路硬 件描述语言”(VHSIC Hardware Description Language),于 1982 年正式诞生,VHDL 吸取 了计算机高级语言语法严谨的优点,采用了模块化的设计方法,于 1987 年被国际电气电 子工程协会(International Electrical & Electronic Engineering , IEEE)收纳为标准;文件编 号为 IEEE standard 1076。1993 年,IEEE 对 VHDL 进行了修订,从更高的抽象层次和系 统描述能力上扩展了 VHDL 的内容,公布了新版本的 VHDL,即 IEEE 标准的 1076-1993 版本。 95
Verilog hdl语言最初是于1983年由 Gateway Design Automation(GDA)公司的Phil Moorby为其模拟器产品开发的硬件描述语言,那时它只是一种专用语言,最初只设计了 一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年 Moorby 推出它的第三个商用仿真器 verilog-XL,获得了巨大的成功,由于他们的模拟、仿真器产 品的广泛使用, Verilog hDL作为一种便于实用的语言逐步为设计者所接受。1989年 CADENCE公司收购了GDA公司,使得 Verilog hdl成为该公司的专有技术。1990年 CADENCE公司公开发表了 Verilog HDL,并成立OV( Open Verilon Internationa)来促进 Verilog hdl的发展,致力于推广Ⅴ erilog hdl成为IE标准,这一努力最后获得成功 Verilog语言于1995年成为IEEE标准,称为 IEEE Std1364-1995 本书将在介绍数字系统的设计方法及基本步骤的基础上,介绍MAX+plus2的使用方 法,介绍硬件描述语言ⅤHDL和 Verilog HDL,并给出若干数字系统设计问题,期望通 过实例和练习,把数字系统设计的基本理论、基本方法和设计课题紧密结合,使读者在 MAX+plus.2的设计平台下,学会用原理电路图输入或硬件描述语言输入(ⅤHDL或 Verilog HDL)进行电路设计、编译( Compiler)、仿真( Simulator、底层编辑( Floorplan Editor) 及PLD器件编程校验( Programmer或 Configure),对功能测试向量( Waveform editor)、 逻辑综合与试配( Logic Synthesize)等涉及不多,以求提高读者利用MAX+plus2进行数 字系统设计的能力。 本书除第三章使用 Mentor公司的 Modelsim仿真器、 Synplicity公司的 Synplify综合 器进行仿真和综合外,其余章节的仿真结果都是用 Altera公司的MAX+plus2得到的。 第一章MAX+plus2使用练习 1.1MAX+plus2简介 MAX+plus2( Multiple array matrix and programmable logic user system)是一个完全集成 化、易学易用的可编程逻辑设计环境,它可以在多种平台上运行,其图形界面丰富,加上 完整的、可即时访问的在线文档,使设计人员可以轻松地掌握软件的使用, MAX+plus2开发系统有很多特点 1.界面开放 MAX+plus2是Aera公司的EDA软件,但它可以与其它工业标准的设计输入、综合 校验工具相连接,设计人员可以使用 Altera或标准EDA工具设计输入工具来建立逻辑设 计,用MAX+plus编译器( Compiler)对 Altera器件设计进行编译,并使用 Altera或其 它EDA校验工具进行器件或板级仿真。目前,MAX+plus支持与 Candence、 Exemplarlogic、 Metor Graphics、 Synopsys、 Synplicity、 Viewlogic等公司所提供的EDA工具接口。 2.与结构无关 MAX+plus2系统的核心 Compiler支持 Altera公司的FLEX10K、FLEX8000 FLEX6000、MAX9000、MAX7000、MAX5000和lasi可遍程逻辑器件系列,提供了与 结构无关的可编程逻辑环境。 MAX+plus的编译器还提供了强大的逻辑综合与优化功能 使用户可以容易地把设计集成到器件中 3.丰富的设计库 MAX+plus提供丰富的库单元供设计者调用,其中包括74系列的全部器件和其它多 种
Verilog HDL 语言最初是于 1983 年由 Gateway Design Automation(GDA)公司的 Phil Moorby 为其模拟器产品开发的硬件描述语言,那时它只是一种专用语言,最初只设计了 一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985 年 Moorby 推出它的第三个商用仿真器 Verilog-XL,获得了巨大的成功,由于他们的模拟、仿真器产 品的广泛使用,Verilog HDL 作为一种便于实用的语言逐步为设计者所接受。1989 年 CADENCE 公司收购了 GDA 公司,使得 Verilog HDL 成为该公司的专有技术。1990 年 CADENCE 公司公开发表了 Verilog HDL,并成立 OVI(Open Verilon International)来促进 Verilog HDL 的发展,致力于推广 Verilog HDL 成为 IEEE 标准,这一努力最后获得成功, Verilog 语言于 1995 年成为 IEEE 标准,称为 IEEE Std 1364-1995。 本书将在介绍数字系统的设计方法及基本步骤的基础上,介绍 MAX+plus2 的使用方 法,介绍硬件描述语言 VHDL 和 Verilog HDL,并给出若干数字系统设计问题,,期望通 过实例和练习,把数字系统设计的基本理论、基本方法和设计课题紧密结合,使读者在 MAX+plus2 的设计平台下,学会用原理电路图输入或硬件描述语言输入(VHDL 或 Verilog HDL)进行电路设计、编译(Compiler)、仿真((Simulator)、底层编辑(Floorplan Editor) 及 PLD 器件编程校验(Programmer 或 Configure),对功能测试向量(Waveform Editor)、 逻辑综合与试配(Logic Synthesize)等涉及不多,以求提高读者利用 MAX+plus2 进行数 字系统设计的能力。 本书除第三章使用 Mentor 公司的 Modelsim 仿真器、Synplicity 公司的 Synplify 综合 器进行仿真和综合外,其余章节的仿真结果都是用 Altera 公司的 MAX+plus2 得到的。 第一章 MAX+plus2 使用练习 1.1 MAX+plus2 简介 MAX+plus2(Multiple array matrix and programmable logic user system)是一个完全集成 化、易学易用的可编程逻辑设计环境,它可以在多种平台上运行,其图形界面丰富,加上 完整的、可即时访问的在线文档,使设计人员可以轻松地掌握软件的使用。 MAX+plus2 开发系统有很多特点: 1.界面开放 MAX+plus2 是 Altera 公司的 EDA 软件,但它可以与其它工业标准的设计输入、综合 与 校验工具相连接,设计人员可以使用 Altera 或标准 EDA 工具设计输入工具来建立逻辑设 计,用 MAX+plus2 编译器(Compiler)对 Altera 器件设计进行编译,并使用 Altera 或其 它 EDA 校验工具进行器件或板级仿真。目前,MAX+plus2 支持与 Candence、Exemplarlogic、 Metor Graphics、Synopsys、Synplicity、Viewlogic 等公司所提供的 EDA 工具接口。 2.与结构无关 MAX+plus2 系统的核心 Compiler 支持 Altera 公司的 FLEX10K、FLEX8000、 FLEX6000、MAX9000、MAX7000、MAX5000 和 Classic 可遍程逻辑器件系列,提供了与 结构无关的可编程逻辑环境。MAX+plus2 的编译器还提供了强大的逻辑综合与优化功能, 使用户可以容易地把设计集成到器件中。 3.丰富的设计库 MAX+plus2 提供丰富的库单元供设计者调用,其中包括 74 系列的全部器件和其它多 种 96
逻辑功能部件,调用库元件进行设计,可以大大减轻设计人员的工作量,缩短设计周期 4.模块化工具 设计人员可以从各种设计输入、处理和校验选项中进行选择,从而使MAX+plus2可 以 满足不同用户的需求,根据需要,还可以添加新功能。例如,在本教材中,侧重点在于用 MAX+plus进行各种设计输入(图形或HDL输入)、编译( Compiler)、仿真( Simulator) 底层编辑( Floorplan Editor)及PLD器件编程校验( Programmer或 Configure),并不过多 涉及功能测试向量( Waveform Editor)、逻辑综合与试配( Logic Synthesize)等 5.硬件描述语言 MAX+plus2软件支持各种HDL设计输入选项,包括VHDL、 Verilog hdl和 Altera 公 司的AHDL。 MAX+plus2软件的启始界面如图1-1-1所示。 ABRA MAR+plus Il 本章将 图1-1-1MAX+plus2界面 通过 些例子来说 明利用 MAX+plus2进行数字功能模块或数字系统设计的过程 1.2基于MAX+plus2的电路设计过程 在进入设计之前,需要先建立一个文件夹为用户存放设计文件用,即用户库。用户库 的名称用英文字母表示,例如E. maxplus2lgl 例1-2-1用原理图输入法设计一个3线8线译码器 步骤1、进入 Windows操作系统,打开MAX+plus2; 步骤2、启动 File\ Project Name菜单,输入设计文件的名称(原理图文件的扩展名为gdf 如图1-2-1所示; Project Name: L38. gdf Directory is: f: \program files \maxplus 2 \gl F 2 maxplus2 D
逻辑功能部件,调用库元件进行设计,可以大大减轻设计人员的工作量,缩短设计周期。 4.模块化工具 设计人员可以从各种设计输入、处理和校验选项中进行选择,从而使 MAX+plus2 可 以 满足不同用户的需求,根据需要,还可以添加新功能。例如,在本教材中,侧重点在于用 MAX+plus2 进行各种设计输入(图形或 HDL 输入)、编译(Compiler)、仿真(Simulator)、 底层编辑(Floorplan Editor)及 PLD 器件编程校验(Programmer 或 Configure),并不过多 涉及功能测试向量(Waveform Editor)、逻辑综合与试配(Logic Synthesize)等。 5.硬件描述语言 MAX+plus2 软件支持各种 HDL 设计输入选项,包括 VHDL、Verilog HDL 和 Altera 公 司的 AHDL。 MAX+plus2 软件的启始界面如图 1-1-1 所示。 本章将 通过一 些例子来说 明利用 MAX+plus2 进行数字功能模块或数字系统设计的过程。 图 1-1-1 MAX+plus2 界面 1.2 基于 MAX+plus2 的电路设计过程 在进入设计之前,需要先建立一个文件夹为用户存放设计文件用,即用户库。用户库 的名称用英文字母表示,例如 E:\maxplus2\lgl。 例 1-2-1 用原理图输入法设计一个 3 线-8 线译码器。 步骤 1、进入 Windows 操作系统,打开 MAX+plus2; 步骤 2、启动 File \ Project Name 菜单,输入设计文件的名称(原理图文件的扩展名为.gdf) 如图 1-2-1 所示; 97
步骤3、点击 Assign Device菜单,选择器件(例如EPFl0K10LC84-3),OK,如图1-2-2 所示; Device Top of Hierarchy: f: \. \maxplus 2 \gl \38. gdf Device Eamily: FLEX10K Cancel Devices EPF10K10LC84-4 Auto device AUTO Device Options EPF10K10LC84-4 EPF10K10LC84-3 EPF10K10L|844 Migration Device ow Only Fastest Speed Grades Edit Chips》 Maintain Current Synthesis Regardless of Device or Speed Grade Changes 图1-2-2选择器件 步骤4、启动Fl\New菜单,如图1-2-3所示,选择 Graphic Editor File,OK,打开原理 图编辑器。 File Type c Graphic Editor file A Symbol Editor file C Iext Editor file WAveform Editor fle . scf ancel 图1-2-3选择原理图编辑文件 步骤5、原理图设计输入 (1)元器件放置 在空白处双击鼠标左键,弹出器件选择界面如图1-2-4所示,图中 Symbol Libraries
步骤 3、点击 Assign \ Device 菜单,选择器件(例如 EPF10K10LC84-3),OK,如图 1-2-2 所示; 图 1-2-2 选择器件 步骤 4、启动 File \ New 菜单,如图 1-2-3 所示,选择 Graphic Editor File,OK,打开原理 图编辑器。 图 1-2-3 选择原理图编辑文件 步骤 5、原理图设计输入 (1) 元器件放置 在空白处双击鼠标左键,弹出器件选择界面如图 1-2-4 所示,图中 Symbol Libraries 98
中列出文件目录分别的是用户库、基本元器件库、宏功能库和可调参数库。选择其中任 库,如基本元器件库,则此库中所有元器件的符号名称列在 Symbol Files中,点击所需的 元件或在 Symbol Name中输入元件名,如and3(三输入与门)、not(非门)、 input(输入 端口)、 output(输出端口)等,OK即可。 若要安放相同的元件,只要按住Ctrl键,同时用鼠标拖动该元件。 Symbol Name: and3 用户库 Megawizard Plug-I 基本元器件 宏功能库 e:\maxplus2\\prim e: \maxplus 2\max2lib'm e: \maxplus2\max2hib\mega ipm 可调参数库 Directory is: e: \maxplus 2\gl Symbol File Directories: 彐w and4 户max2hb and6 band2 Cancel 图1-2-4器件选择界面 (2)在器件之间添加连线 把鼠标移到元件引脚附近,则鼠标光标自动由箭头变为十字,按住鼠标左键拖动,即 可画出连线。如图1-2-5。 PIN NAME 1 PIN_NAME PIN NAME 图1-25在器件之间添加连线
中列出文件目录分别的是用户库、基本元器件库、宏功能库和可调参数库。选择其中任一 库,如基本元器件库,则此库中所有元器件的符号名称列在 Symbol Files 中,点击所需的 元件或在 Symbol Name 中输入元件名,如 and3(三输入与门)、not(非门)、input(输入 端口)、output(输出端口)等,OK 即可。 若要安放相同的元件,只要按住 Ctrl 键,同时用鼠标拖动该元件。 用户库 基本元器件 宏功能库 可调参数库 图 1-2-4 器件选择界面 (2) 在器件之间添加连线 把鼠标移到元件引脚附近,则鼠标光标自动由箭头变为十字,按住鼠标左键拖动,即 可画出连线。如图 1-2-5。 图 1-2-5 在器件之间添加连线 99