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

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

3天内不再提示

深入了解FPGA厂商并掌握FPGA编程语言

FPGA设计论坛 来源:FPGA设计论坛 作者:FPGA设计论坛 2022-10-20 14:44 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。而且FPGA开发工程师是一个相对高薪的工作,学习的人也不少。然而对于刚入门的初学者来说,总有一种无从下手的感觉。本文是来自一个资深FPGA工程师的自述,他从FPGA的的基础知识开始介绍,提出学习FGPA需要注重的要点,并用自己的亲身经历验证和告诫广大爱好者,经验都是从实践中获得,多动手才是王道。

深入了解FPGA厂商并掌握FPGA编程语言

谈FPGA之前,先说说生产厂商吧。全球知名的FPGA生产厂商有:

1.Altera,开发平台是Quartus II

2.Xilinx 开发平台是ISE

3.Actel ,开发平台是Libero

4.Lattice

5.Atmel

其中Altera作为世界老牌可编程逻辑器件的厂家,是可编程逻辑器件的发明者,开发软件MAX+PLUSII和QuartusII。记得上学的时候用的用的就是altera的芯片,当时的工具也是MAX,现在感觉当时的软件很强大了,现在感觉比较弱智了,下载FPGA就是用串口,当时的时钟速率也就是25M左右,用的是试验箱,就是一个大箱子,里面有板子和说明,板子上还有8位数码管和跳线,当时感觉好神奇啊,现在感觉那是个垃圾、废物,忘记是那个厂家了。

Xilinx是FPGA的发明者,拥有世界一半以上的市场,提供90%的高端65nmFPGA产品,开发软件为ISE,其产品主要用于军用和宇航。毕业后就是xilinx的,altera的很少用,大家一定问为什么,我也毕业的时候也是这样问老大的,老大说altera的不好用,我也有点气不忿儿,现在看来确实是这样,总结几点:

1:xilinx的资源丰富,新手会说很杂不容易用,但是如果上手之后,里面的资源确实会为你处理带来方便,比如BUFG,IODELAY,ODDR,OBUFT等等这些小的资源,还有一些IPcore,altera的好像要少些。

2:xilinx逻辑量比较大,一些大容量的FPGA好像altera没有这么大的,比如V5,V6,V7,K7,这些altera是远远没有的。不过也带来了隐患,比如说散热。不过有一点xilinx好像没有altera的做的好,那就是高速查分线,xilinx叫GTP,GTX,GTH,现在好像也区别不大了。

Altera和Xilinx主要生产一般用途FPGA,其主要产品采用RAM工艺。Actel主要提供非易失性FPGA,产品主要基于反熔丝工艺和FLASH工艺。

讲到FPGA语言就不得不讲verilog 和VHDL,本人大学学的是VHDL,工作就一直在用VHDL。我觉得veilog更接近底层,关键是更接近C,所以被FPGA工程师所喜欢。HDL特别是Verilog HDL得到在第一线工作的设计工程师的特别青睐,不仅因为HDL与C语言很相似,学习和掌握它并不困难,更重要的是它在复杂的SOC的设计上所显示的非凡性能和可扩展能力。在学习HDL语言时,笔者认为先学习VerilogHDL比较好:一是容易入门;二是接受Verilog HDL代码做后端芯片的集成电路厂家比较多,现成的硬核、固核和软核比较多。

实现起来,veilog更容易实现。比如说要例化多个模块,我们就可以用for语句,并且这个是可综合的。我们在申明总线时,由于比较繁琐的语句的时候,稍不注意还会有书写错误。

我们都知道FPGA一般作为主控芯片,I2C也一般是做主设备。但是大家有没有遇到过做从设备的情况,从设备稳定吗?一般情况下,I2C做从设备是不好做的,特别是做大容量的从设备。I2C看起来简单,但是里面还有很多问题,如果我们只考虑简单的7为device address,8 bit register address,数据读写位也是简单的8bit的话,另外读写只是简单的I2C interface的话,还简单些。

如果要考虑大容量的,如16bit的设备地址,读的情形考虑到简单的接口外还要考虑有restart的情况,就不好做了,如果要考虑的再细一点,特别是做图像处理的话,读写EDID的时候有个搜索device设备的过程,这种情形恐怕做好的就不容易了。

