苏州网站开发服务,关于网站建设项目收取费用,宁德市蕉城区建设局网站,wordpress文章版权声明目录 1、前言免责声明 2、SODIMM内存条简介3、设计思路框架视频输入视频缓存MIG配置调用SODIMM内存条VGA时序视频输出 4、vivado工程详解5、上板调试验证6、福利#xff1a;工程代码的获取 1、前言
FPGA应用中#xff0c;数据缓存是一大重点#xff0c;不管是图像处理还是A… 目录 1、前言免责声明 2、SODIMM内存条简介3、设计思路框架视频输入视频缓存MIG配置调用SODIMM内存条VGA时序视频输出 4、vivado工程详解5、上板调试验证6、福利工程代码的获取 1、前言
FPGA应用中数据缓存是一大重点不管是图像处理还是AD采集亦或是PCIE等等都需要缓存数据以作后续处理一般的FPGA可以挂载SDRAM、DDR3、DDR4等内存颗粒作为缓存介质但有时限于IO口、FPGA型号等原因还需要设计SODIMM适配额外的内存条才能满足数据缓存的需求这种需求一般用于高端项目
本文使用Xilinx的V7 FPGA开发板NetFPGA-SUME平台作为实验板该开发板板载2路SODIMM接口可插入2个内存条作为缓存该FPGA开发板可以在网上公开渠道买到本例程使用HDMI输入视频或者内部生成的彩条视频作为视频源将视频缓存到SODIMM内存条中做图像三帧缓存后再读出送HDMI显示以验证FPGA对SODIMM内存条的读写是否成功如果输出图像混乱或者质量不高则证明读写有误反之则成功本博客详细描述了FPGA使用SODIMM内存条接口的设计方案工程代码可综合编译上板调试可直接项目移植适用于在校学生、研究生项目开发也适用于在职工程师做学习提升可应用于医疗、军工等行业的高速接口或图像处理领域 提供完整的、跑通的工程源码和技术支持 工程源码和技术支持的获取方式放在了文章末尾请耐心看到最后
免责声明
本工程及其源码即有自己写的一部分也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等)若大佬们觉得有所冒犯请私信批评教育基于此本工程及其源码仅限于读者或粉丝个人学习和研究禁止用于商业用途若由于读者或粉丝自身原因用于商业用途所导致的法律问题与本博客及博主无关请谨慎使用。。。
2、SODIMM内存条简介
SODIMM接口是比较老式的内存条接口说他老式是对电脑主板特别是精巧型笔记本主板而言因为SODIMM接口的体积较大现在已经流行到了M.2接口但对于FPGA而言SODIMM接口并不落伍毕竟一般而言FPGA的内存需求没有电脑那么大加装SODIMM接口内存条已经是顶配了关于SODIMM内存条网上有专门的讲解我在这里就不罗嗦了推荐一篇文章链接如下 点击直接前往
3、设计思路框架
设计思路框架如下
视频输入
我的开发板板载一个FMC接口我手里正好有一个HDMI输入输出的FMC转接板其中HDMI输入接口连接了一块silcom9011芯片作为HDMI解码器将输入的HDMI视频TMDS差分视频解码为24bit的GRB视频供FPGA使用silcom9011芯片需要i2c配置才能使用本例程提供verilog源码实现的i2c控制器配置silcom9011关于silcom9011详细的配置使用请看我往期的专门博客地址如下 点击直接前往 HDMI输出接口连接了一块silcom9134芯片作为HDMI编码器将输入的24bit的GRB视频编码为TMDS差分HDMI视频输出所以视频输入可以使用输入HDMI接口但有的兄弟板子上也许没有HDMI输入接口所以我专门设计了一个FPGA内部生成的动态彩条视频用来模拟输入视频也可以作为视频源参与测试输入依然可以观测彩条的动态变化来验证二者的选择通过工程源码顶层的define COLOR_TEST来选择选择切换逻辑如下
ifdef COLOR_TESTassign ud_w_0_ud_wclk vout_clk ;assign ud_w_0_ud_wde video_de_color ;assign ud_w_0_ud_wvs video_vs_color ;assign ud_w_0_ud_wdatavideo_rgb_color;
elseassign ud_w_0_ud_wclk vin_clk ;assign ud_w_0_ud_wde vin_de ;assign ud_w_0_ud_wvs vin_vs ;assign ud_w_0_ud_wdatavin_data;
endif如果在顶层把define COLOR_TEST注释掉则输入视频源为HDMI输入接口
如果在顶层不把define COLOR_TEST注释掉则输入视频源为动态彩条
动态彩条顶层模块接口如下
视频缓存
使用我的经典套路FDMA完成FDMA是专门用于各种类型数据读写DDR的控制器用它来缓存视频也很方便关于FDMA的专题讲解请看我往期的专门博客地址如下 点击直接前往
MIG配置调用SODIMM内存条
SODIMM内存条本质上还是DDR3颗粒Xilinx提供专门的MIG IP核作为PHY与之交互但MIG配置调用SODIMM内存条与传统不太一样其中的关键点如下 其他配置则根据自己的内存条型号选择即可 我的板子内存条如下
VGA时序
由于输出视频分辨率为1920x108060Hz所以需要提供标准的VGA时序驱动才能形成视频流例程提供verilog源码的VGA时序模块改模块支持常用的7种分辨率通过定成的宏定义修改如下 本设计使用了1080P时序
视频输出
我的开发板板载一个FMC接口我手里正好有一个HDMI输入输出的FMC转接板其中HDMI输入接口连接了一块silcom9011芯片作为HDMI解码器将输入的HDMI视频TMDS差分视频解码为24bit的GRB视频供FPGA使用HDMI输出接口连接了一块silcom9134芯片作为HDMI编码器将输入的24bit的GRB视频编码为TMDS差分HDMI视频输出silcom9134芯片需要i2c配置才能使用本例程提供verilog源码实现的i2c控制器配置silcom9134关于silcom9134详细的配置使用请看我往期的专门博客地址如下 点击直接前往
4、vivado工程详解
开发板FPGA型号Xilinx–V7–xc7vx690tffg1761-3 开发环境Vivado2019.1 输入HDMI视频或动态彩条分辨率1920x108060Hz 输出HDMI视频分辨率1920x108060Hz 应用FPGA使用SODIMM内存条 工程Block Design如下 工程代码架构如下 综合编译完成后的FPGA资源消耗和功耗预估如下
5、上板调试验证
板子如下 HDMI接口输出如下 动态彩条输出如下 以动态彩条输出为例看看输出演示视频 FPGA MIG配置SOMIDD内存条 6、福利工程代码的获取
福利工程代码的获取 代码太大无法邮箱发送以某度网盘链接方式发送 资料获取方式私或者文章末尾的V名片。 网盘资料如下