第2章QuartusII开发环境的使用.ppt_第1页
第2章QuartusII开发环境的使用.ppt_第2页
第2章QuartusII开发环境的使用.ppt_第3页
第2章QuartusII开发环境的使用.ppt_第4页
第2章QuartusII开发环境的使用.ppt_第5页
已阅读5页,还剩120页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章SOPC开发流程及QuartusII的使用 2 1SOPC开发流程和开发工具 SOPC设计包括硬件和软件两部分 硬件设计 主要基于QuartusII和SOPCBuilder 软件设计 基于NiosIIIDE SOPC开发流程简图 分析系统需求 NiosII内核 标准外设 定制指令 定 制外设逻辑 硬件抽象层 HAL 外设 驱动程序 用户C C 应 用程序代码 和定制的库 自定义的 功能模块 建立QuartusII工程 建立顶层图 bdf 打开SOPCBuilder 定义和生成系统 集成SOPC生 成的系统到 QuartusII工程 使用NiosII IDE开发软件 Altera的 LPM模块 连接各 功能模块 选择FPGA型号 并进行管脚分配 进行编译 选项设置 编译硬件系统 生成配置文件sof 编译软件 生成可执 行文件elf 在目标板上 下载可执行 软件到 NiosII系统 下载配置文件到 FPGA器件 在目标板上运 行 调试软件 调试好的 硬件和软件 在IDE中使用 ISS运行 调试 软件 设置软件运行 硬件环境属性 使用IDE编程工具 烧写配置文件和 软件代码 在进行SOPC开发之前 首先必须确定系统的需求 如应用系统需求的计算性能 需要的带宽和吞吐量 需求的接口类型以及是否需求多线程的软件等 每个开发过程开始时都应建立一个工程 QuartusII是以工程的方式对设计过程进行管理 在工程中建立顶层模块文件 bdf相当于传统电路设计中的电路板 PCB 在SOPCBuilder中添加需要的功能模块 NiosII及其标准外设模块 完成后生成一个系统模块 如果需要 用户可以定制指令和外设逻辑 可参考第8章 SOPC开发流程简图 分析系统需求 NiosII内核 标准外设 定制指令 定 制外设逻辑 硬件抽象层 HAL 外设 驱动程序 用户C C 应 用程序代码 和定制的库 自定义的 功能模块 建立QuartusII工程 建立顶层图 bdf 集成SOPC生 成的系统到 QuartusII工程 使用NiosII IDE开发软件 Altera的 LPM模块 连接各 功能模块 选择FPGA型号 并进行管脚分配 进行编译 选项设置 编译硬件系统 生成配置文件sof 编译软件 生成可执 行文件elf 在目标板上 下载可执行 软件到 NiosII系统 下载配置文件到 FPGA器件 在目标板上运 行 调试软件 调试好的 硬件和软件 在IDE中使用 ISS运行 调试 软件 设置软件运行 硬件环境属性 在QuartusII软件中包含了大量的Altera公司提供的LPM功能模块 相当与传统设计中除处理器以外的逻辑芯片 如74系列 当设计中现有模块不能满足设计要求时 可设计自己的功能模块 并在顶层模块中使用 打开SOPCBuilder 定义和生成系统 在顶层模块中 分别将SOPCBuilder生成的系统模块 LPM功能模块以及用户自定义功能模块添加到顶层模块中 然后将各个功能模块用连线连起来组成系统功能原理图 这个两过程类似传统电路设计中 将所有要使用的芯片焊接到电路板上 然后通过PCB上的连线将各个芯片连接起来 组成电路系统 使用IDE编程工具 烧写配置文件和 软件代码 SOPC开发流程简图 分析系统需求 NiosII内核 标准外设 定制指令 定 制外设逻辑 硬件抽象层 HAL 外设 驱动程序 用户C C 应 用程序代码 和定制的库 自定义的 功能模块 建立QuartusII工程 建立顶层图 bdf 集成SOPC生 成的系统到 QuartusII工程 使用NiosII IDE开发软件 Altera的 LPM模块 连接各 功能模块 选择FPGA型号 并进行管脚分配 进行编译 选项设置 编译硬件系统 生成配置文件sof 编译软件 生成可执 行文件elf 在目标板上 下载可执行 软件到 NiosII系统 下载配置文件到 FPGA器件 在目标板上运 行 调试软件 调试好的 硬件和软件 在IDE中使用 ISS运行 调试 软件 设置软件运行 硬件环境属性 打开SOPCBuilder 定义和生成系统 为系统功能原理图选择芯片载体并为各个输入输出信号分配芯片的管脚 设置编译选项 从而让编译器按照用户设定来进行编译 编译系统生成硬件系统的配置文件 sof和 pof 编译系统是一个非常复杂的过程 包括优化逻辑的组合 综合逻辑 适配FPGA 布线以及时序分析等步骤 使用IDE编程工具 烧写配置文件和 软件代码 SOPC开发流程简图 分析系统需求 NiosII内核 标准外设 定制指令 定 制外设逻辑 硬件抽象层 HAL 外设 驱动程序 用户C C 应 用程序代码 和定制的库 自定义的 功能模块 建立QuartusII工程 建立顶层图 bdf 集成SOPC生 成的系统到 QuartusII工程 使用NiosII IDE开发软件 Altera的 LPM模块 连接各 功能模块 选择FPGA型号 并进行管脚分配 进行编译 选项设置 编译硬件系统 生成配置文件sof 编译软件 生成可执 行文件elf 在目标板上 下载可执行 软件到 NiosII系统 下载配置文件到 FPGA器件 在目标板上运 行 调试软件 调试好的 硬件和软件 在IDE中使用 ISS运行 调试 软件 设置软件运行 硬件环境属性 打开SOPCBuilder 定义和生成系统 软件开发也可以在SOPCBuilder生成系统模块后立即进行 与传统软件开发类似 唯一不同在于系统是自己定制的 所受局限小 使用IDE编程工具 烧写配置文件和 软件代码 SOPC开发流程简图 分析系统需求 NiosII内核 标准外设 定制指令 定 制外设逻辑 硬件抽象层 HAL 外设 驱动程序 用户C C 应 用程序代码 和定制的库 自定义的 功能模块 建立QuartusII工程 建立顶层图 bdf 集成SOPC生 成的系统到 QuartusII工程 使用NiosII IDE开发软件 Altera的 LPM模块 连接各 功能模块 选择FPGA型号 并进行管脚分配 进行编译 选项设置 编译硬件系统 生成配置文件sof 编译软件 生成可执 行文件elf 在目标板上 下载可执行 软件到 NiosII系统 下载配置文件到 FPGA器件 在目标板上运 行 调试软件 调试好的 硬件和软件 在IDE中使用 ISS运行 调试 软件 设置软件运行 硬件环境属性 打开SOPCBuilder 定义和生成系统 设置好软件运行的硬件环境属性后 便可进行编译 链接和调试 运行程序 对用户程序进行编译 生成可执行文件 elf 接下来在IDE的指令集仿真器 ISS 上仿真软件和运行 调试软件 将配置文件 sof下载到FPGA 将可执行文件 elf下载到RAM 在目标板上反复调试软件 直到硬件和软件设计都达到设计要求 最后利用IDE的编程工具将配置文件烧写到FPGA的配置芯片或Flash 将可执行文件 elf编程到Flash中 使用IDE编程工具 烧写配置文件和 软件代码 2 1SOPC开发流程和开发工具 硬件开发 硬件开发使用QuartusII和SOPCBuilder 配置NiosII处理器 选择并配置外设 IP 连接各外设模块 分配外设地址和中断 生成系统 SOPCBuilderGUI 自定义命令 IP 模块 处理器库 外设模块库 硬件开发 NiosIIIDE 软件开发 QuartusII GNUTools 用SOPCBuilder软件从NiosII处理器内核和NiosII开发套件提供的外设列表中选取合适的CPU 存储器以及各外围器件 并定制和配置它们的功能 分配外设地址及中断号 设定复位地址 最后生成系统 用户也可以添加用户自身定制指令逻辑到NiosII内核以加速CPU性能 添加用户自己设计的IP模块 2 1SOPC开发流程和开发工具 硬件开发 硬件开发使用QuartusII和SOPCBuilder 配置NiosII处理器 选择并配置外设 IP 连接各外设模块 分配外设地址和中断 生成系统 SOPCBuilderGUI 自定义命令 IP 模块 处理器库 外设模块库 硬件开发 NiosIIIDE 软件开发 QuartusII GNUTools 编译QuartusII工程 对HDL文件进行布局布线 从HDL源文件综合生成一个适合目标器件网表 生成FPGA配置文件 sof HDL源文件测试台 用户逻辑设计其它的IP模块SOPCBuilder的顶层 bdf文件 管脚连接分配 编译 分析与综合 布局布线 时序分析等 验证调试 硬件配置文件 JTAG 串口 以太网 片上调试 软件跟踪 硬件断点SignalTapII AlteraGPGA 用下载电缆 如ByteBlasterII 将配置文件下载到目标板上 硬件校验完成后 可将新的硬件配置文件下载到目标板上的非易失存储器 如EPCS器件 2 1SOPC开发流程和开发工具 软件开发软件开发使用NiosIIIDE 它是一个基于EclipseIDE架构的集成开发环境 它包括 GNU开发工具 标准GCC编译器 连接器 汇编器和makefile工具等 基于GDB的调试器 包括软件仿真和硬件调试 提供用户一个硬件抽象层HAL 提供嵌入式操作系统MicroC OS II和LwTCP IP协议栈的支持 提供帮助用户快速入门的软件模板 提供Flash下载支持 FlashProgrmmer和QuartusIIProgrammer 2 1SOPC开发流程和开发工具 软件开发 配置NiosII处理器 选择并配置外设 IP 连接各外设模块 分配外设地址和中断 生成系统 SOPCBuilderGUI 自定义命令 IP 模块 处理器库 外设模块库 硬件开发 NiosIIIDE 软件开发 QuartusII GNUTools 使用SOPCBuilder生成系统后 可以直接使用NiosIIIDE开始设计C C 应用程序代码 Altera提供外设驱动程序和硬件抽象层 HAL 使用户能够快速编写与低级硬件细节无关的NiosII程序 HDL源文件测试台 用户逻辑设计其它的IP模块SOPCBuilder的顶层 bdf文件 管脚连接分配 编译 分析与综合 布局布线 时序分析等 验证调试 硬件配置文件 JTAG 串口 以太网 片上调试 软件跟踪 硬件断点SignalTapII AlteraGPGA C头文件用户库函数外设驱动 除了应用代码 用户还可以在NiosIIIDE工程中设计和重新使用定制库 用户代码库函数操作系统 RTOS 硬件开发使用QuartusII和SOPCBuilder 2 2SOPC硬件开发实例 第一步是要进行需求分析 根据这个要求来建立硬件系统 电子钟的设计要求 在液晶屏上显示日期 时间 可以设置日期 时间 根据系统要求实现的功能 电子钟的设计要用到的外围器件有 LCD 电子钟显示屏幕 按键 电子钟设置功能键 Flash存储器 存储软 硬件程序 SRAM存储器 程序运行时将其导入SRAM 根据所要用到的外设 要实现的功能以及开发板的配置 在SOPCBuilder中建立系统要添加的模块包括 NiosIICPU 定时器 按键PIO LCD控制器 AVALON三态桥 外部RAM接口 外部Flash接口 2 2SOPC硬件开发实例 使用的开发环境如下 WinXP操作系统NiosII嵌入式处理器QuartusII6 0基于CycloneII的SOPC开发板 2 2 1创建工程 进行完需求分析之后 进行硬件系统的创建 首先必须建立一个QuartusII的工程 步骤如下 1 开始 程序 Altera QuartusII6 1 QuartusII6 1 32bit 启动QuartusII软件 2 选择File菜单 NewProjectWizard 出现Introduction页面 该页面介绍所要完成的具体任务 点击next 2 2 1创建工程 2 2 1创建工程 2 2 1创建工程 3 进行项目名称的设定 工作目录的选择 指定工程存放的目录 工程名和顶层实体名 工程名和顶层实体名要求相同 工程目录可以随意设置 但必须是英文的目录 工程名和顶层实体名也要求是英文名字 我们的工程名和顶层实体名为clock 选择Next 2 2 1创建工程 2 2 1创建工程 4 可以为工程添加先期已经输入的设计文件 指定用户自定义的元件库的路径 这里我们没有事先输入好的文件 也没有自定义的元件库 点击Next进入下一步 2 2 1创建工程 2 2 1创建工程 5 用户指定目标器件 根据开发板的所使用的器件来选择 实际开发中 通过查看核心板的参考手册来获取所使用的器件具体型号 可以使用窗口右边的Filters来加快器件的选择 选择完毕点击Next 2 2 1创建工程 2 2 1创建工程 6 指定在QuartusII之外的用于 设计输入 综合 仿真 时序分析的第三方EDA工具 QuartusII对第三方工具的支持比较完善 这里我们不做选择 直接点击Next 2 2 1创建工程 2 2 1创建工程 所见新工程的信息 确认所创建工程的主要信息 点击Finish完成工程的建立 在开发的过程中 还可以通过菜单assignment Settings来对这些配置进行修改 点击Finish按钮 QuartusII自动会打开这个工程 可以看到顶层实体名出现在工程导航窗口中 2 3创建NiosII系统模块 创建完成工程之后 需要创建顶层实体 创建完顶层设计文件之后 使用SOPCBuilder创建NIOSII嵌入式处理器 添加 配置系统的外设IP 组成NiosII系统模块 NiosII系统模块设计完成之后要加入到该顶层实体中 然后进行其他片上逻辑的开发 2 3 1创建顶层实体 1 新建的工程窗口中 选择File New 2 在DeviceDesignFile页中 选择BlockDiagram SchematicFile 即原理图文件 也可以选择硬件描述语言的文件形式 单击OK 3 出现一个模块编辑窗口 2 3 1创建顶层实体 2 3 1创建顶层实体 4 选择File SaveAs 出现SaveAs对话框 显示的目录为之前设置的工程目录 文件名为之前设置的顶层实体名 由于这是工程的第一个文件 系统会默认为顶层设计实体的名字 确定AddtoCurrentProject选项被选中 点击Save文件被保存并被加入到工程中 2 3 1创建顶层实体 2 3 2创建NiosII系统模块 创建NIOSII系统模块需要使用SOPCBuilder 它是QuartusII中的一个工具 使用SOPCBuilder可以创建一个NiosII系统模块 或者创建多主设备SOPC模块 一个完整NiosII的系统模块包括NiosII处理器和相关的系统外设 所以创建系统模块的流程是先创建一个系统 然后添加NiosIICPU和外设IP 然后进行相应的设置 最后生成实例 然后将其加入到工程的顶层实体中去 2 3 2创建NiosII系统模块 一 创建系统启动SOPCBuilder 选择Tools SOPCBuilder 出现图2 10的CreateNewSystem对话框 键入系统的名字 选择硬件描述语言Verilog或者是VHDL 2 3 2创建NiosII系统模块 2 3 2创建Nios系统模块 二 设置系统主频和指定目标FPGA在Target栏中的Board部分指定我们这本书使用的核心开发板 CycloneII EP2C35 也可以在Board部分选择Unspecified 然后在DeviceFamily选择CycloneII 用户需要设置系统的时钟频率 该频率用于计算硬件和软件开发中的定时 比如时钟分频或波特率 这里我们设成85MHz 还可以选择是否选用流水线 三 加入NiosIICPU和IP模块首先加入NiosII软核 NiosII是软核CPU 共有三种类型的CPU可供选择 NiosII e 经济型 NiosII s 标准型 和NiosII f 快速型 用户可以根据实际的情况进行选择 NiosII是一个用户可以自行进行定制的CPU 用户可以增加新的外设 新的指令等 添加NiosIICPU的步骤如下 1 AvalonComponents下面选择NiosIIProcessor 2 点击Add 出现NiosIICPU的配置向导 共有三种类型的CPU可供选择 根据需要选择相应的一种NiosII核 我们选择标准型的NiosII核 HardwareMultiply选择none 不选择HardwareDivide点击Next 进入Caches TightlyCoupledMemories设置窗口 设置NiosII的Cache和与CPU直接相连的存储器端口 不通过Avalon总线 选择InstructionCache为4Kbytes 不选中Includetightlycoupledinstructionmasterport s 点击Next进入AdvancedFeatures设置页面 AdvancedFeatures的设置页面是QuartusII6 1版本才有的设置 这里不选择Includecpu resetrequestandcpu resettakensignals点击Next进入JTAGDebugModule设置 共有4个调试级别可供选择 这里选择Level1即可 该级别支持软件的断点调试 JTAG调试模块要占用较多的逻辑资源 如果整个系统调试完毕了可以选用NoDebugger以减少系统占用资源点击Next进入自定义指令的设置 因为本例不用到任何的自定义指令 这里不作任何的设置 点击Finish完成CPU模块的添加 除了NiosIICPU 电子钟设计需要添加的IP模块包括 TimerButtonPIOLCD控制器ExternalRAMBusExternalFlashBusExternalRAMinterfaceExternalFlashInterface 1 添加定时器定时器和NiosIICPU一样 用户可以对其进行定制 添加定时器的步骤如下 1 在Avaloncomponents下的other库中选择IntervalTimer并单击Add Avalon Timer timer 0的向导窗口出现 2 配置定时器 点击Finish 完成定时器的添加 3 可以对Timer进行重命名 我们这里取缺省的名字 2 添加ButtonPIO 1 在Avaloncomponents下的other下选择PIO 单击Add 出现AvalonPIO PIO 0的向导 2 在BasicSettings页中 设置width 4bits direction为InputPortsOnly 3 在InputOptions页中 在EdgeCaptureRegister下选中SynchronouslyCapture 然后选择EitherEdge 4 在Interrupt下选中GenerateIRQ 然后选择Edge 5 点击Finish 返回到AlteraSOPCBuilderNIOS2的窗口 6 右键单击ModuleName下的pio 0 从菜单选择rename 重命名为button pio 3 添加LCD控制器 1 在图2 11的窗口中的左侧的Avaloncomponents下的display库中选择CharacterLCD 16 2 Optrex16027 单击Add 2 ModuleName下出现 lcd 16027 0 3 将其重命名lcd display 4 添加外部RAM接口 1 Avaloncomponents下的Memory下面选择CypressCY7C1380CSSRAM 单击Add 出现SSRAM CypressCY7C1380C ext ssram的向导 2 在TimingParameters下面设置ReadLatency为2clocks 在SSRAM下面设置MemorySize为2Mbytes 3 单击Finish 返回到AlteraSOPCBuilderNIOS2的窗口 4 右键单击ModuleName下的ssram 0 从菜单选择rename 重命名为ext ssram 5 添加外部闪存接口 1 在Avaloncomponents下的Memory下面选择FlashMemory CommonFlashInterface 单击Add 出现外部闪存接口向导 2 在Attributes页中 可以在Presets列表中选择相应的闪存的接口 这些闪存的接口都是经过测试的 如果列表中没有 用户可以自己定义闪存的Size和DataWidth 3 在timing页中 可以设置闪存的读写时序要求 可以设置Setup Waite hold时间等参数 通常保留缺省的设置 4 如应用选择的闪存接口不在列表中 需要自己定义Size和DataWidth 和时序要求 5 点击Finish 返回到AlteraSOPCBuilderNIOS2的窗口 ModuleName出现cfi flash 0 对其重命名为ext flash 6 添加外部RAM总线和外部flash总线 Avalon三态总线桥 为了使NiosII系统能与开发板上的外部存储器通信 必须在Avalon总线和外部存储器之间加入Avalon三态桥 步骤如下 1 在Bridge下 选择AvalonTri StateBridge 点击Add 出现AvalonTri StateBridge tri state bridge 0向导 2 Registered选项默认为选中 3 单击Finish 返回到AlteraSOPCBuilderNIOS2的窗口 4 将其重命名为ext ssram bus 5 重复前三个步骤 在添加一个Avalon三态总线桥 并重命名为ext flash bus 7 添加JTAGUART 1 在Avaloncomponents下的Communication下选择JTAGUART 点击ADD 出现添加向导 2 按照缺省设置 点击Finish 3 将其重命名为JTAG UART 7 NiosII系统的连接主要是外部RAM接口要和RAM的三态桥连接 外部的Flash接口要和flash的三态桥连接 所有添加的IP连接都是系统自动完成的 除了上面提到的三态桥和外部存储器的接口的连接之外 其它的连接用户不用修改 但对于三态桥和外部存储器接口的连接 系统的自动连接可能和用户的开发板不匹配 用户需要进行手动的更改 针对我们所用的开发板的情况进行的设置 因为本书用到的开发板外部的SRAM和外部的Flash没有使用共用的数据线和地址线 所以必须为它们分别添加一个三态桥 Altera公司提供了丰富的外设IP可供用户加入到设计当中 如片内ROM communicationUART LEDPIO SevenSegmentPIO 外部DDRSDRAM的接口等等 本设计没有用到上述的外设IP 所以不做讲述 读者可以通过QuartusII的帮助文件 或者通过Altera公司的技术资料来获得相应的信息 2 3 3分配IP模块的地址和中断号 在以上添加IP的过程中 SOPCBuilder为各个IP模块分配了一个默认的基地址 用户可以改变这些默认的分配 如果用户自己分配的地址出现冲突 SOPCBuilder会给出警告 用户可以按照下面的步骤来进行分配和解决地址冲突问题 下面我们给出一种自定义的地址分配实例 将闪存的基地址设定为0 x00000000 步骤如下 1 单击Flash外设的Base栏 将地址改为0 x0 然后回车 这时SOPCBuilder的消息框中出现错误的提示信息 这是因为闪存的地址和其它的外设地址发生了冲突 2 选择Module菜单中的LockBaseAddress操作 一个挂锁的图标出现在闪存基地址的旁边 3 选择System菜单中的AutoAssignBaseAddress操作 来解决外设的地址分配冲突问题 SOPCBuilder调整其它外设的地址来避开与闪存地址的冲突 错误提示的消息就会消失了 4 用户可以手动修改各个外设的中断号 中断号越低 中断优先级越高 用户也可以采用自动分配中断号 选择System菜单中的AutoAssignIRQs 但SOPCBuilder不处理软件操作 采用自动分配中断的策略不一定是最优的 用户最好是根据自己的应用来确定外设的中断优先级 采用手动的分配 2 3 4配置NIOSII系统 系统的IP模块添加完成之后 还需要对系统进行配置 点击NiosIIMore cpu 0 Settings页 用户可以进行如下的设置 ResetAddress 可以选择存放BootLoader的存储器和设置BootLoader在存储器中的偏移 我们这里选择ext flash 偏移选择默认 ExceptionAddress 可以选择存放异常向量表的存放的存储器和设置异常向量表在存储器中的偏移 我们选择ext ssram 偏移选择默认 BreakLocation 如果NIOSII包含有一个JTAGDebug模块 SOPCBuilder会显示这项内容 其MemoryModule总是JTAGDebugModule Offset固定为0 x20 地址由JTAGdebugmodule基地址决定 用户不能修改BreakLocation的各个域的内容 2 3 5生成NIOSII并加入到工程中 NIOSII系统是工程的一部分 我们首先是生成它 然后加入到工程中去 然后将整个工程下载到FPGA芯片中去 单击SystemGeneration 在Option下进行如下的设置 选中HDL 会生成系统模块的硬件语言文件 选中Simulation 如果安装了ModelSim软件 会生成用于仿真的相应的文件 单击Generate SOPCBuilder会提示生成体统的进程 系统生成完成时会提示 SUCCESS SYSTEMGENERATIONCOMPLETED 单击exit退出SOPCBuilder 系统生成完成之后 SOPCBuilder为这个定制的NIOSII系统模块创建了一个符号 要把NiosII系统加入到工程中去 遵循如下的步骤 1 在QuartusII软件中 打开顶层实体 BDF格式 在BDF窗口中任意处双击 出现Symbol对话框 2 在Symbol对话框中单击Project来展开工程目录 其下出现NIOS2 本例采用的系统名 选中它 右侧出现了系统的符号表示 3 单击OK Symbol对话框关闭 NIOS2的符号轮廓被附着在鼠标的指针上 4 BDF窗口中任意空白处单击一下 NIOS2的符号出现在BDF窗口中 这样我们创建的系统已经被加入到工程中了 2 3 6加入引脚和嵌入式锁相环 除了NIOSII系统之外 可能还要有其它的硬件逻辑单元 我们这里加入一个嵌入式锁相环 嵌入式锁相环有两个时钟输出 一个输出SSRAM提供时钟 另一个时钟的输出为NIOSIICPU提供时钟 然后添加输入 输出 双向引脚 以实现和FPGA外部的外设进行通信 加入嵌入式锁相环的步骤如下 1 点击Tools MegaWizardPlug InManager 出现MegaWizardPlug InManager向导Page1窗口 点击next 在MegaWizardPlug InManagerPage2窗口中的IO下面选择ALTPLL 器件选择CycloneII 输出文件类型选择VHDL 文件名为ssram pll 选中Returntothispageforanothercreateoperation 然后点击Next 出现MegaWizardPlug InManager ALTPLL Page3of9 在MegaWizardPlug InManager ALTPLL Page4of10 窗口中 不做任何选择 点击next 在MegaWizardPlug InManager ALTPLL Page5of10 窗口中 单击next 在MegaWizardPlug InManager ALTPLL Page6of10 窗口中 设置c0输出时钟 首先选中Usethisclock选项 设置时钟频率为85MHz 占空比为50 点击Next会进入c1输出时钟的设置 嵌入式PLL可提供3个输出时钟 我们使用其中的两个 MegaWizardPlug InManager ALTPLL Page7of10 窗口中 在c1时钟的设置页面上 选中Usethisclock选项 设置时钟频率为85MHz 点击Next 在MegaWizardPlug InManager ALTPLL Page8of10 窗口中 不选中Usethisclock选项 即我们不使用c2时钟 点击Next 在MegaWizardPlug InManager ALTPLL Page9of10 窗口中 给出了用于仿真必须要产生的文件 点击Next 在MegaWizardPlug InManager ALTPLL Page10of10 窗口中 给出了用户选择要产生的文件 不做改变 采用默认配置 点击Finish完成PLL的生成 在顶层实体的bdf窗口中双击鼠标 出现Symbol添加窗口 在project下面选择刚才建立的ssram pll 点击OK ssram pll的轮廓会附着在鼠标上 点击bdf窗口的空白处 将嵌入式锁相环加入到了工程中 引脚添加的步骤如下 1 在顶层实体的bdf窗口的空白处双击鼠标 出现Symbol添加窗口 在altera quartus libraries下面选择primitives 再在其下选择pin 在其中有三种类型的引脚 有bidir input output 分别为双向 输入和输出引脚 选择相应类型的引脚 点击OK 2 点击bdf窗口的空白处 即将引脚加入到了工程中 3 重复上面的步骤添加为各个端口添加相应类型的引脚 连接引脚和命名引脚第一个加入的引脚的名称缺省为pin name 之后加入的引脚名称依次为pin name1 pin name2向上递增 为了便于理解和记忆 需要对引脚重新命名 使其和其传输的信号联系起来 命名引脚的方法如下 1 双击引脚的 pin namen 部分 pin namen的文字变成高亮 可以对其编辑 2 对其他的引脚重复以上的操作 修改成具有意义的名字 3 对于总线型的引脚 引脚名称之后要标识出总线的位数 如ddr a 12 0 在引脚名称之后加上方括号 然后写上最高位和最低位 用两个 隔开 4 将嵌入式锁相环和系统模块等连接起来 并将引脚连接到相应的端口上 2 4设计优化 设计优化主要包括节省占用FPGA的面积和提高设计系统运行速度两个方面 这里的 面积 是指一个设计所消耗的FPGA的逻辑资源的数量 一般以设计占用的等价逻辑门数来衡量 速度 是指设计的系统在目标芯片上稳定运行时能够达到的最高频率 它与设计的时钟周期 时钟建立时间 时钟保持时间 时钟到输出端口的延迟时间等诸多因素有关 2 1面积与速度的优化 打开我们刚才的工程 clock 然后选择Assignment菜单下的Settings命令 弹出设置窗口 在对话框的左边的Category栏下 列出了很多可设置的对象 包括EDAToolsSettings CompilationProcessSettings Analysis SynthesisSettings FitterSettings TimingSettings SimulationSettings等等 选中要设置的项目 窗口的右边显示供设置的选项和参数 在Analysis SynthesisSettings页面 用于对设计在分析与综合时的优化设置 在该页面的OptimizationTechniques栏中 提供了Speed Balanced和Area3种优化选择 其中Balanced是软件缺省的优化选择 如果对Speed或Area有特殊的要求 则选中相应的选项 2 4 2时序约束与设置 选择Settings下面的TimingAnalysisSettings 然后选择ClassicTimingAnalyzerSettings 在此页面中 可以对设计的延迟约束 时钟频率等做设置 延迟约束 DelayRequirements 设置包括tsu 建立时间 tco 时钟到输出的延迟 tpd 传输延迟 和th 保持时间 的设置 一般来说 用户要根据目标芯片的特性及PCB板走线的实际情况 给出设计需要满足的时钟频率 建立时间 保持时间和传输延迟时间等参数 对一些简单的应用 对时序要求不严格 可以不做设置 2 4 3Fitter设置 在Ssettings对话框中 用鼠标左键单击Category栏目中的FitterSettings项 出现FitterSettings设置页面 此页面用于布局布线器的控制 在这里需要设置的主要是布局布线的策略 FitterEffort 有三种模式可供选择 标准模式 StandardFit 快速模式 FastFit 和自动模式 AutoFit 标准模式需要的时间比较长 但可以实现较高的最高频率 fmax 快速模式可以节省50 的编译时间 但会使最高频率有所降低 自动模式在达到设计要求的条件下 自动平衡最高频率和编译时间 2 5编译 QuartusII编译器由一系列处理模块组成 包括分析与综合 适配 汇编和时序分析等环节 通过QuartusII编译器 可以检查设计错误 综合逻辑 把设计配置到FPGA中去 并且为模拟 时序分析及器件配置生成输出文件 1 分析与综合在编译过程中 首先对设计文件进行分析和检查 如检查原理图的信号线有无漏接 信号有无双重来源 硬件描述语言文件中有无语法错误等 如存在错误 编译器会给出出错信息并标出出错位置 供设计者修改 如果设计文件不存在错误 接着进行综合 综合完成的是设计逻辑到器件资源的映射 2 适配适配完成的是设计逻辑在器件中的布局和布线 选择适当的内部互联路径 引脚分配 逻辑元件分配等操作 可以设置适配的多个选项 来采取不同的优化策略 3 汇编适配完成后 进入编程环节 在编程过程中 生成器件的编程映像文件 映像文件可以通过电缆下载到目标芯片中 4 时序分析在适配完成之后 设计逻辑在器件中的布局和布线 内部互联路径已经确定 在时序分析中 会计算给定设计在器件中延时 完成时序分析和逻辑的性能分析 用户可以预先设置Timingrequirement 可以针对整个的工程 特定的设计实体 节点和引脚指定所需的速度性能 编译过程中会针对设置进行适配 2 5 1编译设置 在编译前 用户可以设置编译器 可以实现对编译过程控制的目的 编译器根据相应的设置进行编译 合理的设置可以提高工程编译的速度 优化器件的资源利用等 单击Assignments菜单中的Settings 出现下图的窗口 在Device中 用户可以设置和器件有关的选项 FPGA的芯片通常在建立项目的时候就以经选择好了 所以通常不做修改 注意在编译之前必须要对未使用的引脚做设置 将未使用的引脚设置成Asinputs tri stated 如果不做此项配置设计可能无法在开发板上运行 设置未使用的引脚按照下面的步骤 1 在Settings对话框中的Device页中 单击DeviceandPinOptions 出现DeviceandPinOptions对话框 缺省是General页 2 单击UnusedPins标签 在Reserveallunusedpins下选择 Asinputs tri stated 3 在Deviceandpinsoptions中 其他的设置可以选用默认的设置 不做修改 点击确定 设计优化也是编译设置的一部分 但是为了强调设计优化的重要性 把它们单独提出来介绍了 除了这些设置之外 还有下面的一些设置根编译的过程有关 在EDATools中 用户可以指定在编译过程中用到的其他第三方的工具软件 通常不用设定 在CompilationProcessSettings中 用户可以设置编译过程的一些选项 如是否使用增量编译等 在TimingAnalyzer中 用户可以设置时序分析报告中显示的内容 在Assembler中 指定汇编的选项 2 4 2引脚分配 用户需要进行引脚分配 使得编译器能把用户设计中的信号分配到目标器件上的特定引脚上 QuartusII提供了两种引脚分配方法 一种是使用AssignmentsEditor来分配 方法为选择Assignments菜单中的pins或者AssignmentsEditor 第二种方法是使用TCL脚本一次性分配所有的引脚 采用第一种方法即

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论