制作网站公司 英语网站首页目前主要的网络营销方式

news/2025/10/8 0:18:25/文章来源:
制作网站公司 英语网站首页,目前主要的网络营销方式,都有什么推广平台,建设银行科技中心网站文章目录 前言一、设计框图二、GT_module三、PHY_module3.1、PHY_tx模块3.2、PHY_rx_bitsync模块3.3、PHY_rx模块 四、上板测试 前言 有了对64B66B协议的认识以及我们之前设计8B10B自定义PHY的经验#xff0c;本文开始对64B66B自定义PHY的设计 一、设计框图 二、GT_module … 文章目录 前言一、设计框图二、GT_module三、PHY_module3.1、PHY_tx模块3.2、PHY_rx_bitsync模块3.3、PHY_rx模块 四、上板测试 前言 有了对64B66B协议的认识以及我们之前设计8B10B自定义PHY的经验本文开始对64B66B自定义PHY的设计 一、设计框图 二、GT_module 该模块整体设计与8B10B几乎一致只有一些端口的区别再就是将QPLL复位产生模块gtwizard_0_common_reset从GT_channel模块放到了GT_module模块但其实本质没有任何区别。 主要还是IP核配置变为64B66B之后输入输出的接口有一些变化包括帧头信号对齐信号以及发送队列计数器信号等。 同理用户需要多个channel的时候只需要在GT_module模块当中例化多个GT_channel模块即可。 module GT_channel(input i_sysclk ,input i_gtrefclk ,input i_rx_rst ,input i_tx_rst ,output o_tx_done ,output o_rx_done ,input i_tx_polarity ,input [3 :0] i_tx_diffctrl ,input [4 :0] i_txpostcursor ,input [4 :0] i_txpercursor , input i_rx_polarity ,input [2 :0] i_loopback ,input [8 :0] i_drpaddr , input i_drpclk ,input [15:0] i_drpdi , output [15:0] o_drpdo , input i_drpen ,output o_drprdy , input i_drpwe ,input i_qplllock , input i_qpllrefclklost , output o_qpllreset ,input i_qplloutclk , input i_qplloutrefclk , input i_data_valid ,output o_rx_clk ,output [63:0] o_rx_data ,output o_rx_valid ,output [1 :0] o_rx_header ,output o_rx_header_valid ,input i_rx_slipbit ,output o_tx_clk ,input [63:0] i_tx_data ,input [1 :0] i_tx_header ,input [6 :0] i_tx_sequence , output o_gt_tx_p ,output o_gt_tx_n ,input i_gt_rx_p ,input i_gt_rx_n );三、PHY_module PHY层对数据进行组包和对齐的处理是难点所在 设计思路及代码思路参考了FPGA奇哥系列网课 3.1、PHY_tx模块 发送端工作流程 空闲时期拉高READY用户数据进入FIFOs_axis_last断言后拉低READYFIFO不为空的时候从FIFO当中读出数据进行组帧当前数据帧发送完毕重新拉高READY大小端处理 发送数据时需要注意每发送32个64bit数据之后用户需要暂停发送一拍数据因为此时Gearbox需要将自己缓存的64bit数据吐出去。 从下图波形上看sequence计数到31后第32拍的用户数据是没办法被正常发送的所以我们需要将该数据延迟到下一拍发送所以图中的32和0时候的数据是一样的。 这个逻辑通过信号w_gt_send_valid 实现达到30的时候拉低w_gt_send_valid 这是因为还要考虑组帧时候的FIFO读潜伏期。 assign w_gt_send_valid ro_tx_sequence 30 ? 0 : 1 ;以上情况很好处理但是如果刚刚好是在FIFO读使能拉高的时候w_gt_send_valid被拉低下图所示组帧逻辑就会混乱主要是数据不会在ro_tx_sequence为32和0的时候保持不变因此加入一个r_invalid用来处理这种情况这里有点过于复杂了还是需要多看看波形图进行分析应该有比较简单的办法的。 不过思想是很简单的就是保证在ro_tx_sequence 32和ro_tx_sequence 0的时候输出数据要连续保持才能使得数据不会丢失。 最后一点就是大小端处理我个人习惯处理数据按照大端处理在最后发送的时候一次性转为小端模式。 assign o_tx_data { ro_tx_data[7 : 0],ro_tx_data[15: 8],ro_tx_data[23:16],ro_tx_data[31:24],ro_tx_data[39:32],ro_tx_data[47:40],ro_tx_data[55:48],ro_tx_data[63:56]};3.2、PHY_rx_bitsync模块 该模块实现接收端字节对齐的功能 整体思路很简单下图为xilinx手册ug476当中对示例文件的介绍。 大致思维 在64B66B当中只有2;b10和2’b01俩种帧头是有效的所以我们只需要判断帧头是否是有效的就可以判断当前字节是否对齐。当检测到错误帧头时拉高一个slipbit脉冲信号那么Gearbox会自动将对齐窗口向后滑动一个比特注意每次拉高slipbit脉冲信号的时候至少要隔32个RXUSRCLK2时钟周期为了防止误判只有当连续收到64个正确头的时候才会判定为当前成功对齐随后释放PHY_rx的复位进行正常数据接收。在xilinx文档当中的状态机还增加了重新复位接受模块的状态就是判定对齐之后当连续收到16个错误头后判断对齐出现了错误重新进行对齐本工程当中没有这个状态出现一个错误头立马复位然后重新进行同步。 下图为仿真波形第一条黄线之前是进行不断同步的过程每次同步之间相隔32时钟周期俩条黄线之间是发生了错误判断的情况但在收到一个错误帧头后立马重新开始了同步第二条黄线有点看不清可以看下面黄色框框位置后是正常同步。 3.3、PHY_rx模块 接收端处理流程 先将GT输入数据进行大小端转换识别到SOF之后开始恢复数据识别EOF以及EOF位置根据EOF位置处理最后一拍数据以及KEEP信号 同样的在接收数据的时候每隔32时钟周期就有一个无效数据进行VALID信号处理的时候需要考虑该情况。这里还有一点很重要那就是识别到SOF后紧接着这个无效数据就来了这种情况也是需要单独讨论的接收端的r_invalid信号就是用来处理这种情况的。 主要代码 always(posedge i_rx_clk,posedge i_rx_rst) beginif(i_rx_rst)rm_axis_data d0;else if(r_eof (r_eof_local 7 r_eof_local 0))rm_axis_data {ri_rx_data_1d[47:0],16d0}; else if(w_eof (w_eof_local 0))rm_axis_data {ri_rx_data_1d[55:0],8d0};else if(w_eof (w_eof_local 7))rm_axis_data {ri_rx_data_1d[55:0],ri_rx_data[55:48]}; else if(r_receiving ri_rx_valid)rm_axis_data {ri_rx_data_1d[55:0],ri_rx_data[63:56]};else rm_axis_data d0; endalways(posedge i_rx_clk,posedge i_rx_rst) beginif(i_rx_rst)rm_axis_keep 8b1111_1111;else if(r_eof (r_eof_local 7 r_eof_local 0))case(r_eof_local)1 :rm_axis_keep 8b1111_1100;2 :rm_axis_keep 8b1111_1000;3 :rm_axis_keep 8b1111_0000;4 :rm_axis_keep 8b1110_0000;5 :rm_axis_keep 8b1100_0000;6 :rm_axis_keep 8b1000_0000; default :rm_axis_keep 8b1111_1111;endcaseelse if(w_eof (w_eof_local 0 || w_eof_local 7))case(w_eof_local)0 :rm_axis_keep 8b1111_1110;7 :rm_axis_keep 8b1111_1111; default :rm_axis_keep 8b1111_1111;endcaseelse rm_axis_keep 8b1111_1111; endalways(posedge i_rx_clk,posedge i_rx_rst) beginif(i_rx_rst)rm_axis_last d0;else if(rm_axis_last rm_axis_valid)rm_axis_last d0;else if(rm_axis_valid r_eof (r_eof_local 7 r_eof_local 0))rm_axis_last d1;else if(rm_axis_valid w_eof (w_eof_local 7 || w_eof_local 0))rm_axis_last d1;else rm_axis_last rm_axis_last; endalways(posedge i_rx_clk,posedge i_rx_rst) beginif(i_rx_rst)rm_axis_valid d0;else if(r_sof)rm_axis_valid d1;else if(rm_axis_last rm_axis_valid)rm_axis_valid d0;else if((!ri_rx_valid ri_rx_header ! 2b10) || r_invalid)rm_axis_valid d0;else if(r_revalid)rm_axis_valid d1;else rm_axis_valid rm_axis_valid; end四、上板测试 暂时还没有加扰和解扰所以直接光纤连接通信有点问题这里是开启回环模式下上板测试结果收发是正常的。

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

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

