SOPC第三课---同时点亮4个LED灯闪烁

本栏目将会介绍Alteral的SOPC系列,整个过程不会沿袭教材,那样就成了抄教材了,而是将课程笔记汇总,并且把一些我实验过程中犯过的错误记录下来。
更新时间比较缓慢。
资源: 锆石A4开发板
小梅哥AC620开发板
----

  • 介绍
    SOPC是基于FPGA的SOC系统
  • 建立基于NIOS II处理器系统来控制一个LED灯闪烁
  • 创建工程

在这里插入图片描述

  • 打开QSYS
    在这里插入图片描述
    nios的3种性能
    经济型,标准型,快速型
    硬件乘法器的类型默认使用嵌入式的硬件乘法
    exception vector(异常向量)
    出现异常后,从哪一个地址开始运行。
    MMU and MPU
    要在nios跑linux系统才勾选,
    细节在以后的应用中再不断补充

  • 建系统

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们建立好上面的系统。
指令总线就是加减乘除
数据总线就是数字。所以对于存储的设备,我们会进行加减乘除等运算。但是对于输出管脚等非存储设备,我们只用将CPU的数据送达即可,不需要将指令送达。指令在存储类设备or cpu中完成。
我们的pio需要导出,控制着我们的led亮or灭
地址,我们可以自动分配。如果我们要清醒ROM从0开始分配,用小锁锁住即可,再进行自动分配。
另外设置好nios里面的复位向量(指向ROM)和异常向量(指向RAM)
注意nios时钟要与实际的时钟一致
将HDL example拷贝到quartus顶层文件当中。
在这里插入图片描述
并记得把我们的qsys系统纳入我们的FPGA工程。

在这里插入图片描述
我们现在把PIO改为控制4个灯
注意只有在generate过后,才会生成正确的HDL模板

在这里插入图片描述
注意我们添加的QSYS系统是.qip
管脚分配,可在assignment edtor里面把之前的管脚名字删除,然后重新分配管脚

#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 = 0X0;
IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_0_BASE,0XF);//此寄存器控制PIO的方向
IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, led);//点亮LED灯
i = 0;
while(i<500000) //延时功能,非精确延时,数值太小将无法看到灯的闪烁效果
{
i++;
}
led = 0XF;
IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, led);//熄灭LED灯
i = 0;
while(i<500000) //延时功能,非精确延时,数值太小将无法看到灯的闪烁效果
{
i++;
}
}
return 0;
}

另外记得一旦quartus编译过后,一定要重新生成bsp
一定要先保存,再编译,eclipse不会自动保存
下面是测试结果

在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值