[Intel FPGA] intel FPGA+Cyclone5 SOC产品开发经验总结

[复制链接]
209|3
 楼主 | 2018-11-19 11:04 | 显示全部楼层 |阅读模式
之前使用Cyclone5 SOC开发过一款产品,总结了很多经验,由于篇幅限制,下面就从个人总结文献中摘取一部分共享出来:




14C5 SOC的地址映射重点—与ZYNQ不同
l  着重参考官网文档CV_5V4第2章“Introduction to the Hard Processor System Address Map”
l  该芯片给每一大类都分配了一个固定的基地址:

                              
fpgaslave+peripheral总共960+64=1024MB
peripheral64MB地址为0xFC0000000xFFFFFFFF,也就是说
轻量级fpga slave2MB正处于peripheral64MB地址空间中,这点对于linux地址映射至关重要。下图也可以看出这点:
那么,映射方法是,先在FC000000上映射出虚拟地址,映射为大小为0400,即64MB,再利用ALTERASOC特别的方式得到linux操作设备的最终地址。代码如下:
cfg = mmap(NULL,0x04000000, PROT_READ | PROT_WRITE, MAP_SHARED, mmapfd, 0xFC000000);
h2p_lw_led_addr= cfg + ((unsigned long)(ALT_LWFPGASLVS_OFST + LED_PIO_BASE) & (unsignedlong)(HPS_Reg_Span - 1));
l  关于f2h_sdram接口寻址
在“SDRAM Address Space”节中说The SDRAM address space is up to 4 GB. The entire address space canbe accessed through theFPGA-to-HPS SDRAM interface from the FPGA fabric.
l  hps外设编址从FC000000开始,在文档有详细解说。
l  对于轻量级FPGA slave,正是我们需要使用的,寄存器、状态、led等通信要使用,与zynq不同的是:
HPS访问的地址=上表中给定的基地址+QSYS中分配的偏移地址+虚拟地址而zynq中,PS访问的地址=VIVADO中分配的基地址+虚拟地址,没有什么给定的基地址。

27C5 SOC调试总结
(1)LINUX使用cat装载rbf文件不成功
原因之一:前次ARM死机后,rbf文件未同步到存储器中,文件系统中的文件不完整导致不能再装载。
解决办法:在将rbf传输到linux系统中后,使用sync同步一下。
(2)ARM先写内存,FPGA再写内存,ARM再读内存,读出来的数据不是FPGA写进去的数据
原因:虽然FPGA后写,但是由于FPGA写指令与ARM的写指令相隔时间很短,两者在内存控制器上获取的控制权是不确定的,故有可能ARM读出的数据是ARM写进去的数据。
(3)AXI3总线,输出的读操作地址RdAddr直接赋值常数,fpga程序能加载但不会工作,而采用这种寄存器的模式,就工作正常了。
                              
(4)M_AXI_RLAST,这个是L3给出来,从下面波形可以看出这个信号,不是置高后马上置低。
而是,有可能等待下一个读触发的第一个有效数据出来时才置低。







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
| 2018-11-20 18:13 | 显示全部楼层
这个厉害了,LZ加油
 楼主 | 2018-11-21 09:11 | 显示全部楼层
zyingjie 发表于 2018-11-20 18:13
这个厉害了,LZ加油

谢谢了,不过确实是难得的产品开发经验,对官方文档的深刻挖掘!
| 2018-11-26 11:10 | 显示全部楼层
虎兄很给力啊。。。
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

快速回复 返回顶部 返回列表