9578|13

1891

帖子

2

TA的资源

纯净的硅(中级)

楼主
 

尝一下DE1-SoC—HPS--FPGA [复制链接]

         
尝一下DE1-SoC—HPS--FPGA



  
关键词:Cyclone V 、5CSEMA5、 DE1-SoC
     学习DE1-SoC也有三个星期了,来个小结性总结吧。
       这篇帖子,并不是技术,而只是个科普而已,仅供娱乐,开心的我也是不行。

感想:我也是开心 的快要哭了,整个人感觉都不好了。整体的对这个SoC的印象就是ARMFPGA关于AMBA4.0的一段恋情。。。开发起来也是复杂的不行,首先你得会ARMFPGA,还得会用AMBA。作为一个基本不知道FPGA是什么的东东的我来说确实有点难度。
         走在学习的小路上。。。

一、拆机器卖零件

起因听这次altera体验活动的组织者也就是论坛管理员@phantom7说芯片加起来比板子值钱的。当时感觉她在逗我玩,怎么可能芯片加起来比板子还贵,那不是赔钱卖板子的么。

经过:自己去arrow随便点了几个板子上有的芯片放到了购物车。

结果:发现了一条发家致富的道路,就是拆机器卖零件。。。

世界太复杂,我搞不明白呀
还是看图片吧,有图有真相。

3-1:DE1-SoC价格

3-2:芯片价格
          有了上面的经验,瞬间也是开心的不行,机智的我拿起来来了米尔科技的Z-turnBoard 开发板(RMB850),准备拆机器卖零件。结果发现板载Xilinxzynq7000家族的那个小芯片 ZC7z010)大概是$60+。这次不能拆机器卖零件了。两颗SoC都是dual ARM Cortex-A9,一个85K、一个25K,具体的细节,倘若后面有时间,写个小小的对比与大家分享。

二、CycloneV SE简介


3-3Cyclone简介
Cyclone VCycloneIV的提升


3-4CycloneIVV的区别

Cyclone V下的各种的种类也是各种的各种多。

3-5Cyclone V种类

所以来讲个命名规则吧,因为要围绕DE1-SoC的板载芯片来讲,所以看看CycloneVSESXST)命名规则如下:


3-6SESXST
DE1-SoC板载一颗型号为:5CSEMA5F31C6N的芯片,关于这个芯片的性能与功能,请参照图3-3自行脑补,或者参看下面的图3-789

3-75CESA5功能





3-85CESA5F31封装







