安装设计文件

在继续之前,您必须安装 Quartus II 软件和 Nios II 嵌入式设计套件。

分析系统要求

本部分介绍的教程示例设计的系统要求。设计的目标如下:

有关这些和其他组件,完整详细信息请参阅___<<NIOS II 外围设备>>。

启动 Quartus II 软件并新建设计项目

在设计之前,应该建立工作目录。每个设计都是一项工程,一般都单独建一个工作目录。

在此设置的工作目录为E:\sopc_project\led

1.启动 Quartus II 软件。

在 Windows 计算机上,单击<开始>,指向<程序>,Altera,Quartus II 9.0,然后单击 Quartus II 9.0。

2.启动New Project Wizard

选择File→New Project Wizard,弹出如图1所示对话框。单击该对话框最上一栏右侧的按钮“…”,设置当前工作目录。在第二栏设置当前工程名字,一般将顶层文件的名字作为工程名,例如工程名为sopc_led。第三栏是顶层文件的实体名。

3.把设计文件添加到工程中

单击Next按钮,弹出Add File对话框,如图2所示。在此可将有关的文件加入到工程中,选择默认即可。

4.选择目标器件

单击Next按钮,出现选择目标器件对话框,如图3所示。在Family选项中选择Cyclone II器件系列,并在Target device中选择第二项

在可选的设备列表中指定目标器件。可以通过右边的Filters“过滤”选择。在此选择EP2C35F484C8器件。用户可以根据自己开发板的情况进行不同的设置。

5.选择综合器和仿真器

单击Next按钮,则弹出选择仿真器和综合器的对话框EDA Tool Settings,如图4所示。如果选择默认的None,则表示选择Quartus II自带的仿真器和综合器。也可以选择其他第三方综合器和仿真器等专业EDA工具。

(5)、结束设置

单击Next按钮,出现工程设置信息显示画面,如图5所示,对前面设置情况进行了汇总。点击Finish按钮,即完成了当前工程的创建。在工程管理窗口中出现当前工程的层次结构显示,如图6所示。

创建一个新的 SOPC Builder系统

您可以使用 SOPC Builder来生成 Nios II 处理器的系统,添加所需的组件,并配置它们如何连接在一起。请执行以下步骤来创建一个新的 SOPC Builder系统:

1.在 Quartus II 软件中的工具菜单上单击 SOPC Builder。

SOPC Builder将启动并显示创建新的系统对话框。

2.键入 std_2c35 作为该系统的名称。

3.选择 Verilog 或 VHDL 作为目标硬件描述语言。以后当您生成的系统,SOPC Builder将输出中您选择的语言的设计文件。

4.单击确定。SOPC Builder GUI 将出现,显示系统目录选项卡。

如下图:SOPC Builder图形用户界面

使用SOPC Builder创建Nios II系统模块

可以使用 SOPC Builder来定义硬件特性的 Nios II 系统,例如,哪些 Nios II 核心要使用,以及哪些组件,包括在系统中。SOPC Builder并不定义软件行为,如在内存中存储的指令或发送 stderr 字符流的位置在哪里。

在本节中,您将执行以下步骤:

1.指定目标 FPGA 和时钟设置。

2.添加 Nios II CPU、 内存和其他组件。

3.指定基址和中断请求 (IRQ) 的优先事项。

4.生成 SOPC Builder系统。

SOPC Builder设计过程不需要是线性的。在本教程中的设计步骤为新用户了解的最简单的顺序显示。但是,您可以按不同的顺序来执行 SOPC Builder设计步骤。

指定目标 FPGA 和时钟设置

系统内容选项卡的目标和时钟设置部分指定系统中的 SOPC Builder系统关系到其他设备。请执行以下步骤:

1.选择匹配您的目标的 Altera FPGA 的设备系列。

在这里选择器件系列Device Family是cyclone II。

2. 系统的工作的外部时钟频率改为100 Mhz(双击它即可修改)。

添加Nios II CPU Core

选择SOPC Builder组件选择栏中的Component Library→Nios II Processor,双击或者单击下面的“ADD”,打开添加Nios II Processor对话框,如图10所示。

这里给我们提供了三种类型:

Nios II/e占用资源最少600-800LEs,功能也最简单,速度最慢。

