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

news2024/11/23 11:59:56

目录

  • 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_TEST
	assign 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;
`else
	assign 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名片。
网盘资料如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/912159.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝牙防丢器(附HS6621芯片选型)

在繁忙的生活中,我们往往会因为疏忽而丢失贵重物品,如钱包、钥匙、手机等,给生活带来不小的麻烦。然而,现代科技正为我们提供一种聪明的解决方案——蓝牙防丢器。这款小巧智能的装置不仅保护您的财物,还为您的生活带来…

无涯教程-PHP - sql_regcase()函数

sql_regcase() - 语法 string sql_regcase (string string) 可以将sql_regcase()函数视为实用程序函数,它将输入参数字符串中的每个字符转换为包含两个字符的带括号的表达式。 sql_regcase() - 返回值 返回带括号的表达式字符串以及转换后的字符。 sql_regcase…

隧道vs免费爬虫ip:为何要选择隧道爬虫ip?

在网络爬虫的世界中,爬虫ip是一项关键技术,它可以帮助我们隐藏身份、突破限制、提高抓取效率。但是,在选择爬虫ip时,我们常常会面对隧道爬虫ip和免费爬虫ip之间的抉择。在本文中,我们将探讨隧道爬虫ip相对于免费爬虫ip…

再谈一下DDD中的聚合设计

何为聚合 在领域模型中,一些实体或者值对象具有强而有力的业务关联关系,于是这些对象就组成了一个聚合,聚合内部的业务实体之间必须保证状态一致性。从技术角度来看,聚合是数据修改与持久化的基本单元,聚合内数据修改…

docker实践作业

1.安装docker服务,配置镜像加速器 2.下载系统镜像(Ubuntu、 centos) 3.基于下载的镜像创建两个容器 (容器名一个为自己名字全拼,一个为首名字字母) 4.容器的启动、 停止及重启操作 5.怎么查看正在运行的容器…

SpeedBI数据可视化工具:浏览器上做分析

SpeedBI数据分析云是一种在浏览器上进行数据可视化分析的工具,它能够将数据以可视化的形式呈现出来,并支持多种数据源和图表类型。 所有操作,均在浏览器上进行 在浏览器中打开SpeedBI数据分析云官网,点击【免费使用】进入&#…

Faster RCNN网络数据流总结

前言 在学习Faster RCNN时,看了许多别人写的博客。看了以后,对Faster RCNN整理有了一个大概的了解,但是对训练时网络内部的数据流还不是很清楚,所以在结合这个版本的faster rcnn代码情况下,对网络数据流进行总结。以便…

生成式AI将催生出大量新的就业机会,倒逼14亿员工学习掌握新技能

尽管IBM的研报指出生成式AI的普及将为未来三年内的14亿劳动力带来必须学习和掌握新技能的挑战,但它也强调这股浪潮不会引发失业潮,相反,它将催生出大量新的就业机会。生成式AI被认为将在各种商业模式中发挥重要作用,为企业提供了利…

STM32CubeMx配置HAL库PWM

PWM简介 PWM(Pulse Width Modulation)是脉冲宽度调制的缩写,是一种利用微处理器的数字输出来对模拟电路进行控制的技术。PWM的原理是 通过调节占空比来调节脉冲宽度,从而改变输出电压的大小。波形图如下 PWM的两个重要参数为频率和占空比。频率是周期…

【最新附安装包】UG NX2023安装教程(CAD/CAM)

软件下载 软件:UG NX版本:2023语言:简体中文大小:10.78G安装环境:Win11/Win10/Win8/Win7硬件要求:CPU3.0GHz 内存8G(或更高)下载通道①百度网盘丨64位下载链接:https://pan.baidu.c…

(动态规划) 剑指 Offer 10- II. 青蛙跳台阶问题 ——【Leetcode每日一题】

❓剑指 Offer 10- II. 青蛙跳台阶问题 难度:简单 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e97(1000000007),如计算初始结果为:1…

2023企业数智化转型的正确打开方式是什么?他这样说(三)

哈喽~又见面了大家!上两期我们说到了数据在数智化转型中的重要性以及监控在数智化转型中的角色,戳这里↓↓↓,一键回放精彩内容 2023企业数智化转型的正确打开方式是什么?他这样说(一)https://mp.csdn.net…

MacBook 上的 Asahi Linux 将基于 Fedora Linux

MacBook 上的 Asahi Linux 将基于 Fedora Linux Asahi Linux 旨在将 Linux 移植到使用 M1、M2 等苹果硅芯片的 Mac 电脑上。它最初是基于 Arch Linux 的软件包构建的,采用 Arch Linux ARM,添加了自己的覆盖包资源库,并将所有的集成工作打包到…

支持4KHz回报的电竞鼠标,游戏操作更精准,雷柏VT950Pro上手

雷柏这两年推出的V系列外设很受还原,配合新近推出的4K电竞游戏技术,非常适合在高分辨率的显示器上玩游戏。目前很多雷柏经典的鼠标型号,也都出了新版本,设计更加炫酷,还可以支持4K了,配上一只4K接收器就可以…

elastic-job源码- job自动装配

版本&#xff1a;3.1.0-SNAPSHOT git地址&#xff1a;GitHub - apache/shardingsphere-elasticjob: Distributed scheduled job framework Maven 坐标 1 2 3 4 5 <dependency> <groupId>org.apache.shardingsphere.elasticjob</groupId> <artif…

vite+vue3使用@路径,报错处理

报错原因&#xff1a;未配置 符号为指定路径别名&#xff0c;直接使用导致 处理方法&#xff1a; 安装path模块&#xff1a; npm install --save-dev types/node修改vite.config.ts import { defineConfig } from vite import vue from vitejs/plugin-vue import path from…

Hope.money:新兴DeFi项目如何重新定义稳定币生态的未来?

联储加息导致金融市场紧缩&#xff0c;Terra、3AC、FTX等知名中心化机构未能妥善应对而暴雷&#xff0c;并重创了整个加密货币市场&#xff0c;导致参与者损失惨重。这些事件揭示了中心化机构的局限&#xff0c;投资者对其资产掌控权的担忧愈发强烈。 自2018年首个DeFi协议Com…

Java算法:对角线遍历

Java算法&#xff1a;对角线遍历 学习目标&#xff1a;对角线遍历算法算法要求算法思路算法实现 学习目标&#xff1a;对角线遍历算法 每日初级算法&#xff1a;对角线遍历 算法要求 给你一个大小为 m x n 的矩阵 mat &#xff0c;请以对角线遍历的顺序&#xff0c;用一个数组…

使用 Feature Flags 与可观测工具实现数据库灰度迁移

场景描述 很多企业会遇到数据库升级、或数据库迁移的情况&#xff0c;尤其是在自建数据库服务向云数据库服务、自建机房向云机房、旧数据库向新数据库迁移等场景。 然而&#xff0c;我们需要在整个移植过程中保证其稳定性、避免数据遗失、服务宕机等情况&#xff0c;最常见的移…

PHP求职招聘系统Dreamweaver开发mysql数据库web结构php编程计算机网页

一、源码特点 PHP 求职招聘系统是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 源码 https://download.csdn.net/download/qq_41221322/88240283 论文 https://down…