相关文章

网站页面布局模板工业互联网平台首先要提高数据的挖掘能力

[vue] 你知道vue的模板语法用的是哪个web模板引擎的吗?说说你对这模板引擎的理解 模板引擎: 负责组装数据,以另外一种形式或外观展现数据。 优点: 可维护性(后期改起来方便); 可扩展性&#…

学校建设门户网站的好处营销型网站建设一般要多少钱

常用音频接口:TDM,PDM,I2S,PCM_tdm音频_沙漠的甲壳虫的博客-CSDN博客 I2S/PCM接口及音频codec_音频pcm接口模块设计-CSDN博客 2个TDM8功放调试ing_周龙(AI湖湘学派)的博客-CSDN博客 数字音频接口时序----IIS、TDM、PCM、PDM_td…

wordpress点赞排行榜宁波seo智能优化

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

py网站开发视频教程网站开发文献资料

字典的每个键值对用冒号分割,键值对之间用逗号分隔,所有键值对包括在{}中。d {key1 : value1, key2 : value2 }键必须是唯一的,值可以不唯一。值可以取任何数据类型,但键必须是不可变对象,如字符串,数字或…

公司网站制作机构邢台做网站的

阅读目录一 数学定义的函数与python中的函数初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把…

网站建设代码排版出错app订制

