tfpwl_lj的个人空间 https://blog.eetop.cn/1638430 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

芯片设计副篇(十)——单片机/FPGA开发流程2

已有 2091 次阅读| 2017-5-17 18:56 |系统分类:芯片设计

本文章仅为个人经验总结。
      在芯片的设计过程中,经常会利用到单片机和FPGA用于芯片的CP测试和应用开发,因此,也就有了关于单片机/FPGA开发的一些经验,不全面,仅为个人经验。从测试实例的角度来讲述开发流程。
一、总体规划。
       芯片CP测试的目的很简单,就是为了测试芯片的某个参数。但它也不简单,因为测试某项参数,可能通用的测试仪根本无此功能或者测试复杂度会非常高,例如测量红外接收芯片的接收频率时,通用的测试仪无法完成这个任务,于是只能采取自制扫频仪进行测量,而自制扫频仪就会用到FPGA。所以,需求很快的就明确下来了。主芯片确定用FPGA,那么用哪一家的FPGA呢,这就得哪一个公司的FPGA符合要求以及个人对FPGA的熟悉程度了。个人采用的是Altera公司的。
       开发其他的项目也是一样,首先要明确项目的要求是什么,是自动控制,是数据转换等等。明确了项目的要求,那么相应的硬件也就可以确定。当然项目要求并不是上述说的那么空泛,应该来说,要有一个详细的项目说明书,将项目的目的、要求、可行性等都有一个较为详细的说明。这样便于项目的分工合作。
二、确定接口。
       根据测试项的说明(换个说法——根据项目要求),可以得出具体会使用到多少的引脚,那么引脚的接口也就固定下来了。只要固定了引脚接口的使用,那么软件和硬件就可以分开设计了。
三、硬件选型。
      在总体规划的过程已经确定了所要使用的主芯片,其他硬件的选择会根据主芯片及测试要求来共同决定,期间会涉及到成本、芯片参数的各种考虑。总之这部分,会把所需要用到的一切电路元件都确定下来,这部分工作由硬件工程师负责。
四、原理图/PCB。
       在测试规范(设计要求)的指导下,利用准备好的各种电子元件就可以使用Altium Designer 或者cadence 电路系统设计套件 Orcad &Allegro进行电路原理图及PCB版图的设计。当然这一步的复杂程度根据测试要求的复杂度而不同,简单的如51单片机,最小系统的电路图都有,剩余的工作只是画其他的电子元件。主要工作内容:1、熟悉各芯片的datasheet,明确各芯片所要使用的功能管脚及管脚的电气参数;2、设计电路原理图;3、根据原理图进行PCB设计。需要具备的能力及需要注意的地方:a,能够识别各种基本电子元件;b,熟悉电路设计的基本规则;c,最好具备信号完整性的相关知识,涉及到高频电路时,这一点非常重要;d,Altium Designer 等工具要熟练的使用。e,较好的电路焊接功夫。PCB画好后还需要外包给其他公司进行制板,拿到做好的PCB板后,还需要进行元件的焊接。这需要有比较好的焊接功夫,各种焊接的工具都要熟练使用。
五、程序开发。
       由于已经选定了所使用的主芯片,所以程序的开发环境也就确定了——quartus ii(ps,软件的版本选择也很重要),另外安装好仿真工具Modelsim。主要工作内容:1,配置好工作环境,看quartus ii 是否有所使用的FPGA的库文件若没有,则根据所使用的FPGA芯片版本选择对应的元件库安装好;2,根据测试规范(功能需求),将整个程序进行模块划分;3,分模块进行代码编写并进行局部代码的仿真;4,整理好所有的模块,分配FPGA引脚(这就是为何要在第二步就要把引脚确定好的原因之一),并搭建RTL测试环境,编写testbench;5,验证代码直至代码通过为止。需要注意的是,程序验证环节有两个主要的验证项,一个是功能验证,这一步需要写testbench来进行验证;另一个是时序约束,如果时序不满足,程序是不能够正常运行的。有关于testbench的编写与时序约束,网上也有相关的资料,这里不再赘述。其实FPGA开发和芯片正向设计是很相似的,它们的区别在于:a,FPGA开发不用去考虑工艺的问题;b,综合与时序分析会比芯片开发要考虑的因素少得多;c,只要功能仿真通过,时序约束通过就可以了,并不需要做后仿真,因为后仿真太耗时间了(ps:后仿真主要是看设计代码是否满足时序的,既然已经通过时序约束了,那么后仿真也就没有必要了)。
       RTL程序开发这一块是非常具有技术含量的,复杂的例如,通信类芯片大多采用FPGA作为数据交换的主芯片,因此想要开发通信类FPGA程序,就必须要知道各种通信算法该如何用verilog语言来实现。而要搞懂各类通信算法需要花费非常多的时间才能掌握。当然,简单的应用,RTL程序开发会相对的容易很多。
六、测试验证。
       由于硬件和软件是并行进行的,所以两者最后应该是差不多完成,时间不至于差太多。那么就可以在两者都完成的时候直接将程序烧录进FPGA进行硬件在线调试,这样可以加快项目的开发,也是为何不需要进行RTL级后仿真的原因之一。之后,再进行硬软件协同测试验证。
七、总结
       以上说的都是FPGA开发的一般流程,对于单片机其实也是一样的,硬件开发过程完全一样,程序开发部分略有差别。视单片机的复杂程度,程序开发的时候还需要进行引脚配置,这个可以独立的作为一个程序模块,例如STM32单片机的引脚配置。51单片机,AVR单片机的引脚配置就没有那么复杂。此外,单片机的开发环境和FPGA的是不一样的,一般来说主要是以KEIL 开发环境为主,但是AVR单片机有自己的开发环境arduino
       引领整个项目的是测试规范,测试要求,也就是项目要求,因此,在项目总体规划的时候,一定要考虑清楚所有的项目要求,这样可以避免在项目进行过程中因为突然增加的要求而使项目难以进行下去。所以明确项目开发的要求是非常重要的。ps,很多时候因为项目总体规划的时候经常不明白有什么要求,所以导致后期工作难以开展。

点赞

发表评论 评论 (1 个评论)

回复 青鸟飞鱼 2017-5-18 17:57
:lol

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 74

    粉丝
  • 38

    好友
  • 42

    获赞
  • 52

    评论
  • 4344

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-19 06:39 , Processed in 0.013130 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部