当前位置: 首页 > news >正文

FPGA使用MIG调用SODIMM内存条接口教程,提供vivado工程源码和技术支持

目录

  • 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_wdata=video_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_wdata=vin_data;
`endif

如果在顶层把`define COLOR_TEST注释掉,则输入视频源为HDMI输入接口;

如果在顶层不把`define COLOR_TEST注释掉,则输入视频源为动态彩条;

动态彩条顶层模块接口如下:
在这里插入图片描述

视频缓存

使用我的经典套路FDMA完成,FDMA是专门用于各种类型数据读写DDR的控制器,用它来缓存视频也很方便,关于FDMA的专题讲解,请看我往期的专门博客,地址如下:
点击直接前往

MIG配置调用SODIMM内存条

SODIMM内存条本质上还是DDR3颗粒,Xilinx提供专门的MIG IP核作为PHY与之交互,但MIG配置调用SODIMM内存条与传统不太一样;其中的关键点如下:
在这里插入图片描述
其他配置则根据自己的内存条型号选择即可;
我的板子内存条如下:
在这里插入图片描述

VGA时序

由于输出视频分辨率为1920x1080@60Hz;所以需要提供标准的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视频或动态彩条,分辨率1920x1080@60Hz;
输出:HDMI视频,分辨率1920x1080@60Hz;
应用:FPGA使用SODIMM内存条;
工程Block Design如下:
在这里插入图片描述
工程代码架构如下:
在这里插入图片描述
综合编译完成后的FPGA资源消耗和功耗预估如下:
在这里插入图片描述

5、上板调试验证

板子如下:
在这里插入图片描述
HDMI接口输出如下:
在这里插入图片描述
动态彩条输出如下:
在这里插入图片描述
以动态彩条输出为例,看看输出演示视频:

FPGA MIG配置SOMIDD内存条

6、福利:工程代码的获取

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末尾的V名片。
网盘资料如下:
在这里插入图片描述

相关文章:

FPGA使用MIG调用SODIMM内存条接口教程,提供vivado工程源码和技术支持

目录 1、前言免责声明 2、SODIMM内存条简介3、设计思路框架视频输入视频缓存MIG配置调用SODIMM内存条VGA时序视频输出 4、vivado工程详解5、上板调试验证6、福利:工程代码的获取 1、前言 FPGA应用中,数据缓存是一大重点,不管是图像处理还是A…...

深度学习数据预处理

参考文章:深度学习中的数据预处理方法总结 在深度学习中,数据预处理(preprocessing)的重要性体现在以下几个方面: 1、数据质量: 原始数据通常包含错误、缺失值、异常值和噪声。预处理能够检测和处理这些问…...

[C++] STL_vector 迭代器失效问题

文章目录 1、前言2、情况一:底层空间改变的操作3、情况二:指定位置元素的删除操作4、g编译器对迭代器失效检测4.1 扩容4.2 erase删除任意位置(非尾删)4.3 erase尾删 5、总结 1、前言 **迭代器的主要作用就是让算法能够不用关心底…...

C语言暑假刷题冲刺篇——day5

目录 一、选择题 二、编程题 🎈个人主页:库库的里昂 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏✨收录专栏:C语言每日一练✨相关专栏:代码小游戏、C语言初阶、C语言进阶🤝希望作者…...

若依Cloud集成Flowable6.7.2

项目简介 基于若依Cloud的Jove-Fast微服务项目,集成工作流flowable(接上篇文章) 若依Cloud集成积木报表 项目地址:https://gitee.com/wxjstudy/jove-fast 后端 新建模块 目录结构如下: 引入依赖 前提:引入依赖之前先配置好maven的setting.xml &…...

动态不确定性的动态S过程(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

LoadRunner操作教程

日升时奋斗,日落时自省 目录 1、Virtual User Generator (VUG) 1.1、WebTours系统 1.1.1、WebTours启动 1.1.2、WebTours配置 1.2、脚本录制 1.3、编译 1.4、脚本运行 1.5、加强脚本 1.5.1、事务插入 1.5.2、插入集合点 1.5.3、参…...

.NET Core 实现日志打印输出在控制台应用程序中

在本文中,我们将探讨如何在 .NET Core 应用程序中将日志消息输出到控制台,从而更好地了解应用程序的运行状况。 .NET Core 实现日志打印输出在控制台应用程序中 在 .NET Core 中,日志输出打印是使用 Microsoft.Extensions.Logging 命名空间…...

Nginx正向代理与反向代理及Minio反向代理实操(三)

本文是对: Nginx安装及Minio集群反向动态代理配置(二) 文的进一步完善: 多台服务器间免密登录|免密拷贝 Cenos7 搭建Minio集群部署服务器(一) Cenos7 搭建Minio集群Nginx统一访问入口|反向动态代理(二) Spring Boot 与Minio整合实现文件上传与下载(三) CentOS7的journa…...

Xmake v2.8.2 发布,官方包仓库数量突破 1k

Xmake 是一个基于 Lua 的轻量级跨平台构建工具。 它非常的轻量,没有任何依赖,因为它内置了 Lua 运行时。 它使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好&#x…...

加油站抽烟烟火智能识别算法

加油站抽烟烟火智能识别系统通过yoloopencv网络模型图像识别分析技术,加油站抽烟烟火智能识别算法识别出抽烟和燃放烟火的情况,并发出预警信号以提醒相关人员,减少火灾风险。OpenCV基于C实现,同时提供python, Ruby, Matlab等语言的…...

web前端开发中的响应式布局设计是什么意思?

响应式布局是指网页设计和开发中的一种技术方法,旨在使网页能够在不同大小的屏幕和设备上都能良好地显示和交互。这种方法使得网页可以自动适应不同的屏幕尺寸,包括桌面电脑、平板电脑和手机等。 在Web前端开发中,响应式布局通常使用CSS&…...

【LeetCode-面试经典150题-day14】

目录 19.删除链表的倒数第N个结点 82.删除排序链表中的重复元素Ⅱ 61. 旋转链表 86.分隔链表 146.LRU缓存 19.删除链表的倒数第N个结点 题意: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 【输入样例】head [1,2,3,4,5…...

【算法系列总结之分组循环篇】

【算法系列总结之分组循环篇】 分组循环1446.连续字符1869.哪种连续子字符串更长1957.删除字符使字符串变好2038.如果相邻两个颜色均相同则删除当前颜色1759.统计同质子字符串的数目2110.股票平滑下跌阶段的数目1578.使绳子变成彩色的最短时间1839.所有元音按顺序排布的最长子字…...

汽车摩托车零部件出口管理ERP解决方案

近年来,随着全球经济的发展,人们对交通工具的需求增加,国内汽车、摩托车市场的不断扩大,以及国内制造技术的不断提高,中国汽车、摩托车零部件出口业务迎来了广阔的发展前景,带动了汽车配件和摩托车配件市场…...

NPM 管理组织包

目录 1、关于组织范围和包 1.1 管理无作用域的包 2、使用组织设置配置npm客户端 2.1 配置您的npm客户端以使用您组织的范围 为所有新包设置组织范围 为单个包设置组织范围 2.2 将默认包可见性更改为public 将单个包的包可见性设置为public 将所有包的包可见性设置为pu…...

蓝桥杯上岸每日N题 (修剪灌木)

大家好 我是寸铁 希望这篇题解对你有用,麻烦动动手指点个赞或关注,感谢您的关注 不清楚蓝桥杯考什么的点点下方👇 考点秘籍 想背纯享模版的伙伴们点点下方👇 蓝桥杯省一你一定不能错过的模板大全(第一期) 蓝桥杯省一你一定不…...

docker harbor私有库

目录 一.Harbor介绍 二.Harbor的特性 三.Harbor的构成 四.Harbor构建Docker私有仓库 4.2在Server主机上部署Harbor服务(192.168.158.25) 4.2.1 这时候这边就可以去查看192.168.158.25网页 4.3此时可真机访问serverIP 4.4通过127.0.0.1来登陆和推送镜…...

strcmp 的使用和模拟

目录 函数介绍: 头文件: 语法: 代码演示: 函数模拟: 函数介绍: strcmp是比较大小的函数。从字符串开始进行比较,如果两个相同位置的字符相同,那么继续往下进行比较,…...

军用加固计算机

军用加固计算机是为满足军事应用需求而设计的一种高性能、高安全性的计算机。与普通计算机相比,它具有以下特点: 加固材料:军用加固计算机通常采用钢板、铝合金等材料进行加固,能够承受较大的冲击和振动,保证在恶劣环境…...

Cortex-M7 WIC模块移除的影响与工程实践

1. Cortex-M7中移除WIC的影响解析在嵌入式系统设计中,Cortex-M7处理器的WIC(Wakeup Interrupt Controller)模块是一个值得深入探讨的组件。作为一位从事ARM架构开发多年的工程师,我经常遇到客户询问关于WIC配置的问题。这个看似简…...

Keil MDK构建时间戳记录方案与实现

1. 项目概述:Keil MDK构建时间戳记录方案在嵌入式开发中,项目构建(Project Build)的时间管理是个容易被忽视却至关重要的细节。当我们需要调试复杂工程时,准确记录构建开始时间可以帮助我们同步调试日志;而…...

ChatGPT API接入全流程详解:从密钥配置、请求封装到错误重试、流式响应的7步落地指南

更多请点击: https://kaifayun.com 第一章:ChatGPT API接入的前置准备与核心概念 在正式调用 ChatGPT API 之前,需完成身份认证、环境配置与服务理解三类关键准备。OpenAI 平台不再提供免费配额的永久访问权限,所有开发者必须通过…...

【函数栈帧的创建和销毁:一文看懂 C/C++ 函数调用的底层秘密】

本文适合:被“局部变量为什么是随机值”、“函数怎么传参”、“返回值怎么带回来”这些问题困扰过的初学者。 文末会解释:为什么返回局部变量的引用有时能打印出正确值,但依然是错的?Hello,大家好呀,这里是小J,函数栈帧…...

Claude中文完整上手指南:官网、API、Claude Code与国内使用一篇讲透

Claude中文完整上手指南:官网、API、Claude Code与国内使用一篇讲透 写在前面 现在再看 Claude,已经不能只把它当成一个聊天工具了。 对普通用户来说,它是一个很强的长文理解、写作整理和复杂问答助手;对开发者来说,…...

护照照片怎么在手机上拍好?2026年用微信小程序搞定的完整方案

很多人做护照照片默认找线下照相馆,但其实用手机微信小程序这个组合已经完全够用。微信里有个叫多多职业照的小程序在处理各类证件照的需求上效率比较高,这篇文章就详细拆解一下这个方向,搭配同家的立得一寸照、奈斯证照助手、抠图喵作为补充…...

手把手教你从零搭建 MCP Server:AI 连接万物的保姆级实战教程

为什么要学 MCP? 说实话,最近半年 AI 开发圈最火的协议就是 MCP(Model Context Protocol)了。你可能已经用上了各种 AI 助手,但有没有想过:这些 AI 怎么连接你的数据库?怎么读你的本地文件&…...

SPT-AKI存档编辑器:掌控离线塔科夫游戏进度的终极工具

SPT-AKI存档编辑器:掌控离线塔科夫游戏进度的终极工具 【免费下载链接】SPT-AKI-Profile-Editor Программа для редактирования профиля игрока на сервере SPT-AKI 项目地址: https://gitcode.com/gh_mirrors/s…...

为openclaw配置taotoken作为其ai供应商的详细步骤指南

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为OpenClaw配置Taotoken作为其AI供应商的详细步骤指南 OpenClaw是一款流行的AI智能体开发工具,它允许开发者通过配置来…...

NotebookLM效应量计算合规性危机:FDA/EMA/NMPA最新AI辅助研究指南对效应量报告的强制性要求(附自查清单V2.3)

更多请点击: https://intelliparadigm.com 第一章:NotebookLM效应量计算合规性危机的定义与背景 NotebookLM 效应量计算合规性危机,是指当研究者在使用 Google NotebookLM(一款基于 LLM 的文档理解与推理工具)辅助开展…...