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

 一、什么是软核处理器

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

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值