基于Quartus 18.0 Nios IP核 新建Hello_world工程

此内容仅为个人学习笔记,如有不足之处,欢迎指正~

开发环境:Quartus Prime Standard 18.0

开发板型号:野火征途Pro

FPGA型号:EP4CE10F17C8

参考视频链接:正点原子手把手教你学FPGA之Nios II篇-基于开拓者V1_哔哩哔哩_bilibili

1. Platform Designer简介

2. Nios II 简介

Nios II 处理器通过 Avalon 总线与 ROM 和RAM 连接,其中 Avalon 总线用来传输指令与数据。除此之外,Qsys 系统还提供了一个 JTAG 接口,供用户下载和调试程序。

3. 创建Hello_world工程

流程:新建工程——硬件设计——软件设计

系统涉及到的模块:

1、时钟(Clock Source

clk IP 核的全称是 Clock Source,在这里设定我们整个系统的工作时钟频率。

2、nios2_qsys(Nios II(Classic) Processer

这是我们之前对Qsys介绍时了解到,这是整个Qsys的控制中心,起着分配中断、管理地址、调度内存等主要的控制作用,相当于大脑的低位吧,通过Avalon与外界进行通信。

3、片内存储(On-Chip-Memory

这里我们创建了两个片内存储器,ROM和RAM。这两个片内存储器都是利用FPGA的片上存储资源进行实现,除了用于存储指令和数据外,还是程序的运行空间。需要注意的是ROM的实现,在FPGA内部并没有专用的ROM资源,我们通过对 RAM 赋初值,并始终保持该值,使其变得只读,从而实现片内 ROM(只读存储器)。

4、串行通信(JTAG UART Intel FPGA IP

JTAG UART IP 核使用 JTAG 接口来实现上位机与 Qsys 系统之间的串行通信。JTAG UART IP 核为用户提供了 Avalon-MM 接口映射,屏蔽了复杂的 JTAG 接口协议。

5、System ID(Systerm ID Periheral

System ID IP核是一个具有Avalon接口的只读设备,它给每个Nios II系统生成一个唯一的标识符(ID),并将其写入 System ID 核的寄存器中。编译器和用户可以利用该 IP 核来验证编译后的可执行程序与配置到FPGA 中的硬件环境是否匹配。如果可执行程序中的 ID 与 FPGA 中 System ID 核所存储的 ID 不一致,那么程序在运行时可能会出错

3.1 新建工程

和新建FPGA工程步骤一样,起好工程名字(qsys_hello_world),确认好工程路径(将工程文件放在prj文件夹下),规划好工程文件夹组成。

3.2 搭建SOPC (system-on-a-programmable-chip )系统(硬件部分)

流程:搭建系统——配置系统——生成系统

最简单的Qsys系统,包含五个IP核:
        1. Clock Source(默认就有)
        2. Nios II(Classic) Processer
        3. On-Chip-Memory
        4. JTAG UART
        5. Systerm ID Periheral
第一步:打开Platform Designer
法一:点击Tools-Platform Designer法二:直接点击红框处

修改时钟频率(可选)  注:可选 表示此步骤可有可无

第二步:添加嵌入式IP核,搜索栏输入nios, 双击NIos II (Classic)Processor

注意:高版本Quartus会有Nios II(Classic)Processor和Nios II Processor两种,一定要选classic,不然之后下载到硬件的时候会一直提示click cancel to stop using opencore plus ip,time remaining unlimited.

此工程使用默认配置就行,点击Finish

可以修改模块名称,此处名称改为:nios2(可选)

第三步:添加片上存储器,搜索on-chip,双击On-Chip Memory (RAM or ROM)

修改存储大小为10240(10K字节),然后Finish

修改模块名称为:ram(可选)

第四步:添加JTAG UART Intel FPGA IP,搜索jtag,双击JTAG UART(可用于串口通信功能)

可以不做任何配置,点击Finish

第五步:添加System ID Periphcral(作用:生成一个系统ID识别号)

此处可不作修改

以上五部分就是一个最简单的Qsys系统,包含五个IP核:Clock Source(默认就有)Nios II ProcesserOn-Chip-MemoryJTAG UARTSysterm ID Periheral

第六步:连接IP核,点击连接点即可以连接

NIOS需要从ram中取指令,所以连接此处(data_master只与存储设备连接)

实际上,此线下面两个节点也连接上不会影响实验结果

连接中断信号,并设置优先级

JTAG debug复位信号

最后连线图:

第七步:修改处理器复位和异常指向地址,指向ram,双击nios2,如图修改

第八步:分配外设地址

第九步:保存qsys系统,按快捷键 ctrl+s,或者点击File-Save

表示保存成功

第十步:生成FPGA文件,Genaration-Genarate HDL-Genarate

模块例化代码复制 Generate-Show Instantiation Template...-Copy

复制的例化代码:


    system_qsys u0 (
        .clk_clk       (<connected-to-clk_clk>),       //   clk.clk
        .reset_reset_n (<connected-to-reset_reset_n>)  // reset.reset_n
    );

第十一步:缩小Platform Designer窗口后,在rtl文件夹下面创建qsys_hello_world.v文件,并例化system_qsys模块。

rtl文件夹下新建文本文档,并修改名称为qsys_hello_world.v

qsys_hello_world.v 代码:

module qsys_hello_world(
	input	wire	sys_clk,
	input	wire	sys_rst_n
);

    system_qsys u_qsys (
        .clk_clk       (sys_clk		),       	// clk.sys_clk
        .reset_reset_n (sys_rst_n	)  			// reset.sys_rst_n
    );
	
endmodule

第十二步:添加qsys_hello_world.v文件和Qsys文件到工程

1)添加qsys_hello_world.v文件

2)添加Qsys文件(可以添加.qsys文件,也可以添加qsys-synthesis-system_qsys.qip文件,建议后者

添加system_qsys.qip文件:

或者添加.qsys文件:

文件添加成功:

第十三步:编译然后分配引脚

1)编译

2)引脚分配再编译

分配了引脚后再次编译

3.3 软件设计

第一步:打开Eclipse

将路径设置为qsys文件夹下新建的software文件夹

第二步:生成工程及文件

注:板级支持包(软件联系底层硬件的支持包)

第三步:精简bsp(因为ram只有10K),并编译工程

1)精简BSP编译文件的大小:

勾选两个操作:

取消2个勾选:

然后点击Genarate,再点击Exit。

2)编译工程

3.4 上板验证

第一步:下载工程 qsys_hello_world.sof 文件到开发板

回到Eclipse软件:Run-Run Configurations,选择New Configuration,点击Target Configurations

实验成功!!!!

  • 25
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值