• 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的操作就行了



成功固化实现小灯闪烁

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

  1. eclipse新手易犯错误, eclipse快捷键失效错误;

    太低级的错误了,对于eclipse开发人员来说,但对于新手确实很愁啊: 刚接触eclipse,打开一个项目后,查找方法实现等一些快捷键都失效了:连ctrl + s 都不管用了:网上查找可能是输入法修改 ...

  2. OpenERP新手易犯错误之res.model

    接触OpenERP的人都感慨资料之少,尤其是XML中,出点错是相当郁闷的.尤其是新手.什么都别说了,有图有真相. 视图中关联模型name="model" ,而动作中name=&qu ...

  3. qt官网下载指导(新手易犯错误)

    一.获取资源 注意这里不要直接百度qt的官网,如果直接百度下载会让你注册一个qt的账号,并且一般没人下载最新版的qt6.当然也可以下载旧的版本,但是由于本人比较愚笨,还没有在官网找到qt旧版本的入口地 ...

  4. FPGA逻辑设计回顾(1)新手易犯的逻辑综合错误之always块

    前言 注:本文首发自FPGA逻辑设计回顾(1)新手易犯的逻辑综合错误之always块 本文中用到了如下的小标题: "心中有路"与综合推断 "心中无路"与无从推断 ...

  5. OSDev——初学者易犯错误

    原文链接:https://wiki.osdev.org/Beginner_Mistakes 主页:https://blog.csdn.net/qq_37422196/article/details/1 ...

  6. java代码书写易犯错误

    java代码书写易犯错误: 常见报错: 控制台报错: 找不到或无法加载主类 HelloWorld 原因: java.lang.NoClassDefFoundError: cn/itcast/day01 ...

  7. Python 新手常犯错误

    Python 新手常犯错误(第一部分) http://blog.jobbole.com/42706/ Python 新手常犯错误(第二部分) http://blog.jobbole.com/43826 ...

  8. Python初学者易犯错误集合

    Python初学者易犯错误集锦 注释与数据类型使用 分支判断/循环语句 函数定义与使用 模块导入与使用 类与对象 异常处理 与C/C++.Java等编译型语言相比,Python语言显得更简洁优雅,敲起 ...

  9. 遍历ArrayList易犯错误

    场景: 将ArrayList中符合条件的记录删掉,第一时间写出的程序如下: foreach (string aStr in  aList)             {                  ...

最新文章

  1. python pandas筛选数据_Python pandas从字符串列的数据选择中筛选出nan
  2. linux automake 卸载,linux下open-vswitch安装卸载操作
  3. ubuntu 下安装 VIM 依赖vim-common错误
  4. 苹果在GitHub上正式开源iOS内核源码
  5. java之InetAddress类和InetSocketAddress的使用
  6. 大数据和后端学习知识体系思维导图
  7. 网站地图sitemap.xml的格式
  8. python中如何表示_新行在Python中是如何表示的?
  9. eclipse安装svn服务器
  10. opencv 获取图像最大连通域 c++和python版
  11. 深入理解 Java 中 protected 修饰符
  12. java snakeyaml_java – 使用SnakeYAML的嵌套构造
  13. Your GPU Compute Capability计算能力
  14. 360无线网怎么没有网络连接到服务器,360路由器设置成二级路由器教程 | 192路由网...
  15. P02014250陈彦菁 信息论
  16. sudo -i和sudo -s
  17. C++ Primer Plus 自学第六章结尾编程9题
  18. UIColor 常用方法
  19. 实战-H3C交换机之Web界面
  20. 跟wms通信_应用与WMS的关联

热门文章

  1. gslang——原生golang/RPC描述语言简介
  2. HTML big 标签
  3. SiteMesh:一个优于Apache Tiles的Web页面布局、装饰框架
  4. VC++中操作XML(MFC、SDK)
  5. 这么烂的游戏也能卖2000万吗?
  6. fedora15换主题
  7. UA MATH571B 试验设计IV RCBD与Latin Square上
  8. UA MATH571A 多元线性回归V 自相关与非线性模型简介
  9. VC++6绘制GIS地图不同类型的点
  10. ArcGIS License Manager 相关总结