受新冠疫情影响和原材料的供应,Xilinx和Intel等国外的FPGA大幅度涨价,Cyclone 4等以前几十的产品现在动辄1000加,这对于很多企业来讲是不能接受的。我国是世界第二大经济体,但是半导体行业行业一直是我们的软肋。我国的工业发展道路也并非一帆风顺,前有美国制裁中兴,后有华为、海康等,面对这种情况,我们急需构建国内国际双循环的半导体生态链。目前越来越多的国内企业选择国产FPGA替代已有产品,有些也在新的项目中采用国产FPGA,然而面对市面上的国产FPGA厂家,如何选用合适的产品是一个值得思考的问题。
我有幸选择了易灵思的FPGA,在这里,我想简单分享一些自己的心得。在选择FPGA这方面,首先除了非常重要的价格因素以外,还应该考虑是否拥有稳定的供应链,在哪里生产代工等,除此之外,对于广大的开发者,最好选用相对稳定的FPGA产品,比如询问已经出了多少PCS等问题;从逻辑开发工程师角度来讲,工具是不是便捷,操作是不是简单明了也是非常重要的。综上所述,我尝试选择了易灵思的产品,易灵思的产品在图像领域应用广泛,出货量大,并且给海康威视也有供货,其次芯片是中芯国际代工,供应链完整,可以保证出货,最后易灵思的开发工具界面清爽,没有多余的东西,并且不需要License,这样的话就不用经常发邮件申请License了,有时候经常耽误几天是很难接受的。
除此之外,在使用了一段时间Efinity软件之后,我发现该软件的时序约束非常简单,我建议使用Efinity软件新建好工程之后,先在Interface中做引脚分配、PLL配置以及使能相应的硬件资源,紧接着新建顶层并复制软件生成顶层的例子,新建约束文件并复制并修改软件生成的SDC文件中的约束,最后再开始做设计。通过以上描述,我们不难发现,传统的FPGA开发,引脚分配是在最后一步才做的,另外一些软件的时序约束并不好做,时序约束也作为一个重点经常是面试必考的问题,而用易灵思的工具,时序约束这部分做起来非常简单,生成的SDC大都是可以直接用的,这一点对于开发者来讲非常友好,说了这么多,下面我举个MIPI硬核的使用例子来简单熟悉一下。
首先MIPI根据物理层传输的不同,有好几种,这里仅介绍基于D-PHY的CSI接口。对于D-PHY来讲,有一对时钟线,数据线可能是1/2/4对差分线。在传输图像的时候采用LVDS传输数据,当没有图像的时候,原本差分的两条线处于单端模式,根据单端的状态来传输一些其他的信息,之所以采用这种做法,主要是为了降低功耗,在传输图像的时候通过LVDS传输,另外差分线可以抗干扰,且磁场耦合导致电磁辐射很低。
易灵思FPGA支持MIPI硬核接口,仅需要简单的配置参数就可以使用起来,Trion系列的产品,MIPI单条Lane支持到1.5Gbps,且支持RGB、YUV、RAW以及自定义格式,对于用户来讲,首先是如何正确配置MIPI参数,这部分需要参考官方mipi-utility-v1.3.xlsm,其次在正确配置MIPI的情况下,我们需要清楚,在发送的时候,用户侧发送的带宽要小于等于MIPI配置的带宽,而在接收数据的时候,我们用户侧的接收的带宽要大于等于MIPI配置的带宽,这样的话才可以保证MIPI正常工作。
接下来,我们看一下MIPI RX 的结构框图,如下所示:

如上图所示,左边是和硬件连接的部分,我们可以看到可以直接和MIPI接口相连接,右边的数据线总共分为三组,控制通道、图像通道和状态,这里介绍一个右边的用户侧信号,左边的因为是和硬件的摄像头相连接的,可以根据实际的硬件的连接到不同的MIPI通道上,另外可以在配置界面再配置通道的功能,比如交换p和n,这样方便PCB走线。下面是三组信号的简单介绍,如下:

图像信号:

状态信号:

注:实际的数据格式和错误状态寄存器请参考IP手册。

