首页 > 其他分享 >Github_以太网开源项目verilog-ethernet代码阅读与移植(五)

Github_以太网开源项目verilog-ethernet代码阅读与移植(五)

时间:2024-09-29 21:53:35浏览次数:9  
标签:Github fifo 如下 verilog 模块 时钟 数据 以太网 axis

实验背景
在(四)中介绍了Github开源项目verilog-ethernet的移植思路,以及对MII接口和数据链路层等功能的仿真,下面介绍数据的跨时钟域传输,以太网数据传输过程和网络层数据传输相关的移植。
实验内容
数据的跨时钟域传输处理,以太网数据传输过程和网络层数据传输模块介绍与仿真。
实验步骤
对于MII接口,tx_clk和rx_clk均由PHY芯片提供,且为25MHz,上层模块传输数据的时钟可能并不是25MHz,这就有跨时钟域的问题,解决数据跨时钟传输一般的解决方法是使用fifo,verilog-ethernet项目中使用的模块是axis_async_fifo_adapter.v。文件如下:
在这里插入图片描述
可以看到,有两个类似的模块,其中axis_async_fifo.v的输入和输出数据是等位宽,而axis_async_fifo_adapter.v模块的输入和输出数据位宽可以不等。
上层模块将数据输入到axis_async_fifo_adapter模块中进行跨时钟时钟处理后,再输出到eth_mac_mii模块中。对应的顶层模块如下:
在这里插入图片描述
RTL视图如下:
在这里插入图片描述
该模块端口分为axis_in, axis_out和mii接口,如下:
在这里插入图片描述
对该模块进行仿真,测试模块代码片段如下:
在这里插入图片描述
在参数设置中,设置位宽都为8,使能TX(RX)_FRAME_FIFO模式,这个模式的功能是,当axis上数据传输结束后,就开始将fifo中的数据发送出去。
在这里插入图片描述
其中系统时钟设置为50MHz,即上层数据以50MHz时钟传输到axis_async_fifo_adapter模块。
在这里插入图片描述
传输50字节的数据到axis_async_fifo_adapter中。
启动仿真,查看axis_async_fifo_adapter波形,
在这里插入图片描述
可以看到数据在50MHz(s_clk)时钟下写入数据,以25MHz(m_clk)时钟读出数据,且读出数据是写入完成后自动进行的,正是TX_FRAME_FIFO模式的体现。下面查看mii_tx有关的信号
在这里插入图片描述
可以观察到,前导码和帧分隔码正确,在传输完50字节数据后,填充数据使整个帧达到64字节。
至此,上层数据的跨时钟域处理完成,下面就是数据逐层据封装的过程,以太网包数据结构如下:
在这里插入图片描述
14字节的帧头信息,有效数据和帧校验码如下表所示
在这里插入图片描述
对于网络层,分为IP首部和有效数据(payload);传输层分为UDP首部和有效数据。首先看以太网帧头部和有效数据。对应模块如下:
在这里插入图片描述该模块主要端口如下:
在这里插入图片描述
分为首部信号和有效数据信号,首部信号中要目的mac地址,源mac地址,type信息。
输出数据信号如下:
在这里插入图片描述
创建该模块(eth_axis_tx)与eth_mac_mii_fifo模块的顶层文件,如下:
在这里插入图片描述
例化eth_axis_tx模块
在这里插入图片描述
例化eth_mac_mii_fifo模块
在这里插入图片描述RTL视图如下:
在这里插入图片描述
对该顶层模块(eth_axis_tx_top)进行仿真,测试文件如下:
在这里插入图片描述
时钟信号如下:
在这里插入图片描述
系统时钟50MHz, mii_tx传输时钟25MHz。
仿真过程分为两步,第一步传输帧头信息,第二步传输有效数据信息:
在这里插入图片描述
在这里插入图片描述
帧头信息如下:
目的mac地址:22_33_44_55_66_77
源mac地址:88_99_aa_bb_cc_dd
type信息为:16’h08_00,表示上层协议类型为IP协议。
有效数据为20字节的数据。eth_axis_tx模块的输入波形如下:
在这里插入图片描述
在输出端口,将头部信息和有效数据合并,波形如下:
在这里插入图片描述
数据传输到eth_mac_mii_fifo模块,数据在25MHz时钟下传输:
在这里插入图片描述mac地址和type信息传输正确,波形如下:
在这里插入图片描述
数据填充功能正常,波形如下:
在这里插入图片描述下面进行网络层封装的分析,网络层使用IP协议,IP首部如下:
在这里插入图片描述
改图摘自《Computer Networks》第五版,作者为Andrew S.Tanenbaum和DAVID J. WETHERALL,各字段的介绍可以参考这本书。对应的模块如下:
在这里插入图片描述
该模块端口信息如下:
在这里插入图片描述
在这里插入图片描述
这里看到IP首部信息和以太网帧头信息,创建顶层模块,如下:
在这里插入图片描述
对应的顶层模块RTL视图如下:
在这里插入图片描述
对该顶层模块进行仿真,仿真文件如下:
在这里插入图片描述
首先传输首部信息
在这里插入图片描述
再传输有效数据
在这里插入图片描述
如果需要修改IP地址,mac地址等信息,只要修改对应信号的值即可,启动仿真,查看首部信息和有效数据输入:
在这里插入图片描述
mii_tx输出如下:
在这里插入图片描述
以太网帧头信息波形如下:
在这里插入图片描述
IP首部信息波形如下:
在这里插入图片描述
有效数据如下:
在这里插入图片描述
填充数据如下:
在这里插入图片描述
至此,网络层数据封装过程分析完成,后面将介绍传输层数据传输过程,约束文件的编写,以及板级验证。