3-95CESA5F31 JESD51-1
(上面这个测试,细节我也不懂,只不过好大上,就贴在上面了

三、HPS---FPGA

DE1-SoC开发板入门资料还是不错的,不过都是英文,四六级都没过的我,开着这些资料开心的我也是快要哭了
看看下面这个图,可能对Cyclone的开发工具和CycloneV的内部结构有点了解,如下:


3-ACyclone V
首先看一下面的几个单词,其实用过Cortex-M的单片记得同学,除了AXI对下面的应该很熟悉的
AMBA(AdvancedMicrocontroller Bus Architecture)
AHB(theAdvanced High-performances Bus)
ASB(theAdvanced System Bus)
APB(theAdvanceed Peripheral Bus)
AXI(AdvancedeXtensible Interface)
AMBA® 4   :    AXI4™, AXI4-Lite™, or AXI4-Stream™Protocol.

AMBAARM公司设计的通信总线。AXI4.0是对3.0的升级,可以通过它来进行ARMFPGA的通信。具体的就参考ARM官网的用户手册吧。
ARMFPGA来直观的看一看,其实就是下面这个样子的:

3-BSoC
两个独立的东东,做到了一个芯片上,通过总线互联。
其实是这个样子的:

3-C:总线
M:master                     S: slave
FPGA-to-HPS bridge
HPS-to-FPGA bridge
Lightweight HPS-to-FPGA bridge
DE1-SoC提供了QuartusII 的一个基本的项目,DE1-SoC板子的资源已经设置好,可以在这个基础上做一些开发。
例程是做了一个简单的流水灯的程序。
只需要做点小小的改动就可以完成对HPSFPGA这块相应的简单的开发。在Qsys中添加好PIO模块之后,设置好系统总线。编译好项目之后,通过JTAG配置到FPGA中。



3-DJTAG调试

接着,将IO口地址虚拟映射到虚拟地址之后,通过“/dev/mem”就可以操作了,在HPS上执行的C语言代码如下:

  1. <blockquote>#include <stdio.h>
复制代码
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <fcntl.h>
  4. #include <sys/mman.h>
  5. #include "hwlib.h"
  6. #include "socal/socal.h"
  7. #include "socal/hps.h"
  8. #include "socal/alt_gpio.h"
  9. #include "hps_0.h"

  10. #define HW_REGS_BASE ( ALT_STM_OFST )
  11. #define HW_REGS_SPAN ( 0x04000000 )
  12. #define HW_REGS_MASK ( HW_REGS_SPAN - 1 )

  13. int main() {

  14.         void *virtual_base;
  15.         int fd;
  16.         int loop_count;
  17.         int led_direction;
  18.         int led_mask;
  19.         void *h2p_lw_led_addr;

  20.         // map the address space for the LED registers into user space so we can interact with them.
  21.         // we'll actually map in the entire CSR span of the HPS since we want to access various registers within that span

  22.         if( ( fd = open( "/dev/mem", ( O_RDWR | O_SYNC ) ) ) == -1 ) {
  23.                 printf( "ERROR: could not open "/dev/mem"...\n" );
  24.                 return( 1 );
  25.         }

  26.         virtual_base = mmap( NULL, HW_REGS_SPAN, ( PROT_READ | PROT_WRITE ), MAP_SHARED, fd, HW_REGS_BASE );

  27.         if( virtual_base == MAP_FAILED ) {
  28.                 printf( "ERROR: mmap() failed...\n" );
  29.                 close( fd );
  30.                 return( 1 );
  31.         }
  32.        
  33.         h2p_lw_led_addr=virtual_base + ( ( unsigned long  )( ALT_LWFPGASLVS_OFST + PIO_LED_BASE ) & ( unsigned long)( HW_REGS_MASK ) );
  34.        

  35.         // toggle the LEDs a bit

  36.         loop_count = 0;
  37.         led_mask = 0x01;
  38.         led_direction = 0; // 0: left to right direction
  39.         printf(" HelloWorld! \n");
  40.         while( loop_count < 60 ) {
  41.                
  42.                 // control led
  43.                 *(uint32_t *)h2p_lw_led_addr = ~led_mask;

  44.                 // wait 100ms
  45.                 usleep( 400*1000 );
  46.                
  47.                 // update led mask
  48.                 if (led_direction == 0){
  49.                         led_mask <<= 1;
  50.                         if (led_mask == (0x01 << (PIO_LED_DATA_WIDTH-1)))
  51.                                  led_direction = 1;
  52.                 }else{
  53.                         led_mask >>= 1;
  54.                         if (led_mask == 0x01){
  55.                                 led_direction = 0;
  56.                                 loop_count++;
  57.                         }
  58.                 }
  59.                
  60.         } // while
  61.        

  62.         // clean up our memory mapping and exit
  63.        
  64.         if( munmap( virtual_base, HW_REGS_SPAN ) != 0 ) {
  65.                 printf( "ERROR: munmap() failed...\n" );
  66.                 close( fd );
  67.                 return( 1 );
  68.         }

  69.         close( fd );

  70.         return( 0 );
  71. }
复制代码





3-E:编译环境

感觉上面那个东东就是一个类似的Cygwin。完美执行linux指令,开心的我也是不行。。


3-F:调试

编译之后将,可执行文件放到开发就可以发布运行了。

至此,也是结束了,开心的我也是不行

总算有点明白了ARM与FPGA之间的这段  “奸情”  





此帖出自FPGA/CPLD论坛

最新回复

有趣,很好的入门总结  详情 回复 发表于 2017-7-4 17:56
点赞 关注(1)
个人签名
分享铸就美好未来。。。




 

回复
举报

8

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
不错不错!
此帖出自FPGA/CPLD论坛

点评

哈哈。。。。  详情 回复 发表于 2015-5-21 12:11
 
 

回复

3028

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 
发现了一条发家致富的道路,就是拆机器卖零件。。。
我也赞同啊  楼主努力啊
此帖出自FPGA/CPLD论坛

点评

好,一起入伙,哈哈  详情 回复 发表于 2015-5-21 12:12
 
 
 

回复

1891

帖子

2

TA的资源

纯净的硅(中级)

4
 

哈哈。。。。
此帖出自FPGA/CPLD论坛
个人签名
分享铸就美好未来。。。




 
 
 

回复

1891

帖子

2

TA的资源

纯净的硅(中级)

5
 
凤凰息梧桐 发表于 2015-5-21 11:25
发现了一条发家致富的道路,就是拆机器卖零件。。。
我也赞同啊  楼主努力啊

好,一起入伙,哈哈
此帖出自FPGA/CPLD论坛
个人签名
分享铸就美好未来。。。




 
 
 

回复

1025

帖子

1

TA的资源

纯净的硅(高级)

6
 
哈哈,写的不错,很cute,也很详尽,撸主对文档研究的比较细致

另外拆机器买芯片这条发家致富的路就别走了,到时候会亏的裤子都没的穿的
此帖出自FPGA/CPLD论坛

点评

你不早说,我把裤子都卖了。。。  详情 回复 发表于 2015-5-21 21:32
 
 
 

回复

5979

帖子

8

TA的资源

版主

7
 
恩 恩 不错的开始
此帖出自FPGA/CPLD论坛

点评

开心的我也是快要哭了。。。。。  详情 回复 发表于 2015-5-21 21:31
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 
 

回复

1025

帖子

1

TA的资源

纯净的硅(高级)

8
 
不过我之前倒是没有care过DE1-SOC的板子用的5CSEMA5,还以为都是5CSX系列的芯片

之前也纳了闷了,难道真用那种普通的插针来引高达3.125Gbps的serdes接口咩?

现在终于知道了,原来是这样,压根没有serdes,多谢撸主分享,嘿嘿
此帖出自FPGA/CPLD论坛

点评

哈哈。  详情 回复 发表于 2015-5-21 21:30
 
 
 

回复

1891

帖子

2

TA的资源

纯净的硅(中级)

9
 
lelee007 发表于 2015-5-21 21:21
不过我之前倒是没有care过DE1-SOC的板子用的5CSEMA5,还以为都是5CSX系列的芯片

之前也纳了闷了,难道真用那种普通的插针来引高达3.125Gbps的serdes接口咩?

现在终于知道了,原来是这样,压根没有serdes,多谢撸主分享,嘿嘿

哈哈。
此帖出自FPGA/CPLD论坛
个人签名
分享铸就美好未来。。。




 
 
 

回复

1891

帖子

2

TA的资源

纯净的硅(中级)

10
 
chenzhufly 发表于 2015-5-21 21:21
恩 恩 不错的开始

开心的我也是快要哭了。。。。。
此帖出自FPGA/CPLD论坛
个人签名
分享铸就美好未来。。。




 
 
 

回复

1891

帖子

2

TA的资源

纯净的硅(中级)

11
 
lelee007 发表于 2015-5-21 21:19
哈哈,写的不错,很cute,也很详尽,撸主对文档研究的比较细致

另外拆机器买芯片这条发家致富的路就别走了,到时候会亏的裤子都没的穿的

你不早说,我把裤子都卖了。。。








此帖出自FPGA/CPLD论坛
个人签名
分享铸就美好未来。。。




 
 
 

回复

6423

帖子

16

TA的资源

版主

12
 
那个shell应该就是cygwin,装EDS时候装上的
此帖出自FPGA/CPLD论坛

点评

thanks......  详情 回复 发表于 2015-5-22 22:25
个人签名training
 
 
 

回复

1891

帖子

2

TA的资源

纯净的硅(中级)

13
 
白丁 发表于 2015-5-22 22:09
那个shell应该就是cygwin,装EDS时候装上的

thanks......
此帖出自FPGA/CPLD论坛
个人签名
分享铸就美好未来。。。




 
 
 

回复

6

帖子

1

TA的资源

一粒金砂(初级)

14
 
有趣,很好的入门总结
此帖出自FPGA/CPLD论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表