首页资源分类编程语言其他 > qsys设计教程

qsys设计教程

已有 445500个资源

下载专区

上传者其他资源

    文档信息举报收藏

    标    签:pfga

    分    享:

    文档简介

    qsys设计教程,很详细

    文档预览

    Nios II 的奇幻漂流 Chap.1 开始 Qsys 设计 byVITO 老虎社区 www.tigerbd.cn 处心积虑地让 FPGA 好学好用 Nios II 的奇幻漂流 工具版本:Quartus II 12.0 + Qsys + Nios II SBT 12.0 作者:VITO E-Mail:vito943@qq.com 老虎社区 版权所有 更多内容请访 http://www.tigerbd.cn All Right Reserved 2014.5 开始 Qsys 设计 开始 Qsys 设计 本文通过建立包含 Qsys 模块的 Quartus II 工程,完成硬件工程的建立。通过 本章的学习,你会学习到: (1)Quartus II 的基本操作和工程创建。 (2)Qsys 的基本操作和工程创建。 本文分为七个部分: 一、概述 二、创建 Quartus II 工程 三、添加 PLL 四、创建 Qsys 工程 五、管脚分配 六、Quartus II 工程配置 七、总结 1 概述 1. 概述 如果你玩过单片机,或者 ARM 等嵌入式的开发,那么对嵌入式软件的开发流程应该会有 一定的认识。可是现在你要面对的是 Nios II,so something is different! 区别在哪里?你跟着走完这一章后,就会比较有体会了!这里,先简单介绍一下。 无论你之前玩过的是单片机,或是 ARM,都有一个共同特点:一旦你选择好了一款芯片, 那么芯片的“硬件”部分,就是确定了的。注意,这里的“硬件”,是指芯片内部,而不是 PCB 级别的硬件。例如,你没法去改变一款单片机的 IO 数量,也没法给某款 ARM 加一个串口或者 SPI 口之类的。而 Nios II 及其 SOPC,由于它是基于硬件可编程的 FPGA,因此,硬件非但是 可以变的,而且必须由我们搭建! 硬件怎么搭建?是不是很复杂?确实有一定的难度,但是别怕,Altera 公司的一些工具软 件,能帮我们很大的忙。这一章,我们就是要来讲讲怎么来搭建这个“硬件”环境。 这一章我们先完成 Quartus II 工程和 Qsys 模块的创建。在创建的过程中,我们首先运行 Quartus II,建立一个 Quartus II 工程,并在里面添加 PLL 等工程必备的模块;然后运行 Qsys, 在 Qsys 中创建一个包含 NiosII CPU 的 qsys 模块(也就是原来 SOPC Builder 中的 sopc 工 程),再将其添加到 Quartus II 工程中;最后完成对 Quartus II 工程的配置。 在 NiosII 的开发过程中,我们必然离不开三个开发环境:Quartus II、Qsys 和 Nios II SBT。  Quartus II 学过 FPGA 的同学们必然对 Quartus II 不陌生了,它是 Altera 基于自身 FPGA/CPLD 产 品推出的开发软件,如果你有一定的 FPGA 基础,通过 Quartus II 建立工程自然就问题不大了; 当然,即使你没有学习过 FPGA 也没有关系,因为 Quartus II 的工程建立也就是一个固定步骤, 我们在这章会手把手的教你,而且我们学习的重点是 Nios II,Quartus II 工程只是为开发 Nios II 工程提供了一个平台环境。Quartus II 软件也在不断地更新中,我们在教程中使用的是 Quartus II 12.0。 2 概述  Qsys Qsys 是下一代 SOPC Builder 工具,可以理解为就是 SOPC Builder 的升级版。SOPC Builder 是 Quartus II 中用来建立,开发,维护系统的平台,这个系统你可以理解为以 Nios II CPU 为核心的嵌入式系统。我们知道,要从事嵌入式开发,需要有同时具备硬件环境和软件代 码,SOPC Builder 就是用来创建硬件环境的,它不同于 ARM、单片机等开发板的固定硬件环 境,而是可以根据自己的需求来搭建硬件环境,这也这是 Nios II 开发的独到和创新之处。Qsys 作为 SOPC Buider 的升级版,与 SOPC Builder 相比,提高了性能,增强了设计重用功能, 能更迅速的进行验证,但是说白了就是换了个包装,它该是干嘛的就还是干嘛的。  Nios II SBT 最后就是 Nios II SBT 了,在 Quartus II12.0 中,Nios II SBT 的全名是 Nios II Software Build Tools for Eclipse。我们在完成了 QuartusII 工程和 Qsys 模块的建立后,接下来就要进 行软件代码的编写了。Nios II SBT 就是一个软件代码的开发环境,供 Nios II 的开发者们进行 软件代码的编写、编译和仿真运行。先说到这,关于 Nios II SBT,我们将在下一章再详细介绍。 说了这么多,其实就是想让大家对这三种软件有个大概了解,尤其是原来没有接触过这些 软件的同学。接下来我们正式开工,来完成硬件工程的创建! 3 2. 创建 Quartus II 工程 我们先打开 Quartus II 12.0 软件,如下图所示, 创建 Quartus II 工程 选择菜单栏的 File ->New Project Wizard,点击 Next,得到下图 4 创建 Quartus II 工程 图中 1 框内为 Quartus II 工程的存放路径,2 框内为工程名,3 框内为工程顶层模块的名 字,默认与工程名相同。我们在 1 框内选择上图中的路径(这个可以根据需求自己选择,只要 不要包含中文字字符和空格),在 2 框和 3 框内输入 nios_prj,点击 Next,得到下图 5 创建 Quartus II 工程 上图中是在工程中添加文件,我们先不添加,点击 Next,得到下图 上 图是选择 FPGA 器 件型 号,我们 的 TIGER BOARD 用 的是 Cyclone IV 系 列的 EP4CE22F17C8,在 1 框的 Device Family 栏选择 CycloneIV E,在 2 框中的 Available devices 栏中选择 EP4CE22F17C8,点击 Next,为 EDA 工具设置,我们不用修改,再点击 Next,如 下图 6 创建 Quartus II 工程 图中为我们即将创建完成的工程的一个概要(Summary),可以看到我们刚才设置的工程 目录、工程名、器件等信息,我们点击 Finish,工程就创建完毕了。 接下来我们在已经建好的工程中添加设计文件,在 QuartusII 主页面中点击 File->New, 如下图所示。 7 创建 Quartus II 工程 我们选择 Design Files 中的 BlockDiagram/Schematic File,点击 OK,就生成了一个 Block1.bdf 文件,这就是原理图格式的文件,也是整个工程的顶层文件,如下图。 小贴士 Tips:顶层文件的向左走 OR 向右走——原理图还是硬件描述语言? 这相当程度上是个人喜好问题。原理图的最大优点是直观,最大缺点是可移植性差(要 移植到别的品牌的 FPGA,或者 ASIC),不过 Qsys 只有 Altera 支持,所以这个可移植 性差的问题似乎也不是问题。当然,如果你已经很熟练硬件描述语言,对文本更偏爱而 不喜欢原理图点来点去的操作方式,那就用硬件描述语言吧☺。 8 添加 PLL 3. 添加 PLL 我们接下来添加一个 Altera 的 IP 核:PLL,也就是锁相环。 小贴士 Tips:关于 IP IP 的全称是 Intellectual Property,即知识产权。IP 核是一种已经设计完成并封装好、可 供直接使用的能实现某些特定功能的模块。简单来说,IP 核就是一个我们可以直接拿来 使用的现成模块。 在 FPGA 开发中,PLL 主要用来得到开发者希望的时钟信号,它输入硬件电路上的时钟源 (通常为板上晶振),可以改变输入信号的频率、占空比等参数,从而得到希望的时钟信号。 TIGER BOARD 开发板上的晶振频率为 50MHz,我们希望的时钟频率同样为 50MHz,本来是 无需 PLL 的,但一来为了介绍下 PLL 的使用方法,二来经过 PLL 后的时钟在抖动(Jitter)方 面更好一些,我们就用 PLL 来生成一个仍为 50MHz 的时钟。我们就用 PLL 来生成一个仍为 50MHz 的时钟。 关于 jitter 和 skew,可以参考这个帖子: http://www.tigerbd.cn/thread-2-1-1.html 在 Quartus II 菜单栏中选择 Tools->MegaWizard Plug-In Manager,得到下图 9 添加 PLL 不用重新选择直接点击 Next,得到下图,在左边的菜单栏中选择 PLL,位置如框 1 中所示; 框 2 为我们选定的语言类型,即 Verilog;在框 3 的位置输入命名,我们把它命名为 pll(名称 随意,自己舒服就行)。 点击 Next,得到下图,我们在框 1 中设置输入时钟的频率,即 50MHz。 10 添加 PLL 点击 Next,得到下图,我们把框 1 和框 2 中的对勾去掉,目的是去掉 PLL 的 areset(复位) 和 locked(锁定)管脚,可以看到,框 3 中的 PLL 模块原理图发生了变化,管脚减少了两个, 自然就是 areset 和 locked 了。 小贴士 Tips:PLL 上的 locked 管脚 关于 locked 这个输出,是表明 PLL 已经锁定成功了,时钟系统工作正常。这里为了简 略,所以把它省略了。实际项目中,特别是当时钟源的质量不一定很好的时候,建议把 这个 locked 引脚引出到 PCB,并点亮一个 LED 灯,这样时钟系统是否正常,可以一目 了然。 11 添加 PLL 连续点击 Next,直到下图,框 1 为当前所在位置,这个是用来配置 c0 这一输出时钟的。我们 选择框 2,即直接输入频率模式,在框 3 中输入 50,右侧 Actual Settings 显示的是真实的频率, 可以看到其值为 50MHz。 12 添加 PLL 小贴士 Tips:PLL 上的 locked 管脚 关于 locked 这个输出,是表明 PLL 已经锁定成功了,时钟系统工作正常。这里为了简 略,所以把它省略了。实际项目中,特别是当时钟源的质量不一定很好的时候,建议把 这个 locked 引脚引出到 PCB,并点亮一个 LED 灯,这样时钟系统是否正常,可以一目 了然。 连续点击 Next,直到下图,框 1 为当前所在位置,框 2 是要生成的文件列表,除了前两项必 须要生成的,我们再勾选上 bsf 文件即可,剩下的都不需要,点击 Finish,PLL 就生成了。 回到 Quartus II 的主界面,我们双击 Block1.bdf 文件的空白处,得到下图。 13 添加 PLL 在框 1 中选中 pll,点击 OK,就可以把 pll 放到 bdf 文件中了,如下图。 我们把文件先保存下,在菜单栏选择 File->Save 或者直接 Ctrl+S(笔者 Vito 的习惯就是 不断经常 Ctrl+S,以免一死机成千古恨。Jerry 注☺),得到下图,因为文件是整个工程的顶层 文件,我们把它命名为 nios_prj.bdf,大家注意下红框内的选项,它的意思是把该文件添加到 工程中,我们自然需要添加,所以默认勾选上。 14 添加 PLL 15 4. 创建 Qsys 模块 创建 Qsys 模块 接下来我们利用 Qsys 软件工具来创建一个 Qsys 模块。Qsys 模块,其实和刚才的 PLL 差 不多,也是一个 IP,只不过这个 IP 的功能更强,可配置的项目也更多。完工后,你就会拥有 了一个“片上系统”,通常以 Nios II CPU 为核心,包含存储单元和各类接口(有点像是一个单 片机的感觉)。Qsys 创建了硬件,而下一章的 NiosII 则是针对这个 Qsys 进行软件的设计。 在 Quartus II 主界面的菜单栏中选择 Tools->Qsys,得到下图,可以看到,此时 Qsys 工程 中只有一个 clk_0,即时钟,左侧边栏 Library 里面就是 Qsys 中可以直接使用的现成 IP 核(一 眼看去种类还是挺多的),我们就在 Library 库中选择和添加自己需要的 IP 核。 我们先保存下工程,在菜单栏选择 File->Save 或 Ctrl+S(要养成经常保存的好习惯!)都 可,我们把它命名为 kernal,如下图所示。 16 创建 Qsys 模块 我们双击 clk_0,得到下图,可以看到系统默认的时钟频率就是 50MHz,所以无需修改频率, 其它配置也无需改动,我们直接 Finish。 首先是添加 Nios II CPU,在左侧边栏选择 Library->Embedded Processors->Nios II Processor,双击,得到下图。框 1 是 CPU 类型的选择,有三种 CPU 可供选择:Nios II/e(经 济型)、Nios II/s(标准型)和 Nios II/f(快速型)。 三种 CPU 从性能上来说 Nios II/e 最差,Nios II/s 居中,NiosII/f 最好;从资源消耗上来 说,Nios II/e 消耗最少,Nios II/s 居中,NiosII/f 消耗最多。大家可以根据自己的需求来选择 合适的 CPU,我们这追求资源消耗与性能的平衡,选择 Nios II/s。 框 2 和框 3 是 Reset Vector 与 Exception Vector 的选项,我们先不管它,待添加完其它 IP 核后再设置。Nios II Processor 中的其它选项无需修改,我们直接点击 Finish,完成 Nios II CPU 核的添加。 17 创建 Qsys 模块 然后是添加 SDRAM 控制器,它是用来控制 FPGA 的片外 SDRAM 的。我们选择 Library->Memories and Memory Controllers->External Memory Interfaces->SDRAM Interfaces->SDRAM Controller,双击,得到下图,因为 TIGER BOARD 上的外设 SDRAM 是 256Mb(4M x 16Bit x 4 Banks)的,所以设置如下:框 1 的 Presets 为 Custom,框 2 的 Data width 设为 16;框 3 的 Architecture 中 Chip select 为 1,Banks 为 4;框 4 的 Address widths 中 Row 为 13,Column 为 9。其它设置无需修改,设置完成后,点击 Finish,生成 SDRAM Controller。 18 创建 Qsys 模块 然后添加 Flash 控制器,与 SDRAM 控制器类似,它是用来控制 FPGA 的片外 Flash 的。 TIGER BOARD 的 Flash 选用的是 EPCS64,所以我们选择 Library->Memories and Memory Controllers->External Memory Interfaces->Flash Interfaces->EPCS Serial Flash Controller,得到下图,此 IP 核无需修改设置,直接点击 Finish 即可。 19 创建 Qsys 模块 然后我们添加 System ID。在 Altera 的《Embedded Peripherals IP User Guide》手册 中写到,System ID 是用来校验的一个只读器件,可以防止系统出现异常,这种异常一般指的 是 Nios SBT 的软件工程与 Qsys 工程不匹配。对于它我们无需过多了解,只要知道它是用来校 验的就可以了。选择 Library->Peripherals ->Debug and Performance->System ID Peripheral,双击得到下图。同样无需修改设置选项,点击 Finish,搞定。 20 创建 Qsys 模块 最后是添加 JTAG UART,JTAG UART 是实现 PC 机与 Qsys 工程通信功能的接口,有了 它的存在,无需另外添加串口就能实现 PC 机与 Nios II CPU 的串口通信。 选择 Library->Interface Protocols ->Serial->JTAG UART,双击,得到下图。同样无需 任何修改,点击 Finish 搞定。 21 创建 Qsys 模块 到此为止,Qsys 工程的基本 IP 核就添加完毕了,如下图所示。但任务远没有完成,底下 的 erros 和 warnings 提醒着我们事还没完。我们需要对 Qsys 工程做一系列工作,才能生成 一个可用、规范的 Qsys 工程。 首先是改名,每个生成的 IP 核的名字都挂着个 0,看着就别扭。我个人的命名习惯是:把 IP 核名字用大写字母表示,太长的缩短点,如果有多个相同 IP 核就在名字后面加上从 1 开始 的后缀。当然,这个跟个人习惯有关,没什么标准,自己看着舒服就行。 Qsys 工程的 IP 核改名方式有两种,点击相应名字后,一是鼠标右键->Rename,二是按 F2,二者效果相同。改名生的效果如下图,个人感觉看着舒服多了。 22 创建 Qsys 模块 然后是连线。在上图中,Connection 一栏中的线还都未连接,我们需要把它正确的连起 来。把光标放到 Connection 下面的区域,得到下图 可以看到,图中出线了密密麻麻的线和点,点有空心和实心两种,空心代表未连接,实心 代表已连接。这里要提到 Qsys 与原来的 SOPC Builder 的不同之处,SOPC Builder 中大部分 的连接已经给开发者连好,需要手动连接的很少,而 Qsys 正好相反,这个我也不了解是为什 23 创建 Qsys 模块 么,给人感觉是一种退步啊。不过也无所谓,自己动手丰衣足食,我们把有连接关系的线连上, 方法是光标放到对应的空心上,单击即可,连接完成后得到下图 这时我们配置 Nios II CPU 中的 Reset Vector 和 Exception Vector。首先我们来了解下 这两个概念,Reset Vecto(r 复位向量)是 CPU 复位后启动时指向的存储器类型和地址偏移量, 存储器一般为掉电不可擦除型,如 Flash; Exception Vector 是 CPU 异常情况时指向的存储 器 类 型 和 地址 偏 移 量,存 储 器 可 为掉 电 即 擦除型 , 如 SDRAM。 Vector 的 计 算方 法 为 Vector=Base+offset,即最后的复位向量等于存储器的基地址加上偏移地址。 在我们的工程中,把 Reset Vector 指向 EPCS,Exception Vector 指向 SDRAM。双击 CPU,得到下图,我们只需按下图配置框 1 和框 2 中的 memory 即可,offset 不必修改,点 击 Finish 搞定。 接下来我们进行分配地址和锁地址。在 Qsys 工程中,有 Base 栏和 End 栏,它显示的是 24 创建 Qsys 模块 IP 核模块的起始地址(基地址)和结束地址,如下图框 1 所示。我们发现很多模块的地址是重 复的,这违背了地址唯一性原则,自然是不允许的,框 2 中的 Error 提示也正是因为此。 我们需要对地址进行重新分配。方法有两种,自动分配和手动分配。手动分配的优点是能 给模块分配自己希望的地址,但一般没必要,而且手动分配太麻烦。我们这里采用自动分配, 方法是在菜单栏选择 System->Assign Base Addresses,得到下图,可以看到,框 1 中的地 址没有重复的了,框 2 中的 Error 也没了。 25 创建 Qsys 模块 我们接下来锁定 EPCS 和 SDRAM 的地址,在工程中如果添加了新的 IP 核模块需要重新分 配地址后,原来模块的基地址是可能会变的,出于习惯考虑,我们把 EPCS 和 SDRAM 的基地 址锁定上,让它们不再变化(当然不锁定也是木有影响的)。方法是点击相应模块基地址前的小 锁(这时小锁是开着的),小锁就锁上了,模块的基地址也就固定了。修改完得到下图。 事情还没完,我们还得手动连接上中断,这也是 Qsys 与 SOPC Builder 的区别,原来 SOPC Builder 中带有中断的模块与 CPU 之间是自动连接的,到了 Qsys 又得自己动手了。方法与前 26 创建 Qsys 模块 面模块间连线类似,我们把光标放到 IRQ 栏,看到了熟悉的空心,还是老方法,点击空心连上, 得到下图。 因为中断号并没有重复,所以我们无需再分配中断优先级。如有分配需要,方法与分配地 址一样:菜单栏 System->Assign Interrupt Numbers 自动分配,点击中断号手动修改。 最后我们设置下端口引出,这依旧是是 Qsys 给找的“麻烦”,如果某个模块有和外界的 输入输出端口,我们必须要设置下引出,这在 SOPC Builder 中是不需要的。以 SDRAM 为例, 红框里面有 Click to export 字样,点击红框,我们把它命名为 sdram 即可。 27 创建 Qsys 模块 我们把光标放到 Connection 栏,大家可以看到 wire 前面的连线发生了变化,如下图所示, 这代表端口成功引出了。 工程中需要端口引出的还有 EPCS,我们把它按照同样方法引出,得到下图 可以看到,Message 里面的 Error 和 Warning 都没有了,我们的 Qsys 工程也创建完毕, 28 创建 Qsys 模块 我们选择主页面上边栏的 Genration,即下图框 1,得到下图:框 2 是仿真选项,因为我们不 进行仿真所以无需修改;框 3 是综合选项,我们选择生成 HDL 文件和 BSF 文件(其实只用到 了 BSF 文件);框 4 是输出路径选择,我们按照图中配置。 最后我们点击框 5 的 Genrate,就开始漫长的编译过程了,我们可以趁机休息下,时间长 短一般取决于电脑的配置。当出现 Genrate Completed 的时候,如下图,编译就完成了,点 击 Close,Qsys 工程的创建就结束了。 29 创建 Qsys 模块 小贴士 Tips:软件偶尔抽抽疯 有时候,Generate 过程中会出现莫名其妙的错误,可能是软件 bug,也可能是电脑系统 的原因。如果一时摸不着头脑,那就保存一下 Qsys 和 QuartusII 工程,重启一下电脑再 试试吧(囧) 我们回到 Quartus II 的主界面,首先我们要把生成的 Qsys 工程添加到 Quartus II 工程中, 否则在后面编译时会报错。方法是选择 Project->Add/Remove Files in Project,得到下图, 在框 1 中选中文件,点击框 2 的 Add 即可,添加完后点击 OK 回到主界面。 接下来我们给 Nios II 核和 PLL 分配管脚。首先双击 bdf 文件的空白处,选择我们用 Qsys 工程创建的名为 kernel 的 Nios II 核,如下图,点击 OK,将其放到 bdf 文件中。 30 创建 Qsys 模块 我们给图中的 PLL 和 kernel 生成管脚。选中 PLL,点击右键,选择 Generate Pins for Symbol Ports,如下图红框。 我们看到,PLL 的输入输出端口都被生成了管脚,如下图。按照同样的方法,我们给 Nios II 核也生成管脚。 31 创建 Qsys 模块 我们再添加一个复位输入管脚,双击空白处,在下图框 1 的位置找到 input,或者通过框 2 直接搜索,找到后添加到 bdf 文件中。 之后我们建立 PLL 与 Nios II 核的连接关系,删除掉部分管脚,连线,修改管脚名称,得 到下图。 32 管脚分配 5. 管脚分配 接下来进行管脚分配操作,管脚分配一般有两种方式,第一种是在 Quartus II 主菜单中选 择 Assignments->Pin Planner,进行管脚分配,这种方法较为直观但是对于较多管脚来讲比 较慢;第二种是用 TCL 脚本文件进行管脚分配。 我们采用 TCL 脚本的方式来分配管脚,首先我们用文件编辑器编写 TCL 脚本文件。以上图 的 clk_in 为例,TIGER BOARD 上时钟是通过 PIN_E15 输入给 clk_in 的,那么分配 clk_in 管 脚的 TCL 脚本的格式如下图, New/tcl scripts file 我们将其它管脚也按照这样的格式编写,编写完成后保存成 pin.tcl 文件,然后导入进来。 导入的方法很简单,Quartus II 菜单栏下选择 Tools->TCL Scripts,得到下图 我们选中 pin.tcl 文件,点击 Run,弹出下图的框,表示导入成功。 这时我们发现 bdf 文件中有些变化,如下图红框中的内容,它代表已经得到分配的管脚。 33 管脚分配 小贴士 Tips:关于 SDRAM 时钟的相位偏移 有的同学到这可能犯嘀咕,因为在一些教程中 SDRAM 的输入时钟需要设置一个与系统 时钟(也就是 kernel 的输入时钟)的相位偏移,而本教程中直接使用了系统时钟,其实 两者都没错,当系统时钟的频率较高时,SDRAM 的时钟需要设置一个相位偏移才能确 保正常,比如 100MHz 时 SDRAM 的时钟要偏移-75deg(设置生成 PLL IP 核的 Code Phase Shift 选项),因为在本教程里面系统时钟只有 50MHz(这个已经够用啦),所 以无需特意设置相位偏移。 34 6. Quartus II 工程配置 QuartusII 工程配置 最后我们对 Quartus II 工程做一些配置。选中 Entity 中有黄色三角那一栏,右键单击,如 下如下图所示。 在弹出的 Device 页面中,选择 Device and Pin Options,如下图红框所示。 我们先来对配置芯片做配置。在弹出的 Device and Pin Options 页面选择侧边栏的 35 QuartusII 工程配置 Configuration,如下图框 1,在框 2 中勾选上 Use configuration device,因为 TIGER BOARD 采用的是 EPCS64 芯片,我们选择 EPCS64。 再选择侧边栏的 Dual-Purpose Pins,将 Name 里面所有管脚的 Value 都改为 Used as regular I/O,点击 OK,配置就完成了。 36 QuartusII 工程配置 到此为止,我们就完成了整个 Quartus II 工程和 Qsys 工程的创建。回到 Quartus II 主界 面,保存下文件,我们开始编译 Quartus II 工程,方法是选择菜单栏 Processing->Start Compilation,或者直接点击界面上的紫色三角形,如下图红框所示。 我们继续等待漫长的编译过程,直到弹出下图的框,表示编译完成。 37 QuartusII 工程配置 小贴士 Tips:莫追求“完美”——关于编译报告中的 warnings Quartus II 工程在编译完成后会出现一些 warnings,开始有些同学可能觉得很不爽,想 把 warnings 通通消灭掉,其实这是没有必要也很困难的。一般来说,在软件开发中, errors 和 warnings 是都不允许的;在硬件开发中,errors 同样不允许,但是 warnings 有时却是不可避免的。我们可以看看详细的 warnings 信息,检查下哪些是真正的设计 问题把它改正,至于别的就可以不用管啦。 编译完成后会生成 Compilation Report,如下图所示,我们主要看两个指标,一是框 1 内的逻辑资源消耗,可以看到一共消耗了 14%,二是框 2 内的存储资源消耗,一共消耗了 9%。 这两个指标也是 FPGA 最受关注的两个。 我们最后介绍下如何下载程序文件。在工程编译完成后,会生成 sof 和 pof 两种格式的文 件,前者是掉电丢失的,通过 JTAG 口下载;后者是掉电不丢失的,通过 AS 口下载。TIGER BOARD 同时配备有 JTAG 口和 AS 口,我们在调试时一般用 JTAG 口下载 sof 文件,而要固化 38 QuartusII 工程配置 程序时则通过 AS 口下载 pof 文件。下载线我们一般采用 USB Blaster。 下载程序文件的方法很简单,以下载 sof 为例,我们插上 USB Blaster 线,选择菜单栏 Tools->Programmer 或者直接点击下图中框 1 内的标志,就会弹出下图中的 Programmer 对话框,先通过框 2 的 Add File 添加 sof 文件,再通过框 3 设置下载硬件(这里是 USB Blaster), 4 中的 Model 选择 JTAG,再单击 Start 就可以了,框 5 中的 Progress 会从 0 增加直到 100%, 代表下载成功。 至此整个包含 Qsys 模块的 Quartus II 工程就创建完毕了,我们也完成了硬件实现部分的 工作,接下来就可以在此基础上进行 Nios II 的开发了。 39 7. 总结 实验总结 在本章中,我们首先创建了一个 Quartus II 工程,其中顶层采用的是 bdf 文件的原理图描 述方式,这种方式更为直观,尤其适用于顶层较简单的工程。 然后通过 Altera 自带的 IP 核创建了一个 PLL,因为我们给 Nios II CPU 的系统时钟为 50MHz,属于低频率,所以不用去为 SDRAM 设置一个移相的时钟,直接使用系统时钟即可。 接着又创建了一个 Qsys 模块,原来使用过 SOPC Builder 的同学要领会 Qsys 与 SOPC Builder 使用的一些区别,包括手动连线、手动端口引出、手动中断设置等,没使用过 SOPC Builder 的同学照着操作就 OK 了。 在管脚分配时,我们采用的是导入 TCL 脚本文件的方式,这种方式尤其适合大量管脚的分 配,要注意 TCL 脚本的格式。 最后我们对 Quartus II 工程做了一些配置,并介绍了编译工程和下载程序的方法。 通过这章的学习,希望你能学会 Quartus II 和 Qsys 软件的基本操作和工程创建,为后面 学习 Nios II 扫清障碍。因本人水平有限,文中有任何错误请联系我,大家在交流中进步!邮 箱:vito943@qq.com 40

    Top_arrow
    回到顶部
    EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。