Nios II/s占资源比前者多一些,功能也多了,速度也要快一些。

Nios II/f占资源最多,功能也最多,速度最快。

选择的时候要根据你的需求和你的芯片资源来决定。在这里,我选择Nios II/f,功能和速度都可以得到满足。

下面的:

Reset Vector是复位后启动时的Memory类型和偏移量,

Exception Vector是异常情况时的Memory类型和偏移量。

现在还不能配置,需要SDRAM和FLASH设置好以后才能修改这里,这两个地方很重要。

点击Next,如下11所示,将Data master→Data Cache处选择为None,也就是关闭Data Cache。

接下来连续点击Next,一直到如图12为止。

这是设置JTAG Debug Module,即JTAG调试时所用到的功能模块。功能越多,需要的资源越多。这里我们选择Level 1即可,不需要过多其他的功能。点击Finish,结束Nios II Processor的建立后,如图13所示。

添加SDRAM模块

选择SOPC Builder组件选择栏中的system content→memories and memory controllers→SDRAM→SDRAM controller,双击或者单击下面的“ADD”,打开SDRAM controller的对话框。如图14所示。

在Presets中选择第一项Custom。

在data width中选择16.在Architecture中的chip select: 2 ,bank : 4。

在Address widths中的row: 13,column:9。

如图15所示。

点击Next,点击Finish,完成SDRAM控制器的设置。在这里我们用的SDRAM是两片HY57V561620。

添加EPCS控制器

选择SOPC Builder组件选择栏中的system content→memories and memory controllers→Flash→EPCS serial Flash。双击或者单击下面的“ADD”,打开EPCS serial flash controller的对话框。如图16所示。

直接点击Finish完成添加。

添加JTAG UART

选择SOPC Builder组件选择栏中的system content→Interface protocols→serial→JTAG UART。双击或者单击下面的“ADD”,打开JTAG UART的对话框。如图18所示。

直接点击Next→Finish完成。

添加systen ID模块

选择SOPC Builder组件选择栏中的system content→peripherals→Debug and performance system ID peripheral。双击或者单击下面的“ADD”,打开system ID peripheral的对话框。如图17所示。

点击Finish,完成System ID的建立。

添加PIO模块

选择SOPC Builder组件选择栏中的system content→peripherals→microcontroller peripherals→PIO。双击或者单击下面的“ADD”,打开PIO的对话框,配置成4位输出。如图19所示。

点击Next→Finish完成。

到此为止,基本的NIOS系统模块就建立完成了,如图20所示。

如上图所示,我们可以把各个模块的名称的后面的_0去掉,单击要修改的名字ctrl+r或右键选Rename,输入新名字即可。如21图所示.

指定基址和中断请求 (IRQ) 的优先事项。

我们需要对FLASH地址进行锁定,复位重启的地址我们锁定为0x00000000,双击cfi_flash_controller的base地址修改,修改完成后再点击它前面的小锁,使其锁住。表示地址已锁定,如图23所示。

接下来是地址自动分配操作,点击SYSTEM->Auto-assign Basic Addresses,如图24所示。

接下来是中断的自动分配,和地址自动分配一样,SYSTEM-> Auto-assign IRQs,如图25所示。也可以手动分配。

接下来我们需要对cpu进行设置,双击cpu,Reset Vector处的Memeory选择cfi_flash_controller,Exceptioni Vector选择sdram,其他不变,如图22所示.

点击Finish,完成cpu设置。

生成 SOPC Builder系统

生成Nios II系统,单击system Generation标签,在options下进行如图26所示的设置。

点击Generate。开始生成Nios II系统。需要等待一会儿。知道出现info:system generation was successful,如图27所示。表示已经编译好,点击Exit,回到了Quartus界面。

集成Nios II系统到Quartus II 项目

在本节中,您执行以下步骤来完成的硬件设计:

■实例中,Quartus II SOPC Builder系统模块化项目。

■分配 FPGA 针脚。

■编译 Quartus II 项目。

■验证时间。

配置工程

我们要对工程配置一下了,在左侧边框栏右键点击,如图47所示。

点击setting后,如图48所示,点击Device and Pin Options。

点击后如图49所示,点击Configuration。

点击后,将use configuration device改为EPCS16,如图50所示。