接下来,我们熟悉一下软件应用。
1、首先,打开软件新建工程,File->Create Project,然后选择器件型号和速度等级,并选择工程的存放位置和名字,点击确定,如下图所示。

2、单击Interface Designer,并添加一个RX的MIPI硬核,一个PLL和一个PLL输入引脚。


3、根据硬件原理图,配置PLL 和 分配引脚,如下图所示:

这里输入时钟是20M,输出两路,一路是100M的MIPI校准时钟,一路是像素时钟,这里的像素时钟取值多少要根据Lane速度或者输入图像的速率决定,像素时钟应该大于等于带宽/接收位宽。
注:每次输入后记得按回车,否则改了名字不会生效。
4、配置MIPI参数,如下所示:
根据硬件原理图选择用了哪个MIPI接口:

输入校准时钟和像素时钟名称,这里用的是PLL生成时钟的名字,直接复制过去即可:

使能错误状态寄存器等:

根据硬件选择数据Lane和时钟Lane,后面有可选交换p和n的,方便走线。
选择校准时钟频率,默认选择100M,同时有两个参数需要填写。

其中TCLK-SETTLE 和 THS-SETTLE 是D-PHY的两个参数,分别如下图所示,根据所用到的手册填入即可:

5、最后依次点击如下按钮,并确保没有错误,如果有错误,请查看引脚配置、PLL配置和MIPI配置等。

6、如果上述步骤没有问题,接下来就可以设计程序了,首先打开工程目录下的Overflow文件,可以看到一个.v文件和.sdc文件,然后在工程中新建一个top.v文件和top.sdc文件,并将生成的复制到新建的文件中,然后就可以设计自己的程序了,部分截图如下所示:


7、通过以上操作,一个MIPI CSI接收的IP就配置好了,并新建好了顶层和约束文件。最后就是整合自己的代码了。从上面可以看到,生成的顶层并不包含硬件的接口,这点和传统开发不一致,用户仅仅需要关注自己的设计即可,这点对于第一次接触易灵思软件的开发者来讲不易接受,但是这种硬核的做法可以让用户仅关注自己的逻辑代码撰写,将复杂的工作变得简单也是一种创新。
8、最终添加自己的代码之后,编译并生成bit文件下载进去,可以在线抓到部分波形如下图所示。

总结:

  1. 建议新建好工程后,先在Interface中使能用到的硬核资源,并配置IO;
  2. 部分硬件资源和物理层的接口在代码中都不可见,需要在Interface Designer中进行配置;
  3. PLL生成时钟的约束并不是传统的生成时钟的写法,写法类似引脚输入时钟;
  4. 约束文件和顶层建议参考生成的例子;
  5. 自顶向下,先使能外设,生成顶层,再设计子模块。

Tips:易灵思提供基于MIPI 硬核的RX 和TX环回Debugger Demo,可以非常方便的评估MIPI性能,客户可以在此基础上进行修改,并应用到到自己的项目中。如有需要,大家可以咨询他们的销售。