如果你是大厂商,像一些AT的ROM,Flash等公司,做的也是巨烂,我们用他们的芯片,用ARM访问也是会有一些问题,就是他们考虑的不太周全。像一些图像驱动的厂商,做的I2C相对来说还好些;通信设备的I2C写的也是很差,控制起来比较麻烦,像一些光纤收发器的厂商,也就是光模块的厂商,有的时候你用ARM等标准设备访问的时候,也会有一些问题。所以你如果要做个I2C的从设备的话,要考虑的周全一些,这样我们的芯片健壮性就会比较高。

做FPGA代码,其中一个最重要的步骤,那就是仿真。仿真简单的说,就是验证代码是否正确。里面就包含了很多仿真的东西,测试平台的搭建,库的建立等等。最让我们忽略的恐怕就是线延时了。有的时候我们仿真正确,但是加载到FPGA里面就不正确了,这是为什么呢?你忽略了一个问题,那就是线延时。你的接口从FPGA到接口芯片肯定铺铜线过去了,中间这段走线是有延时。所以在我们仿真的时候,测试平台要在库和顶层之间加上一定的延时。这样来保证我们代码的正确。

精品来自于于千锤百炼 要不断的发现问题才能解决问题

如果我们用FPGA只是做个小程序实验实验我们的功能,应该说还是比较容易的;如果我们用FPGA作产品,那么你要考虑的要很多,有的时候你觉得你的代码很完美,实验也没啥问题,那么你有没有让你的程序跑一年甚至是更远时间,你有没有把你的程序放在各种环境下实验。如果说你认为这是芯片的问题和你的程序没有关系,这就大错特错了。这些最终考究的就是你的代码的健壮性,也就是说的精品来自于千锤百炼。

这里我们谈谈FPGA需要注意的两点:

1:调试各类驱动芯片;如果做通信的话,有各种通信芯片,主要包括PHY芯片,通信交换芯片,光纤驱动芯片等,各类芯片。另外还有各种通信接口。这些接口和芯片需要时间去调试和积累,这些不是在论坛上能完成的,这个过程是要在实验室来完成的。

2:定位FPGA的位置,FPGA要了解的大部分不是FPGA知识,而是硬件知识和软件知识,这是因为FPGA的位置是FPGA的硬件和软件的桥梁。首先要了解硬件,大部分做FPGA不太关注硬件问题,都认为硬件不是FPGA的问题,这就大错特错了,硬件设计的好坏直接影响到FPGA工作的质量。

亲身经历验证对任何问题要有怀疑自我的精神

先描述下逻辑:FPGA实现一个逻辑,每按下一个按钮(逻辑做了消抖),出现10个200ns的脉冲,然后通过示波器抓输出波形,示波器出发条件,设置自动触发(上升沿)或者条件触发<1ms都试过。

问题出现:每次按下按钮,不是每次都能在示波器看到脉冲波形,大概按下10次会有1-2次示波器抓不到波形!首先我怀疑是我做的逻辑问题,这个楼主一贯的风格,先怀疑自己,验证自己没有问题了再怀疑相关,而不是想当然说自己这个没问题那个没问题,我觉得这点很重要,就是怀疑精神,我发现设计工程师都想把自己推的一干二净,说自己的没有问题,我觉得出现问题任何地方都是值得怀疑的,先去检查自己,不是说自己没问题就没有问题的,如果后来证明是自己的问题,这不相当于自己打自己的脸吗!总结一点:要有怀疑精神,所有相关的都是值得怀疑的。

回归正题,然后我用chipesope抓到是输出逻辑有波形,但是示波器上看不到,出现这种情况大家会怎么做?我输出逻辑没有问题后,我就想是不是IO的驱动能力,因为我外面直接用示波器测量的,是不是没有负载,所有输出不正常,基于这点,然后我把输出的逻辑再接入到FPGA某一输入管脚,然后又写着一段程序,检测输入是不是有信号过来,然后做了计数之类,结果发现,当示波器没有波形的时候,输入的信号也有,计数也正常。出现这种情况大家会怎么做?