实例化 SOPC Builder系统模块 Quartus II 项目中

首先创建一个顶层文件,在Quartus II 窗口中选择File→New,打开如图28所示的窗口,选择block Diagram/schematic File,即建立原理图文件。

点击File→save As…保存为sopc_led.bdf,如图29所示。

在sopc_led.bdf中的空白处双击,即可弹出symbol窗口。选择project→std_2c35,如图30所示。点击OK,将系统模块添加到了顶层模块中。如图31所示。

建立锁相环PLL模块。

接下来的工作我们需要建立一个锁相环,对时钟进行倍频,我们板子上是50MHz的有源晶振,我们要将其倍频到100MHz满足我们前面所设定的NOIS软核的时钟,还需要为SDRAM提供100MHz的时钟。下面我们就开始锁相环PLL模块。在sopc_led.bdf的空白处双击鼠标,点击megawizard plug-in manager…如图32所示。

出现如图33 点击Next

选中IO下的ALTPLL,将锁相环命名为PLL,如图34所示。

点击下一步,将General 的速度设置为8,输入时钟为50Mhz,如图35所示。

设置好以后,点击Next,将下图中选中的地方去掉后。如图36所示。

连续点击Next,直到出现C0输出频率的设置,将倍频设置为2,输出100Mhz时钟,如图37所示。

设置好以后点击Next,选中USE this clock,使用这部分给SDRAM提供时钟,时钟频率为100Mhz,偏移量为-75deg。如图38所示。

设置好以后,连续点击Next,中间没有需要修改的,最后点击Finish,完成PLL的建立,然后点击OK,回到Quartus界面,将我们建好的PLL放到空白处。

接下来的工作就是将PLL连接到NIOS软核上。如图39所示。

分配 FPGA 的针脚

PLL和std_3c25上点击右键后点击Generate Pins for symbol ports,这一步作用就是生成管脚,通过命名以后分配真实的引脚。如图40所示。

生成引脚后,如图41所示。

修改引脚的名称,使其具有意义,与脚本文件中的引脚命名相对应,修改完成后如图42所示。

脚本文件分配管脚

先将脚本文件复制到工程文件下面如图43所示。

我们将会提供给大家写好的TCL文件,到时候大家根据我给大家的TCL文件,将相应的管脚命名即可。修改好以后,按图44所示操作。

点击以后,出现45图,我们选择第一个EP2C35F484C8.tcl。点击RUN。

出现如图46图,说明脚本文件运行成功了。

编译 Quartus II 项目

点击Start Compilation如图52所示的按钮,开始编译。接下来就开始了又一个漫长的编译过程了,大家又可以休息一会了。

经过了漫长的编译过程,如果没有问题,编译成功后将出现如图52所示的对话框。

点击确定,编译过程全部结束。我们可以通过编译报告来看看我们用了多少资源,如图53所示。

下载到目标 FPGA 的硬件设计

1. 打开编程窗口和配置文件

在Quartus II 中直接点击Programmer或选择主菜单Tools—>Programmer,打开编程窗口,如下图所示,在Mode下拉列表框中有4种编程模式可以选择:JTAG、Active Serial 、Passive Serial和In-Socket。为了直接对FPGA进行配置,选择JTAG模式,并选中下载文件右侧的第一个小方框Program/Configure,注意核对下载文件的路径与文件名。如果此文件没有出现或者有错,可以单击左侧Add File 按钮,手动配置所需下载的文件是sopc_led.sof。

2. 设置编程器

在配置好下载文件sopc_led.sof后,要进行编程器设置。如果是首次使用Programmer进行连接下载,则须将试验系统与USB通信电缆连接好并打开电源。这时,系统提示用户安装USB-Blaster的驱动程序,用户须指定驱动程序存放的路径,然后进行安装。安装成功后,在编程窗口中Hardware Setup按钮的右边显示出USB-Blaster编程方式。以后再打开编程窗口时,只要USB电缆连接好,电源打开,系统就会自动设置成USB-Blaster编程方式。

3. 下载配置文件

单击编程窗口左侧的Start按钮,编程器开始把配置数据下载到FPGA中。这时,在下载进度条Progress段会显示下载数据的百分比,如下图。当下载完成时,会在信息窗口出现下载成功的消息。

