基于Nios II软核的流水灯
发布日期:2021-06-22 22:48:17
浏览次数:3
分类:技术文章
本文共 2089 字,大约阅读时间需要 6 分钟。
文章目录
文章使用的工具及板子类型
工具:Quartus II 13.1
开发板:Cyclone IV E EP4CE115F29C7
一、PIO的介绍
- 定义 PIO IP核:Avalon-MM从端口和通用I/O端口提供了一个存储器映射(memory-mapped)接口
- 用途 用户逻辑或外围器件提供了简单的I/O控制 例如 ①控制LED灯 ②获取按键的电平变化信息 ③控制显示设备 ④与片外器件通信(SPI, I 2 C {I^2C} I2C)
- 寄存器
偏移量 | 寄存器名称 | 读/写 | 含义 |
---|---|---|---|
0 | data | 读/写 | 读的时候,获取当前PIO输入的端口值,写的时候,输出到PIO端口的值,可配置单向功能 |
1 | direction | 读/写 | 控制每个I/O的数据方向,0为输入,1表示输出 |
2 | interruptmask | 读/写 | 各输入端口的中断使能信号,1表示使能中断 |
3 | edgecapture | 读/写 | 各输入端口的边沿触发中断 |
4 | outset | 写 | 设定输出位位1 |
5 | outclear | 写 | 设定输出位为0 |
二、Nios II软核实现流水灯
(一)硬件部分设计
-
完成基本的硬件部分设计
请先参考下面链接中的硬件部分设计,完成相应的硬件部分设计 -
添加其他IP核
添加PIO 在搜索框上输入pio,选择PIO(Parallel I/O),点击Add 设置宽度(这里我设置为4,表示4个灯的流水灯),默认为8,其他保持默认设置 -
连接时钟和复位
-
设置led的输出
-
系统分配地址
选择System->Assign Base Address -
使用FPGA资源
选择Generate->Generate,保持默认设置,点击Generate,选择Save -
创建顶层文件
回到Quarters,选择New->Verilog HDL File 顶层文件内容module hello_world( input clk, input reset_n, output [3:0] led);//此处的代码可以通过Qsys中的Generate->Generate Example,复制里面的内容,粘贴到此处,进行相应的修改system_qsys u0 ( .clk_clk (clk), // clk.clk .reset_reset_n (reset_n), // reset.reset_n .led_export (led) // led.export );endmodule
保存文件,并编译
问题描述:
Node instance "u_qsys" instantiates undefined entity "system_qsys"
解决方法:
手动添加上面创建的系统 选择File->添加对应的文件->Add->Apply->关闭 -
芯片引脚设置
菜单里选择 Assignments-device,点击 Device pin options 进行 unused pin 设置,可能会收到外部信号的干扰,将未用引脚设置为 As input tri-stated 特殊引脚设置,设置为常规引脚 -
编译完成后,分配管脚
再次编译
(二)软件设计
- 基本软件设计过程 请参考下面链接中,软件设计的过程,完成文件的创建
- 修改代码文件 打开hello_world中的.c文件 内容如下
#include
#include "system.h"#include "altera_avalon_pio_regs.h"#include "alt_types.h"const alt_u8led_data[4]={ 0x01,0x03,0x07,0x0F};int main (void) { int count=0; alt_u8 led; volatile int i; while (1) { if (count==4) { count=0; } else { count++; } led=led_data[count]; IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE, led); //延时的设置 i = 0; while (i<5000000) i++; } return 0;} - 保存编译 点击保存,选择hello_wold_bsp,右键后,选择Nios II中的Generate BSP,编译应用文件,选择hello_world右键后,点击Build Project
(三)下载硬件和软件
- 硬件的下载
- 软件的下载 选择应用工程,右键后,选择Run As中的Nios II Hardware 出现下面问题 点击Refresh Connections解决 选择Apply后,点击Run,就下载完成
三、实际结果
四、参考资料
转载地址:https://blog.csdn.net/qq_43279579/article/details/115917160 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月10日 13时36分57秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Spring 配置最好不要配置 xsd 版本号!
2019-04-27
ArrayList 和 LinkedList 哪个更占空间?
2019-04-27
最全 MyBatis 核心配置文件总结,速度收藏了~
2019-04-27
Spring Boot 静态资源处理,妙!
2019-04-27
别乱提交代码了,你必须知道的 Git 分支开发规范!
2019-04-27
MySQL 8.0 新特性:哈希连接(Hash Join)
2019-04-27
年轻人的第一个 Docker 应用,大大提高生产力!
2019-04-27
delete、truncate、drop,千万别用错了。。
2019-04-27
Oracle 要慌了!华为终于开源了自家的 Huawei JDK——毕昇 JDK!
2019-04-27
再扩招1万人,太猛了。。。
2019-04-27
你还在用分页?试试 MyBatis 流式查询,真心强大!
2019-04-27
MySQL 日志(redo log 和 undo log) 都是什么鬼?
2019-04-27
Spring Boot 启动事件和监听器,太强大了!
2019-04-27
从源码的角度搞懂 Java 动态代理!
2019-04-27
Spring 事务的那些坑,都在这里了!
2019-04-27
为什么 MySQL 不推荐默认值为 null ?
2019-04-27
如何手动获取 Spring 容器中的 bean?
2019-04-27
不敢相信!JDK 8 的 HashMap 依然会死循环…
2019-04-27
如何手动获取 Spring 容器中的 bean?
2019-04-27
一次突发流量引起的 Dubbo 服务拥堵!
2019-04-27