Welcome
大家好,欢迎来到瑾芳玉洁的博客!
😑励志开源分享诗和代码,三餐却无汤,顿顿都被噎。
😭有幸结识那个值得被认真、被珍惜、被捧在手掌心的女孩,不出意外被敷衍、被唾弃、被埋在了垃圾堆。
🙂喜欢舞文弄墨咬文嚼字的混沌世界,懵懂无知走上了工科直男01的不归路。
😎八十公斤的体重勉强与大鹏一日同风起的浮力动态平衡,做不到宠辱不惊无欲无求的匀速直线运动,就按部就班的小波浪式前进,螺旋式蠕动。
<🤵🤵🤵我是专注于FPGA领域的工程师!我就是我,一个没有颜色的错过的烟火,一个立志成为**CSDN TOP100**的黑铁FPGA选手!👌✌哦耶~~~
知识架构
前言
成为一名高级的FPGA工程师需要具备广泛的知识面,且有一定的深度。从原理角度需熟悉数字电路原理、模拟电路,电路原理,了解FPGA内部结构;从开发语言角度需熟悉verilog、VHDL硬件描述语言,以及时兴的systemverilog,并掌握一些经典的示例;从开发工具的角度需熟悉vivado、Quartus II等FPGA开发环境,subline4、vs code等文本编辑器,modelsim、matlab等仿真工具;从接口的角度,熟悉常见的低速通信接口如UART、SPI、IIC等,熟悉常见的高速接口如USB3.0,千兆网口,DDR3等是必备素养。从进阶的角度,需学习时序约束的原理与如何让时序收敛的方法,需学习FPGA大型项目模块划分如何顶层设计。此外,最近几年又兴起的以Xilinx ZYNQ和ZYNQ Ultrasacle+系列为代表的异构处理芯片,集成了ARM与FPGA在一颗芯片上,与他相关的又涉及他的工具,开发流程等内容。我的计划是在博客中分享、记录在FPGA进阶路上的收获,以FPGA内容为主,而其他内容包括Qt,matlab、python,C/C++的内容都是以助力FPGA开发,提升学习办公效率为主要目的。FPGA内容大体包括以下方面:工具、语言、基础理论知识、内部结构知识、xilinx的官方资料解读、常见通信接口、高速通信接口等内容。进阶篇,讲述相对复杂的时序约束,工具使用的进阶,以及基于基础篇通信接口测试的实用的小项目。前路漫漫亦灿灿,往事堪堪亦澜澜,任重道远,行则将至!
本文作为FPGA通信接口专栏的第一篇文章,简要介绍该内容在整体架构中的位置,即数据在以FPGA为核心的系统中流通,是成为中级FPGA工程师的必经之路。介绍通信接口包含的内容主要分为以下几类。一是传统的串行通信接口如UART、IIC、SPI等,二是以太网通信接口包括了两种千兆网口的实现方式,万兆以太网的实现等,三是基于GTx的光口通信高速的serdes接口,四是图像采集显示相关的接口包括了RGB、DVP、LVDS,MIPI等,五是不管是消费领域还是工业场景常见的USB3.0接口。所有的项目提供经过验证之后的源码,为读者提供学习例程或者为大项目的开发提供“封装”好的接口驱动。尽可能做到过程详尽,实用于实战,并会写一些实战过程中解决问题的经验。
系列文章目录
📖Part1:串行通信接口
传统的串行通信接口是一种通过逐位传输数据的通信方式,与并行通信接口相比,>>串行通信接口能够减少数据传输线路的数量,从而节省成本和空间。常见的有RS-232,RS-485,SPI,UART,IIC等,这些传统的串行通信接口在各种应用中广泛使用,例如通信设备、工业控制系统、嵌入式系统等领域。它们提供了简单、可靠的数据传输方式,适用于许多不同的场景。
🎈第一篇文章: 串行通信接口 UART
简介:介绍常见的传统串行通信接口,UART通信协议内容,提供FPGA源码.
🎈第二篇文章: 串行通信接口 SPI
简介:介绍传统串行通信接口SPI协议内容,四种模式,代码设计,实战应用。提供FPGA源码工程.
🎈第三篇文章: 串行通信接口 IIC(1)接口协议
简介:介绍传统串行通信接口IIC协议内容,消息类型,接口时序,读写过程,并提供仿真分析及源码.
🎈第四篇文章: 串行通信接口 IIC(2)EEPROM读写
简介:以AC24C04为例,介绍使用IIC控制器读写EEPROM,提供仿真分析和工程源码
🎈第五篇文章: 串行通信接口-Modbus通信
简介:介绍Modbus协议模型,网络拓扑,寄存器与对应的功能码,搭建实验环境,介绍FPGA实现。
规划中:SPI读写FLASH,敬请期待🤪~~
📖Part2:Double Date Rate DDR
在FPGA开发中,集成DDR3和DDR4存储器模块是常见的需求,DDR在FPGA开发中扮演着存储数据、数据传输、加速算法、缓存和实现高性能应用等重要角色,为FPGA应用的设计和开发提供了强大的支持。当前应用最多的是DDR3和DDR4,使用二者的颗粒或者内存条在配置上有些不同,从认识DDR开始,到学会DDR的使用结束。
🎈第一篇文章: DDR(1) 什么是DDR?
简介:认识DDR,简要梳理SDRAM到DDR的发展历程,总结DDR作用,以镁光颗粒为例介绍DDR内部结构,引脚作用等.
🎈第二篇文章: DDR(2) MIG IP核FPGA与DDR的完美融合
简介:介绍xilinx MIG IP核的接口信号,接口时序,以及IP配置.
🎈第三篇文章: DDR(3) DDR3颗粒读写测试
简介:介绍DDR3颗粒测试项目与测试策略,给出测试程序分析和测试结果分析,是用好DDR的必经之路。
🎈第四篇文章: DDR(4)DDR3内存条SODIMMs读写测试
简介:介绍DDR3内存条与颗粒不同的配置,提供了测试代码,介绍了DDR乒乓缓存的思想。
🎈第五篇文章: DDR(5)DDR4颗粒读写测试
简介:介绍DDR4颗粒测试时IP核配置,测试代码以及自定义颗粒类型。
规划中:DDR4内存条读写🤪用于实战的DDR多通道🤪~~
📖Part3:图像采集显示接口
用各种算法对FPGA采集到的图像数据处理,或者对系统处理之后的结果、系统运行时的状态进行显示是FPGA领域常见的两种应用。前者的首要任务是FPGA完成图像数据采集为后续处理提供平台,涉及图像采集类接口如DVP、LVDS、sub-LVDS、MIPI-CSI等;后者涉及RGB、VGA、HDMI、MIPI-DSI、DP等视频显示接口。认识接口之间的优缺点,掌握各个接口的实现方法,会在做系统方案、器件选型时游刃有余。
🎈第一篇文章: 图像显示(1)RGB接口
简介:介绍TFT、LCD、VGA的概念与相互关系;介绍并实现RGB接口时序完成TFT显示。
🎈第二篇文章: 图像显示(2)VGA接口
简介:FPGA驱动VGA接口显示1024*768@60Hz彩条图像到带VGA接口的显示屏,对应有工程源码。
🎈第三篇文章: 图像显示(3)HDMI接口
简介:介绍了HDMI相关的概念和特点,模拟了一个小项目场景,分步骤介绍如何实现,并附带源代码。
🎈第四篇文章: 图像显示(4)LVDS接口
简介:介绍RGB接口到LVDS显示接口的转换方法,并据此点亮LVDS屏幕,提供源码。
规划中:MIPI采集正在规划中🤪~~
📖Part4:LVDS接口
LVDS(Low Voltage Differential Signaling)是一种低电压差分信号传输技术,具有抗干扰能力强、传输速率高等优点。在FPGA中实现LVDS收发功能可以通过编程配置FPGA内部的逻辑单元和连接来实现LVDS信号的传输和接收,从而实现高速、稳定的数据通信。比起传统接口LVDS具有将近1Gbps的高速率,比起serdes接口他不要很复杂的物理结构做支撑,因此LVDS是非常重要的接口,仍然活跃在多个领域。
🎈第一篇文章: LVDS接口(1)什么是LVDS?
简介:介绍LVDS接口,认识LVDS传输模型,说明LVDS与图像传输与serdes接口的关系。
🎈第二篇文章: LVDS接口(2)硬件设计
简介:介绍LVDS原理,介绍Xilinx器件对于LVDS的支持,介绍PCB布线LVDS信号遵循的原则。
🎈第三篇文章: LVDS接口(3)LVDS发送端设计
简介:介绍RGB接口到LVDS显示接口的转换方法,并据此点亮LVDS屏幕,提供源码。
🎈第四篇文章: LVDS接口(4)LVDS接收端设计
简介:介绍实现LVDS接收端的相关概念以及实现思路。
规划中:LVDS实战应用正在规划中🤪~~
📖Part5:UDP网口
FPGA实现UDP接口通信主要工作在传输层、网络层、数据链路层和物理层上。 物理层主要功能为实现物理信号的接入 ,高速数据的串化 、解串,以及64B/66B编码等。数据链路层主要功能为实现介质无关接口 (MII) 的连接,链路数据检错等功能。 网络层的逻辑模块用于实现IP 、 ARP协议解析功能。传输层的逻辑模块实现 UDP 协议解析功能。不同层放在不同位置的组合组成了不同的实现方案,本系列将一一介绍,并推出协议栈,方便使用。
🎈第一篇文章: UDP网口(1)概述
简介:介绍计算机网络与FPGA实现UDP网口之间的关系,概述当前梳理的几种实现UDP通信的方案。
🎈第二篇文章: UDP网口(2)逻辑组包(上)
简介:用FPGA自己组包的方式实现ARP协议和UDP协议,创建一个数据环回应用,将各模块接口做好,便于后续开发。
🎈第三篇文章: UDP网口(3)逻辑组包(下)
简介:介绍FPGA实现UDP网口组包是ARP工程、UDP收发验证的思路。
🎈第四篇文章: UDP网口(4)ROM存储网口转发Qt显示
简介:将存储在FPGA片上BlockRAM中的图片数据通过网口传输到上位机显示,是UDP网口通信的应用,涉及ROM IP、千兆以太网口、winSocket编程、多线程等多种知识
🎈第五篇文章: UDP网口(5)TEMAC IP核组包
简介:构建小场景利用TEMAC IP核实现千兆网口以太网收发数据测试。介绍IP具体配置,工程验证具体步骤。
🎈第六篇文章: UDP网口(6)10G subsystem Ethernet IP实现万兆以太网通信
简介:使用xilinx的10G以太网IP核实现10G以太网协议,与PC通过标准的万兆以太网网卡实现上下位机通信
📖Part6:Serdes接口
SerDes(Serializer/Deserializer,串行器/解串器)是Xilinx FPGA(现场可编程门阵列)中用于高速串行数据传输的重要技术,主要是区别于传统的并行接口,区别于源同步的模型。用在10G以太网,auraro协议,PCIE协议,RapidIO等协议,以及背板链接和其他场景的板间通信。根据芯片工艺的不同,串行收发器有不同的叫法,如GTP、GTX、GTY等,相应的最大通信速率也不同。在通俗叫法中,serdes等于GT等于aurora等于串行收发器。
🎈第一篇文章: serdes接口(1)IBERT IP核眼图测试
简介:介绍使用IBERT IP核对通信链路进行信号质量测试的使用方法,操作步骤。
🎈第二篇文章: serdes接口(2)光纤接口GTx IP通信
简介:使用两块开发板A和B,通过光纤接口将在A板上ROM中存储的图片数据转发到B板并显示在B板连接的显示屏上,通过GT IP核实现光纤接口通信。
🎈第三篇文章: serdes接口(3)Aurora8/10B光纤接口通信
简介:使用Aurora8/10B IP核实现从发送端到接收端光纤介质的传输,将发送端存储在ROM中的图片显示在接收端连接的lvds屏幕上。
🎈第四篇文章: serdes接口(4) 4路GTX实现40G光纤通信
简介:使用K7系列,4路GTX收发器,采用QSFP+封装的光模块,实现点对点的40G光纤介质通信。
🎈第五篇文章: serdes接口(5) Aurora 64/66B ip实现GTX与GTY的40G通信
简介:Serdes应用实例,实现4路GTX与4路GTY高达40Gbps的通信,分别基于xilinx K7和Ku系列芯片,采用Aurora IP核,64/66B编码。
📖Part7:PCIE接口
PCI Express(PCIe)是一种高速串行计算机扩展总线标准,用于扩展连接其他设备。Xilinx有三种IP实现PCIE分别是,7 Series Integrated Block for PCI Express、AXI Memory Mapped To PCI Express IP、DMA/Bridge Subsystem for PCI Express (PCIe),也叫做 XDMA。 PCIE具有高速传输(最新PCIE6.0支持高达 64 GT/s 的数据速率)、低延迟、扩展性强、兼容性强等特点。
🎈第一篇文章: PCIE接口(1)基于XDMA实现PCIE上下位机开发(上)
简介:介绍PCIE原理,介绍基于XDMA实现PCIE接口通信的环境配置和IP配置。
🎈第二篇文章: PCIE接口(2)基于XDMA实现PCIE上下位机开发(下)
简介:介绍基于XDMA的stream、memory map以及axi lite三种模式,结合第一篇文章,快速实现PCIE接口应用。
开发环境
如无特殊说明,本系列文章开发环境配置如下:
●OS: Windows10 64bit
●开发环境:Vivado2020.2
●芯片厂家:xilinx 7系列 KU系列
●仿真工具:Vivado Simulator
●开发语言:Verilog-HDL
传送门
USB3.0Cypress通信方案专栏
FPGA原语和IP核
FPGA开发必备技能专栏
Qt实战提升篇专栏
基于matlab与FPGA的图像处理
ZYNQ从零开始
番外篇:程序一毛,人生九牛
文章持续更新中-- |
💡 欢迎您关注我的CSDN博客:https://blog.csdn.net/weixin_40615338?type=blog
💡 本文由 瑾芳玉洁 原创👨🎓,相互学习,共同进步!
💡批评,宝贵建议,兼职合作,欢迎交流📧jackxi0207@gmail.com!