使用 Nios II IDE 的软件开发

创建新的 Nios II C/c + + 应用程序项目

1.启动 IDE Nios II。在 Windows 计算机上,单击开始,指向程序,Altera、 Nios II EDS 9.0,然后单击 Nios II IDE 9.0。

2.在Nios II IDE中,选择FileàNewàProject,开启新项目对话框,选择Altera Nios IIàC/C++ Application,如下图:

3.单击Next按钮,进行新项目的设定。在这个步骤中提示用户指定新项目名、项目工作路径、目标硬件及新项目模板。在此选择项目模板为Hello World,设定项目名为Hello_led,设定工作路径为D:\sopc_project\led\software,单击SOPC Builder System右边的Browse按钮,选择前面生成的ptf文件,因为Nios II IDE需要从这个文件中获取该系统的相关信息。如下图所示:

4.然后单击Next按钮,进入下一步,为项目创建系统库。系统库是设备驱动程序集,提供对目标硬件的访问,如下图所示:

5.这样,整个新项目创建完成了,单击Finish按钮,出现下图:

修改源程序文件

修改程序的文件名。如下图所示,选中Hello_World,右键选择Rename。键入hello_led.c。

修改程序,双击helllo_led.c。编辑它,如图所示:

编译项目

1.右键单击 hello_led,然后单击System Library Properties。如下图:

2.单击System Library。

3.更改以下设置以减少编译的可执行文件的大小。如下图:

a.开启程序从不退出。

b.关闭支持 c + +。

c.关闭清洁退出 (刷新缓冲区)。

d.打开小 C 库。

4.单击确定以关闭属性对话框并返回到 IDE工作台。

5.单击ProjectàBuild All或按ctrl+B键,对项目进行编译。如下图:

编译进度:

编译完成:

运行程序

在项目编译调试之后,就可以运行程序了。运行方式有:Nios II Hardware、Nios II Instruction Set Simulator,分别是目标板运行、指令集仿真器运行。

运行程序的方法可以有如下几种:

选择RunàRun As,这种方式比较简单、快捷。

选择RunàRun…,此运行方式可进行一些具体的设置。

使用工具栏中运行图标也可以运行程序。

在此,选择RunàRun…,出现如下图所示的窗口。

根据需求选择采用的目标连接,在此选择Nios II Hardware,然后右键单击New按钮,添加要运行的项目,如下图所示。

如上图所示的右侧包含5个标签,可以根据要求进行相关的设定。其中Main标签显示运行工程的名称,最下方复选框Validate Nios II system ID before software download 为选择在软件下载前是否验证Nios II系统ID,默认情况为选中,即验证系统ID;Target Connection标签用于建立目标连接,选择JTAG电缆、JTAG设备及Nios II 终端通信设备;Debugger标签用于调试配置。

设置完成后,单击Run按钮,则在控制台上显示运行结果“Hello_LED!”,如下图所示,同时在开发板上显示跑马灯,运行成功。

当然,如果用户没有开发板,则可以采用指令集仿真运行。使用指令集仿真运行,可以选择RunàRun AsàNios II ISS运行工程,同样出现“Hello_LED”运行结果如下图所示。

转载于:https://www.cnblogs.com/CXATG/archive/2013/03/26/2982819.html