是不是同一芯片的问题,然后我把这个输出的管脚飞线到另外一个芯片,当示波器没有波形的时候,另外一个芯片输入的信号也有!

基于以上测试,我大胆预测是示波器的问题,也不能说是示波器的问题吧,估计是没有这种的应用场景。然后我有试了另外一家的芯片,写上同样的逻辑,测试结果一样。做了这么多试验,也证明了,就是示波器没有这样的场景。用的示波器是泰克的2032等,试了他的两款表,都是如此,不是黑他的表,我估计所有的表也都是如此。

经验是从实践中获得 多动手才是王道

FPGA新手总是觉得FPGA无从下手,也不知道该如何下手。包括刚开始做FPGA开发时候的我,也是如此。针对这种情况,我还是劝新手们,多做点试验,多有点想法,然后试着写些小的程序,然后再FPGA上验证功能,如果不是你想要的,那就再调试,慢慢的你就学习到一些实践的东西。因为最终FPGA不是理论,他要靠实践来完成,你才知道哪些是对的哪些是错的。光靠书本不去试验肯定是不行的,所以劝大家多动动手。

目前觉得fpga的发展方向:1:接口统一化,类似于AXI系接口;2:硬件语言软件化;3:系统化。以后fpga开发难度会越来越下降,也是技术开发的方向。搁在几年前,硬件很吃香,现在几乎不需要硬件工程师。其实也不是不需要,而是硬件越来越标准化,一个行业越来越标准,说明开发的难度也随之降低。

做开发,心态问题很重要,什么人适合做研发,什么人适合做销售。我觉得这个是勉强不来的。有的人做销售,不需要什么技术和技巧,因为他从小就能说会道,周边的人都比较喜欢,和别人沟通,交际这方面比较擅长。如果是这样的人,就适合做销售和行政之类,和别人打交道的工作。如果你让这些人做技术,他坐不住,处处感觉别扭。有的人做研究,我觉得同样也不需要太多的技术,因为他从小就沉默寡言,喜欢发呆思考问题,数理化总能不怎么学都能考试高分,但是如果家里来了亲戚,确害羞的不爱说话,也就是人们常说的木讷,这些人适合做技术。如果你让这些人做销售,单子估计一个也接不到。所以我觉得不管做什么,根绝自己的性格找到合适的工作,这样身心愉悦!

审核编辑 :李倩

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

    关注

    1655

    文章

    22283

    浏览量

    630227
  • 逻辑器件
    +关注

    关注

    0

    文章

    107

    浏览量

    20631
  • 编程语言
    +关注

    关注

    10

    文章

    1959

    浏览量

    38905

