一、什么是软核处理器

1、什么是处理器

在弄清楚什么是软核处理器之前,需要首先明白什么是处理器,这里笔者浅显的作一番解释。众所周知处,理器是可以按照指令序列完成特定的逻辑功能的集成电路,一般的常见的微控制器都为SOC,即片上系统,包括中央处理单元、总线、存储器、外设,比如大家熟知STM32,其F103系列就是由Coretex-M3内核、AHBAPB总线、RAM、ROM以及GPIO等等一些外设组成的,上述所有的内容包含在一个芯片上,所以称之为片上系统,也是常说的微处理器。

2、软核处理器

具有FPGA和数字电路基础知识的读者应该清楚,FPGA可以通过编程实现几乎所有的数字电路的功能,并且由于Verilog HDL等硬件描述语言具有类似于C语言这类高级语言的特点,还能描述一些复杂的功能。而处理器无非也是由触发器、寄存器、逻辑门这些基本的数字电路器件构成的,所以理论上来说,我们可以通过编程对一些处理器在FPGA上进行复刻,进行引脚分配以后,可以让FPGA变成一个处理器。软核处理器无非就是使用硬件描述语言来描述一个片上系统,使其可以实现微处理器的功能,相较于传统的封装好的处理器芯片,软核处理器具有可裁剪的特性、外设定制灵活等等优越性。

但是一个CPU的集成器件是非常多的,如果想要通过手工编写并进行逻辑分析是一件非常困难的事情。并且既然使用FPGA来实现一个CPU已经具有了这么多的灵活性,为什么不充分发挥他的优点,不再单纯的去模仿一些已经存在的处理器,而是设计一个能将FPGA的优势发挥到极致的全新的处理器。NIOS II由此应运而生。

3、NIOS II处理器

2004年,Altera 正式推出了Nios II系列32位RISC嵌入式处理器。Nios II系列软核处理器是Altera的第二代FPGA嵌入式处理器,其性能超过200DMIPS,在Altera FPGA中实现仅需35美分。Altera的Stratix 、Stratix GX、 Stratix II和 Cyclone系列FPGA全面支持Nios II处理器,以后推出的FPGA器件也将支持Nios II。

Nios II包括3种产品,分别是:Nios Ⅱ/f(快速)——最高的系统性能,中等FPGA使用量;Nios Ⅱ/s(标准)——高性能,低FPGA使用量;Nios Ⅱ/e(经济)——低性能,最低的FPGA使用量。这3种产品具有32位处理器的基本结构单元——32位指令大小,32位数据和地址路径,32位通用寄存器和32个外部中断源;使用同样的指令集架构(ISA),100%二进制代码兼容,设计者可以根据系统需求的变化更改CPU,选择满足性能和成本的最佳方案,而不会影响已有的软件投入。

以上为百度百科对Nios处理器的描述,通过以上对软核处理器以及对Nios II的系统性描述,相信大家已经知道软核处理器的作用,接下来我们将使用Quartus 18.1版本来对软核处理器的开发流程进行演示,并开启我们的NIOS II学习之路。

4、开发平台

软件平台:Quatus18.1(已经安装NIOS II开发套件)

硬件平台:友晶科技DE10-LITE开发板

参考文档:NIOS II集成IP文档连接:https://www.intel.com/content/dam/altera-www/global/en_US/pdfs/literature/ug/archives/ug_embedded_ip-18-1.pdf

二、基本开的开发流程--Hello World应用程序

1、硬件设计部分

1)、创建Quartus工程

在这里笔者采用不同的文件夹分类存储工程文件:

2)、设计Nios II CPU

创建工程完成以后,依次选择上方选项卡Tools—Platform Designer,打开Nios ii设计界面,相当于打开了一个设计文件,按Ctrl+S将其保存,命名为nios_core.qsys:

设计界面详解:

3)、为设计添加nios ii CPU:

在IP Catalog中搜素Nios II,并双击如图所示的IP:

在弹出的对话框中Main选项卡中选择CPU的类型,在这里笔者选择Nios II/f,快速型,读者也可以根据需求选择不同的CPU类型:

在Vectors选项卡中,选择的是CPU的复位执行向量和中断向量,在这里由于还没有添加ROM和RAM IP所以暂时忽略

在Caches and Memory Interfaces中选择的是CPU的指令缓存和数据缓存,可以帮助CPU提升执行速度,这里笔者选用默认设计,感兴趣的话读者可以自行了解,笔者会在后续的文章中讲解他们的功能:

