打印
[Intel FPGA]

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

[复制链接]
2548|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
之前使用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给出来,从下面波形可以看出这个信号,不是置高后马上置低。
而是,有可能等待下一个读触发的第一个有效数据出来时才置低。







相关帖子

沙发
zyingjie| | 2018-11-20 18:13 | 只看该作者
这个厉害了,LZ加油

使用特权

评论回复
板凳
feihufuture|  楼主 | 2018-11-21 09:11 | 只看该作者
zyingjie 发表于 2018-11-20 18:13
这个厉害了,LZ加油

谢谢了,不过确实是难得的产品开发经验,对官方文档的深刻挖掘!

使用特权

评论回复
地板
飞扬自我| | 2018-11-26 11:10 | 只看该作者
虎兄很给力啊。。。

使用特权

评论回复
5
sdswsasx| | 2019-1-28 14:49 | 只看该作者
感谢分享,期待后续。

使用特权

评论回复
6
51xlf| | 2019-2-13 15:02 | 只看该作者
谢谢分享!                        

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:WX:feihu612 免费合作开发ECAT主从站

171

主题

1027

帖子

97

粉丝