SOPC第二课 新手易犯错误和小灯闪烁SOPC代码以及固化讲解

  • QSYS复位端连接错误
    在这里插入图片描述
    在这里插入图片描述
    如上图所示,由于我们的reset是外边按键给的,我说我们需要导出来,但是如果我们点选了,就不会导出了,一旦点选,复位信号由我们的nios系统给。

  • nios是否破解
    在这里插入图片描述
    由于我们的nios IP核的fast版本是收费的,我们需要打开我们的license,看我们是否购买(破解)了nios的IP核.

  • 关闭优化
    在这里插入图片描述
    如果LED灯下载到开发板,仍然未闪烁。那么关闭掉优化,很有可能编译器把延时给优化掉了。

  • 重新生成BSP

只要quartus编译了,就必须重新编译bsp,
在这里插入图片描述

  • 代码解析
    #include “system.h”

在这里插入图片描述
system.h包含了我们在QSYS设计的硬件信息。
我们可以双击打开
在这里插入图片描述
上图代表CPU的频率是50MHz

在这里插入图片描述
在这里插入图片描述
从上面我们可以清晰地看到这个地址,就是我们硬件对应的基地址。
同理我们也可以看到我们的RAM基地址和rom的基地址。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include “altera_avalon_pio_regs.h”
下面我们来查看第二句代码的含义,按住ctrl键,即可打开说明。
在这里插入图片描述
在这里插入图片描述
我们来看一下这三句代表什么意思呢?第一个代表PIO的地址,第二个代表rd,读取pio的数据,第三个代表给pio写入数据。这里我们仅仅用了第三句而已。PIO寄存器的其他特性,我们可以暂时不用管,后面再补充。

#include “alt_types.h”
下面我们来看第三句代码的含义。
这句话代表了数据类型的定义
在这里插入图片描述
我们再看下一句代码
int main(void)
{
alt_u8 led = 0;
那么 alt_u8 代表什么意思呢,代表了数据的定义。
在这里插入图片描述
说明了这是一个unsigned char类型
同理,下一句代码
alt_u32 i;
在这里插入图片描述
这是一个无符号,长整型

while(1)
{
led = 0;
IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, led);//点亮LED灯

第一句赋值初值0
然后对我们的PIO寄存器赋值,这里可以看到用了我们之前说过的 IOWR_ALTERA_AVALON_PIO_DATA 函数,调用此函数
在这里插入图片描述
这个函数是写函数,给一个地址,给一个数据。
我们给了一个基地址,这个地址在哪里定义的呢?
在我们的system.h里面
在这里插入图片描述
另外注意的是PIO_LED 这个名称是我们QSYS中定义PIO的名称,所以,如果直接拷贝别人的代码,一定要把QSYS的名字设置一样。
所以经过了上面的代码,置位为0,就将我们的LED点亮了。

我们再接着看下面的代码

while(i<500000) //延时功能,非精确延时,数值太小将无法看到灯的闪烁效果
{
i++;
}
led = 1;
IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, led);//熄灭LED灯

上面的代码就很容易看懂了,给PIO的寄存器赋值为1,就是熄灭状态

while(i<500000) //延时功能,非精确延时,数值太小将无法看到灯的闪烁效果
   {
	 i++;
   }

}
return 0;
}

然后又延时一段时间,继续while循环,回到开头又赋值为0.

综上述,代码就解释完毕了。
下面我们再做一些补充
搜索字符串:ctrl+H

PIO的寄存器这个头文件在哪里呢/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 如何固化到开发板上
    在这里插入图片描述
    在这里插入图片描述

选中第二个,存储器的初始化文件。
然后点击build
在这里插入图片描述
其中sys_rom.hex就是我们需要的文件
然后回到quartus中,添加文件到工程
在这里插入图片描述
重新编译
这个时候,我们不用再eclipse就能看到我们的效果了。
然后掉电不丢失的话,我们按照quartus的操作就行了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
成功固化实现小灯闪烁

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值