原文标题:FPGA工程师自述:实践中获得经验 多动手才是王道

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MarketsandMarkets FPGA行业报告,2026~2030 FPGA市场洞察

    , Share & Trends(Report Code:SE 3058)。中国第一梯队 FPGA 开发板和解决方案提供商 ALINX 整理内容如下。   FPGA 市场概况 现场可编程门阵列(
    的头像 发表于 11-20 13:20 119次阅读
    MarketsandMarkets <b class='flag-5'>FPGA</b>行业报告,2026~2030 <b class='flag-5'>FPGA</b>市场洞察

    嵌入式与FPGA的区别

    ,一是嵌入式软件开发,主要与嵌入式cao作系统、应用软件等有关。第二是嵌入式硬件开发,需要掌握硬件设计、模拟仿真、 PCB设计等技能。 ✅2、FPGA:它是在PAL、GAL、CPLD等可编程
    发表于 11-20 07:12

    嵌入式和FPGA的区别

    。 在当今智能化时代,嵌入式系统和FPGA技术都是电子系统设计中的重要组成部分,但许多工程师和技术爱好者常常对两者的区别和应用场景感到困惑。本文将深入解析嵌入式系统和FPGA的核心差异,帮助您在项目
    发表于 11-19 06:55

    如何使用FPGA实现SRIO通信协议

    本例程详细介绍了如何在FPGA上实现Serial RapidIO(SRIO)通信协议,通过Verilog语言进行编程设计。SRIO作为一种高速、低延迟的串行互连技术,在高性能计算和嵌
    的头像 发表于 11-12 14:38 4936次阅读
    如何使用<b class='flag-5'>FPGA</b>实现SRIO通信协议

    PLL技术在FPGA中的动态调频与展频功能应用

    随着现代电子系统的不断发展,时钟管理成为影响系统性能、稳定性和电磁兼容性(EMI)的关键因素之一。在FPGA设计中,PLL因其高精度、灵活性和可编程性而得到广泛应用,本文将深入探讨PLL技术在
    的头像 发表于 06-20 11:51 2212次阅读
    PLL技术在<b class='flag-5'>FPGA</b>中的动态调频与展频功能应用

    智多晶FPGA设计工具HqFpga接入DeepSeek大模型

    在 AI 赋能工程设计的时代浪潮中,智多晶率先迈出关键一步——智多晶正式宣布旗下 FPGA 设计工具 HqFpga 接入 DeepSeek 大模型,推出 FPGA 设计专属 AI 助
    的头像 发表于 06-06 17:06 1125次阅读

    【经验分享】玩转FPGA串口通信:从“幻觉调试”到代码解析

    FPGA开发,思路先行!玩FPGA板子,读代码是基本功!尤其对从C语言转战FPGA的“宝贝们”来说,适应流水线(pipeline)编程可能需
    的头像 发表于 06-05 08:05 876次阅读
    【经验分享】玩转<b class='flag-5'>FPGA</b>串口通信:从“幻觉调试”到代码解析

    FPGA的定义和基本结构

    FPGA 的全称为 Field-Programmable Gate Array,即现场可编程门阵列。 FPGA 是在 PAL、 GAL、 CPLD 等可编程器件的基础上进一步发展的产物
    的头像 发表于 05-15 16:39 2254次阅读
    <b class='flag-5'>FPGA</b>的定义和基本结构

    FPGA芯片的概念和结构

    FPGA(Field Programmable Gate Array,现场可编程门阵列),是一种可在出厂后由用户根据实际需求进行编程配置的集成电路。与专用集成电路(如ASIC)不同,FPGA
    的头像 发表于 05-12 09:30 2399次阅读

    Altera大学成立,助力FPGA教学发展与人才培养

    近日,全球 FPGA 创新技术领导者 Altera 宣布成立 Altera 大学,旨在以高效、便捷的方式助力 FPGA 教学发展与人才培养。Altera 大学为高校教授、科研人员和广大学子提供精心设计的课程、丰富的软件工具和可编程
    的头像 发表于 04-19 11:26 948次阅读

    FPGA在数字化时代的主要发展趋势

    的创新,也对开发者提出了新的要求。这篇文章将带您深入探讨FPGA发展趋势,剖析这些变化对开发者的影响与挑战,为在新时代的技术浪潮中把握机遇提供参考。
    的头像 发表于 04-02 09:49 1351次阅读
    <b class='flag-5'>FPGA</b>在数字化时代的主要发展趋势

    【国产FPGA入学必备】国产FPGA权威设计指南+配套FPGA图像视频教程

    》。 本书系统地介绍紫光同创FPGA的开发与应用,详细阐述FPGA开发的各个方面,从基础原理到实际应用,从设计流程到开发工具的使用,力求为读者提供一套完整的学习和参考体系。通过阅读本书,读者不仅可以掌握紫光
    发表于 02-20 15:08

    fpga和cpu的区别 芯片是gpu还是CPU

    一、FPGA与CPU的区别 FPGA(Field-Programmable Gate Array,现场可编程门阵列)和CPU(Central Processing Unit,中央处理器)是两种不同类
    的头像 发表于 02-01 14:57 2998次阅读

    用MATLAB或者C语言开发FPGA有什么问题吗

    最近有个项目领导要求用MATLAB开发FPGA,有大佬用MATLAB或者C语言开发FPGA的吗,有没有什么问题,需要注意什么问题吗
    发表于 01-26 09:57

    CPLD 与 FPGA 的区别

    在数字电路设计领域,CPLD和FPGA是两种常用的可编程逻辑器件。它们都允许工程师根据需要设计和重新配置数字电路,但它们在结构、性能和应用上存在显著差异。 CPLD和FPGA的定义 CPLD
    的头像 发表于 01-23 09:46 2467次阅读