0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

DuaO_fpga234 来源:互联网 作者:佚名 2018-02-05 10:49 次阅读

大多数FPGA设计者从逻辑设计做起,对软件级设计接触不多,但目前的项目中都少不了处理器软件C的设计,下面接着看下《UltraFast 嵌入式设计方法指南》中关于软件设计方面的内容,主要分3部分:软件设计需要考虑的事项、设计流程及调试等。

1. 软件设计考虑事项

软件设计时,需要先搭建一个处理器到系统中,处理器可以是硬核(如ZYNQ的ARM),也可以是软核(如NIOS II),所有的内容均围绕处理器方面设计展开:处理器配置,操作系统选择,库和中间件,启动加载器,软件开发工具(SDK)。

  • 处理器配置:配置核心频率、多处理单元协调和数据程序存储空间分配、中断等;

  • 操作系统选择:选择操作系统活着裸跑;

  • 库和中间件:方便设计者高效的使用底层硬件的过渡层接口

  • 启动加载器:方便操作系统的BOOT设计;

  • 软件开发工具:C开发环境,类似NIOS IDE开发环境。

当我们自己在逻辑部分设计了一个底层逻辑后通过接口(一般是总线接口)连接到处理器后,也可以自定义自己的操作接口,通过SDK来操作底层逻辑。如三角函数处理器运算太慢,可以在逻辑中设计一个三角函数后SDK中只需将运算的数据写入对应reg中后得到运算结果,这就实现了硬软件协调处理功能。

2. 软件设计流程

软件设计流程如下图:

其中:

  • 板启动开发工作包括开发低级固件、设置启动次序、针对接口和外设的基本测试,划分了下列阶段:PS 初始化 ,PL 配置 ,储存器和外设测试,软件和硬件调试;

  • 驱动开发为 SoC 和板载外设开发软件驱动,用于为OS或裸机应用等更高软件层建立接口;

  • 针对裸机或 LinuxFreeRTOS 等操作系统开发出了相关可运行应用。

设计中要注重层次,多学习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就是证明。所以,我们应该提前扩充知识面,而且你会发现复杂软件设计和操作系统经验上有很多技巧也可以借鉴,更好地借鉴能帮助我们软+硬+系统结合,设计出更有成就感的架构应用于项目中。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1626

    文章

    21669

    浏览量

    601866
  • 嵌入式
    +关注

    关注

    5068

    文章

    19019

    浏览量

    303308
  • Linux
    +关注

    关注

    87

    文章

    11229

    浏览量

    208931

原文标题:《UltraFast 嵌入式设计方法指南》(3)——软件级

文章出处:【微信号:fpga234,微信公众号:fpga234】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA培训--FPGA高级逻辑设计研修班

    使用 ? 系统仿真与仿真平台的建立2. 高级状态机设计方法与实例 状态机作为逻辑设计重要组成部分,其设计技巧也成为逻辑设计研究的重点。不论是算法的实现还是接口电路的设计都离不
    发表于 07-24 13:13

    FPGA高级逻辑设计培训

    ;nbsp;   同时随着FPGA在整个系统中开始扮演越来越重要的角色,FPGA的接口技术,以及与外部处理器、功能芯片之间甚至是其他
    发表于 03-10 17:52

    FPGA高级逻辑设计培训

    ;nbsp;   同时随着FPGA在整个系统中开始扮演越来越重要的角色,FPGA的接口技术,以及与外部处理器、功能芯片之间甚至是其他
    发表于 03-10 17:58

    急聘!FPGA逻辑设计部门经理

    本帖最后由 daworencai 于 2016-1-21 14:46 编辑 岗位职责:1.负责部门存储系列产品的逻辑设计开发工作;2.负责存储系列产品的BCH算法优化、高速存储技术实现等;负责
    发表于 01-21 14:42

    基于FPGA技术的RS 232接口的时序逻辑设计实现

    了如何通过FPGA实现RS 232接口的时序逻辑设计。关键词:FPGA;时序电路;RS 232;串行通信
    发表于 06-19 07:42

    要使用哪种方法去验证 FPGA逻辑设计

    要使用哪种方法去验证 FPGA逻辑设计FPGA的优缺点是什么?
    发表于 04-08 06:57

    FPGA逻辑设计中的常见问题有哪些

    图像采集系统的结构及工作原理是什么FPGA逻辑设计中的常见问题有哪些
    发表于 04-29 06:18

    FPGA逻辑设计中有哪些注意事项?

    请教各位,FPGA逻辑设计中有哪些注意事项?
    发表于 05-07 07:21

    如何利用FPGA芯片进行简化的PCI接口逻辑设计

    本文使用符合PCI电气特性的FPGA芯片进行简化的PCI接口逻辑设计,实现了33MHz、32位数据宽度的PCI设备模块的接口功能,节约了系统逻辑
    发表于 05-08 08:11

    如何去实现FPGA逻辑设计

    前言FPGA 可以实现高速硬件电路,如各种时钟,PWM,高速接口,DSP计算等硬件功能。这是Cortex-M 处理器软件无法比拟的。要实现FPGA逻辑设计,对于嵌入式系统工程师又是
    发表于 12-21 06:13

    基于FPGA的MDIO接口逻辑设计

    本文介绍了一种基于FPGA 的用自定义串口命令的方式实现MDIO 接口逻辑设计的方法,并对系统结构进行了模块化分解以适应自顶向下的设计方法。所有功能的实现全部采用VHDL 进行描
    发表于 12-26 16:48 103次下载

    MPEG-2编码复用器中的FPGA逻辑设计

        摘要:简要介绍了现场可编程门阵列(FPGA)的特性,并结合MPEG-2编码复用器开发过程中的经验,给出了在MAX+ PLUS II提供的设计环境下FP
    发表于 05-26 21:52 822次阅读
    MPEG-2编码复用器中的<b class='flag-5'>FPGA</b><b class='flag-5'>逻辑设计</b>

    MPEG-2编码复用器中的FPGA逻辑设计

     摘要:简要介绍了现场可编程门阵列(FPGA)的特性,并结合MPEG-2编码复用器开发过程中的经验,给出了在MAX+ PLUS II提供的设计环境下FPGA
    发表于 06-20 14:40 630次阅读
    MPEG-2编码复用器中的<b class='flag-5'>FPGA</b><b class='flag-5'>逻辑设计</b>

    多分辨率图像实时采集系统FPGA逻辑设计

    多分辨率图像实时采集系统FPGA逻辑设计
    发表于 08-29 15:02 6次下载

    FPGA视频教程之FPGA设计中时序逻辑设计要点的详细资料说明

    本文档的主要内容详细介绍的是FPGA视频教程之FPGA设计中时序逻辑设计要点的详细资料说明免费下载。
    发表于 03-27 10:56 20次下载
    <b class='flag-5'>FPGA</b>视频教程之<b class='flag-5'>FPGA</b>设计中时序<b class='flag-5'>逻辑设计</b>要点的详细资料说明