Arithmetic Instruction、MMU and MPU Settings、JTAG Debug、Advanced Featurs这些选项卡均保持默认即可,点击Finish完成

4)、为设计添加JTAG_UART IP,参考IP设计文档,可以了解这个IP的功能(文档138页),这里不再赘述。同样是左侧搜索,选择如图所示的IP,双击它,保持默认设置即可:

5)、为设计添加RAM 和ROM,一个CPU想要运行,指令和数据存储器是必不可少的外设,在这里我们搜索onchip memory,双击如图所示的IP进行配置:

首先配置程序存储器-ROM:

然后是数据存储器-RAM:

添加之后对不同的IP进行更名:

6)、连接总线,并配置CPU执行地址Nios II体系中的所有外设通过Avalon交换架构进行连接,在设计界面中的Connections选项卡中可以进行总线连接,此次设计可以根据下图进行连接(点击黑色点进行连接):

最后,双击Nios II IP的名字,打开设置界面,选择Vectors选项卡,将两个选项配置成如图所示:

7)、分配外设的基地址。

在设计完成以后,信息框依然存在很多错误,这个时候我们选择设计工具上方的System选项卡,选择Assign Base Address选项,可以由系统自动分配外设的地址。因为Nios II所采用的Avalon总线是一种存储器映射的总线,如果外设的基地址冲突,会提示错误。

8)、生成硬件按

设计完成以后,Ctrl+S保存设计。保存后点击Close。

点击右下角,Generate HDL功能,配置如图:

生成完成以后,点击Close,最后关闭Platform Designer工具即可:

9)、完成硬件设计

将生成的qip文件添加到工程中,其路径为{Qsys文件所在的路径}\nios_core(qsys文件的名字)\synthesis\nios_core.qip(qsys文件的名字):

按Ctrl+N,新建一个Verilog HDL File来例化处理器,将其保存为cpu_top.v并设为顶层设计文件。

打开如图所示的文件,其模块的信号就是我们要例化的信号:

于是在cpu_top.v中编写例化代码如下:

对工程进行综合,在综合完成以后,将clk信号分配到板载的50Mhz晶振上,将reset_n信号分配到板载的按键上,然后重新综合,并将程序下载到FPGA开发板中。硬件设计部分就此结束。

2、软件设计部分

依次点击Quatus中上Tools—Nios II Software Build Tools for Eclipse启动设计软件,选择工作位置:

在软件的上方选项卡中依次点击File—New—Nios II Application and BSP from Template,并配置如下,点击Finish:

新建完成后打开hello_world.c查看代码内容,本次不涉及软件编程,直接hi用软件生成的模板代码即可:

随后按Ctrl+B对工程进行编译,编译完成以后,点击上方选项卡Run—Run Configurations:

在Project选项卡中选择工程:

Target Connection的配置如图,如果什么都没有可以点击Refresh Connections:

最后点击Run,软件会把程序下载到Nios II处理器中,下载完成以后,软件会自动在下方弹出Nios II console,在该程序中,代码打印了一些内容,在这个控制台中,处理器通过JATG_UART打印了出来:

至此,Nios II软核处理器的软硬件设计开发的基本流程就讲解完毕了,如果存在疑问可以私信读者,我会在后续的文章中更新一些常用的外设和设计中问题的解答。

如果存在不足和不足,还请批评改正。

