5546|10

5979

帖子

8

TA的资源

版主

楼主
 

【Altera SoC体验之旅】LWHPS2FPGA深入浅出(1)-点亮LED [复制链接]

 
  本帖最后由 chenzhufly 于 2015-3-23 20:48 编辑

作者:chenzhufly  QQ:36886052


   本文主要涉及lightweight HPS-to-FPGA bridge的应用,SoCARM通过lightweightHPS-to-FPGA bridge控制FPGA侧的3LED
1、  硬件环境
硬件平台:Embest SoC --LarkBoard
软件平台:开发板-linux-3.10.31
                 Quartus 14.0

2、  系统设计框图




ARM通过lightweight HPS-to-FPGA bridge控制FPGA侧的3个LED,其中Lark Board中FPGA侧的LED硬件连接如下:


3、  SoC中硬件系统设计
硬件连接关系如下图所示:





其中PIO_LED的地址分配我0x0 - 0xf



硬件系统例化文件如下:
  1. .pio_led_external_connection_export                     (o_fpga_led[2:0]),
复制代码



设计完毕后开始生成硬件系统信息,并在Quartus中编译生成sof文件,接着转换成rbf文件,用来替换TF卡中的rbf文件


具体代码可以详见附件中的工程文件,在此不在赘述

4、ARM侧代码设计
     注意: lightweight HPS-to-FPGA bridge在ARM中的地址映射为0xff200000,通过上面的设计可以看出LED的偏移地址为0,通过这个地址的操作就可以控制FPGA侧的LED.

详细代码如下 blinker.c:
  1. #include <sys/mman.h>
  2. #include <sys/types.h>
  3. #include <sys/stat.h>
  4. #include <fcntl.h>
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <unistd.h>
  8. #include <stdint.h>

  9. #define PAGE_SIZE 4096
  10. #define LWHPS2FPGA_BRIDGE_BASE 0xff200000
  11. #define BLINK_OFFSET 0x0

  12. volatile unsigned char *blink_mem;
  13. void *bridge_map;

  14. int main(int argc, char *argv[])
  15. {
  16.         int fd, ret = EXIT_FAILURE;
  17.         unsigned char value;
  18.         off_t blink_base = LWHPS2FPGA_BRIDGE_BASE;

  19.         if (argc < 2) {
  20.                 fprintf(stderr, "Usage: %s number\n", argv[0]);
  21.                 exit(EXIT_FAILURE);
  22.         }

  23.         /* check the bounds of the value being set */
  24.         value = atoi(argv[1]);
  25.         if (value < 0 || value > 7) {
  26.                 fprintf(stderr, "Invalid delay setting."
  27.                                 "Delay must be between 1 and 15, inclusive.\n");
  28.                 exit(EXIT_FAILURE);
  29.         }

  30.         /* open the memory device file */
  31.         fd = open("/dev/mem", O_RDWR|O_SYNC);
  32.         if (fd < 0) {
  33.                 perror("open");
  34.                 exit(EXIT_FAILURE);
  35.         }

  36.         /* map the LWHPS2FPGA bridge into process memory */
  37.         bridge_map = mmap(NULL, PAGE_SIZE, PROT_WRITE, MAP_SHARED,
  38.                                 fd, blink_base);
  39.         if (bridge_map == MAP_FAILED) {
  40.                 perror("mmap");
  41.                 goto cleanup;
  42.         }

  43.         /* get the delay_ctrl peripheral's base address */
  44.         blink_mem = (unsigned char *) (bridge_map + BLINK_OFFSET);

  45.         /* write the value */
  46.         *blink_mem = value;

  47.         if (munmap(bridge_map, PAGE_SIZE) < 0) {
  48.                 perror("munmap");
  49.                 goto cleanup;
  50.         }

  51.         ret = 0;

  52. cleanup:
  53.         close(fd);
  54.         return ret;
  55. }
复制代码

5、测试结果
运行./blinker 0    LED全亮
运行./blinker 7    LED全灭


6、小结
1)通过上述过程,可以完成通过lightweight HPS-to-FPGA bridge控制FPGA侧LED的目的
2)这个应用比较简单,易于操作,还需要向更加深入的方向努力

FPGA工程文件: test.zip (14.84 MB, 下载次数: 639)





























此帖出自Altera SoC论坛

最新回复

裸跑arm端的LED和这个有什么区别吗??具体流程楼主搞过吗??  详情 回复 发表于 2015-11-9 20:44
点赞 关注(1)
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 

回复
举报

165

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
对FPGA不了解,谢谢楼主的分享。
此帖出自Altera SoC论坛
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
初学,感谢分享!
此帖出自Altera SoC论坛
 
 
 

回复

1891

帖子

2

TA的资源

纯净的硅(中级)

4
 
感谢楼主分享。。。。
此帖出自Altera SoC论坛
个人签名
分享铸就美好未来。。。




 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

5
 
初学,太感谢分享了。
此帖出自Altera SoC论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

6
 
谢谢了哈
此帖出自Altera SoC论坛
 
 
 

回复

19

帖子

0

TA的资源

一粒金砂(中级)

7
 
TKS,SHARE
此帖出自Altera SoC论坛
 
 
 

回复

39

帖子

0

TA的资源

一粒金砂(中级)

8
 
陈版主,刚开始弄SOC,请问下你这是ARM跑裸机点LED的实验吗?
此帖出自Altera SoC论坛
 
 
 

回复

5979

帖子

8

TA的资源

版主

9
 
肯定不是啊,交代的很清楚

1、  硬件环境
硬件平台:Embest SoC --LarkBoard
软件平台:开发板-linux-3.10.31
                 Quartus 14.0
此帖出自Altera SoC论坛
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

10
 
谢楼主分享
此帖出自Altera SoC论坛
 
 
 

回复

38

帖子

1

TA的资源

一粒金砂(中级)

11
 
裸跑arm端的LED和这个有什么区别吗??具体流程楼主搞过吗??
此帖出自Altera SoC论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表