第2章 Quartus II设计向导 2.1 频率计的VHDL设计 2.2 使用宏功能块设计频率计 2.3 嵌入式系统块ESB的应用 2.2 使用宏功能块设计频率计 2.3 嵌入式系统块ESB的应用 2.4 嵌入式系统块ESB的应用 2.5 时序驱动式优化编译方法 2.6 频率计结构原理 2.7 Quartus II优化特性
2.1 频率计的VHDL设计 2.1.1 创建工程和编辑设计文件 2.1.1 创建工程和编辑设计文件 首先应该建立好工作库目录,以便设计工程项目的存储。作为示例,在此设立目录为D:\ftest,作为工作库,以便将设计过程中的相关文件存储于此。任何一项设计都是一项工程(Project),都必须首先为此工程建立一个放置与此工程相关的所有文件的文件夹,此文件夹将被EDA软件默认为工作库(Work Library)。一般地,不同的设计项目最好放在不同的文件夹中。注意,一个设计项目可以包含多个设计文件,如频率计。
在建立了文件夹后就可以将设计文件通过Quartus II的文本编辑器编辑并存盘,详细步骤如下: 1. 新建一个文件夹 首先利用Windows资源管理器新建一个文件夹。假设本项设计的文件夹取名为ftest,在D盘中,路径为D:\ftest。注意,文件夹名不能用中文。
2. 输入源程序 打开Quartus II,选择菜单“File”→“New”,在New窗中的“Device Design Files”中选择编译文件的语言类型,这里选“VHDL Files”(如图2-1所示)。然后在VHDL文本编译窗中键入例2-1的程序,这是频率计项目中的一个模块:测频计数器CNT1,文本编辑窗口如图2-2所示。
图2-1 选择编辑文件的语言类型
图2-2 编辑输入设计文件
【例2-1】计数器设计。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT1 IS PORT (CLOCK : IN STD_LOGIC; ACLR : IN STD_LOGIC; CLK_EN : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(31 DOWNTO 0));
END CNT1; ARCHITECTURE behav OF CNT1 IS SIGNAL CQI : STD_LOGIC_VECTOR(31 DOWNTO 0); BEGIN PROCESS(CLOCK, ACLR, CLK_EN) IF ACLR = '1' THEN CQI <= (OTHERS=>'0'); ELSIF CLOCK'EVENT AND CLOCK = '1' THEN IF CLK_EN = '1' THEN CQI <= CQI + 1;
END IF; END PROCESS; Q <= CQI; END behav;
【例2-2】测频时序控制器设计。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY TESTCTL IS PORT (CLK : IN STD_LOGIC; TSTEN : OUT STD_LOGIC; CLR_CNT : OUT STD_LOGIC; Load : OUT STD_LOGIC );
END TESTCTL; ARCHITECTURE behav OF TESTCTL IS SIGNAL Div2CLK : STD_LOGIC; BEGIN PROCESS( CLK ) IF CLK'EVENT AND CLK = '1' THEN Div2CLK <= NOT Div2CLK; END IF; END PROCESS;
PROCESS (CLK, Div2CLK) BEGIN IF CLK = '0' AND Div2CLK = '0' THEN CLR_CNT <= '1'; ELSE CLR_CNT <= '0'; END IF; END PROCESS; Load <= NOT Div2CLK; TSTEN <= Div2CLK; END behav;
【例2-3】锁存器设计。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY REG1 IS PORT(CLOCK : IN STD_LOGIC; DATA : IN STD_LOGIC_VECTOR(31 DOWNTO 0); Q : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) ); END REG1;
ARCHITECTURE behav OF REG1 IS BEGIN PROCESS(CLOCK, DATA) IF CLOCK'EVENT AND CLOCK = '1' THEN Q <= DATA ; END IF; END PROCESS; END behav;
【例2-4】频率计顶层设计文件。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY FREQTEST IS PORT ( CLK : IN STD_LOGIC; FSIN : IN STD_LOGIC; DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) ); END FREQTEST; ARCHITECTURE struc OF FREQTEST IS
COMPONENT TESTCTL PORT ( CLK : IN STD_LOGIC; TSTEN : OUT STD_LOGIC; CLR_CNT : OUT STD_LOGIC; Load : OUT STD_LOGIC ); END COMPONENT; COMPONENT CNT1 PORT ( CLOCK : IN STD_LOGIC; ACLR : IN STD_LOGIC; CLK_EN : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) );
END COMPONENT ; COMPONENT REG1 PORT ( CLOCK : IN STD_LOGIC; DATA : IN STD_LOGIC_VECTOR(31 DOWNTO 0); Q : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) ); END COMPONENT; SIGNAL TSTEN1 : STD_LOGIC; SIGNAL CLR_CNT1 : STD_LOGIC; SIGNAL Load1 : STD_LOGIC;
SIGNAL DTO1 : STD_LOGIC_VECTOR(31 DOWNTO 0); BEGIN U1 : TESTCTL PORT MAP( CLK =>CLK, TSTEN => TSTEN1, CLR_CNT => CLR_CNT1, Load => Load1 ); U2 : REG1 PORT MAP( CLOCK => Load1, DATA => DTO1, Q => DOUT); U3 : CNT1 PORT MAP( CLOCK => FSIN, ACLR => CLR_CNT1, CLK_EN => TSTEN1, Q => DTO1 ); END struc;
3. 文件存盘 完成上述设计之后将文件存盘,选择“File”?“Save As”,找到已设立的文件夹D:\ Ftest\,存盘文件名应该与实体名一致,即CNT1.vhd。当出现问句“Do you want to create...”时,可选“否”,然后重复以上过程,分别将例2-2、例2-3和例2-4编辑存盘至文件夹ftest中。至此,ftest共有4个VHDL文件:cnt1.vhd、testctl.vhd、reg1.vhd和freqtest.vhd,最下面的文件是顶层设计。 此频率计的工作原理和层次结构说明请参考2.6节。
2.1.2 创建工程 在此要利用“New Preject Wizard”创建此频率计的设计工程,即令freqtest.vhd为工程,并设定此工程的一些相关信息,如工程名、目标器件、综合器、仿真器等。步骤如下: 1. 打开建立新工程管理窗 选择菜单“File”?“New Preject Wizard”,即弹出工程设置对话框(图2-3)。点击此框最上一栏右侧的按钮“...”,找到文件夹D:\Ftest,选中已存盘的顶层文件freqtest.vhd(一般应该设定顶层设计文件为工程),再点击“打开”,即出现如图2-3所示的设置情况。
图2-3 利用“New Preject Wizard”创建工程
其中第一行的D:\ Ftest表示工程所在的工作库文件夹;第二行的Freqtest表示此项工程的工程名,此工程名可以取任何其它的名字,也可直接用顶层文件的实体名作为工程名,在此就是按这种方式取名的;第三行是顶层文件的实体名,这里即为“freqtest”。
2. 将设计文件加入工程中 然后点击下方的“Next”按钮,在弹出的对话框中点击“File”栏的按钮,将频率计所有相关的文件都加入此工程,即得到如图2-4所示的情况。所有此工程的文件加入的方法有两种:第一种是点击右边的“Add All”按钮,将设定的工程目录中的所有VHD文件加入到工程文件栏中;第二种方法是点击“...”按钮,从工程目录中选出相关的VHDL文件。
图2-4 将频率计所有相关的文件都加入此工程
3. 选择仿真器和综合器类型 点击图2-4的“Next”按钮,这时弹出选择仿真器和综合器类型的窗口。如果都是选择默认的“NONE”,表示都选Quartus II中自带的仿真器和综合器。因此,在此都选默认项“NONE”。 4. 选择目标芯片 再次点击“Next”,选择目标芯片。首先在“Family”栏选芯片系列,在此选“ACEXIK”系列,并在此栏下选“Yes”,即选择一个确定目标器件。再按“Next”键,选择此系列的具体芯片:EPIK30TC144-3,按“Next”键后,弹出工程设置统计窗口,即图2-5所示的内容。
5. 结束设置 最后按“Finish”键,即已设定好此频率计的工程(图2-6)。文件名处打红勾,表示该实体为当前工程。图2-6所示的是工程freqtest的工程管理窗口,或称Compilation Hierarchies窗口,主要显示本工程项目的层次结构和各层次的实体名。
图2-5 工程设置统计窗口
图2-6 freqtest的工程管理窗口
2.1.3 编译前设置 在对工程进行编译处理前,必须作好必要的设置。具体步骤如下: 1. 选择目标芯片 选择“Assignmemts”菜单中的“Settings”项,在弹出的对话框中选“Compiler Settings” 项下的“Device”。首先选目标芯片EPIK30TC144-3(此芯片已在建立工程时选定了),也可以在(图2-7)“Available devices”栏分别用“Package”:TQFP;“Pin count”:144;“Speed”:3,来选定芯片。
2. 选择目标器件编程配置方式 由图2-7中的按钮“Device & Pin Options”进入选择窗,首先选择“Configuration”项,在此框的下方有相应的说明。在此可选Configuration方式为Passive Serial,这种方式可以直接由PC机配置,也可由专用配置器件进行配置。配置器件选EPC2(如图2-8所示)。
图2-7 选定目标器件
图2-8 选择配置器件和配置方式
3. 选择输出配置 在图2-8的“Programming Files”窗口,可以选Hexadecimal,即产生下载文件的同时,产生十六进制配置文件fraqtest.hexout,并设地址起始为0,为递增方式(如图2-9所示)。此文件可用于单片机与EPROM构成的FPGA配置电路系统。
图2-9 输出文件.hexout设置
4. 选择目标器件闲置引脚的状态 在“Unused Pins”处,可根据实际需要选择目标器件闲置引脚的状态,如可选择为输入状态(呈高阻态),或输出状态(呈低电平),或输出不定状态,或不作任何选择。在General项也可作一些选择,各选择的功能可参考下方的“Description”说明。 5. 编译模式的选择 在图2-7所示的窗口中选择Compiler Settings项下的Mode。为了使得每一次重复编译进行得更快,选择“Smart compilation...”和“Preserve...”(如图2-10所示)。
图2-10 选择编译模式
2.1.4 编译及了解编译结果 Quartus II编译器是由一系列处理模块构成的,这些模块负责对设计项目的检错、逻辑综合和结构综合。即将设计项目适配进FPGA/CPLD目标器中,同时产生多种用途的输出文件,如功能和时序仿真文件,器件编程的目标文件等。 编译器首先从工程设计文件间的层次结构描述中提取信息,包括每个低层次文件中的错误信息,供设计者排除,然后将这些层次构建产生一个结构化的以网表文件表达的电路原理图文件,并把各层次中所有的文件结合成一个数据包,以便更有效地处理。
在编译前,设计者可以通过各种不同的设置方法,指导编译器使用各种不同的综合和适配技术(如时序驱动技术等),以便提高设计项目的工作速度,优化器件的资源利用率。而且在编译过程中及编译完成后,可以从编译报告窗获得所有相关的详细编译结果,以利于设计者及时调整设计方案。 下面首先选择Processing菜单的“Start Compilation”项,启动全程编译。注意这里所谓的编译(Compilation)包括Quartus II对设计输入的多项处理操作,其中包括排错、数据网表文件提取、逻辑综合、适配、装配文件(仿真文件与编程配置文件)生成,以及基于目标器件的工程时序分析等。
如果工程中的文件有错误,在下方的Processing信息栏中会显示出来。如图2-11中所示,在reg1 如果工程中的文件有错误,在下方的Processing信息栏中会显示出来。如图2-11中所示,在reg1.vhd文件第12行的“BEGEN”处或附近有语句格式错误,可双击此条文,即弹出regl.vhd文件,在闪动的光标处(或附近)可发现,文件中错将“BEGIN”写成“BEGEN”,改正后存盘,再次进行编译,仍选Processing菜单中的“Start Compilation”。
图2-11 检查出文本格式错
编译结果包括以下一些内容: 1. 阅读编译报告 编译成功后可以看到如图2-12所示的界面。此界面的左上角是工程管理窗,若用鼠标点击顶层实体“freqtest”左边的“+”号,可以看到整个设计层次;在此栏下是编译处理流程,包括数据网表建立、逻辑综合、适配、配置文件装配和时序分析。最下栏是编译处理信息,右栏是编译报告,这可以在Processing菜单项的“Compilation Report”处见到。
图2-12 编译完成后的Quartus II管理窗口界面
2. 了解工程的时序报告 点击此栏的“Timing Analyses”项左侧的“+”号,并点击“fmax”项,可以看到(如图2-12右上角的报告栏所示)此频率计最高测试频率为104.17 MHz。
3. 了解硬件资源应用情况 选择“Compilation Report”栏的Floorplan View ,观察此项工程在FPGA器件中逻辑单元的分布情况和使用情况。为了更详细地了解相关情况,可以在打开Floorplan界面后,首先点击View菜单中的“Full Screen”项,打开全部界面,然后点击此菜单的相关项,如“Routing”→“Show Node Fan-In”等等。
2.1.5 仿真 仿真就是对设计项目进行一项全面彻底的测试,以确保设计项目的功能和时序特性,以及保证最后的硬件器件的功能与原设计相吻合。 仿真可分为功能仿真和时序仿真。功能仿真只测试设计项目的纯逻辑行为,而时序仿真则测试逻辑行为,也测试实际器件在最差条件下设计项目的真实运行情况。
仿真操作前必须利用Quartus II的波形编辑器建立一个矢量波形文件( 仿真操作前必须利用Quartus II的波形编辑器建立一个矢量波形文件(.vwf)以作仿真激励。VWF文件将仿真输入矢量和仿真输出描述成一波形的图形来实现仿真,但也可以将仿真激励矢量用文本表达,即为文本方式的矢量文件(.vec)。 Quartus II允许对整个设计项目进行仿真测试,也可以对该设计中的任何子模块进行仿真测试。方法是设定仿真测试为“Simulation focus”。仿真设定单元(Simulation Settings)允许设计者指定仿真focus、对该模块的仿真类型、仿真覆盖的时序和矢量激励源等。
Time/Vectors仿真参数设定窗口允许设定仿真时间区域,以及矢量激励源。可以以VWF文件、VEC文件、矢量表输出文件( Time/Vectors仿真参数设定窗口允许设定仿真时间区域,以及矢量激励源。可以以VWF文件、VEC文件、矢量表输出文件(.tbl)或功率输入文件(.pwf)的形式作为矢量激励源,也可以通过Tcl脚本窗口来输入矢量激励源。 对工程的编译通过后,必须对其功能和时序性质进行仿真测试,以了解设计结果是否满足原设计要求。VWF文件方式的仿真流程的详细步骤如下: 1. 打开波形编辑器 选择菜单File中的New项,在New窗口中选“Other Files”中的“Vector Waveform File”(图2-13),点击“OK”,即出现空白的波形编辑器(图2-14)。
图2-13 准备编辑矢量波形文件
图2-14 波形编辑器
2. 设置仿真时间区域 为了使仿真时间轴设置在一个合理的时间区域上,在Edit菜单中选择“End Time”项,在弹出的窗口中的“Time”窗中键入50,单位选“us”,即整个仿真域的时间设定为50微秒,点击“OK”,结束设置。 3. 存盘波形文件 选择菜单File中的“Save as”,将波形文件以文件名Freqtest.vwf(默认名)存入文件夹D:\FTEST中。
4. 输入信号节点 将频率计的端口信号节点选入此波形编辑器中。方法是首先选“View”菜单中的“Utility Windows”项的“Node Finder”选项。其对话框如图2-15所示。在“Filter”框中选“Pins : all”,然后点击“Start”钮。于是在下方的“Nodes Found”窗口中出现了设计中的freqtest工程的所有端口引脚名(如果此对话框中的“start”不显示,需要重新编译一次,即选Processing? Start Compilation,然后再重复以上操作过程)。用鼠标将重要的端口节点CLK,
FSIN和输出总线信号DOUT逐个拖到波形编辑窗口,点击波形窗左侧的全屏显示钮,使全屏显示。点击放大/缩小钮后,用鼠标右键在波形编辑区域点击,使仿真坐标处于适当位置(图2-16(a)),最后关闭Node Finder窗口。
图2-15 向波形编辑器输入信号节点
(a) 调入了信号节点的波形编辑器 图 2-16
(b) 设置仿真信号数据格式 图 2-16
5. 编辑输入波形 点击待测频率信号名“FSIN”,再点击左侧的时钟设置键,在Clock窗口中设置FSIN的时钟周期为200 ns,并以同样方法设置CLK的周期为10 us。这里,CLK是测频的门控信号,它将产生10 us的计数门控宽度(在点击“FSIN”后,也可选菜单Edit中的“Value”项,再选“Clock”项),如图2-17所示的Clock窗中的“Duty cycle”是占空比,可选50,即选50%占空比,最后对波形文件再次存盘。
图2-17 选择时钟周期和占空比
6. 总线数据格式设置 如果点击如图2-16(a)所示的输出信号“DOUT”左旁的“+”,则将展开此总线中的所有信号;如果双击此“+”号左旁的信号标记,将弹出该信号数据格式设置对话框(如图2-16(b)所示)。在该对话框的“Radix”栏有5种选择:Binary:二进制;Hexadecimal:十六进制;Octal:八进制;Signed Decimal:有符号十进制;Unsigned Decimal:无符号十进制。 通常选择十六进制表达方式比较方便。
7. 仿真器参数设置 选择菜单Assignment中的 “Settings”, 在Settings窗的Category下选“Simulator Settings”,在此项下分别选“General”,观察仿真总体设置情况。选“Mode”,以确认仿真模式为时序仿真“Timing”(图2-18);选择Options,确认选定“Simulation coverage reporting”;毛刺检测“Glitch detection”为1 ns宽度。 8. 启动仿真器 现在所有设置进行完毕,在菜单Processing项下选“Run Simulation”,直到出现“Simulation was successful”,仿真结束。
图2-18 选择时序仿真模式
9. 观察仿真结果 点击菜单Processing中的“Simulation Report”项,以便打开波形输出结果(图2-19)。注意,Quartus II的仿真波形文件中,波形编辑文件(* .vwf)与波形仿真报告文件(Simulation Report)是分开的,而MaxplusII的编辑与仿真报告波形是合二为一的。 由图2-19可见,由于设定“FSIN”的时钟周期为200 ns,门控信号周期为10 us,则应测得频率为50 Hz,图中显示为“32”(十六进制),即为十进制的50,表明此频率计功能正确。
如果在启动仿真运行(Processing 如果在启动仿真运行(Processing?Run Simulation)后,并没有出现仿真完成后的波形图,而是出现文字“Can't open Simulation Report Window”,但报告仿真成功,则可自己打开仿真波形报告,选择:Processing?Simulation Report。
图2-19 仿真波形输出
2.1.6 引脚锁定和下载 为了能对频率计进行硬件测试,应将频率计的输入/输出信号锁定在芯片确定的引脚上。在此根据GW48系统电路模式No.0 (见附录),以及EP1K30TC144适配板的引脚情况,通过查表确定频率计的引脚分别为: FSIN:Clock0(P126); Clk:Clock5(P54);
32位输出数据总线DOUT[31..0]:对应的引脚编号为:96,95,92,91,90,89,88,87,86,83,82,81,80,79,78,73,72,70,69,68,67,65,42,41,39,38,37,36,33,32,31,30。 将引脚锁定后再编译一次,把引脚信息一同编译进配置文件中,最后就可以把配置文件下载进目标器件中。具体步骤如下:
1. 引脚锁定 假设现在已打开了freqtest工程(如果刚打开Quartus II,应在菜单File中选“Open Preject”项,并点击工程文件“freqtest”,打开此前已开始设计的工程),在菜单Assignments中,选“Assign Pins”项,弹出的对话框如图2-20所示。为了将DOUT[0]锁定在第30脚上,有两种方法:一种是先点击“Available Pins...”窗中的“30”,再于“Pin name”框中键入“DOUT[0]”,然后点击“Add”即可(如图2-20所示);
另一种方法是点击“30”(引脚序号)后,再点击“Pin name”栏右侧的“ 另一种方法是点击“30”(引脚序号)后,再点击“Pin name”栏右侧的“...”,将出现图2-21的对话框,点击“Filter”钮,选“Pins all”,再点击“Start”,于是在“Nodes Found”中出现所有的引脚信号名,在其中选“DOUT[0]”,再点击“OK”,于是回到图2-20所示对话框,点击“Add”后,即可将“DOUT[0]”锁定在“30”脚上。以同样方法可以将所有引脚信号锁定在对应的引脚上(见图2-22),最后点击“OK”,关闭对话框。
图2-20 打开引脚锁定窗口
图2-21 选择待锁定的引脚名
图2-22 将频率计的输入/输出信号锁定在希望的引脚上
2. 打开编程窗 引脚锁定后,必须再编译一次(Processing?Start Compilation),将引脚锁定信息编译进下载文件中。首先将系统连接好,上电,然后在菜单Tool中,选择“Programmer”,于是弹出如图2-23所示的编程窗。
图2-23 编程窗口
3. 选择编程模式 为了直接对FPGA EP1K30进行配置,在编程窗的编程模式Mode 中选“Passive Serial”,然后点击左侧的“Add File”按钮,选择配置文件“Freqtest.sof”,最后点击“Start”。 当“Progress”显示出100%以及在底部的处理栏中出现“Configuration Succeeded”时,表示编程成功(注意,如果必要可再次点击“Start”,直至编程成功)。
注意:CPLD和EPC系列配置器件只有一种编程模式,即利用FTAG口的isp方式。但用于FPGA的SOF文件有两种编程配置模式,即Passive Serial和JTAG模式,他们的编程电路连接方式也不一样。因此,如果FPGA的下载模式是以JTAG模式连接的,则应选择编程模式为“JTAG”,如图2-24所示。
4. 选择编程器 在图2-23所示的编程窗中,选“Setup”按钮可设置下载接口的方式。 这里选择“ByteBlaster MV[LPT1]”,方法是点击图2-23所示的编程窗上的“Setup”钮,即弹出“Hardware Setup”对话框;选择此框的“Hardware settings”页,再双击此页中的选项“ByteBlaster...”,之后点击“Close”按钮,关闭对话框即可。这时,在如图2-23所示的编程窗右上方的编程方式指示“Type”的右侧,显示出编程方式:ByteBlaster[LPT1]。
5. 对配置器件编程 如果要对工程目标器件EP1K30的配置器件EPC2进行编程,可选择EP1K30适配板,并作好跳线设置,然后作如图2-24(a)的设置,即选择编程为“Freqtest.pof”,下载模式选“JTAG”,并分别对文件名右侧的“Progam/Configure”、“Verify”和“Blank-Check”条目下的小方块打勾,点击“Start”后,即可对EPC2进行编程。编程成功后的界面如图2-24(b)所示。
(a) 对EPC2编程设置 图 2-24
(b) 编程成功 图 2-24
(c) 将编程设置以.cdf文件方式存盘 图 2-24
6. 保存编程信息 编程完毕后,如果希望将此次设置的所有结果保存起来,以便能够很快调出进行编程,可以点击“Save as”,将弹出如图2-24(c)所示的文件存储窗,在这里可以将所有编程和配置条件与文件的信息都存在Chain Description File (: cdf) 文件中(ftest.cdf),以后编程只要打开此文件就可以了。
2.1.7 Quartus II在Windows 2000上的安装设置 在Windows 98中,Quartus II一旦安装完毕,仅通过Quartus II上的直接设置,即可使用硬件下载功能。但在Windows 2000上安装时,除了安装Quartus II软件外,为使用ByteBlasterMV下载功能,还必须安装硬件驱动(drivers),以支持Quartus II对PC机并行口的操作。 具体安装步骤如下: (1) 假设已在Windows 2000上安装好Quartus II; (2) 选择左下方“开始”→“设置”→“控制面板”;
(3) 双击“游戏选项”图标,然后选择“添加”→“添加其它”→“从磁盘安装”命令,再单击“浏览”,浏览驱动器所在目录:Quartus II的安装目录\drivers\win2000; (4) 选择 win2000.inf,单击“确定”; (5) 在“数字签名未找到”对话框中选择“是”; (6) 在“选择一个设备驱动程序”窗口中,选择“Altera ByteBlaster”,并单击“下一步”; (7) 在接下去的“数字签名未找到”对话框中,仍选择“是”; (8) 安装完成,依提示重新启动计算机。
2.2 使用宏功能块设计频率计 为了说明在一项顶层设计中如何定制和调用宏功能块,这里以上述频率计的设计为例,分别用宏功能块取代此频率计中的32位锁存器和32位计数器,再进行编译、仿真和硬件测试。首先定制32位计数器,步骤如下:
1. 打开MegaCore管理器 选择“Tools”菜单中的“MegaWizard Plug-In Manager”,在弹出的窗口中(图2-25)确认选择“Create a new custom megafunction variation”,点击“Next”。 2. 选择目标器件和宏功能块类型 出现如图2-26所示的对话框。在此框中选择目标器件为“ACEX1K”,模块表达语言为“VHDL”,模块内容为arithmetic项下的“LPM_COUNTER”,生成功能块的路径与取名为“D:\FTEST\cnt32-core.vhd”。
图2-25 建立一个宏功能块
图2-26 选择计数器模块及设定文件存储路径
3. 确定宏功能块工作方式 点击“Next”后即进入图2-27,在此对话框中选择计数器为单一加法计数器“Up only”。 再点击“Next”后进入图2-28所示的对话框,在这里选择普通二进制计数方式(如果要选某数进制的计数方式,如十进制计数器,应该选“Modulus”,“with .a count...”),并在“How wide should the‘q’output bus”旁键入“32”,即设定为32位二进制计数器。
图2-27 选择32位单一加法计数器
图2-28 选择普通二进制计数方式
4. 选择清0输入 点击“Next”按钮后,出现图2-29所示的对话框,在这里的“Asynchronous inputs”下选择“Clear”,表示此计数器的清零方式选择为异步清零方式,输入端为“aclr”(如图2-30)。 5. 结束编辑 为了将此模块利用顶层文件进行例化,应该特别注意此二进制计数器的端口信号名。点击 “Next”后,即进入结束编辑窗口(如图2-31所示)。最后得到的文件名是“reg32_core.vhd”,在D:\FTEST文件夹中。
图2-29 清零方式选择
图2-30 选择异步清零方式
图2-31 宏功能模块的VHDL文件形成
6. 编辑32位锁存器宏功能块 此后可以以完全相似的方法定制32位锁存器,其宏功能模块名是“LPM_FF”。在“storage”类别中,存盘可取名为“reg32_core.vhd”,存在同一目录中。最后完成类似于图2-30和图2-31所示的设置。 7. 修改顶层文件例化元件 最后修改例2-4,分别以cnt32_core.vhd和reg32_core . vhd取代原来的cnt1.vhd和reg1.vhd,并注意它们的端口信号。改变后的文件如例2-5所示。此后就可以根据上节介绍的方法对频率计文件进行完整的设计和测试了,也可以比较两种结构的硬件特性、时序情况和逻辑资源耗用率。
【例2-5】修改后的文件。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY FREQTEST IS PORT ( CLK : IN STD_LOGIC; FSIN : IN STD_LOGIC; DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) ); END FREQTEST; ARCHITECTURE struc OF FREQTEST IS COMPONENT TESTCTL
PORT ( CLK : IN STD_LOGIC; TSTEN : OUT STD_LOGIC; CLR_CNT : OUT STD_LOGIC; Load : OUT STD_LOGIC ); END COMPONENT; COMPONENT cnt32_core PORT (CLOCK : IN STD_LOGIC; ACLR : IN STD_LOGIC; CLK_EN : IN STD_LOGIC; Q : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); END COMPONENT ; COMPONENT reg32_core
PORT (CLOCK : IN STD_LOGIC; DATA : IN STD_LOGIC_VECTOR(31 DOWNTO 0); Q : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) ); END COMPONENT; SIGNAL TSTEN1 : STD_LOGIC; SIGNAL CLR_CNT1 : STD_LOGIC; SIGNAL Load1 : STD_LOGIC; SIGNAL DTO1 : STD_LOGIC_VECTOR(31 DOWNTO 0);
BEGIN U1 : TESTCTL PORT MAP( CLK =>CLK, TSTEN => TSTEN1, CLR_CNT => CLR_CNT1, Load => Load1 ); U2 : reg32_core PORT MAP( CLOCK => Load1, DATA => DTO1, Q => DOUT); U3 : cnt32_core PORT MAP( CLOCK => FSIN, ACLR => CLR_CNT1, CLK_EN => TSTEN1, Q => DTO1 ); END struc;
2.3 嵌入式系统块ESB的应用I 嵌入式系统块即Embedded System Block(ESB)。1个ESB有2048个可编程RAM位,能配置成16个逻辑宏单元,并含有OR和XOR逻辑、32个乘积项及16个D触发器。可以利用Quartus II将某些特定的设计放在ESB中实现,而非利用常规的逻辑宏单元LCs(或称LEs)来实现,从而达到优化、提高速度与降低逻辑资源耗用的目的。
ESB具有特殊的功能结构,它内部含有多种可以利用的逻辑资源,如可配置的RAM结构和乘积项逻辑结构。其RAM结构可根据设计者的要求进行组合、配置,形成不同大小和类型的单口RAM、双口RAM、ROM、FIFO or CAM(内容寻址存储器:Content-addressable memory)。ESB是FLEX系列中的EAB功能结构的扩充。ESB中的乘积项结构适合用于组合逻辑的实现,这种逻辑结构形式过去只存在CPLD中(如Lattice的ispLSI系列或Altera的MAX系列)。含有ESB结构的器件系列有APEX,Excalibur, Mercury等。
2.3.1 应用普通方法设计正弦信号发生器 简单正弦信号发生器的VHDL描述如例2-6所示。当此电路结构的8位输出端与8位D/A连接后,可扫描出每周期64点的正弦波形,其中CLK输入频率为f0,控制输出正弦波型的频率为f,它与输入频率的关系是:f = f0 /64。
【例2-6】正弦信号发生器的VHDL描述。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DAC IS PORT ( CLK : IN STD_LOGIC; DD : OUT INTEGER RANGE 255 DOWNTO 0 ); END; ARCHITECTURE DACC OF DAC IS
SIGNAL Q : INTEGER RANGE 63 DOWNTO 0 ; SIGNAL D : INTEGER RANGE 255 DOWNTO 0 ; BEGIN PROCESS(CLK) IF (CLK'EVENT AND CLK = '1') THEN Q <= Q + 1; END IF; END PROCESS; PROCESS(Q)
BEGIN CASE Q IS WHEN 00=> D<=255; WHEN 01=> D<=254; WHEN 02=> D<=252; WHEN 03=> D<=249; WHEN 04=> D<=245; WHEN 05=> D<=239; WHEN 06=> D<=233; WHEN 07=> D<=225; WHEN 08=> D<=217; WHEN 09=> D<=207; WHEN 10=> D<=197; WHEN 11=> D<=186; WHEN 12=> D<=174; WHEN 13=> D<=162; WHEN 14=> D<=150; WHEN 15=> D<=137; WHEN 16=> D<=124; WHEN 17=> D<=112; WHEN 18=> D<= 99; WHEN 19=> D<= 87; WHEN 20=> D<= 75; WHEN 21=> D<= 64; WHEN 22=> D<= 53; WHEN 23=> D<= 43;
WHEN 24=> D<= 34; WHEN 25=> D<= 26; WHEN 26=> D<= 19; WHEN 27=> D<= 13;
WHEN 48=> D<=137; WHEN 49=> D<=150; WHEN 50=> D<=162; WHEN 51=> D<=174; WHEN OTHERS => NULL ; END CASE; END PROCESS; DD <= D ; END;
实现步骤如下: 1. 编译源文件 首先,在D:\SIN-WV1路径下,将例2-6的DAC.vhd设置成工程,并选目标器件为“EP20K200EQC240-3”,启动“Processing”?“Start Compilation”,开始编译。编译结束后,可以通过右栏的“Compilation Report”了解对工程DAC的设计结果(可以在Processing菜单中找到编译报告项)。
2. 了解硬件资源利用情况 首先点击“Compilation Report”栏的“Summary”,则将显示此项设计的硬件资源利用情况。 由图2-32可见,DAC设计耗用的逻辑宏单元(Logic elements)数是49,没有使用片内RAM(memory bits)。
3. 观察Floorplan 然后点击此报告栏的“Floorplan View”,以了解DAC电路在目标芯片中的资源占用情况。如图2-33所示,DAC主要占用了一些小方块,每一小方块是一个逻辑宏单元LC,而在最右侧的小长方块(ESB单元)没有被占用,表明此项设计占用的硬件资源全部是LCs。图2-32的编译统计数据可以与应用了ESB后的设计结果比较。
图2-32 编译后的资源利用情况
图2-33 floorplan中的逻辑宏单元的应用情况
2.3.2 应用ESB优化正弦信号发生器的设计 考虑到例2-6中的Case语句中的64个数据的设置和电路功能等同于一个译码器,6位二进制计数器的计数值作为此译码器的输入,而64个8位二进制正弦函数常数点作为译码的输出,所以这是一个纯组合电路。可以利用APEX器件内的ESB中的乘积项逻辑资源来实现此译码器的功能。实现步骤如下: 1. 打开“Assignment Organizer”对话框 选中工程管理主窗口左上角的Compilation Hierarchies栏中的“dac”工程名,点击鼠标右键,即弹出一菜单,选择其中的“Assignment Organizer”项即可(如图2-34所示)。
图2-34 选择“Assignment Organizer”项
2. 打开“Assignment”对话框 点击“Assignment Organizer”菜单项后出现一个对话框(见图2-35),点击框中“Assignments Categories”栏下的“Option for Entities”左侧的“+”号,并点击出现的子句“Click here to add a new assignment”,于是便出现一个“Assignment”对话框。 3. 选择“Product Term”乘积项 在Name栏中选择“Technology...”(如图2-35),然后再在Setting栏选择“Product Term” (乘积项),点击“Add”按钮后即出现图2-36所示的界面。这表明在对DAC编译中将使用目标器件中的乘积项硬件资源。
图2-35 选择APEX布局/布线器
图2-36 选择乘积项逻辑资源
4. 选择目标器件布局/布线器并开始编译 选择APEX布局/布线器,点击“OK”,关闭此窗口后进行编译(选“Start Compilation”)。 5. 了解优化结果 设计结束后可通过Compilation Report栏了解设计结果。首先观察其floorplan图。由图2-37可见,此项的DAC工程设计使用了约32个ESB单元,6个LC单元,比普通的设计方法节省了43个LC单元。而从图2-37的资源利用情况可以看出,
DAC中的纯组合电路的译码器功能全部使用了ESB中的乘积项资源来实现,而6位计数器恰好用了6个LC单元来实现。图2-38的Summary也证实了这一点。因为图2-38中有关RAM的占用单元为0,显然,图2-37中的ESB单元的使用,仅限于乘积项的应用,其中的RAM是空的,仍然能被利用。
图2-37 在floorplan中可以看到使用了32个ESB
图2-38 编译报告
2.4 嵌入式系统块ESB应用II 由于ESB中有丰富,且多类型的逻辑资源,因而可以根据设计项目的电路特性的有效地使用ESB中的资源。图2-39是例2-6综合后的RTL电路图,由图可见,其构成译码器的组合电路部分等同于一个ROM,因此可利用目标芯片中的可配置RAM形成的ROM来实现其功能。
图2-39 例2-6综合后的RTL电路图
2.4.1 定制ROM数据文件 定制ROM数据文件的具体步骤如下: 1. 选择ROM数据文件编辑窗 在File菜单中选择“New”,并在New窗口中选择“Other files”项,再选“Memory Initialization File”(见图2-40),点击“OK”后产生如图2-41所示的ROM数据文件大小选择窗。
图2-40 mif ROM文件编辑窗
图2-41 ROM大小选择窗口
2. 选择ROM大小 这里根据例2-6中64点8位数据常数的情况,可选ROM的数据数Number为64,数据宽为8位。点击“OK”,将出现如图2-42的ROM数据表格,表格中的数据为十进制表达方式,任一数据(如第三行的99)对应的地址为该数左列与顶行的数之和(如16+2=18。十六进制为12H,即00010010)。
图2-42 mif文件表中的波形数据
3. 输入ROM数据 根据例2-6将数据填入mif表后在File菜单中点击“Save as”,并在出现的图2-43中,在原来DAC工程所在的文件夹D: \ SIN_WV1中键入ROM数据和 * . mif 的文件名(如dac . mif),并保存待用。
图2-43 将编辑好的mif文件存盘
2.4.2 定制ROM 利用MegaWizard Plug-In Manager定制ROM宏功能块的步骤如下: 1. 设置MegaWizard Plug-In Manager初始对话框 利用Tools菜单中的“MegaWizard Plug-In Manager”,产生如图2-44所示的对话框,在左栏选择“storage”项下的LPM_ROM,再选“VHDL”语言方式,最后键入ROM文件存放的路径和文件名“D: \SIN_WV1 \DATA.vhd”,再点击“OK”。
图2-44 定制ROM宏功能块
2. 选择ROM地址与数据线 在图2-45所示的对话框中选择地址线与数据线,位宽分别为6和8。 3. 确定ROM中调用的数据文件dac . mif 在图2-46所示的对话框中键入ROM中调用的数据文件dac.mif,此文件已在前面编辑完成。 4. 在源文件DAC.vhd中例化ROM宏模块 最后修改源文件DAC.vhd。例2-7是调用了ROM模块的源文件DATA.vhd,是由例2-6修改后的文件。注意文件中的信号T的作用。
图2-45 选择ROM的数据线和地址线的宽度
图2-46 调用ROM中的数据文件
【例2-7】由【例2-6】修改后的文件。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DAC IS PORT ( CLK : IN STD_LOGIC; DD : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END; ARCHITECTURE DACC OF DAC IS
SIGNAL Q1 : STD_LOGIC_VECTOR(5 DOWNTO 0) ; SIGNAL T : STD_LOGIC_VECTOR(5 DOWNTO 0) ; COMPONENT DATA PORT( address: IN STD_LOGIC_VECTOR (5 DOWNTO 0); q: OUT STD_LOGIC_VECTOR (7 DOWNTO 0));
END COMPONENT; BEGIN PROCESS(CLK) IF (CLK'EVENT AND CLK = '1') THEN Q1 <= Q1 + 1; END IF; T <= Q1; END PROCESS; u1 : DATA PORT MAP(address => T , q => DD); END;
2.4.3 编译和结果观察 注意:由于现在的设计是由上次的工程修改而来的,因此,编译前应删去原来应用乘积项的设置。方法是再次进入如图2-36所示的对话框后,点击“Delete”,消去设置,再点击“OK”后关闭此窗。 最后进行编译(使用Start Compilation),并观察编译后的结果。 图2-47所示的Summary表明共使用了6个LC(与上次一样)和512个内部RAM单元。显然,这些单元是用来形成ROM数据表的。
图2-47 编译后的资源应用统计
图2-48的“Compilation Hierarchies”栏进一步说明了此6个LC的使用情况,即不仅使用了LC中的LUT单元(RAM查表表格),也使用了其中每一个触发器,这显然是用来构建6位二进制计数器的。 图2-49是此项设计的floorplan图,图中明确显示共使用了8个ESB和6个LC及他们的使用情况。 图2-50是DAC工程的仿真结果。每一个时钟后向外输出一个波形数据。
图2-48 工程管理窗
图2-49 floorplan图
图2-50 正弦信号发生器仿真波形
2.5 时序驱动式优化编译方法 时序驱动方式的优化方法是FPGA的另一种优化设计方法,主要是在编译前对需要优化的时钟设置一个目标频率值,通过设定必要的设置后,QutartusII适配器在编译过程中将设法使硬件性能逼近所需的工作速度。
2.5.1 需求频率值设置 这里首先用普通方法设计一个16阶滤波器,以便获得优化设计的参照结果。滤波器的原程序是例5-1、例5-2、例5-3和例5-4,其中例5-4是滤波器顶层设计。 首先将此4个文件放置于一专用的目录中,并设顶层文件为工程,其路径为:D:\filter1\largefilter,并设目标器件为EP20K200EQC240-3。编译后可在编译报告的“Timing Analyses”项下的“fmax”处看到此项系统“clock”的最高频率为47 MHz (见图2-51)。
图2-51 时序报告:时钟最高频率
接着进行时序驱动设置,具体步骤如下: (1) 在菜单Assignments中选Setting?Timing Settings项下的“Clock”(图2-52)。 (2) 在图2-52所示的对话框中的“Specify circuit frequency as”下选择“Settings for individual clock signals”,表示针对某一时钟进行优化。然后点击“New”键。 (3) 此时将弹出一“New Clock Settings”对话框(图2-52),在此框的“Clock settings”栏中填入New Clock Settings的名称,这里填的名称是“OPT”。
图2-52 时钟驱动频率设置
(4) 如果只对某一时钟信号进行设置,可在“Relationship to other clock settings”下选择“Independent of other clock settings”,表示仅此时钟进行优化。 (5) 在“Required fmax”栏填入所希望的频率值和单位。这里填了51 MHz,占空比Duty Cycle是50%。 (6) 如果还要把器件进入和输出端口引起的外部时延也计算在fmax的计算中,则应选中“Include external delays and from device pins in fmax calculations”项。点击“OK”,关闭此窗,然后关闭“Settings”窗口。
2.5.2 优化时钟时序设置 以上的步骤设置明确了对时钟信号进行优化的方式,这里将指定此项滤波器项目中具体优化的时钟信号名。步骤如下: (1) 在菜单Assignments中选“Assignment Organizer”项,其对话框如图2-53所示。 (2) 选择“By Node”页面,再在“Mode”下选“Edit specific entity & node settings for”项,最后在“Name”栏键入时钟信号名。如果需要选择进行优化的时钟信号名,也可以点击“Name”栏右旁的“...”按钮,可在弹出的“Node Finder”对话框中选择需要的时钟信号名“|largefilter|clock”。
(3) 在“Assignment Categories”栏下点击“Timing”项旁的“+”号,再点击出现在下方的“Click here to add a new assignment”,即出现如图2-53的界面,于是可在“Name”栏中选择“Clock Settings”选项。 (4) 在“Setting”栏确定上次已经设定的“New Clock Settings”名“OPT”。在“Stored in assignments for”下选“This instance only”。最后点击“Add”,再点击“OK”关闭此窗。
图2-53 设置优化对象
2.5.3 编译 编译后可获得如图2-54的fmax最高时钟频率表,此时的clock的fmax为50 MHz。 图2-54 时钟驱动频率设置
2.6 频率计结构原理 本节简述2.1节给出的频率计的工作原理和电路结构。 2.6 频率计结构原理 本节简述2.1节给出的频率计的工作原理和电路结构。 图2-55和图2-56分别是Synplify对频率计例2-1、例2-2、例2-3和例2-4综合的RTL级电路原理图,前者是“Flattened view”图,后者是“Hierarchical view”图。从图中的结构可以看出,此频率计的3个模块cnt1.vhd、testctl.vhd和reg1.vhd在顶层设计freqtest.vhd的连接下的整体结构图。从此结构图上能比较容易地看出其测频原理。
图2-55 Synplify的“Flattened view”RTL电路原理图
图2-56 Synplify的“Hierarchical view”RTL电路原理图
根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号TSTEN;1秒计数结束后计数值锁入锁存器的锁存信号LOAD和为下一测频计数周期作准备的计数器清0信号CLR_CNT。 这3个信号可以由一个测频控制信号发生器产生,即testctl.vhd(其时序如图2-57所示)。它的设计要求是:
TESTCTL的计数使能信号TSTEN 能产生一个1秒脉宽的周期信号,并对频率计中的32位计数器CNT1的CLK_EN计数使能端进行同步控制。当TSTEN为高电平时允许计数;为低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进锁存器REG1中,并由外部的7段译码器译出,显示计数值。
设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存信号之后,必须有一清零信号CLR_CNT对计数器进行清零,为下1秒钟的计数操作作准备。其工作时序波形如图2-57。
图2-57 频率计测频控制器TESTCTL测控时序图
2.7 Quartus II优化特性 Quartus II 2.1和后续版本的Quaruts II软件支持的VHDL库和以前版本的Quaruts II或MAX+ PLUS II软件有所不同,现在的都遵循VHDL标准。 在2.1和后续版本中,用户可以在Quaruts II软件中从VHDL代码调用标准IEEE和厂商的VHDL库及程序包。支持的库和封装的详细列表,可参阅Quaruts II帮助中的“Using Quaruts II Packages”主题。
IEEE库包括标准包std_logic_1164、numeric_std和numeric_bit。STD库是VHDL语言标准的一部分,包括standard包(默认包括在每个工程中)和Textio。为了兼容旧版本,Quaruts II软件也支持厂商专用的包和库,包括: ● Synopsys包,如IEEE库中的std_logic_arith和std_logic_unsigned; ● Mentor Graphics包,如ARITHMETIC库中的std_logic_arith; ● Altera包,如ALTERA库中的maxplus2、altera_mf_components 和Ipm_components。
在以前版本的Quaruts II软件中,用户在General Settings对话框的VHDL Input标签(Project菜单)中声明预编译的库。为了在2.1和后续版本中调用一个用户定义的VHDL包,可以用LIBRARY和USE命令指明库和包的名称。用户可以给自己的库起任何名称,包括work。因此用2.1和后续版本来编译在使用预编译用户定义库的早期版本Altera软件中所创建的项目时,不必修改代码,只需在General Settings 对话框(Project菜单)的Add Files标签把输入的VHDL包添加到用户的Quaruts II项目中即可。程序包必需列在其它使用这个包的文件之前,因为Quaruts II编译器必须先对它们进行分析。
Quaruts II软件还提供了多种逻辑选项来控制综合。可参考Quaruts II的帮助中有关如何使用逻辑选项和哪些选项可供使用的信息。 可以用以下的逻辑选项改变编译器综合和优化设计的方式: (1) 优化技术(Optimization Technique)。该选项制定逻辑优化的整体目标(也就是在编译过程中是否尝试实现最大的速度性能或最小的面积使用量)。默认设置依目标器件系列的不同而不同,通常优化得到最佳的面积/速度折衷。
(2) 保留层次边界(Preserve Hierarchical Boundary)。该选项将确定在逻辑综合期间应该如何维持设计实体之间的层次边界。 (3) 上电任意电平(Power-UP Don't Care)。该选项将寄存器上电为一个“任意”的逻辑电平(X),或最适合于设计的逻辑电平。用户可以用这个选项使编译器改变寄存器的上电电平把设计的面积减到最小。 (4) 删除重复逻辑或删除重复寄存器(Remove Duplicate Logic or Remove Duplicate Registers)。如果打开两者之一,在设计中有相同的逻辑或寄存器,编译器就会删除它们,
使得面积利用率最好。如果两个功能产生相同的逻辑或寄存器,编译器就会删除第二个,第一个会扇出到第二个的目标逻辑上。 另外,传统的FPGA工具设计流程是首先输入约束,再综合设计,然后进行布局布线。Quaruts II软件引入了新的特性,它允许更有效地收敛时限,包括网表优化、时限收敛布局图和更强大的用户设置选项。Quaruts II时限收敛流程也提供了更多对综合和布局布线过程的控制,可以利用装配信息进行更有效的综合。
Quaruts II软件还含按钮式网表优化选项,在综合完成之后和布局布线之前可以进一步优化设计(设计平均增加10%)。无论使用什么综合工具,都能够用这个选项。Quaruts II提供三个网表优化选项,可以对这些选项进行不同的组合以达到最佳的结果。 WYSIWYG原型重综合选项也是一个重要的优化设计选项,该选项能把第三方原核网表的逻辑宏单元(LE)原型映射到门级,然后把门映射回Altera专用的原型。在重映射过程中,这个功能采用不同的结构意识技术,大大改善了设计性能。
门级寄存器重定时选项的优化功能是,能够在组合逻辑中移动寄存器平滑时限,允许Quaruts II软件权衡关键路径和非关键路径之间的延迟。 布局布线后,布局信息和布线延迟信息会准确地判断逻辑复制是否能够增加设计的性能。 此外,Quaruts II还引入了时限收敛布局图,帮助设计者交互地分析设计和分配,将新的布局图和传统的Quaruts II时限分析功能相结合,为设计分析提供了强有力的方法。表2-1中归纳了一些2.1版本后的Quartus II的重要功能。
表2-1 Quaruts II的重要功能 设计流程 特 性 设计 ① 能够在New Project向导中指定器件和EDA工具设置 特 性 设计 ① 能够在New Project向导中指定器件和EDA工具设置 ② 支持APEX II,APEX20K,APEX20KE,APEX20KC和MAX7000器件系列的迁移 ③ HardCopy器件的Design Assistant设计规则检查设计,确保它们能够很容易地移植到 低成本大批量的Hard Copy器件上 ④ 能够为新的Tcl工具栏指定工具命令语言(Tcl)脚本
嵌入软件 设计 ① SOPC Builder系统开发工具集成到Quaruts II用户接口中,支持Excalibur器件 ② DSP Builder系统开发工具集成到Quaruts II用户接口中,支持Stratix及Cyclone系列 ③ Altera为SOPC开发用户提供Red Hat GNUProC/C++开发工具 LogicLock 模块设计 流程 ① 有新的保留节点功能,该区域只接纳分配在这个区域的节点;这些节点可以用来保留 器件的面积 ② 支持虚拟I/O管脚,允许用户指定哪些LogicLock区域I/O管脚作为顶层设计的内部 节点 ③ 区域支持允许节点放置在LogicLock区域之外以满足时限要求 ④ Project Navigator内含资源实体使用率的信息
设计流程 特 性 布局 布线 新的时限收敛流程提高了设计者的工作效率;新的特性包括时限收敛布局图编辑器,能够进行基于路径的指定、网表优化和增量方式模块化布局 ① 初始布局配置选项可以将性能改善5% ② Stratix器件具有结果质量增强功能
验证 ① 可引入SignalTap II嵌入逻辑分析仪 ② 引入Excalibur仿真器(ESS),仿真ARM嵌入处理器 ③ 较好的APEX20K、APEX II和Excalibur器件系列的Signal ProbeTM布线成功率 ④ Power GaugeTM支持APEX II和Excalibur嵌入处理器,升级支持Mercury器件系列 ⑤ 支持APEX20KE、APEX20KC和APEX II的Verplex Conformal LEC软件形式验证 流程 ⑥ 支持Atrenta Spyglass和Synopsys EDA设计规则检查工具 OS支持 支持Windows XP