NIOS II入门学习笔记【一】--- NIOS II软核处理器开发入门相关推荐

  1. 前端入门学习笔记(三十五)vue.js入门(三)条件 v-if 与循环 v-for,v-for 中 in 和 of 的区别

    1.v-if v-if相当好理解,这里我就只贴实例代码了 <div id="app"><p v-if="true">现在你看到我了< ...

  2. 学习笔记Hadoop(十四)—— MapReduce开发入门(2)—— MapReduce API介绍、MapReduce实例

    四.MapReduce API介绍 一般MapReduce都是由Mapper, Reducer 及main 函数组成. Mapper程序一般完成键值对映射操作; Reducer 程序一般完成键值对聚合 ...

  3. 学习笔记(一)-古月ROS机器视觉开发入门 -ROS摄像头驱动及数据接口

    ROS摄像头驱动及数据接口 二维摄像头 我们平常用的最多的就是二维摄像头,大部分笔记本上都会自带一个2d的摄像头,这种摄像头的接口一般是USB接口,市面上看到的罗技摄像头.RGB摄像头等,它们的底层协 ...

  4. node入门-学习笔记

    文章目录 node入门-学习笔记 node 启动node服务 重构express-run node入门-学习笔记 node 为什么后端要用node, 因为它是js js运行时环境 主要使用expres ...

  5. RT-Thread 入门学习笔记 - 解决RT_ASSERT失效的问题

    RT-Thread 入门学习笔记 - menuconfig Kconfig的使用 RT-Thread 入门学习笔记 - 熟悉动态内存申请与释放 RT-Thread 入门学习笔记 - 查看线程栈的地址 ...

  6. [go学习笔记.第二章] 2.go语言的开发工具以及安装和配置SDK

    一.工具介绍: 1.Visual Studio Code 一个运行于Mac,Windows,和linux上的,默认提供Go语言的语法高亮的IED,可以安装Go语言插件,还可以支持智能提示,编译运行等功 ...

  7. NIOS II软核处理器

    前不久,Altera 正式推出了Nios II系列32位RSIC嵌入式处理器.Nios II系列软核处理器是Altera的第二代FPGA嵌入式处理器,其性能超过200DMIPS,在Altera FPG ...

  8. NIOS软核处理器入门实验

    NIOS软核处理器入门实验 脚本方式的优势: •便于工程的复制和搬移, 命令脚本能够较好的解决文件路径的相对关系 •便于参数的集中修改,命令脚本的参数相对集中, 在配置文件的集中区域可以完成所有的设定 ...

  9. dubbo入门学习笔记之入门demo(基于普通maven项目)

    注:本笔记接dubbo入门学习笔记之环境准备继续记录; (四)开发服务提供者和消费者并让他们在启动时分别向注册中心注册和订阅服务 需求:订单服务中初始化订单功能需要调用用户服务的获取用户信息的接口(订 ...

  10. Crypto++入门学习笔记(DES、AES、RSA、SHA-256)

    Crypto++入门学习笔记(DES.AES.RSA.SHA-256) 背景(只是个人感想,技术上不对后面的内容构成知识性障碍,可以skip): 最近,基于某些原因和需要,笔者需要去了解一下Crypt ...

最新文章

  1. MOSS的CSS样式说明,一个老外总结的
  2. QIIME 2教程. 25可用和开发中插件AvailableFuturePlugins(2021.2)
  3. C/C++学习笔记之指针体系
  4. 估价范围还没有生产式的物料帐薄
  5. 剑桥大学工程硕士的安排
  6. C# 使用XML序列化对象(一)
  7. Basic Calculator II
  8. java异常处理简介_【自学java】异常处理简介
  9. 第一次用AX2009正式版!
  10. 多第八田间学校:几何+图论出度+模拟+找到规律
  11. Windows 系统软件有哪些「必备」软件?
  12. xodo pdf android,Xodo PDF查看器和编辑器「Xodo PDF Viewer Editor」
  13. git拉取代码提示:本地分支 has no tracked branch
  14. LinuxDNS域名解析
  15. error: <class ‘xmlrpclib.Fault‘>, <Fault 92: “CANT_REREAD: The directory named as part of the path /
  16. 企业微信自建内部应用Demo源码,附在线Demo及视频讲解,创建测试公司及测试应用简单配置即可使用
  17. 一套绝佳的自定义3dmax快捷键!
  18. Linux shell中21的含义解释 (全网最全,看完就懂)
  19. 我想健康富有聪明怎么导告_富有成效的远程工作(当您的心理健康说“否”时)
  20. 西方文化系列讲座之希腊文化(下)

热门文章

  1. 如何实现批量截取整个网页完整长截图?内容很多很高浏览器看不全Chrome插件崩溃无需安FireShot,优爱酷批量长网页整页截图系统,设计师推荐的必备好工具好方法web2pic,html2jpeg
  2. 好用的计算属性clac
  3. 全球及中国酒店保险箱行业发展现状及需求前景预测报告*2022-2027
  4. 4刀最多切割一个正方体为多少块
  5. mozhe靶场——网络安全——投票系统程序设计缺陷分析
  6. 2020浙江工业大学程序设计迎新赛——决赛(重现赛)G-抽卡
  7. 2020 Multi-University Training Contest 6
  8. 网络抖动工具clumsy
  9. 白话大数据 | 元宇宙来了,但是你了解元数据吗?
  10. Live Streaming