文章目录

  • 一、添加LED和KEY的pio外设
    • 1、黄金参考工程
    • 2、配置pio外设
      • (1)添加pio_KEY
      • (2)添加pio_LED
    • 3、修改Verilog代码
    • 4、全编译
  • 二、生成相应的文件,转移至sd卡内
    • 1、更新dtb文件
    • 2、更新rbf文件
    • 4、替换sd卡中的内容
  • 三、编写C代码实现功能
    • 1、C工程准备
    • 2、C语言实现按键点灯
    • 3、效果演示

一、添加LED和KEY的pio外设

1、黄金参考工程

2、配置pio外设

打开Plaform Designer,右侧搜索pio并双击。

(1)添加pio_KEY

我们使用key1和key2,所以选择2位。

连线:

(2)添加pio_LED

cyclone Ⅴ的板子有四个LED,所以选择4位。

连线:

默认给led和key分配的地址都是0,所以点击分配地址可解决报错。

3、修改Verilog代码

连线完成后点击Genrate HDL,自动实例化。

在top模块中定义接口并实例化

4、全编译

没有错误就很完美

二、生成相应的文件,转移至sd卡内

1、更新dtb文件

打开SOC…Shell

进入黄金工程目录:

make dtb

更新dtb文件

看文件时间是否更新成功

2、更新rbf文件

运行命令:

cd output_files/
./sof_to_rbf.bat


看文件时间是否更新成功


3、更新hps_0.h文件
运行:

./generate_hps_qsys_header.sh


看文件时间是否更新成功

4、替换sd卡中的内容

三、编写C代码实现功能

打开eclipse

1、C工程准备

新建一个Cproject
导入库文件:

将黄金工程的hps_0.h放入工程中

2、C语言实现按键点灯

代码实现:

/** pio_led.c**  Created on: 2022年7月19日*      Author: 哈哈*///标准头文件
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>//HPS厂家提供的底层定义头文件
#define soc_cv_av //开发平台Cyclone V 系列#include "hwlib.h"
#include "socal/socal.h"
#include "socal/hps.h"//与用户具体的HPS 应用系统相关的硬件描述头文件
#include "hps_0.h"#define HW_REGS_BASE (ALT_STM_OFST)//HPS外设地址段基地址
#define HW_REGS_SPAN (0x04000000)//HPS外设地址段地址空间 64MB大小
#define HW_REGS_MASK (HW_REGS_SPAN - 1)//HPS外设地址段地址掩码
static unsigned long *led_pio_virtual_base =NULL ;
static unsigned long *key_pio_virtual_base = NULL;
int led_init(int *virtual_base)
{int fd;void *perph_virtual_base;//1.open打开fd = open("/dev/mem",(O_RDWR | O_SYNC));if(fd == -1){printf("open failed..\n");return 1;}//mmap 映射虚拟地址perph_virtual_base = mmap(NULL,HW_REGS_SPAN, ( PROT_READ | PROT_WRITE ),MAP_SHARED,fd,HW_REGS_BASE);led_pio_virtual_base = perph_virtual_base +(((unsigned)(ALT_LWFPGASLVS_OFST + PIO_LED_BASE))&(unsigned)(HW_REGS_MASK));key_pio_virtual_base = perph_virtual_base +(((unsigned)(ALT_LWFPGASLVS_OFST + PIO_KEY_BASE))&(unsigned)(HW_REGS_MASK));*virtual_base = perph_virtual_base;return fd;
}int main()
{int fd;int i=0;int virtual_base;fd = led_init(&virtual_base);while(1){if(*(key_pio_virtual_base + 0) == 0x01){*(led_pio_virtual_base + 0) = 0x01;}else if(*(key_pio_virtual_base + 0) == 0x02){*(led_pio_virtual_base + 0) = 0x02;}/**(led_pio_virtual_base +0) = 1<<i;i=(i+1)%4;sleep(1);printf("LIGHT:%d ON\n",i);*/}//取消映射
if(munmap(virtual_base,HW_REGS_SPAN) == -1){printf("fail\n");}close(fd);return 0;
}

3、效果演示

FPGA之SOC按键点灯

