FPGA开发从逻辑设计做起,结合软+硬+系统很重要

大多数fpga设计者从逻辑设计做起,对软件级设计接触不多,但目前的项目中都少不了处理器软件c的设计,下面接着看下《ultrafast 嵌入式设计方法指南》中关于软件设计方面的内容,主要分3部分:软件设计需要考虑的事项、设计流程及调试等。
1. 软件设计考虑事项
软件设计时,需要先搭建一个处理器到系统中,处理器可以是硬核(如zynq的arm),也可以是软核(如nios ii),所有的内容均围绕处理器方面设计展开:处理器配置,操作系统选择,库和中间件,启动加载器,软件开发工具(sdk)。
处理器配置:配置核心频率、多处理单元协调和数据程序存储空间分配、中断等;
操作系统选择:选择操作系统活着裸跑;
库和中间件:方便设计者高效的使用底层硬件的过渡层接口;
启动加载器:方便操作系统的boot设计;
软件开发工具:c开发环境,类似nios ide开发环境。
当我们自己在逻辑部分设计了一个底层逻辑后通过接口(一般是总线接口)连接到处理器后,也可以自定义自己的操作接口,通过sdk来操作底层逻辑。如三角函数处理器运算太慢,可以在逻辑中设计一个三角函数后sdk中只需将运算的数据写入对应reg中后得到运算结果,这就实现了硬软件协调处理功能。
2. 软件设计流程
软件设计流程如下图:
其中:
板启动开发工作包括开发低级固件、设置启动次序、针对接口和外设的基本测试,划分了下列阶段:ps 初始化 ,pl 配置 ,储存器和外设测试,软件和硬件调试;
驱动开发为 soc 和板载外设开发软件驱动,用于为os或裸机应用等更高软件层建立接口;
针对裸机或 linux 或 freertos 等操作系统开发出了相关可运行应用。
设计中要注重层次,多学习c++等高级语言设计技巧,这样可以保证设计的简洁和可维护性,一般fpga对c设计接触比较少从业者写的c代码一团乱麻。
3. 调试
系统调试中,pl部分就是我们常用的modelsim仿真+在线逻辑分析仪等,ps部分就是断点、单步,查看内存等。关于调试的经验技巧下次搞篇文章分享。
软件调试中,需要在处理器配置配置合适的的选项,sdk中灵活使用,同时需要注意:调试完成得到最终发行版本时,记得去掉在线逻辑分析仪和处理器jtag配置,因为这样会省掉不少资源,时序和功耗当然会更好。
4. 其它
理解启动加载器的流程对理解软硬件协同+linux有很大帮助:
在为soc 加电时,启动过程从bootrom 开始。启动过程先从片上储存器 (ocm) 加载然后启动执行第一阶段启动加载器 (fsbl)。fsbl负责配置具体的初始化。
然后根据软件架构,第二阶段启动加载器,如使用嵌入式 linux 时的 u-boot进行初始化并执行。 fsbl 和/或 ssbl 启动 rtos 或嵌入式 linux 以及应用代码。如果没有操作系统,则是裸跑,好多步都没有。简单说裸跑就是51单片机c程序开发,而跑系统则是arm高端应用程序开发,原理性相差不大,可以自己查阅资料了解,不需要马上都懂,因为随着时间和经验的积累,这些你会慢慢要了解并使用巩固。
5. 总结
fpga大多是逻辑开发者,但只做逻辑的话局限性太大,而且现在的趋势也是fpga软件话了,sdsoc就是证明。所以,我们应该提前扩充知识面,而且你会发现复杂软件设计和操作系统经验上有很多技巧也可以借鉴,更好地借鉴能帮助我们软+硬+系统结合,设计出更有成就感的架构应用于项目中。

护眼灯该怎么选,这些你有考虑到吗
骨传导蓝牙耳机哪个牌子好,骨传导耳机品牌排行榜
精准定位市场 长虹激光电视成行业首选
利用经过认证的 LoRaWAN 模块加速远距离连接的开发
小米6Plus什么时候上市?小米6Plus还未发布,手机壳就已上架淘宝,像不像小米6的放大版?
FPGA开发从逻辑设计做起,结合软+硬+系统很重要
软通动力携旗下两家子公司分别与雄安集团达成战略合作
LG化学将2020年电池产能目标提升约29%
电磁兼容emc测试系统
人工智能助力视频监控,已成为构建公共安全视界的核心
Opensignal发布部分国家5G速率排名:韩国第一、美国垫底
网格系统与仪表盘设计实践分享
泛半导体装备供应商合肥欣奕华开启上市辅导
我国面向2021年的5G建设规划正加速制定
MOS晶体管I-V特性
后处理的故障不总是尿素泵故障
华为P30 Pro拆解
智能温湿度记录仪在生鲜冷链物流中的作用是什么
八款5G基带芯片对比,谁才是王者?
谷歌被曝进行AI军事项目 百度地图智能语音用户突破2亿