NIOS II 1:点亮LED---NIOS程序固化

1、基本构成

 

2、第一步创建一个普通工程取名LEDTEST

3、tools--Qsys,或者下图快捷键

会进入如下界面,双击修改时钟频率为自己的实际频率

 

4、加入nios II软核

 

5、给软核添加ROM

 

 

6、给软核添加RAM

 

7、给系统添加ID,如果使用多个系统用来区分用

 

 

8、添加IO口

9、设置nios,选定RAM、ROM。之后system--assign base adress

 

 

10、连线,设置ROM从0地址开始,上锁,之后system--assign base adress

11、生成。

12、复制2的部分,关闭qsys

13、建立顶层文件如下:

module LEDTEST
(
CLK_50M,
RST_N,

LEDOUT
);

input            CLK_50M;
input            RST_N;

input            LEDOUT;


mysys u0 (
        .clk_clk               (CLK_50M),               //           clk.clk
        .pio_led_export        (RST_N),        //       pio_led.export
        .pio_led_reset_reset_n (LEDOUT)  // pio_led_reset.reset_n
    );
     
     
endmodule

 

 

14、将软核加入工程

 

 

15、管脚例化,编译

 

16,tools--nios II ……,打开nios,选择工程文件夹

17、file-new-nios II applicatio and bsp from template,SPOC选择如下

 

18、hello_world_small.c文件内容替换如下。PIO_LED_BASE为当时PIO模块名字大写加BASE。此名字在"system.h"文件中有

#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
int main(void) {
alt_u8 led = 0;
alt_u32 i;
while(1)
{
led = 0;
IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, led);//点亮LED灯
i = 0;
while(i<500000) //延时功能,非精确延时,数值太小将无法看到灯的闪烁效果
{
i++;
}
led = 1;
IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, led);//熄灭LED灯
i = 0;
while(i<500000) //延时功能,非精确延时,数值太小将无法看到灯的闪烁效果
{
i++;
} }
return 0;
}

19、右键工程,build project

20、回到quartus,下载sof文件到FPGA

21、回到nios II run-run configureration打开界面,电机nios II hardware打开如下界面

选target connection 如果2没有,点击3直到2出现如下

此时点击1处能看到ID是我们设置的那个

 

之后点击该界面的apply run,能看到LED闪烁

可能看不到,是因为while内什么也没做,被系统优化掉了,此时我们需要如下操作

右键工程--properities  ,如下操作,把优化等级关掉

22、程序固化

右键工程------make targets--build弹出界面

此时看工程多了一个文件如下

此时回到quartus添加我们生成的.qip文件,此界面右键files---

添加此文件到工程

添加完成后,注意文件有三个,名字可能跟以前对不上了,主要是因为不是一次学习的这个内容

全编译quartus工程,之后使用jtag下载FPGA直接能看到闪烁了。不需要再从elipse中下载了。固化使用jtag转成jic、AS直接固化即可。

sof转成jic设置如下

 

 

 

 

注意事项:

1、注意这个复位是整个nios系统的复位,不能连接到其他地方,要双击导出

 

2、当重新编译了qsys硬件部分。我们在eclipse里边需要右键BSP工程,之后点nios II ---------generate BSP

3、此文件能看到我们的硬件信息,qsys内容。所以我们程序一开头加入头文件#include "system.h"。

PIO_LED_BASE  4000,因为在qsys我们定义了4000.所以对这个地址写入1、0能改变LED亮灭

4、#include "altera_avalon_pio_regs.h"这里边给出了很多函数。我们的PIO赋值需要用这个里边的函数

     #include "alt_types.h",此函数定义数据类型的

 

 

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值