【SOC FPGA】外设KEY点LED相关推荐

  1. 【SoC FPGA】外设PIO按键点灯

    文章目录 一.前期准备 二.添加PIO外设 一.黄金参考工程 二.配置PIO外设 三.Generation生成 四.黄金参考工程代码修改 五.编译黄金工程 三.生成相应的文件,转移至sd卡内 一.dt ...

  2. 【SoC FPGA学习】五、基于虚拟地址映射的 Linux 硬件编程,在已有工程上实现按键与LED的联动

    参考教程中的以下章节: 小知识点: hps_0.h 文件是qsys生成的FPGA侧外设 0xfc00 0000~0xffff ffff一共是0xffffffff - 0xfc000000 + 1 = ...

  3. 【SoC FPGA学习】二、SoC FPGA硬件初探,基础扫盲

    一.SOC FPGA基础介绍 SOPC介绍 SOC FPGA之前的产品,软核ARM处理器(FPGA制作的处理器,占用FPGA资源,主频较低,但是可以释放该资源) NIOS II + FPGA通过Ava ...

  4. 卫星跟踪算法c语言,以SoC FPGA为设计平台的北斗卫星信号跟踪算法的设计

    0 引言 全球导航卫星系统(Global Navigaon Satellite System,GNSS)是维护国家安全.发展经济的重要基础设施,是体现国家综合国力以及现代化大国国际影响力的重要标志 . ...

  5. DE1-SoC笔记(二)—SoC FPGA开发设计流程总结(de1教程2.1节)

    文章目录 1.所需要的软件 1.1 硬件设计部分 1.2 软件设计部分 1.3 putty 2.各软件的作用 3.SoC FPGA设计流程 3.1.用Qsys构建Hardware系统 3.2.生成Pr ...

  6. soc FPGA(一)

    基于小梅哥Altera SOC FPGA视频课程,基于Cyclone V SOC FPGA:https://www.bilibili.com/video/BV1dE411i7gN?from=searc ...

  7. 由SoC到SOPC、SoC FPGA ,异同优缺点的介绍及常见应用场景

    由SoC到SOPC.SoC FPGA ,异同优缺点的介绍及常见应用场景 目录 由SoC到SOPC.SoC FPGA ,异同优缺点的介绍及常见应用场景 说一说 一.关于SoC 二.关于SOPC 1.概念 ...

  8. Cyclone V SoC FPGA学习之路第一章:综述

    Cyclone V SoC FPGA学习之路第一章:总体了解 关键词: adaptive logic modules – ALM 自适应逻辑模块 logic array block --LAB 逻辑阵 ...

  9. FPGA 双按键控制LED呼吸灯实现

    FPGA &&双按键控制&&LED呼吸灯实现 文章目录 FPGA &&双按键控制&&LED呼吸灯实现 1.按键脉冲设计 1.1按键脉冲信 ...

最新文章

  1. Sql Server系列:触发器
  2. 小F的2013应届校招历程小结
  3. 导出到Excel的操作
  4. java多线程(一)-Thread类和Runnable接口
  5. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 3丨删除重复的电子邮箱【难度简单】
  6. 错过就找不到了 Java API文档 免费下载!!!
  7. 出现梯度消失与梯度爆炸的原因以及解决方案
  8. Ubuntu终端常用的快捷键,光标移动到开始位置
  9. Python地图可视化利器folium学习实践
  10. 署名用by还是from_介词专题|工作“到7点”是By 7pm还是Until 7pm?
  11. 在那里可以下载jar包?
  12. 税控服务器组件接口v2.1.1.1,税控开票服务器组件接口规范标准版V1.9(2016.04.04).pdf...
  13. 【解决:Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2....Could not star】
  14. 区块链三加一告诉你如何快速了解区块链入门技术?
  15. 可视化工具 roto 3t
  16. 公司搬迁后第一次到新公司上班
  17. distill_basic_teacher
  18. 周期函数的傅里叶级数展开
  19. galaxy nexus升级包takju-jop40d的boot.img和recovery.img中ramdisk对比
  20. 利用mininet进行链路拥塞造成数据丢包的实验

热门文章

  1. 超详细github配置(仔细看,看完不会,你怪我)
  2. 一个高性能、轻量级的分布式内存队列系统--beanstalk
  3. 猫猫分享 iOS 适配iPhoneXS Max,iPhoneXS,iPhoneXR
  4. Bi-cubic interpolation
  5. 有度 java sdk开发,GitHub - Kisssky/youdu-sdk-java: ydsdk实现的java版
  6. Koa项目搭建----从零搭建Koa项目
  7. 电影:『十七岁的单车』
  8. python串口通信 - serial
  9. 区间动态规划考试反思总结——颜色联通块 分离与合体 括号涂色
  10. 【牛股密探】发掘牛股追寻主升浪启动的大牛股选股公式(含主幅图预警)