基于国产FPGA 的MIPI硬核应用相关推荐

  1. 国产智多晶FPGA 带Cortex-M3硬核CPU的FPGA器件简介

    大家好,我是小梅哥,这里给大家介绍国产FPGA厂家"西安智多晶"微电子带Cortex-M3硬核CPU的FPGA芯片的相关资源.本博客将陆续发表更多国产FPGA的开发和使用方法. 正 ...

  2. 基于国产FPGA紫光同创Titan2 PG2T390H的PCIe链式DMA控制器设计

    文章目录 背景介绍 逻辑方案 性能测试 软件驱动 相关帖子 技术交流 背景介绍 近年来,国产FPGA厂商发展迅速,紫光同创.安路等公司已经量产28nm.几k~几百k的FPGA逻辑芯片,在自主可控的大环 ...

  3. PCIE学习笔记(四)Xilinx FPGA PCI Express 硬核配置

    目录 2.3.2 配置核IP生成 2.3.2.1 Base模式 2.3.2.2 Advanced模式 本文主要介绍Xilinx 7系列FPGA的 IP 核配置与应用,使用的工具版本为VIVADO 20 ...

  4. 基于国产FPGA的图像叠加处理卡

    板卡介绍 主要功能是实现对1路SDI输入视频信号进行缩放后,叠加到一路计算机输出的LVDS的输入视频中,并通过一路LVDS输出视频接口显示叠加后的视频.同时能通过串口接收主机的控制命令,移动子画面在背 ...

  5. 基于同创logos2的国产FPGA加速器与DMA设计与实现

    文章目录 背景介绍 硬件方案 主要参数 国产平台适配 逻辑架构设计 DMA实现方案设计 驱动设计 系统与应用 软件驱动 相关文章 技术交流 背景介绍 当前全国产服务器在性能上与国外先进平台相比还有较大 ...

  6. Lattice CrosslinkNx LIFCL-40应用连载5:如何使用MIPI D-PHY硬核IP

    作者:Hello,Panda 一.目标 配置CMOS Sensor OV9734,并通过MIPI DPHY硬核接收数据. 使用一个RISC-V软核,实通过AHB总线访问I2C FIFO,通过I2C总线 ...

  7. 国产FPGA(紫光同创)—— 数据采集及千兆以太网传输(一)

    科研需要,使用国产FPGA(紫光PLG50H)实现数据采集及千兆以太网传输.总体流程如图所示 第一部分先对数据采集部分进行说明. 一.模数转换(ADC芯片-LTC2324) 本项目使用的是LTC232 ...

  8. 百度飞桨Paddle Lite与海云捷迅基于Intel FPGA的自研开发套件完成适配

    点击左上方蓝字关注我们 在技术革新的浪潮下,人工智能在产业升级.改善人类生活等方面发挥着越来越重要的作用.从科研.金融.零售到工业.农业等越来越多的行业与业务场景,无不渗透了人工智能的威力.此外,为人 ...

  9. 国产FPGA高云GW1NSR-4C,集成ARM Cortex-M3硬核

    文章目录 @[toc] 1. 开发板硬件资源 2. 开发板硬件电路 3. GW1NSR-4C芯片资源 4. 关于高云半导体 5. 开发工具和资料 6. 总结 7. 参考资料 8. 声明 近两年,国外厂 ...

最新文章

  1. 李航「机器学习」最全综述
  2. 智能+制造,聪明的公司都走上了智能制造的道路
  3. python3.5怎么使用-Python3.5常见内置方法参数用法实例详解
  4. python怎么导入txt数据库_Python导入txt数据到mysql的方法
  5. datawhale组队学习笔记(3)树
  6. [Java基础]Lambda表达式的注意事项
  7. ie传递给系统调用的数据区域太小_内存区域与内存溢出异常
  8. compress()方法
  9. spring——autowire自动注入
  10. 循环在c语言中的表示什么作用,《C语言中的for循环》教案
  11. redux-actions入门
  12. 【蓝桥杯选拔赛真题48】Scratch跳舞机游戏 少儿编程scratch蓝桥杯选拔赛真题讲解
  13. 360浏览器如何改html5,360安全浏览器如何设置为默认浏览器
  14. python 移动文件 覆盖_python 剪切移动文件的实现代码
  15. 迅捷文字转语音软件v2.0.0官方免费版
  16. FFT算法实现——python
  17. 如何生成密钥文件Snk
  18. linux系统下/etc目录的理解
  19. 除PDF转换,写论文还需PDF编辑?迅读PDF大师告诉你答案
  20. 闲话虚拟仪器开发历史

热门文章

  1. 从985非科班到网易伏羲CV算法岗
  2. Powershell创建文件
  3. 007 分数的基本性质(五下)
  4. ICON结构解析(订正版)
  5. 为什么手机网速太慢_为什么手机网速很慢;为什么手机信号满格,网速却很慢?...
  6. kalibr使用笔记
  7. 立即升级 NGINX 以应对漏洞风险
  8. 鸿蒙os和hms,华为的鸿蒙os和HMS可以改变,当前美国独霸世纪操作系统的格局?...
  9. django创建子应用
  10. 导出iPhone应用crash日志步骤说明