NIOS II 创建示例设计_Quartus II 9.0相关推荐

  1. 基于NIOS II的液晶显示设计——自定义图形库

    基于NIOS II的液晶显示设计--自定义图形库 下面是我写的简单图形库 // graphics.h / #ifndef GRAPHICS_H_ #define GRAPHICS_H_ #includ ...

  2. matlab双线性变换切比雪夫2,语音信号滤波去噪——使用双线性变换法设计切比雪夫II型.doc...

    语音信号滤波去噪--使用双线性变换法设计切比雪夫II型.doc 语音信号滤波去噪--使用双线性变换法设计切比雪夫II型滤波器 学生姓名:李谷越 指导老师:胡双红 摘 要 本课程设计的主要目的石设计一个 ...

  3. ucos II 创建第一个任务之一

    Ucos II创建第一个任务 我们已经从远处欣赏过ucos II 的身材,现在可以近距离地欣赏Ucos II性感的局部了. 任务是什么? 有一句话:CPU不同的时刻段总是在执行着优先级最高的任务.所以 ...

  4. python houdini_【微笔记】houdini使用python创建城市教程笔记II

    原标题:[微笔记]houdini使用python创建城市教程笔记II 今天继续学习第二部分,使用python处理block和创建属性,批量处理导入的建筑模型.最大的感受是使用程序去处理批量重复的东西真 ...

  5. UA MATH567 高维统计II 随机向量8 图的max-cut问题 0.5近似算法

    UA MATH567 高维统计II 随机向量8 图的Max-cut问题 0.5近似算法 前两讲讨论了随机向量的概率不等式的一个应用:半正定规划近似求解整数规划,这一讲我们讨论它的另一个应用--图的ma ...

  6. sketch 将动图转换为json_UI设计师如何创建sketch设计样式、库和UI套件

    使用Sketch来创建UI风格设计的样式,将受益匪浅.使用本教程构建UI套件,并同时创建自定义(可重复使用)库,以提高设计效率与质量. 无论是Sketch专家还是Sketch的新手,设计师都会发现:S ...

  7. 【Leetcode】122. Best Time to Buy and Sell Stock II买卖股票的最佳时机 II

    Best Time to Buy and Sell Stock II 买卖股票的最佳时机 II买卖股票的最佳时机 II Say you have an array for which the ith ...

  8. startuml动态模型工具_跟我学UML建模工具StarUML(第11部分)——应用StarUML创建顺序图的创建示例...

    杨教授大学堂,版权所有,盗版必究. 1/27 页 1.1 跟我学 UML 建模工具 StarUML (第 11 部分) --应用 StarUML 创建 顺序图的创建示例 1.1.1 UML 动态建模相 ...

  9. pandas使用datetime创建示例dataframe:包含完整的时分秒信息、创建时间索引、使用不同的时间频率、date_range中参数freq的偏移量别名

    pandas使用datetime创建示例dataframe:包含完整的时分秒信息.创建时间索引.使用不同的时间频率.date_range中参数freq的偏移量别名 目录

最新文章

  1. python人工智能计算器_招募:基于python的召唤师全时段全技能(含均值AI)计算器全程测试...
  2. 词性标注,实体识别,ICTCLAS分析系统的学习
  3. 【CoppeliaSim】远程 API 之 Python 控制,对比 V-rep 有些不同
  4. 最简单的制作从USB启动的系统的方法
  5. php ouput buffer,Redis配置详解-客户端缓冲区 output buffer
  6. 三星雪上加霜?高通骁龙875或将回归台积电
  7. Surface Capture for Performance-Based Animation
  8. Node.js跨域请求解决方案
  9. 高斯核原理详解+生成高斯核的Python代码
  10. pytdx 获取板块指数_板块指数指标详解 通达信源码指标
  11. 中国企业云计算应用现状及需求调研报告
  12. java的八大基本类型
  13. 小程序 formid 生成_微信电子计次卡生成小程序
  14. twrp显示 failed to mount system
  15. 关于在Mac上挂载移动硬盘实现数据备份的方法
  16. 3D_systems_touch控制Dobot魔术师
  17. 2005年创新商业模式之窄告
  18. layer 上传图片点击取消仍在加载_layer 点击弹出图片
  19. 计算机控制算法差分方程,最优控制算法
  20. 头条golang面试题

热门文章

  1. 2021-03-04 Halcon初学者知识 【18】谈谈秩滤波(Rank filter)
  2. vue 2.0 :key的作用
  3. python中的gui界面编程_python应用系列教程——python的GUI界面编程Tkinter全解
  4. 没有任何基础学编程从哪开始_没有编程基础的朋友,学Python还是C/C++好,看了这个就明白了...
  5. java接收的文件转换成临时文件_Android中怎样使用createTempFile实现将字节数据创建到临时文件并转换成FileOutputStream和FileInputStream...
  6. MyBatis-Plus 代码生成器
  7. 获取视频的每一帧,并保存为.jpg图片
  8. faster rcnn源码解读(四)之数据类型imdb.py和pascal_voc.py(主要是imdb和roidb数据类型的解说)
  9. Mock工具之Mockito实战
  10. Spring IOC 容器源码分析 - 创建单例 bean 的过程