在 vhdl 中计算(并验证)以太网 FCS (crc32)

2023-11-29

我正在使用Spartan 3E 入门套件我正在尝试通过 100MBit 链路接收以太网帧。

对于那些不知道的人,该板具有 PHY 芯片,暴露了 25MHz 的接收时钟。我(几乎)已经通过缓冲接收到的帧并通过串行链路重新发送它们来验证接收工作正常。

此外,我正在使用来自outputlogic.com 的 CRC32 生成器。我将接收到的半字节聚合为字节并将它们转发到 CRC。在帧末尾,我锁存生成的 CRC 并将其与我在以太网帧中找到的 CRC 一起显示在 LCD 上。

但是,(正如您可能已经猜到的那样)这两个数字并不匹配。

527edb0d  -- FCS extracted from the frame
43a4d833  -- calculated using the CRC32 generator

第一个也可以通过 python 的 crc32 函数运行包来验证,包括使用wireshark捕获的帧和通过串口从FPGA捕获和检索的帧。

我想这一定是一些或多或少微不足道的事情。我把接收过程贴在这里。我把所有不必要的东西都脱掉了。通过串行捕获输出时,我添加了一个 fifo(Xilinx 的现成单元),它与 CRC 生成器同时锁存,以获得完全相同的字节。

有谁知道这有什么问题吗?


我不久前开始研究以太网 MAC,虽然我一直没有时间完成它,但我确实有一个可以使用的 CRC 生成器,您可以在这里使用:

CRC.vhd

它基于关于 IEEE 802.3 CRC 的 Xilinx 应用说明,您可以找到here.

CRC 实例化于以太网接收组件,如果您查看 ETH_RECEIVE_SM 进程,您可以看到 FCS 是如何加载到检查器中的。

希望您能通过与我的代码进行比较来发现您的错误。

Edit:

我从以下位置获取了示例以太网帧fpga4fun并将其通过 CRC 检查器,请参阅下面的模拟屏幕截图(右键单击,复制 URL 并在新的浏览器选项卡中查看完整分辨率):

enter image description here

