FPGA实验指导书configurationaftererror”,使对FPGA配置失败后能自动重新配置,并加入JTAG用户编码。当鼠标选中相应的项目时,下面的“Description”栏将有相应的说明。Device & Pin Optiong区Dual-Purpose FinsVoltageFin Placenentetion CRve LoadinGenaConfirurationProgramning FilesUnused PinsHock(CLKUSREnabledevice-widereset(DEV_CLRnide output enable [DEV_OE)JEnabledeviceEnableINIT_DONEoutpulAutosercodFFFFFFFFJTAG usercode(32-btdeeimsl-Dkects thedevicee to restart the corliguration processerotiadatluconestasttheccnfigurationprocessifanerroroccursBeseRS取鸿图15选择器件工作方式(3)选择配置器件和编程方式。这里选用EPCS16存储配置数据。在"Configurationscheme”选项,可选择“ActiveSerial”。这种方式只对专用的Flash配置器件(EPCS1,EPCS4和EPCS16等)进行编程。PC机对FPGA的在系统编程通常采用ITAG下载方式。如果应用系统需要脱离PC机工作时,则需要将配置数据存放在FLASH中,通过主动串行模式(ASMode)和被动串行模式(PSMode)进行配置。使用EPCS16存储配置数据,可用ASMode将程序加载至FPGA中。(4)选择输出设置。单击图16中的“ProgrammingFiles”栏,打开“ProgrammingFiles”页,选中“Hexadecimal(Intel-Format)outputFile”,此时在生成下载文件的同时,产生二进制配置文件light.hexOut。此文件用于单片机与EPROM构成的FPGA配置电路系统。区Device & Pin OptionsError Detection CRCCapacitive LoadingDual-Purpose PinsVoltacePinFlacemenProgrammine FilesGeneralConfigurationUnused Pinsdevice.Note:FoConfigurationschemeActiveSerialfce-gurationDeviceConfiguration mode2Configuration devivUseconfigurationdeviceAutoVGenerateconpressedbitstreamsDescription:sonfiguralourinaBeset职消确定图16选择配置器件及编程方式(5)选择目标芯片的闲置引脚的状态。单击图16中的“UnusedPins”栏,出现如图17所示的窗口。对设计中未用到的器件引脚,有三种处理方式:输入引脚(呈高阻态)、输出引脚(呈低电平)或输出引脚(输出不定状态)。通常情况下我们选择第一项,避免未用到的引脚对26
FPGA 实验指导书 26 configuration after error”,使对 FPGA 配置失败后能自动重新配置,并加入 JTAG 用户编码。 当鼠标选中相应的项目时,下面的“Description”栏将有相应的说明。 图 15 选择器件工作方式 (3)选择配置器件和编程方式。这里选用 EPCS16 存储配置数据。在“Configuration scheme” 选项,可选择“Active Serial”。这种方式只对专用的 Flash 配置器件(EPCS1,EPCS4 和 EPCS16 等)进行编程。PC 机对 FPGA 的在系统编程通常采用 JTAG 下载方式。如果应用系统需要脱离 PC 机工作时,则需要将配置数据存放在 FLASH 中,通过主动串行模式(AS Mode)和被动串行模式 (PS Mode)进行配置。使用 EPCS16 存储配置数据,可用 AS Mode 将程序加载至 FPGA 中。 (4)选择输出设置。单击图 16 中的“Programming Files”栏,打开“Programming Files” 页,选中“Hexadecimal(Intel-Format)output File”,此时在生成下载文件的同时,产生二进 制配置文件 light.hexout。此文件用于单片机与 EPROM 构成的 FPGA 配置电路系统。 图 16 选择配置器件及编程方式 (5)选择目标芯片的闲置引脚的状态。单击图 16 中的“Unused Pins”栏,出现如图 17 所示的窗口。对设计中未用到的器件引脚,有三种处理方式:输入引脚(呈高阻态)、输出引脚 (呈低电平)或输出引脚(输出不定状态)。通常情况下我们选择第一项,避免未用到的引脚对
FPGA实验指导书应用系统产生影响。Device & Pin OptionsXError Detection CRC工Capacitive LoadingDual-Purpose PinsVoltagePinPlaceUnused PinsGeneralConfiguration1Programming FilesidooteeserveTeserveothorpinsindividully.usetheAssignmenhEditorAsoutputdrivinggrouneReadpinsAs inputtri-statedthbus-holAsoutprtdrivnganunsoeciied sianaAsoutputdrivino_groundDescriptionsevalluuedpinnthetagetdevicinonefstaeutthaecifiedsiqnalbuwiBeset确定取消图17未使用引脚的处理3.3.5编译QuartusII的编译器由一系列处理模块构成,这些模块完成对设计项目的检错、逻辑综合、结构综合、输出结果的编译配置、时序分析等功能。在这个过程中将设计项目适配到FPGA/CPLD目标器中,同时产生各种输出文件编译报告,包括器件使用统计、编译设置、RTL级电路显示、器件资源利用率、状态机的实现、方程式、延时分析结构、CPU使用资源等。编译器首先从工程设计文件间的层次结构描述中提取信息,包括每个低层文件中的错误信息,供设计者排除。然后将这些层次构建产生一个结构化的以网表文件表达的电路原理图文件,并把各层次中所有的文件结合成一个数据包,以便更有效地处理。在编译前,设计者可以通过各种不同的设置,指导编译器使用各种不同的综合和适配技术,以便提高设计项目的工作速度,优化器件的资源利用率。在编译过程中及编译完成后,可以从编译报告窗口中获得所有相关的详细编译结果,以利于设计者及时调整设计方案。这里我们启动全程编译,可以选择“Processing”菜单下的“StartCompilation”项,也可以单击工具栏上的快捷方式按钮(图18所示)。图18通过工具栏快捷方式进行编译这里说的全程编译,包括以上提到的QuartusII对设计输入的多项处理操作,如检错、数据网表文件提取、逻辑综合、适配、装配文件(仿真文件与编程配置文件)生成,以及基于目标器件的工程时序分析等。下面的“Processing”窗口会显示编译过程中的相关信息,如果发现整告和错误,会以深色标记条显示。整告不影响编译通过,但是错误编译不能通过,必须进行修改。双击“Processing”栏中的错误显示条文,会在弹出的对应的VHDL文件中,光标指示到错误处。在对错误进行修改后,再次进行编译,直至排除所有错误。如果程序输入没有错误,将会出现编译结果报告。在此界面中,左上角的“Project27
FPGA 实验指导书 27 应用系统产生影响。 图 17 未使用引脚的处理 3.3.5 编译 Quartus II 的编译器由一系列处理模块构成,这些模块完成对设计项目的检错、逻辑综合、 结构综合、输出结果的编译配置、时序分析等功能。在这个过程中将设计项目适配到 FPGA/CPLD 目标器中,同时产生各种输出文件编译报告,包括器件使用统计、编译设置、RTL 级电路显示、 器件资源利用率、状态机的实现、方程式、延时分析结构、CPU 使用资源等。编译器首先从工程 设计文件间的层次结构描述中提取信息,包括每个低层文件中的错误信息,供设计者排除。然 后将这些层次构建产生一个结构化的以网表文件表达的电路原理图文件,并把各层次中所有的 文件结合成一个数据包,以便更有效地处理。 在编译前,设计者可以通过各种不同的设置,指导编译器使用各种不同的综合和适配技术, 以便提高设计项目的工作速度,优化器件的资源利用率。在编译过程中及编译完成后,可以从 编译报告窗口中获得所有相关的详细编译结果,以利于设计者及时调整设计方案。 这里我们启动全程编译,可以选择“Processing”菜单下的“Start Compilation”项,也 可以单击工具栏上的快捷方式按钮(图 18 所示)。 图 18 通过工具栏快捷方式进行编译 这里说的全程编译,包括以上提到的 Quartus II 对设计输入的多项处理操作,如检错、数 据网表文件提取、逻辑综合、适配、装配文件(仿真文件与编程配置文件)生成,以及基于目 标器件的工程时序分析等。下面的“Processing”窗口会显示编译过程中的相关信息,如果发 现警告和错误,会以深色标记条显示。警告不影响编译通过,但是错误编译不能通过,必须进 行修改。双击“Processing”栏中的错误显示条文,会在弹出的对应的 VHDL 文件中,光标指示 到错误处。在对错误进行修改后,再次进行编译,直至排除所有错误。 如果程序输入没有错误,将会出现编译结果报告。在此界面中,左上角的“Project
FPGA实验指导书Navigator”窗口,显示了工程的结构和其中结构模块耗用的逻辑宏单元数(共31LCs)。下面的“Status”窗口显示了编译处理流程,包括数据网表建立、逻辑综合、适配、配置文件装配和时序分析。“CompilationReport”栏是编译报告项目选择菜单,单击其中各项,可以详细了解编译与分析结构。例如单击“FlowSummary”项,将在右栏显示硬件耗用统计报告,反映了当前所耗用硬件的相关信息。当前的工程共耗用了58个逻辑宏单元,小于总数的1%,共使用了185个引脚中的24个。如果单击“TimingAnalyzer”项中的“+”号,可以打开各个子项目,查看当前工程所有相关时序特性报告。如果单击“Fitter”项中的“+”号,可以打开各个子项目查看当前工程的所有相关硬件特性适配报告。例如其中的“Pin-OutFile”,可以查看芯片各个引脚的使用情况。图19下方的编译报告中列出了一条警告:“Warning:Foundpinsfunctioningasundefinedclocksand/ormemoryenables”,这条警告可以忽略。需注意的是,对于警告信息,我们应引起足够重视。有的警告实际指示了我们设计中的某些错误,因此不能忽略这些警告。相反,通过这些警告,我们可以发现程序中的问题并加以解决。3.3.6仿真对工程编译通过之后,必须对其功能和时序进行仿真测试,以了解设计结果是否满足原设计要求。(1)打开波形编辑器。选择“File”菜单中的“New”项,在“New”窗口中选择“OtherFiles”中的“VectorWaveformFile”项,打开空白的波形编辑器,如图20所示。yQuartun-D:/light/light-lightOOXort=monSuaELRE6IPC Budet SyS.1BeAHerbBEn9/300KLP1611AEOr(6)FlacDAn0nf2图20打开波形编辑器(2)设置仿真时间区域。将仿真时间设置在一个比较合理的时间区域。选择“Edit”菜单中的“EndTime”项,在弹出的窗口中的“Time”栏处输入“100”,单位选择“ms”,将整个仿真区域的时间设为10ms,单击“OK”按钮,结束设置。(3)在波形编辑器中引入信号节点。首先选择“View”“UtilityWindows”“NodesFound”命令。弹出的对话框如图21所示。28
FPGA 实验指导书 28 Navigator”窗口,显示了工程的结构和其中结构模块耗用的逻辑宏单元数(共 31LCs)。下面的 “Status”窗口显示了编译处理流程,包括数据网表建立、逻辑综合、适配、配置文件装配和 时序分析。“Compilation Report”栏是编译报告项目选择菜单,单击其中各项,可以详细了解 编译与分析结构。例如单击“Flow Summary”项,将在右栏显示硬件耗用统计报告,反映了当 前所耗用硬件的相关信息。当前的工程共耗用了 58 个逻辑宏单元,小于总数的 1%,共使用了 185 个引脚中的 24 个。如果单击“Timing Analyzer”项中的“+”号,可以打开各个子项目, 查看当前工程所有相关时序特性报告。如果单击“Fitter”项中的“+”号,可以打开各个子项 目查看当前工程的所有相关硬件特性适配报告。例如其中的“Pin-Out File”,可以查看芯片各 个引脚的使用情况。 图 19 下方的编译报告中列出了一条警告:“Warning:Found pins functioning as undefined clocks and/or memory enables”,这条警告可以忽略。需注意的是,对于警告信息,我们应引起 足够重视。有的警告实际指示了我们设计中的某些错误,因此不能忽略这些警告。相反,通过这些 警告,我们可以发现程序中的问题并加以解决。 3.3.6 仿真 对工程编译通过之后,必须对其功能和时序进行仿真测试,以了解设计结果是否满足原设 计要求。 (1)打开波形编辑器。选择“File”菜单中的“New”项,在“New”窗口中选择“Other Files” 中的“Vector Waveform File”项,打开空白的波形编辑器,如图 20 所示。 图 20 打开波形编辑器 (2)设置仿真时间区域。将仿真时间设置在一个比较合理的时间区域。选择“Edit”菜单 中的“End Time„”项,在弹出的窗口中的“Time”栏处输入“100”,单位选择“ms”,将整个 仿真区域的时间设为 10ms,单击“OK”按钮,结束设置。 (3)在波形编辑器中引入信号节点。首先选择“View”|“Utility Windows”|“Nodes Found” 命令。弹出的对话框如图 21 所示
FPGA实验指导书Kode PinderNanedFaterFnenFFoundAigrnentsTpdohcInasmonedDkDhtatDgrieigh(7图21准备输入信号节点在“Filter”框中选择“Pins:all”,然后单击“List”按钮,于是在下面的“NodesFound”窗口中出现了工程1ight中的所有端口引脚名,如果此时没有出现端口引脚名,则可以重新编译一下。用鼠标将我们需要仿真观察的信号拖到波形编辑窗口。在这里,把所有的端口引脚名“ckl”、和“light”全部拖入。(4)编辑输入波形。单击选中波形编辑窗口的时钟信号名“clk1”,使之变成蓝色条,再单击左列的时钟设置键,打开如图22所示的窗口,将“clk”的周期设定为0.5ms,“Phase”相位设为默认为零,“Dutycycle”占空比设为默认值50%。设定好时钟信号后,在波形窗口中单击鼠标右键,选择“Zoom”菜单下的“FitinWindow”选项,也可以通过左侧工具栏上的按钮,调整适当的观察比例。(5)设定数据模式。单击信号“1ight”旁边的“+”号,可以打开该信号的各个分量,查看信号的每一位。如果双击“+”号左边的信号标记,可以打开信号格式设置的对话框,如图23所示。clackXNode PropertiesXTimerangGeneralstarttineBFNameOUTPUTLype-9-LevelValun typeBadiBinary一Parioc0.SeBuswidh8nrteeDuyocle[50日确定取消nc图23信号设置窗口图22时钟设置窗口通过“Radix”窗口可以设置信号的格式。我们将信号“light”、设定为二进制“binary”。(6)波形文件存盘。选择“File”菜单下的“Save”命令,或直接单击工具栏上的按钮,将会以默认名为1ight.vwf的波形文件存入文件夹D:Ilight(默认路径)中。(7)仿真器参数设计。选择“Assignment”菜单下的“Settings”项,在“Settings”窗口中左侧“Category”栏中选择“Simulator”项,打开如图24所示的窗口。在“Simulationmode”项目下选择“Timing”即时序仿真,在“Simulationinput”栏中,单击按钮,找到并选择仿真激励文件“light.vwf”。在“Simulationperiod”栏中选择“Runsimulationuntil29
FPGA 实验指导书 29 图 21 准备输入信号节点 在“Filter”框中选择“Pins:all”,然后单击“List”按钮,于是在下面的“Nodes Found” 窗口中出现了工程 light 中的所有端口引脚名,如果此时没有出现端口引脚名,则可以重新编 译一下。用鼠标将我们需要仿真观察的信号拖到波形编辑窗口。在这里,把所有的端口引脚名 “ckl”、和“light”全部拖入。 (4)编辑输入波形。单击选中波形编辑窗口的时钟信号名“clk1”,使之变成蓝色条,再 单击左列的时钟设置键 ,打开如图 22 所示的窗口,将“clk”的周期设定为 0.5ms,“Phase” 相位设为默认为零,“Duty cycle”占空比设为默认值 50%。 设定好时钟信号后,在波形窗口中单击鼠标右键,选择“Zoom”菜单下的“Fit in Window” 选项,也可以通过左侧工具栏上的 按钮,调整适当的观察比例。 (5)设定数据模式。单击信号“light”旁边的“+”号,可以打开该信号的各个分量,查看 信号的每一位。如果双击“+”号左边的信号标记,可以打开信号格式设置的对话框,如图 23 所示。 图 22 时钟设置窗口 图 23 信号设置窗口 通过“Radix”窗口可以设置信号的格式。我们将信号“light”、设定为二进制“binary”。 (6)波形文件存盘。选择“File”菜单下的“Save”命令,或直接单击工具栏上的 按 钮,将会以默认名为 light.vwf 的波形文件存入文件夹 D:\light(默认路径)中。 (7)仿真器参数设计。选择“Assignment”菜单下的“Settings„”项,在“Settings” 窗口中左侧“Category”栏中选择“Simulator”项,打开如图 24 所示的窗口。在“Simulation mode”项目下选择“Timing”即时序仿真,在“Simulation input”栏中,单击 按钮,找到 并选择仿真激励文件“light.vwf”。在“Simulation period”栏中选择“Run simulation until
FPGA实验指导书allvectorstimuliareuse”即全程仿真;确认选中“Simulationcoveragereporting";毛刺检测“Glitchdetection”为lμs;功耗估计,选中“GenerateSignalActivityFile”。(8)启动仿真器。选中“Processsing”菜单下的“StartSiulation”,或者直接单击工具栏上的快捷方式,直到出现“Simulationwassuccessful”对话框。(9)观察仿真结果,如图25所示。仿真波形文件“SimulationReport”通常会自动弹出。注意,QuartusII的波形编辑文件(*。vwf)与波形仿真报告文件(SimulationReport)是分开的,而MaxplusII的激励波形编辑与仿真报告波形文件是合二为一的。如果没有弹出仿真完成后的波形文件,可以通过“Processing”菜单下的“SimulationReport”命令,打开波形报告。如果无法在窗口展开显示时间轴上的所有波形图,可以在仿真报告窗口中单击鼠标右键,选择“Zoom”项下的“Fit inWindow”选项,并通过按钮,调节波形的比例。通过观察我们的仿真结构,达到了我们预定的要求。Settinet-lighSimdation Dutput FiSelectsimuatind4nOKCancel图24仿真器参数设定SiaulationTavefar3175nt:Ponaer84.72msIntevatMasterTimeBa81.55nsStatOpsEndOpA320.0ns480.0ns840,0n5800,0ns960.0ns80.0.00OOOOO000O00O000O0000O0O332055555002920905953035103000ooA-图25仿真结构报告窗口30
FPGA 实验指导书 30 all vector stimuli are use”即全程仿真;确认选中“Simulation coverage reporting”; 毛刺检测“Glitch detection”为 1μ s;功耗估计,选中“Generate Signal Activity File”。 (8)启动仿真器。选中“Processsing”菜单下的“Start Siulation”,或者直接单击工具栏 上的快捷方式 ,直到出现“Simulation was successful”对话框。 (9)观察仿真结果,如图 25 所示。仿真波形文件“Simulation Report”通常会自动弹出。 注意,Quartus II 的波形编辑文件(*。vwf)与波形仿真报告文件(Simulation Report)是分 开的,而 Max plus II 的激励波形编辑与仿真报告波形文件是合二为一的。如果没有弹出仿真 完成后的波形文件,可以通过“Processing”菜单下的“Simulation Report”命令,打开波形 报告。如果无法在窗口展开显示时间轴上的所有波形图,可以在仿真报告窗口中单击鼠标右键, 选择“Zoom”项下的“Fit in Window”选项,并通过 按钮,调节波形的比例。通过观察我 们的仿真结构,达到了我们预定的要求。 图 24 仿真器参数设定 图 25 仿真结构报告窗口