标签:Github,fifo,如下,verilog,模块,时钟,数据,以太网,axis
From: https://blog.csdn.net/sinat_25428663/article/details/142644471

相关文章

  • dremio 25.1 github 代码变动
    dremio25.1已经发布了好几个礼拜了,以前说过github社区版25.1版本的没有提交最新的,最近看了下github已经提交新的了而且这次应该是比较完整的构建上的一些问题jdk依赖这个保持不变,同时看官方一些信息对于maven构建已经调整了,有了不错的支持ui组件目前@dremio/dremi......
  • 一些超好用的 GitHub 插件和技巧
    聊聊我平时使用GitHub时学到的一些插件、技巧。‍‍浏览器插件在我的另一篇博客浏览器插件推荐里提到过跟GitHub相关的一些插件,这里重复下:Sourcegraph:在线打开项目,方便阅读,将GitHub变得和IDE一般,集成各种功能,参考爱了爱了,这个GitHub的Chrome神仙插件把我整的......
  • GitHub每日最火火火项目(9.27)
    项目名称:localsend/localsend项目介绍:“localsend/localsend”是一个极具价值的开源项目。它为用户提供了一种跨平台的文件传输替代方案,可媲美AirDrop。在当今数字化时代,人们常常需要在不同操作系统的设备之间传输文件,但并非所有设备都能使用AirDrop。这个项目的出......
  • GitHub的使用
    文章目录一、什么是Git1.1、与其他版本控制系统的区别概念上的差异本地操作数据的完整性附加模型1.2、三种状态和基本Git工作流程Git的基本工作流程二、首次Git设置2.1、Git的安装(Linux)2.2、Git的安装(Windows)2.3、Git配置2.4、配置Git用户2.5、配置默认文本编辑器Emac......
  • SciTech-BigDataAIML-Github-
    GeneratinganewGPGkeyGeneratinganewGPGkeyIfyoudon'thaveanexistingGPGkey,youcangenerateanewGPGkeytouseforsigningcommitsandtags.TOCInthisarticleGeneratingaGPGkeyFurtherreadingSupportedGPGkeyalgorithmsGi......
  • 具有 1Gbps 以太网 TMS320C6454BCTZ7/TMS320C6454BCTZ8/TMS320C6454BGTZA C64x+ 定点
    TMS320C6454器件是TMS320C6000™DSP平台中性能最高的定点DSP产品。C6454器件基于德州仪器(TI)开发的第三代高性能高级VelociTI超长指令字(VLIW)架构,是视频和电信基础设施、成像/医疗和无线基础设施(WI)等应用的绝佳选择。C6454设备为不需要C6455的2MB或串行RapidIO提供的高速互连......
  • Typora图床配置(用自带的 PicGo-Core(command line) 插件GitHub
    1.准备工作在GitHub申请token,申请的token只出现一次!下载node.js并安装,node.js官网,如果是win7系统,可以下载2020的最新版,笔者是win7,64位的系统,下载的是node-v15.5.0-x64.msi.2.在Typora中下载PicGo-Core(commandline)插件打开Typora,依次点击文件-偏好设置-图像;按......
  • Github第一Star数的国产免费开源防火墙--雷池社区版初步体验
    前言近期准备搭建一个博客网站,用来存储工作室同学们的学习笔记。服务器准备直接放在公网上,方便大家随时随地的上传和浏览,为了防止网站被人日穿成为肉鸡,一些防御措施还是要部署的。首先明确自己的需求:零成本,效果好,易使用很明显适合我的,就只有开源WAF在经过相关资料的查阅后,我......
  • Stargazers Ghost Network在GitHub平台上的隐性威胁
    CheckPointResearch近期曝光了一个名为StargazersGhostNetwork的分发即服务(DaaS)网络,该网络利用GitHub这一全球知名的代码托管平台,通过精心设计的“幽灵账户”来隐秘地传播恶意软件。这一发现再次凸显了IP地址查询在识别和阻断网络威胁中的重要作用。StargazersGhostNetwork的......
  • 5 分钟快速入门 Github Action
    GithubAction是一种自动化构建工具。‍介绍什么是GitHubAction?来看看阮一峰大佬的介绍:GitHubActions是GitHub的持续集成服务,于2018年10月推出。大家知道,持续集成由很多操作组成,比如抓取代码、运行测试、登录远程服务器,发布到第三方服务等等。GitHub把这些操作......