可以看到残差C704DD7B最后,尝试用你自己的 CRC 检查器做同样的事情,看看你会得到什么。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 vhdl 中计算(并验证)以太网 FCS (crc32) 的相关文章

  • 在非时钟信号上使用上升沿是不好的做法吗?还有其他选择吗?

    我正在研究 VHDL 设计并且它可以工作 但是代码非常丑陋 而且我似乎正在尝试围绕语言的设计来实现我的目标 这一事实让我觉得有些事情是错误的 我对 VHDL 还很陌生 但我已经研究该项目的较小部分近一个月了 所以我有了总体想法 然而 这部分
  • Arduino 以太网扩展板未连接到 Web 服务器

    我在让 Arduino 以太网扩展板与服务器通信时遇到问题 串行监视器上的结果始终是 我的arduino代码是 include
  • 将整数转换为 std_logic

    假设你有一个循环 for i in 1 downto 0 loop for j in 1 downto 0 loop tS0 lt i 但我需要将整数 这是自然的 转换为 std logic tS0被声明为 std logic 我只做了一位
  • Lex VHDL '(勾号)令牌

    在 VHDL 中 字符可用于封装字符标记ie 或者它可以作为属性分隔符 类似于 CPP 的 token ie string hello 解析包含字符的属性名称时出现问题ie string a b c 在这种情况下 天真的词法分析器将错误地标
  • 模拟器和合成器之间初始化状态机的差异

    我的问题是关于合成状态机中使用的第一个状态 我正在使用莱迪思 iCE40 FPGA 用于仿真的 EDA Playground 和用于综合的莱迪思 Diamond Programmer 在下面的示例中 我生成一系列信号 该示例仅显示引用状态机
  • Quartus初始化RAM

    我制作了一个实体 其中 quartus 成功识别 RAM 并为其实例化 RAM 宏功能 如果我可以从文件初始化 RAM 那就太好了 我找到了制作此类文件 mif 文件 的教程 现在我已经创建了该文件 我不知道如何让 quartus 初始化该
  • 是否可以使用循环创建同一组件的多个实例?

    我有一个组件 Component CAU is port CLK in std logic RESET in std logic START in std logic V DIRECTION in vector 3d P ORIGIN in
  • 触发器在两个信号的边沿触发

    我需要一个对两个不同信号的边缘做出反应的触发器 像这样的东西 if rising edge sig1 then bit lt 0 elsif rising edge sig2 then bit lt 1 end if 这样的触发器是否存在或
  • VHDL - 分配默认值

    我有以下架构 architecture datapath of DE2 TOP is begin U1 entity work lab1 port map error on this line clock gt clock 50 key g
  • Wireshark 中以太网帧末尾的 0 字节是什么?

    after ARP protocol in a frame there are many 0 bytes Does anyone know the reason for the existence of these 0 bytes 检查以太
  • VHDL 中的 NULL 语句

    其实际目的是什么nullVHDL 中的声明 考虑以下代码 1 CASE s IS BEGIN WHEN 0 gt y lt 0 WHEN 1 gt NULL END CASE 2 CASE s IS BEGIN WHEN 0 gt y lt
  • vhdl中process语句的顺序执行

    对于vhdl中的process语句 据说process语句内部的执行顺序是连续的 我的问题是 请先看下面的代码 a b和c信号在进程语句中的if语句中是同时还是顺序分配给它们的新值 process clk is begin if risin
  • VHDL 计数器错误 (vcom-1576)

    伙计们 我试图用 VHDL 编写一个简单的计数器 但我总是收到此错误 Error C Users usrname dir1 dir2 dir3 counter vhd 22 near rising edge vcom 1576 expect
  • Simulink/HDL Coder 中的反馈循环

    我有一个 Simulink HDL 编码器系统 请参见下图 我有 3 个输出和 3 个输入 我希望我的系统运行 10 次 每次迭代后 它应该选择输出并将它们用作输入 我怎样才能做到这一点 使用存储器和每个信号的初始值块构建一个循环 内存块允
  • 如何刷新原始 AF_PACKET 套接字以获得正确的过滤数据包

    sock socket AF PACKET SOCK RAW htons ETH P ALL setsockopt sock SOL SOCKET SO ATTACH FILTER f sizeof f 使用这个简单的 BPF LPF 附加
  • 无符号和 std_logic_vector 之间的区别

    谁能告诉我以下书面陈述之间的区别 signal A unsigned 3 downto 0 signal B std logic vector 3 downto 0 Both std logic vector and unsigned ar
  • 802.11 FCS (CRC32) [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 下面的代码是否正确计算无线 802
  • Javascript crc32 函数和 PHP crc32 与 UTF8 不匹配

    我一直在尝试从 PHP 获取 crc32 函数来匹配 javascript 生成的结果 我已经使用了 4 个不同的 javascript crc32 库 1 http www webtoolkit info javascript crc32
  • 信号和端口在“箭头”的哪一侧=>

    我如何知道端口 信号 值应放置在箭头的哪一侧 我注意到通过切换port a gt x to x lt port a这看起来非常平等 但我遇到了错误 还 x gt port a不起作用 我什至不知道箭头应该指向哪个方向 lt 是一个分配 具体
  • 如何使用 Greasemonkey 监视静态 HTML 页面的更改?使用哈希?

    我希望我的 Greasemonkey 脚本仅在其访问的静态页面具有与以前完全相同的内容时运行 现在我可以设置一个包含该页面哈希的变量 我正在寻找一种动态散列页面的方法 以便我可以将我的散列与生成的散列进行比较 关于如何即时实现散列的任何想法

随机推荐

  • “django 不支持从方法到十进制的转换”错误

    因此 我正在尝试计算下面提到的参数的咖啡价格 但是 每次我尝试调用 Coffeeprice 方法时 它都会给我一个conversion from method to Decimal is not supported error 我的视图和模
  • 如何从字符串中删除多个换行符

    给定一个字符串 我需要检查是否有多个换行符 n 如果有的话我需要将它们转换为一个换行符 你能给我看一下执行此操作的代码吗 谢谢 try this s s replaceAll r n 2 1
  • GCM CCS 上游消息是否会强制重新连接到 GCM 网络?

    我遇到了一些问题 GCM 推送通知无法在 Android 设备上正确到达 经过几天的研究 我发现 Android 设备使用心跳来保持与 GCM 服务的连接 遗憾的是 心跳似乎太高 因此 Android 设备可能 但并非总是 失去与 GCM
  • 完成另一个活动的活动[重复]

    这个问题在这里已经有答案了 假设我有 3 个活动 A B 和 C A 导致 B B 再导致 C 我希望能够在 A 和 B 之间来回移动 但我希望一旦 C 开始就完成 A 和 B 我了解如何通过意图启动 C 时关闭 B 但是当 C 启动时如何
  • 二维数组声明 - Objective C

    有没有办法分两步声明一个二维整数数组 我的范围有问题 这就是我正在尝试做的 I know Java so this is an example of what I am trying to replicate int Array Array
  • 将 Java Applet 嵌入到 .html 文件中

    我在将小程序嵌入网页时遇到问题 我认为我做得不对 我的 html 文件与 class 文件位于同一目录中 我的主要方法在 CardApp 类中 这是我的html代码 让小程序在多种浏览器上运行是非常困难的 早期标签没有得到适当的标准化 因此
  • 要设置哪些管理员角色设置才能访问该域的 Google Classroom API?

    我们正在尝试创建一个单独的管理员角色来分配给用户 以便能够调用 Google Classroom API 域 如果我们将它们设置为 超级管理员 它可以工作 但我们不想授予这些用户超级管理员权限 有人知道任何指南或设置吗 Answer 除此以
  • 如何防止直接访问 Azure 应用服务中托管的 API

    我有一个托管在 Azure 应用服务中的后端 API 我想使用 Azure API 管理作为此后端 API 的前端 并已在 Azure 中成功配置它 我已将 API 管理配置为在访问此后端 API 时使用 OAuth 这在客户端通过 Azu
  • 如何使用 Mockito 在 java 中模拟 new Date()

    我有一个使用当前时间进行一些计算的函数 我想用mockito来模拟它 我想测试的类的一个例子 public class ClassToTest public long getDoubleTime return new Date getTim
  • 是否有 Java 库可以访问本机 Windows API?

    是否有 Java 库可以访问本机 Windows API 使用 COM 或 JNI 你可以尝试这两个 我已经看到这两个都成功了 http jawinproject sourceforge net Java Win32 集成项目 Jawin
  • phpunit dbunit @dataProvider 不起作用

    我花了很多时间寻找问题出在哪里 但我没有找到任何东西 它说 testAdd 导致错误 缺少参数 当我运行测试时 只是没有执行 dataProvider 我尝试将 die 放入 dataProvider 中 但它还没有死 这是我的代码 cla
  • 为什么nslookup.exe可以解析指定的DNS服务器,但dnsapi.dll中没有相应的API?

    nslookup exe www google com 127 0 0 1 该命令可以使用 DNS 服务器 127 0 0 1 进行解析 不可能在 75 0 KB 的 nslookup exe 中实现全栈 DNS 协议解析器 因此它必须使用
  • 当自动化 Eclipse 的“导出为功能”时,Maven/Tycho 看不到我的插件

    我的工作区中有一个插件和一个功能项目 当我通过 文件 gt 导出为 gt 功能 手动导出功能时 一切正常 我正在尝试编写一个自动插件构建和导出脚本来摆脱这种苦差事 我将功能项目转换为 Maven 项目 并用以下内容填充 pom xml
  • 如何使用多个命令运行 NSTask

    我正在尝试让 NSTask 运行如下命令 ps clx grep 查找器 awk 打印 2 这是我的方法 void processByName NSString name NSTask task1 NSTask alloc init NSP
  • Angular:添加指令时控制器未定义

    向我的网站添加指令时出现以下错误 Error ng areq Argument MainController is not a function got undefined 仅当我在网站中包含welcome directive welcom
  • PouchDB + 冲突解决

    我有一个关于难题的非常简单的问题 PouchDB 中的冲突解决如何工作 我查看了文档 并快速谷歌搜索 但没有帮助 那么 如何在使用 PouchDB 的应用程序中处理冲突管理 以下是在 CouchDB 中的操作方法 您可以直接将其转换为 Po
  • Spring Boot - 从属性文件注入映射[重复]

    这个问题在这里已经有答案了 属性文件如下所示 url1 path to binary1 url2 path to binary2 根据this我尝试了以下方法 Component EnableConfigurationProperties
  • 如何更改 WooCommerce 缩略图裁剪位置?

    我正在尝试更改 WooCommerce 缩略图裁剪位置 我发现这段代码可以帮助更改大小 add action init yourtheme woocommerce image dimensions 1 Define image sizes
  • 在 iFrame 中应用 CSS

    我正在尝试将广告图像的宽度从像素更改为百分比 我正在使用 Google DoubleClick 或 DFP 它会自动将您的广告图像放入 iframe 中 从而很难更改图像的实际尺寸 因此 我将图像宽度从像素更改为百分比的方法是 我在图像广告
  • 在 vhdl 中计算(并验证)以太网 FCS (crc32)

    我正在使用Spartan 3E 入门套件我正在尝试通过 100MBit 链路接收以太网帧 对于那些不知道的人 该板具有 PHY 芯片 暴露了 25MHz 的接收时钟 我 几乎 已经通过缓冲接收到的帧并通过串行链路重新发送它们来验证接收工作正