NIOS II 创建示例设计_Quartus II 9.0
安装设计文件
在继续之前,您必须安装 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相关推荐
- 基于NIOS II的液晶显示设计——自定义图形库
基于NIOS II的液晶显示设计--自定义图形库 下面是我写的简单图形库 // graphics.h / #ifndef GRAPHICS_H_ #define GRAPHICS_H_ #includ ...
- matlab双线性变换切比雪夫2,语音信号滤波去噪——使用双线性变换法设计切比雪夫II型.doc...
语音信号滤波去噪--使用双线性变换法设计切比雪夫II型.doc 语音信号滤波去噪--使用双线性变换法设计切比雪夫II型滤波器 学生姓名:李谷越 指导老师:胡双红 摘 要 本课程设计的主要目的石设计一个 ...
- ucos II 创建第一个任务之一
Ucos II创建第一个任务 我们已经从远处欣赏过ucos II 的身材,现在可以近距离地欣赏Ucos II性感的局部了. 任务是什么? 有一句话:CPU不同的时刻段总是在执行着优先级最高的任务.所以 ...
- python houdini_【微笔记】houdini使用python创建城市教程笔记II
原标题:[微笔记]houdini使用python创建城市教程笔记II 今天继续学习第二部分,使用python处理block和创建属性,批量处理导入的建筑模型.最大的感受是使用程序去处理批量重复的东西真 ...
- UA MATH567 高维统计II 随机向量8 图的max-cut问题 0.5近似算法
UA MATH567 高维统计II 随机向量8 图的Max-cut问题 0.5近似算法 前两讲讨论了随机向量的概率不等式的一个应用:半正定规划近似求解整数规划,这一讲我们讨论它的另一个应用--图的ma ...
- sketch 将动图转换为json_UI设计师如何创建sketch设计样式、库和UI套件
使用Sketch来创建UI风格设计的样式,将受益匪浅.使用本教程构建UI套件,并同时创建自定义(可重复使用)库,以提高设计效率与质量. 无论是Sketch专家还是Sketch的新手,设计师都会发现:S ...
- 【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 ...
- startuml动态模型工具_跟我学UML建模工具StarUML(第11部分)——应用StarUML创建顺序图的创建示例...
杨教授大学堂,版权所有,盗版必究. 1/27 页 1.1 跟我学 UML 建模工具 StarUML (第 11 部分) --应用 StarUML 创建 顺序图的创建示例 1.1.1 UML 动态建模相 ...
- pandas使用datetime创建示例dataframe:包含完整的时分秒信息、创建时间索引、使用不同的时间频率、date_range中参数freq的偏移量别名
pandas使用datetime创建示例dataframe:包含完整的时分秒信息.创建时间索引.使用不同的时间频率.date_range中参数freq的偏移量别名 目录
最新文章
- python人工智能计算器_招募:基于python的召唤师全时段全技能(含均值AI)计算器全程测试...
- 词性标注,实体识别,ICTCLAS分析系统的学习
- 【CoppeliaSim】远程 API 之 Python 控制,对比 V-rep 有些不同
- 最简单的制作从USB启动的系统的方法
- php ouput buffer,Redis配置详解-客户端缓冲区 output buffer
- 三星雪上加霜?高通骁龙875或将回归台积电
- Surface Capture for Performance-Based Animation
- Node.js跨域请求解决方案
- 高斯核原理详解+生成高斯核的Python代码
- pytdx 获取板块指数_板块指数指标详解 通达信源码指标
- 中国企业云计算应用现状及需求调研报告
- java的八大基本类型
- 小程序 formid 生成_微信电子计次卡生成小程序
- twrp显示 failed to mount system
- 关于在Mac上挂载移动硬盘实现数据备份的方法
- 3D_systems_touch控制Dobot魔术师
- 2005年创新商业模式之窄告
- layer 上传图片点击取消仍在加载_layer 点击弹出图片
- 计算机控制算法差分方程,最优控制算法
- 头条golang面试题
热门文章
- 2021-03-04 Halcon初学者知识 【18】谈谈秩滤波(Rank filter)
- vue 2.0 :key的作用
- python中的gui界面编程_python应用系列教程——python的GUI界面编程Tkinter全解
- 没有任何基础学编程从哪开始_没有编程基础的朋友,学Python还是C/C++好,看了这个就明白了...
- java接收的文件转换成临时文件_Android中怎样使用createTempFile实现将字节数据创建到临时文件并转换成FileOutputStream和FileInputStream...
- MyBatis-Plus 代码生成器
- 获取视频的每一帧,并保存为.jpg图片
- faster rcnn源码解读(四)之数据类型imdb.py和pascal_voc.py(主要是imdb和roidb数据类型的解说)
- Mock工具之Mockito实战
- Spring IOC 容器源码分析 - 创建单例 bean 的过程