唐老鸭作者
7年8个月前修改于 7年8个月前IP:北京
856966
6楼

主要是近来工作突然比较忙所以鸽了一周。

我先来个简单的需求分析和板卡功能定义。

说点题外话:

大多数国内入门级fpga开发板都存在一个明显的问题:严重脱离FPGA应用场景。

FPGA传统上的三大应用场景:接口转换、数字信号处理、IC逻辑验证。这几年新兴应用场景的人工智能和可重构的并行计算协处理器。

鉴于入门级FPGA实际只能用在接口协议转换这个应用上。所以fpag开发板一定要具有相应的接口,而目前很多国内入门fpga还是按单片机那种应用逻辑在安排板上资源。

比如某金,上面弄一大堆数码管,蜂鸣器,DS18B20,EERROM这些东西有什么用?除了跑跑自带的例程,搞个万年历屁用没有,你把fpga换成stm32单片机板上的功能都能实现而且实现的更简单。至于学习HDL语言实际上也不需要这类开发板,单纯的逻辑代码学习通过综合和仿真软件工具就够了,而面向实际应用你连常用PHY网口都没有,和实际应用相关的也就自己写个串口、i2c,spi的逻辑练练手。至于IO管脚的引出,基本就是把普通IO管脚引到排针完事,基本没有能用LVDS的方法,但实际上LVDS才是FPGA关键应用的接口,基本上和显示、图像类应用相关的都要用lvds。

所以我个人并不想把这块板子做成一块只引出管脚的一般意义的开发板,我要做有实用功能意义的fpga测试验证板。

我目前想到的三个主要功能:

我前文提到的两个功能

1)lvds到hdmi接口

显示和图像方向可以说是如今低端fpga主要的出货方向,主要通过fpga和一些编码\译码芯片实现lvds、数字RGB、MIPI接口的相互转换、多路切换甚至非常简单的图像处理,所以我选lvds->数字RDB->HDMI然后直接连显示器这个很有现实应用的意义的功能。

这部分硬件\逻辑难度最高

2)GD32F4 <- FSMC总线 -> FPGA

这个直接仿iCore3这块开发板,如下

FssQ6V5Ajb92GQevx-vgBDofqlCU.jpeg

这个开发板的设计非常实用,针对的是低端FPGA的另一个重要应用场景——AD/DA数据采集,应用方式是这块开发板作为核心板+AD\DA板,其中由MCU来实现和上位机的通信和相关协议,FPGA来作AD\DA的采集。

我来简单说一下这个开发板“实用”原因:

众所周知fpga逻辑的设计和仿真的难度和耗时明显比mcu要高至少一个数量级,所以这个开发板通过STM32+FPGA的架构,让只能由FPGA实现的功能在FPGA上实现,其他功能通过MCU来实现,这样来节约开发时间。

注:AD/DA主要进行至少持续一段时间的连续波形连续采集/输出,别看STM32几百M的频率,通过GPIO很难实现百khz AD/DA的采集,更别说多片AD/DA芯片同时采集/输出。

我来举个实际应用的例子:这块开发板通过FPGA控制AD采集,然后把AD的数据直接放到FPGA内构建的一个双端口RAM中,而FPGA对STM32而言只是FSMC总线下的一个RAM,所以STM32可以通过DMA由FSMC总线通过FPGA双端口RAM的另一个端口读取RAM内的AD数据,然后通过STM32控制的网口把AD数据直接发送到上位机,这个架构下可以实现1路500kHz 16位AD数据的实时、连续采集上传。

硬件/逻辑开发难度:低,有现成参考资料和代码

  3)“串口服务器”,也就是通过实现FPGA上百兆网的通信,数据包解析,若干路串口通信,串口数据打包/解包。

简单的说就是网口转RS232/422串口,至于串口的路数视剩余IO而定

硬件开发难度:低

逻辑开发难度:较高,TCP/UDP部分有参考资料和代码,主要要实现网络数据包和串口数据包缓存、转换,最后还可能要用labview写一个简单的客户端。


硬件开发工具:

最近在评估lceda,这个4层的板子不知道lceda能不能支持,原理图应该问题不大,主要是PCB布线SDRAM、lvds和数字RGB需要做等长和lvds的差分走线能不能很好的支持。如果lceda可以的话我会把原理图和pcb都开源,如果不行那我只能用allergo这样就只能发个原理图的pdf(估计也不发了,因为没什么意义)


今后争取每周都能有点进度。


个人感觉画的饼有点大😀

评论
1
文号 / 856966

浪迹天涯
名片发私信
学术分 0
总主题 2 帖总回复 24 楼拥有证书:机友 笔友
注册于 2017/03/11 11:51:15最后登录 2023/05/19 20:53:00
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:0

个人简介

暂未填写
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的