第二章SOPC开发流程及QuartusII的使用ppt课件.ppt_第1页
第二章SOPC开发流程及QuartusII的使用ppt课件.ppt_第2页
第二章SOPC开发流程及QuartusII的使用ppt课件.ppt_第3页
第二章SOPC开发流程及QuartusII的使用ppt课件.ppt_第4页
第二章SOPC开发流程及QuartusII的使用ppt课件.ppt_第5页
已阅读5页,还剩121页未读 继续免费阅读

下载本文档

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

文档简介

第二章SOPC开发流程及QuartusII的使用 2 1SOPC开发流程和开发工具2 2QuartusII操作基础2 3SOPC硬件开发实例2 4创建NiosII系统模块2 5设计优化2 6编译2 7编程下载 SOPC开发流程和开发工具 SOPC设计包括硬件和软件两部分 硬件设计 主要基于QuartusII和SOPCBuilder 软件设计 基于NiosIIIDE SOPC开发流程 分析系统需求 在进行SOPC开发之前 首先必须确定系统的需求 如应用系统需求的计算性能 需要的带宽和吞吐量 需求的接口类型以及是否需求多线程的软件等 建立QuartusII工程 每个开发过程开始时都应建立一个工程 QuartusII是以工程的方式对设计过程进行管理 在工程中建立顶层模块文件 bdf相当于传统电路设计中的电路板 PCB 定义和生成系统 在SOPCBuilder中添加需要的功能模块 NiosII及其标准外设模块 完成后生成一个系统模块 定制指令 定制外设逻辑 如果需要 用户可以定制指令和外设逻辑 可参考第8章 自定义的功能模块 当设计中现有模块不能满足设计要求时 可设计自己的功能模块 并在顶层模块中使用 Altera的LPM模块 在QuartusII软件中包含了大量的Altera公司提供的LPM功能模块 相当于传统设计中除处理器以外的逻辑芯片 如74系列 集成SOPC生成的系统到QuartusII工程 在顶层模块中 分别将SOPCBuilder生成的系统模块 LPM功能模块以及用户自定义功能模块添加到顶层模块中 连接各功能模块 将各个功能模块用连线连起来组成系统功能原理图 选择FPGA型号并进行管脚分配 为系统功能原理图选择芯片载体并为各个输入输出信号分配芯片的管脚 进行编译选项设置 设置编译选项 从而让编译器按照用户设定来进行编译 编译硬件系统生成配置文件sof 编译系统生成硬件系统的配置文件 sof和 pof 编译系统是一个非常复杂的过程 包括优化逻辑的组合 综合逻辑 适配FPGA 布线以及时序分析等步骤 下载配置文件到FPGA器件 将配置文件 sof下载到FPGA 设置软件运行硬件环境属性 设置好软件运行的硬件环境属性后 便可进行编译 链接和调试 运行程序 编译软件 对用户程序进行编译 生成可执行文件 elf ISS运行 调试 接下来在IDE的指令集仿真器 ISS 上仿真软件和运行 调试软件 在目标板上下载可执行软件到NiosII系统 将可执行文件 elf下载到RAM 在目标板上运行 调试软件 在目标板上反复调试软件 使用IDE编程工具烧写配置文件和软件代码 最后利用IDE的编程工具将配置文件烧写到FPGA的配置芯片或Flash 将可执行文件 elf编程到Flash中 QuartusII操作基础 把Quartus 安装光盘放入计算机的光驱中 在自动出现的光盘安装目录中选择安装Quartus 软件和MegacoreIPlibrary两项 安装光盘将自动引导完成软件的安装 软件安装完成之后 在软件中指定Altera公司的授权文件 License dat 才能正常使用 授权文件可以在Altera的网页上http 申请或者购买获得 安装Altera的硬件驱动程序 驱动程序存放在Quartus 安装目录下的 quartus drivers文件夹中 驱动安装后才能将设计结果通过计算机的通信接口编程下载到目标芯片中 Quartus 软件的安装 Quartus 软件的用户界面 启动Quartus 软件后默认的界面主要由标题栏 菜单栏 工具栏 资源管理窗口 编译状态显示窗口 信息显示窗口和工程工作区等部分组成 QuartusII操作基础 Quartus 软件的用户界面 QuartusII操作基础 标题栏中显示当前工程的路径和工程名 Quartus 软件的用户界面 QuartusII操作基础 菜单栏主要由文件 File 编辑 Edit 视图 View 工程 Project 资源分配 Assignments 操作 Processing 工具 Tools 窗口 Window 和帮助 Help 等下拉菜单组成 Quartus 软件的用户界面 QuartusII操作基础 工具栏中包含了常用命令的快捷图标 Quartus 软件的用户界面 QuartusII操作基础 资源管理窗口用于显示当前工程中所有相关的资源文件 Quartus 软件的用户界面 QuartusII操作基础 工程工作区当Quartus 实现不同的功能时 此区域将打开对应的操作窗口 显示不同的内容 进行不同的操作 如器件设置 定时约束设置 编译报告等均显示在此窗口中 Quartus 软件的用户界面 QuartusII操作基础 编译状态显示窗口此窗口主要显示模块综合 布局布线过程及时间 Quartus 软件的用户界面 QuartusII操作基础 信息显示窗口该窗口主要显示模块综合 布局布线过程中的信息 如编译中出现的警告 错误等 同时给出警告和错误的具体原因 Quartus 的开发流程 按照一般编程逻辑设计的步骤 利用Quartus 软件进行开发可以分为以下四个步骤 1 输入设计文件 2 编译设计文件 3 仿真设计文件 4 编程下载设计文件 QuartusII操作基础 输入设计文件 Quartus 软件的输入法有 1 原理图输入方式 2 文本输入方式 如VHDL VerilogHDL 3 AHDL输入方式 4 模块输入方式以及5 第三方EDA工具产生的文件以及混合使用以上几种设计输入方法进行设计原理图输入法原理图输入法也称为图形编辑输入法 用Quartus 原理图输入设计法进行数字系统设计时 不需要任何硬件描述语言的知识 在具有数字逻辑电路基本知识的基础上 利用Quartus 软件提供的EDA平台设计数字电路或系统 QuartusII操作基础 1 原理图输入法 建立设计工程建立设计工程的方法如图示 新建工程选项 新建工程第一页 QuartusII操作基础 1 原理图输入法 建立设计工程建立设计工程的方法图示 新建工程第二页 新建工程第三页 QuartusII操作基础 1 原理图输入法 建立设计工程建立设计工程的方法图示 新建工程第四页 新建工程第五页 QuartusII操作基础 2 原理图输入法 输入设计文件1 新建工程之后 便可以进行电路系统设计文件的输入 选择file菜单中的New命令 弹出如图所示的新建设计文件类型选择窗口 QuartusII操作基础 2 选择New对话框中的DeviceDesignfiles页下的BlockDiagram SchematicFile 点击OK 打开下图所示的图形编辑器对话框 进行设计文件输入 图形编辑器对话框 2 原理图输入法 输入设计文件 QuartusII操作基础 2 原理图输入法 输入设计文件3 在图形编辑窗口中的任何一个位置双击鼠标 或点击图中的 符号工具 按钮 或选择菜单Edit下的InsertSymbol命令 弹出如右图所示的元件选择窗口Symbol对话框 元件选择窗口 QuartusII操作基础 2 原理图输入法 输入设计文件 元件选择窗口 QuartusII操作基础 4 用鼠标点击单元库前面的加号 库中的元件符号以列表的方式显示出来 选择所需要的元件符号 该符号显示在Symbol对话框的右边 点击OK按钮 添加相应元件符号在图像编辑工作区中 连接原理图 2 原理图输入法 输入设计文件十六进制同步计数器的原理图如下 QuartusII操作基础 3 原理图输入法 优缺点 优点 1 可以与传统的数字电路设计法接轨 即使用传统设计方法得到电路原理图 然后在Quartus 平台完成设计电路的输入 仿真验证和综合 最后下载到目标芯片中 2 它将传统的电路设计过程的布局布线 绘制印刷电路板 电路焊接 电路加电测试等过程取消 提高了设计效率 降低了设计成本 减轻了设计者的劳动强度 缺点 1 原理图设计方法没有实现标准化 不同的EDA软件中的图形处理工具对图形的设计规则 存档格式和图形编译方式都不同 因此兼容性差 难以交换和管理 2 由于兼容性不好 性能优秀的电路模块的移植和再利用非常困难 难以实现用户所希望的面积 速度以及不同风格的综合优化3 原理图输入的设计方法不能实现真实意义上的自顶向下的设计方案 无法建立行为模型 从而偏离了电子设计自动化最本质的涵义 QuartusII操作基础 编译设计文件 Quartus 编译器的主要任务是对设计项目进行检查并完成逻辑综合 同时将项目最终设计结果生成器件的下载文件 编译开始前 可以先对工程的参数进行设置 Quartus 软件中的编译类型有全编译和分步编译两种 选择Quartus 主窗口Process菜单下StartCompilation命令 或者在主窗口的工具栏上直接点击图标可以进行全编译全编译的过程包括分析与综合 Analysis Synthesis 适配 Fitter 编程 Assembler 时序分析 ClassicalTimingAnalysis 这4个环节 而这4个环节各自对应相应的菜单命令 可以单独分步执行 也就是分步编译 在设计的调试和优化过程中 可以使用RTL阅读器观察设计电路的综合结果 QuartusII操作基础 分步编译就是使用对应命令分步执行对应的编译环节 每完成一个编译环节 生成一个对应的编译报告 分步编译跟全编译一样分为四步 1 分析与综合 Analysis Synthesis 设计文件进行分析和检查输入文件是否有错误 对应的菜单命令是Quartus 主窗口Process菜单下Start StartAnalysis Synthesis 对应的快捷图标是在主窗口的工具栏上的 2 适配 Fitter 在适配过程中 完成设计逻辑器件中的布局布线 选择适当的内部互连路径 引脚分配 逻辑元件分配等 对应的菜单命令是Quartus 主窗口Process菜单下Start StartFitter 注 两种编译方式引脚分配有所区别 QuartusII操作基础 3 编程 Assembler 产生多种形式的器件编程映像文件 通过软件下载到目标器件当中去 应用的菜单命令是Quartus 主窗口Process菜单下Start StartAssembler 4 时序分析 ClassicalTimingAnalyzer 计算给定设计与器件上的延时 完成设计分析的时序分析和所有逻辑的性能分析 菜单命令是Quartus 主窗口Process菜单下Start StartClassicalTimingAnalyzer 对应的快捷图标是在主窗口的工具栏上的 编译完成以后 编译报告窗口CompilationReport会报告工程文件编译的相关信息 如编译的顶层文件名 目标芯片的信号 引脚的数目等等 全编译操作简单 适合简单的设计 对于复杂的设计 选择分步编译可以及时发现问题 提高设计纠错的效率 从而提高设计效率 QuartusII操作基础 5 RTL阅读器 在设计的调试和优化过程中 可以使用RTL阅读器观察设计电路的综合结果 同时也可以观察源设计如何被翻译成逻辑门 原语等 RTL阅读器是观察和确定源设计是否实现了设计要求的理想工具 执行仿真验证设计功能之前使用RTL阅读器查找设计中的问题 可以在设计早期发现问题 为后期的验证工作节省时间 当设计通过编译后 选择Quartus 主窗口Tools菜单下NetlistViewers RTLViewer命令 弹出RTL阅读器窗口 QuartusII操作基础 5 RTL阅读器RTL阅读器窗口图 QuartusII操作基础 RTL阅读器窗口的右边 是过程设计结果的主窗口 包括设计电路的模块和连线 5 RTL阅读器RTL阅读器窗口图 QuartusII操作基础 RTL阅读器的左边是层次列表 在每个层次上以树状形式列出了设计电路的所有单元 层次列表的内容包括以下几个方面 1 实例Instances 能够被展开成低层次模块或实例 2 原语Primitives 不能被展开为任何低层次模块的低层次节点 3 引脚Pin 当前层次的I O端口 如果端口是总线 也可以将其展开 观察到端口中每一个端口的信号 4 网线Net 是连接节点的连线 当网线是总线时也可以展开 观察每条网线 5 RTL阅读器双击结构图中的实例 可以展开此模块的下一级结构图 QuartusII操作基础 仿真设计文件 仿真的目的就是在软件环境下 验证电路的行为和设想中的是否一致 FPGA CPLD中的仿真分为功能仿真和时序仿真 功能仿真着重考察电路在理想环境下的行为和设计构想的一致性 时序仿真则在电路已经映射到特定的工艺环境后 考察器件在延时情况下对布局布线网表文件进行的一种仿真 仿真一般需要建立波形文件 输入信号节点 编辑输入信号 波形文件的保存和运行仿真器等过程 QuartusII操作基础 1 建立波形文件波形文件用来为设计产生输入激励信号 利用QuartusII波形编辑器可以创建矢量波形文件 vwf 创建一个新的矢量波形文件步骤如下 1 选择Quartus 主界面File菜单下的New命令 弹出新建对话框 QuartusII操作基础 2 在新建话框中选择OtherFiles标签页 从中选择VectorWaveformFile 点击OK按钮 则打开一个空的波形编辑器窗口 1 建立波形文件波形编辑器窗口 主要分为信号栏 工具栏和波形栏 QuartusII操作基础 2 输入信号节点 1 在波形编辑方式下 执行Edit菜单中的InsertNodeorBus命令 或者在波形编辑器左边Name列的空白处点击鼠标右键 弹出的InsertNodeorBus对话框 QuartusII操作基础 2 输入信号节点 2 点击InsertNodeorBus对话框中的NodeFinder 按钮 弹出NodeFinder窗口 在此窗口中添加信号节点 QuartusII操作基础 3 编辑输入信号编辑输入信号是指在波形编辑器中指定输入节点的逻辑电平变化 编辑输入节点的波形 在仿真编辑窗口的工具栏中列出了各种功能选择按钮 主要用于绘制 编辑波形 给输入信号赋值 具体功能如下 在波形文件中添加注释 修改信号的波形值 把选定区域的波形更改成原值的相反值 全屏显示波形文件 放大 缩小波形 在波形文件信号栏中查找信号名 可以快捷找到待观察信号 将某个波形替换为另一个波形 给选定信号赋原值的反值 输入任意固定的值 输入随机值 给选定的信号赋值 X表示不定态 0表示赋0 1表示赋1 Z表示高阻态 W表示弱信号 L表示低电平 H表示高电平 DC表示不赋值 QuartusII操作基础 3 编辑输入信号 设置时钟信号的波形参数 先选中需要赋值的信号 然后鼠标右键点击此图标弹出Clock对话框 在此对话框中可以设置输入时钟信号的起始时间 StartTime 结束时间 EndTime 时钟脉冲周期 Period 相位偏置 Offset 以及占空比 给信号赋计数值 先选中需要赋值的信号 然后鼠标右键点击此图标弹出如下图所示的CountValue对话框 然后赋值 CountValue对话框的Counting页 CountValue对话框的Timing页 QuartusII操作基础 4 仿真波形文件Quartus 软件中默认的是时序仿真 如果进行功能仿真则需要先对仿真进行设置 步骤如下 1 选择Quartus 主窗口Assignments菜单下的Settings 命令 可以进入参数设置页面 如下图所示 然后单击SimulationSettings 在右边的对话框中的Simulationmode中选择 Function QuartusII操作基础 4 仿真波形文件 2 选择Quartus 主窗口Processing菜单下的GenerateFunctionalSimulationNetlist命令 生成功能仿真网表文件 3 选择Quartus 主窗口Processing菜单下的StartSimulation进行功能仿真 功能仿真满足要求后 还要对设计进行时序仿真 时序仿真可以在编译后直接进行 但是要将上图中的Simulationmode中设置为 Timing 设置好以后直接选择StartSimulation命令 执行时序仿真 QuartusII操作基础 编程下载设计文件 对设计进行验证后 即可对目标器件进行编程和配置 下载设计文件到硬件中进行硬件验证 Quartus 编程器Programmer最常用的编程模式是JTAG模式和主动串行编程模式AS JTAG模式主要用在调试阶段 主动串行编程模式用于板级调试无误后将用户程序固化在串行配置芯片EPCS中 QuartusII操作基础 编程下载对话框 1 JTAG编程下载模式 QuartusII操作基础 1 选择Quartus 主窗口的Tools菜单下的Programmer命令或点击图标 进入器件编程和配置对话框 如果此对话框中的HardwareSetup后为 NoHardware 则需要选择编程的硬件 点击HardwareSetup 进入HardwareSetup对话框 在此添加硬件设备 此方式的操作步骤主要分为3步 编程下载对话框 1 JTAG编程下载模式 QuartusII操作基础 2 配置编程硬件后 选择下载模式 在Mode中指定的编程模式为JTAG模式 编程下载对话框 1 JTAG编程下载模式 QuartusII操作基础 3 确定编程模式后 单击添加相应的counter sof编程文件 选中counter sof文件后的Program Configure选项 然后点击图标下载设计文件到器件中 Process进度条中显示编程进度 编程下载完成后就可以进行目标芯片的硬件验证了 AS主动串行编程式的操作步骤如下 1 选择Quartus 主窗口Assignments菜单Device命令 进入Settings对话框的Device页面进行设置 如右图 2 AS主动串行编程模式 QuartusII操作基础 2 AS主动串行编程模式 2 选择Quartus 主窗口的Tools菜单下的Programmer命令或点击图标 进入器件编程和配置对话框 添加硬件 选择编程模式为ActiveSerialProgram 3 单击添加相应的counter pof编程文件 选中文件后的Program Configure Verify和BlankCheck项 单击图标下载设计文件到器件中 Process进度条中显示编程进度 下载完成后程序固化在EPCS中 开发板上电后EPCS将自动完成对目标芯片的配置 无须再从计算机上下载程序 QuartusII操作基础 Quartus 中宏功能模块的调用方法 使用Quartus 软件的MegaWizardPlug InManager中的宏功能模块可以帮助用户调用Quartus 内部已有的IP 知识产权 核来完成一些复杂系统的设计 并可以方便的对调用的IP核的参数进行修改 下面以一个调用lpm counter宏功能模块来实现一个十六进制的加法同步计数器为例 简单介绍宏功能模块的使用 设计开始前新建立一个名为counter16的工程 在工程中新建一个新的bdf文件 选择Quartus 主窗口的Tools菜单下的MegaWizardPlug InManager命令 进入MegaWizardPlug InManager对话框第一页 然后依此进行参数的设定 具体的流程如图所示 QuartusII操作基础 MegaWizardPlug InManager第一页 QuartusII操作基础 MegaWizardPlug InManager第二页 MegaWizardPlug InManager第三页 QuartusII操作基础 MegaWizardPlug InManager第四页 MegaWizardPlug InManager第五页 QuartusII操作基础 MegaWizardPlug InManager第六页 MegaWizardPlug InManager第七页 QuartusII操作基础 SOPC硬件开发实例 例子 设计一个电子钟第一步是要进行需求分析 根据这个要求来建立硬件系统 电子钟的设计要求 在液晶屏上显示日期 时间 可以设置日期 时间 SOPC硬件开发实例 根据系统要求 电子钟的设计要用到的外围器件有 LCD 电子钟显示屏幕 按键 电子钟设置功能键 Flash存储器 存储软 硬件程序 SRAM存储器 程序运行时将其导入SRAM 根据所要用到的外设 要实现的功能以及开发板的配置 在SOPCBuilder中建立系统要添加的模块包括 NiosIICPU 定时器 按键PIO LCD控制器 AVALON三态桥 外部RAM接口 外部Flash接口 使用的开发环境如下 WinXP操作系统NiosII6 0嵌入式处理器QuartusII6 0基于CycloneII的SOPC开发板 SOPC硬件开发实例 创建工程进行完需求分析之后 进行硬件系统的创建 首先必须建立一个QuartusII的工程 步骤如下 1 开始 程序 Altera QuartusII6 1 QuartusII6 1 32bit 启动QuartusII软件 SOPC硬件开发实例 2 选择File菜单 NewProjectWizard 出现Introduction页面 该页面介绍所要完成的具体任务 点击next SOPC硬件开发实例 3 进行项目名称的设定 工作目录的选择 指定工程存放的目录 工程名和顶层实体名 工程名和顶层实体名要求相同 工程目录可以随意设置 但必须是英文的目录 工程名和顶层实体名也要求是英文名字 我们的工程名和顶层实体名为clock 选择Next SOPC硬件开发实例 4 可以为工程添加先期已经输入的设计文件 指定用户自定义的元件库的路径 这里我们没有事先输入好的文件 也没有自定义的元件库 点击Next进入下一步 SOPC硬件开发实例 5 用户指定目标器件 根据开发板的所使用的器件来选择 实际开发中 通过查看核心板的参考手册来获取所使用的器件具体型号 可以使用窗口右边的Filters来加快器件的选择 选择完毕点击Next SOPC硬件开发实例 6 指定在QuartusII之外的用于 设计输入 综合 仿真 时序分析的第三方EDA工具 QuartusII对第三方工具的支持比较完善 这里我们不做选择 直接点击Next SOPC硬件开发实例 所见新工程的信息 确认所创建工程的主要信息 点击Finish完成工程的建立 在开发的过程中 还可以通过菜单assignment Settings来对这些配置进行修改 点击Finish按钮 QuartusII自动会打开这个工程 可以看到顶层实体名出现在工程导航窗口中 SOPC硬件开发实例 创建NiosII系统模块 创建完成工程之后 需要创建顶层实体 创建完顶层设计文件之后 使用SOPCBuilder创建NIOSII嵌入式处理器 添加 配置系统的外设IP 组成NiosII系统模块 NiosII系统模块设计完成之后要加入到该顶层实体中 然后进行其他片上逻辑的开发 一 创建顶层实体 1 新建的工程窗口中 选择 2 在DeviceDesignFile页中 选择BlockDiagram SchematicFile 即原理图文件 也可以选择硬件描述语言的文件形式 单击OK 3 出现一个模块编辑窗口 创建NiosII系统模块 创建NiosII系统模块 4 选择As 出现SaveAs对话框 显示的目录为之前设置的工程目录 文件名为之前设置的顶层实体名 由于这是工程的第一个文件 系统会默认为顶层设计实体的名字 确定AddtoCurrentProject选项被选中 点击Save文件被保存并被加入到工程中 创建NiosII系统模块 二 创建NiosII系统模块创建NIOSII系统模块需要使用SOPCBuilder 它是QuartusII中的一个工具 使用SOPCBuilder可以创建一个NiosII系统模块 或者创建多主设备SOPC模块 一个完整NiosII的系统模块包括NiosII处理器和相关的系统外设 所以创建系统模块的流程是先创建一个系统 然后添加NiosIICPU和外设IP 然后进行相应的设置 最后生成实例 然后将其加入到工程的顶层实体中去 创建NiosII系统模块 一 创建系统启动SOPCBuilder 选择Tools SOPCBuilder 出现下图所示的CreateNewSystem对话框 键入系统的名字 选择硬件描述语言Verilog或者是VHDL 单击OK按钮后 出现SOPCBuider系统模块设计窗口 创建NiosII系统模块 用户需要设置系统的时钟频率 该频率用于计算硬件和软件开发中的定时 比如时钟分频或波特率 这里我们设成85MHz 还可以选择是否选用流水线 二 设置系统主频和指定目标FPGA在Target栏中的Board部分指定我们这本书使用的核心开发板 CycloneII EP2C35 也可以在Board部分选择Unspecified 然后在DeviceFamily选择CycloneII 创建NiosII系统模块 三 加入NiosIICPU和IP模块首先加入NiosII软核 NiosII是软核CPU 共有三种类型的CPU可供选择 NiosII e 经济型 NiosII s 标准型 和NiosII f 快速型 用户可以根据实际的情况进行选择 NiosII是一个用户可以自行进行定制的CPU 用户可以增加新的外设 新的指令等 添加NiosIICPU的步骤如下 1 在上图 SOPCBuider系统模块设计窗口 AvalonComponents下面选择NiosIIProcessor 2 点击Add 出现NiosIICPU的配置向导 共有三种类型的CPU可供选择 创建NiosII系统模块 根据需要选择相应的一种NiosII核 我们选择标准型的NiosII核 HardwareMultiply选择none 不选择HardwareDivide点击Next 进入Caches TightlyCoupledMemories设置窗口 创建NiosII系统模块 设置NiosII的Cache和与CPU直接相连的存储器端口 不通过Avalon总线 选择InstructionCache为4Kbytes 不选中Includetightlycoupledinstructionmasterport s 点击Next进入AdvancedFeatures设置页面 创建NiosII系统模块 AdvancedFeatures的设置页面是QuartusII6 1版本才有的设置 这里不选择Includecpu resetrequestandcpu resettakensignals点击Next进入JTAGDebugModule设置 创建NiosII系统模块 共有4个调试级别可供选择 这里选择Level1即可 该级别支持软件的断点调试 JTAG调试模块要占用较多的逻辑资源 如果整个系统调试完毕了可以选用NoDebugger以减少系统占用资源点击Next进入自定义指令的设置 因为本例不用到任何的自定义指令 这里不作任何的设置 点击Finish完成CPU模块的添加 创建NiosII系统模块 创建NiosII系统模块 除了NiosIICPU 电子钟设计需要添加的IP模块包括 TimerButtonPIOLCD控制器ExternalRAMBusExternalFlashBusExternalRAMinterfaceExternalFlashInterface 创建NiosII系统模块 1 添加定时器定时器和NiosIICPU一样 用户可以对其进行定制 添加定时器的步骤如下 1 在Avaloncomponents下的other库中选择IntervalTimer并单击Add Avalon Timer timer 0的向导窗口出现 2 配置定时器 点击Finish 完成定时器的添加 3 可以对Timer进行重命名 我们这里取缺省的名字 创建NiosII系统模块 2 添加ButtonPIO 1 在Avaloncomponents下的other下选择PIO 单击Add 出现AvalonPIO PIO 0的向导 2 在BasicSettings页中 设置width 4bits direction为InputPortsOnly 创建NiosII系统模块 3 在InputOptions页中 在EdgeCaptureRegister下选中SynchronouslyCapture 然后选择EitherEdge 4 在Interrupt下选中GenerateIRQ 然后选择Edge 5 点击Finish 返回到AlteraSOPCBuilderNIOS2的窗口 6 右键单击ModuleName下的pio 0 从菜单选择rename 重命名为button pio 创建NiosII系统模块 3 添加LCD控制器 1 在 SOPCBuider系统模块设计窗口 的左侧的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 创建NiosII系统模块 3 在timing页中 可以设置闪存的读写时序要求 可以设置Setup Waite hold时间等参数 通常保留缺省的设置 4 如应用选择的闪存接口不在列表中 需要自己定义Size和DataWidth 和时序要求 5 点击Finish 返回到AlteraSOPCBuilderNIOS2的窗口 ModuleName出现cfi flash 0 对其重命名为ext flash 创建NiosII系统模块 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 8 NiosII系统的连接主要是外部RAM接口要和RAM的三态桥连接 外部的Flash接口要和flash的三态桥连接 所有添加的IP连接都是系统自动完成的 除了上面提到的三态桥和外部存储器的接口的连接之外 其它的连接用户不用修改 但对于三态桥和外部存储器接口的连接 系统的自动连接可能和用户的开发板不匹配 用户需要进行手动的更改 针对我们所用的开发板的情况进行的设置 因为本书用到的开发板外部的SRAM和外部的Flash没有使用共用的数据线和地址线 所以必须为它们分别添加一个三态桥 创建NiosII系统模块 创建NiosII系统模块 三 分配IP模块的地址和中断号在以上添加IP的过程中 SOPCBuilder为各个IP模块分配了一个默认的基地址 用户可以改变这些默认的分配 如果用户自己分配的地址出现冲突 SOPCBuilder会给出警告 用户可以按照下面的步骤来进行分配和解决地址冲突问题 创建NiosII系统模块 下面我们给出一种自定义的地址分配实例 将闪存的基地址设定为0 x00000000 步骤如下 1 单击Flash外设的Base栏 将地址改为0 x0 然后回车 这时SOPCBuilder的消息框中出现错误的提示信息 这是因为闪存的地址和其它的外设地址发生了冲突 2 选择Module菜单中的LockBaseAddress操作 一个挂锁的图标出现在闪存基地址的旁边 3 选择System菜单中的AutoAssignBaseAddress操作 来解决外设的地址分配冲突问题 SOPCBuilder调整其它外设的地址来避开与闪存地址的冲突 错误提示的消息就会消失了 4 用户可以手动修改各个外设的中断号 中断号越低 中断优先级越高 用户也可以采用自动分配中断号 选择System菜单中的AutoAssignIRQs 但SOPCBuilder不处理软件操作 采用自动分配中断的策略不一定是最优的 用户最好是根据自己的应用来确定外设的中断优先级 采用手动的分配 创建NiosII系统模块 四 配置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的各个域的内容 五 生成NIOSII并加入到工程中NIOSII系统是工程的一部分 我们首先是生成它 然后加入到工程中去 然后将整个工程下载到FPGA芯片中去 单击SystemGeneration 在Option下进行如下的设置 创建NiosII系统模块 选中Simulation 如果安装了ModelSim软件 会生成用于仿真的相应的文件 单击exit退出SOPCBuilder 单击Generate SOPCBuilder会提示生成系统的进程 系统生成完成时会提示 SUCCESS SYSTEMGENERATIONCOMPLETED 选中HDL 会生成系统模块的硬件语言文件 系统生成完成之后 SOPCBuilder为这个定制的NIOSII系统模块创建了一个符号 要把NiosII系统加入到工程中去 遵循如下的步骤 1 在QuartusII软件中 打开顶层实体 BDF格式 在BDF窗口中任意处双击 出现Symbol对话框 2 在Symbol对话框中单击Project来展开工程目录 其下出现NIOS2 本例采用的系统名 选中它 右侧出现了系统的符号表示 3 单击OK Symbol对话框关闭 NIOS2的符号轮廓被附着在鼠标的指针上 4 BDF窗口中任意空白处单击一下 NIOS2的符号出现在BDF窗口中 这样我们创建的系统已经被加入到工程中了 创建NiosII系统模块 创建NiosII系统模块 六 引脚和嵌入式锁相环除了NIOSII系统之外 可能还要有其它的硬件逻辑 我们这里加入一个嵌入式锁相环 嵌入式锁相环有两个时钟输出 一个输出SSRAM提供时钟 另一个时钟的输出为NIOSIICPU提供时钟 然后添加输入 输出 双向引脚 以实现和FPGA外部的外设进行通信 加入嵌入式锁相环的步骤如下 创建NiosII系统模块 1 点击Tools MegaWizardPlug InManager 出现MegaWizardPlug InManager向导Page1窗口 点击next 创建NiosII系统模块 2 在MegaWizardPlug InManagerPage2窗口中的IO下面选择ALTPLL 器件选择CycloneII 输出文件类型选择VHDL 文件名为ssram pll 选中Returntothispageforanothercreateoperation 然后点击Next 出现MegaWizardPlug InManager ALTPLL Page3of10 创建NiosII系统模块 3 在窗口中 做如图选择 点击next 进入page4 4 在page4中不作任何配置 直接点击next 创建NiosII系统模块 5 点击next 创建NiosII系统模块 6 在Page6窗口中 设置c0输出时钟 首先选中Usethisclock选项 设置时钟频率为85MHz 占空比为50 点击Next会进入c1输出时钟的设置 创建NiosII系统模块 7 嵌入式PLL可提供3个输出时钟 我们使用其中的两个 Page7窗口中 在c1时钟的设置页面上 选中Usethisclock选项 设置时钟频率为85MHz 点击Next 创建NiosII系统模块 创建NiosII系统模块 8 在MegaWizardPlug InManager ALTPLL Page8of10 窗口中 不选中Usethisclock选项 即我们不使用c2时钟 点击Next 9 在MegaWizardPlug InManager ALTPLL Page9of10 窗口中 给出了用于仿真必须要产生的文件 点击Next 10 在MegaWizardPlug InManager ALTPLL Page10of10 窗口中 给出了用户选择要产生的文件 不做改变 采用默认配置 点击Finish完成PLL的生成 在顶层实体的bdf窗口中双击鼠标 出现Symbol添加窗口 在project下面选择刚才建立的ssram pll 点击OK ssram pll的轮廓会附着在鼠标上 点击bdf窗口的空白处 将嵌入式锁相环加入到了工程中 引脚添加的步骤如下 1 在顶层实体的bdf窗口的空白处双击鼠标 出现Symbol添加窗口 2 在altera quartus libraries下面选择primitives 再在其下选择pin 在其中有三种类型的引脚 有bidir input output 分别为双向 输入和输出引脚 选择相应类型的引脚 点击OK 3 点击bdf窗口的空白处 即将引脚加入到了工程中 4 重复上面的步骤添加为各个端口添加相应类型的引脚 创建NiosII系统模块 连接引脚和命名引脚第一个加入的引脚的名称缺省为pin name 之后加入的引脚名称依次为pin name1 pin name2向上递增 为了便于理解和记忆 需要对引脚重新命名 使其和其传输的信号联系起来 命名引脚的方法如下 1 双击引脚的 pin namen 部分 pin namen的文字变成高亮 可以对其编辑 2 对其他的引脚重复以上的操作 修改成具有意义的名字 3 对于总线型的引脚 引脚名称之后要标识出总线的位数 如ddr a 12 0 在引脚名称之后加上方括号 然后写上最高位和最低位 用两个 隔开 4 将嵌入式锁相环和系统模块等连接起来 并将引脚连接到相应的端口上 创建NiosII系统模块 连接好的顶层模块图 设计优化 设计优化主要包括节省占用FPGA的面积和提高设计系统运行速度两个方面 这里的 面积 是指一个设计所消耗的FPGA的逻辑资源的数量 一般以设计占用的等价逻辑门数来衡量 速度 是指设计的系统在目标芯片上稳定运行时能够达到的最高频率 它与设计的时钟周期 时钟建立时间 时钟保持时间 时钟到输出端口的延迟时间等诸多因素有关 面积与速度的优化打开我们刚才的工程 clock 然后选择Assignment菜单下的Settings命令 弹出设置窗口 在对话框的左边的Category栏下 列出了很多可设置的对象 包括EDAToolsSettings CompilationProcessSettings Analysis SynthesisSettings FitterSettings TimingSettings SimulationSettings等等 选中要设置的项目 窗口的右边显示供设置的选项和参数 在Analysis SynthesisSettings页面 用于对设计在分析与综合时的优化设置 在该页面的OptimizationTechniques栏中 提供了Speed Balanced和Area3种优化选择 其中Balanced是软件缺省的优化选择 如果对Speed或Area有特殊的要求 则选中相应的选项 设计优化 时序约束与设置选择Settings下面的TimingAnalysisSettings 然后选择ClassicTimingAnalyzerSettings 在此页面中 可以对设计的延迟约束 时钟频率等做设置 延迟约束 DelayRequirements 设置包括tsu 建立时间 tco 时钟到输出的延迟 tpd 传输延迟 和th 保持时间 的设置 一般来说 用户要根据目标芯片的特性及PCB板走线的实际情况 给出设计需要满足的时钟频率 建立时间 保持时间和传输延迟时间等参数 对一些简单的应用 对时序要求不严格 可以不做设置 设计优化 Fitter设置在Ssettings对话框中 用鼠标左键单击Category栏目中的FitterSettings项 出现FitterSettings设置页面 此页面用于布局布线器的控制 在这里需要设置的主要是布局布线的策略 FitterEffort 有三种模式可供选择 标准模式 StandardFit 快速模式 FastFit 和自动模式 AutoFit 标准模式需要的时间比较长 但可以实现较高的最高频率 fmax 快速模式可以节省50 的编译时间 但会使最高频率有所降低 自动模式在达到设计要求的条件下 自动平衡最高频率和编译时间 编译 QuartusII编译器由一系列处理模块组成 包括分析与综合 适配 汇编和时序分析等环节 通过QuartusII编译器 可以检查设计错误 综合逻辑 把设计配置到FPGA中去 并且为模拟 时序分析及器件配置生成输出文件 1 分析与综合在编译过程中 首先对设计文件进行分析和检查 如检查原理图的信号线有无漏接 信号有无双重来源 硬件描述语言文

温馨提示

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

评论

0/150

提交评论