python操作文件 open的常用参数: 1.要读取的文件名字或者文件路径 2.文件打开的模式 r:只读模式 rb:以二进制的格式去打开文件 3.encoding:用来指定文件的编码格式(使用rb的时候,不需要加该参数) #打…

山东省建设工程注册中心网站英文网站建设哪家好

electron 静默下载文件 cooljser 2020-12-24 electron 上传、下载文件是一个很常用的功能,在 electron 中我们不但可以实现和 h5 一样的下载,也可以实现静默下载,让用户无感知。官方的做法是通过mainWindow.webContents.downloadURL(url)来…

宁波建设工程检测行业协会网站汽车企业管理系统

由于原本的数据库命名不规范,需要进行重新命名,最终确定方案为新建数据库后迁移表,以下为脚本。 #!/bin/bashecho -e "\033[34m 此脚本功能为修改数据库名称(需要新建数据库后将数据迁移到新数据库),…

默认实现,子类(如 CRenderDevice_Renderware)

默认实现,子类(如 CRenderDevice_Renderware)这是基类的默认实现,子类(如 CRenderDevice_Renderware)会在它的 OnCreate 中 先调用基类的 OnCreate,再做自己的渲染 API 初始化。 调用子类的OnCreate 一定会调用…

域名检测查询谷歌关键词优化怎么做

1. 什么是LTPA?Lightweight Third-Party Authentication (LTPA)是IBM Websphere和Domino产品中使用单点登录技术。当服务器配置好LTPA认证方式,用户通过浏览器成功登录后,服务器会自动发送一个session cookie给浏览器;此cookie中包含一个LTP…

Petrozavodsk Summer 2024. Day 1. Welcome Contest

Preface 整个国庆就训两天,摆烂这一块 这场感觉前期题里计数偏多,只能说毛子场是这样的;然后有人写 D 的时候猪脑过载,占了 90 min 机时导致队友早就会了的 B 没时间写,我不说是谁A. Adding Integers 把组合式子拆…

网站策划设计招聘西安网站建设行业

导航守卫 to 准备跳转到哪个页面 from 从哪个页面中离开 next 函数 全局守卫 router.beforeEach((to,from,next) > {if(to.path /login || to.path /register){    next();}else{    alert(先登录)    next(/login)} }) 组件守卫 data () {  return{   …

项目作业2

学生管理系统面向对象分析报告 目录案例中封装性的体现及其好处 setter/getter模式与封装性 部分类的toString()方法解析 常用方法解析 面向对象设计分析1. 案例中封装性的体现及其好处 (姓名:王鑫杰 学号:20242133…

构造函数跟析构函数默认自动调用其他的必须显示调用是吗

构造函数跟析构函数默认自动调用其他的必须显示调用是吗1. 构造函数 / 析构函数 这两个是 自动调用基类的:构造函数:当你创建子类对象时,会先自动调用基类构造函数,再调用子类构造函数。如果你不写,默认会调用基类…

财经大学网站建设建个企业营销型网站

摘要 美食网站是一个提供各种美食信息和食谱的网站,旨在帮助用户发现、学习和分享美食。旨在探讨美食网站在现代社会中的重要性和影响。随着互联网的普及,越来越多的人开始使用美食网站来获取各种美食信息和食谱。这些网站不仅提供了方便快捷的搜索功能&…

CRenderDevice

CRenderDevice为什么不用纯虚函数? 有几个可能的设计原因:保留默认行为如果有些函数在大多数情况下逻辑类似,可以在基类里写一个默认版本。子类只在必要时才重写,减少代码重复。允许实例化基类如果用纯虚函数,CRe…

如何使用 INFINI Gateway 对比 ES 索引数据

上一篇我们通过 极限网关(INFINI Gateway) 进行了索引数据迁移,对索引迁移结果进行了初步且直观的校验,既对比索引的文档数是否一致。今天介绍个实实在在的数据比对方法,通过网关对比索引文档的内容在两个集群是否…

实验一 html静态网站开发微服务网站

原文地址:Improving RAG: Self Querying Retrieval 2024 年 2 月 11 日 让我们来解决构建 RAG 系统时的一个大问题。 我们不能依赖语义搜索来完成每个检索任务。只有当我们追求单词的含义和意图时,语义搜索才有意义。 But in case,我们正…

单例模式 + 工厂函数

单例模式 + 工厂函数#include "CRenderDevice.h" #include "CRenderDevice_Renderware.h"static CRenderDevice* g_pRenderDevice = NULL; static stRenderDeivceSettings g_stDeviceSettings;CRe…

网站建设费用预算wordpress 页面内存大

vue3vitets 开发浙里办H5应用流程和注意事项 最近有个项目是要开发到浙里办的一个H5项目,记录一些问题; 浙里办irs系统内node版本和npm版本如下建议切到他们的版本再进行开发这样问题少一点 1.因为浙里办有自己的irs系统 需要吧前端整体的代码传上去 除了 打包后的dist 和 no…