FPGA---UDP通信求助(已解决)

项目场景:

使用UDP进行回环,网络调试助手,发送数据通过UDP接收模块接收,解析出数据,给到UDP发送模块,传回上位机。


问题描述

UDP接收模块中,接收到的CRC校验值与自己计算CRC校验值进行判断,相符后将数据解析给发送端,否则回到空闲状态。当加上CRC校验判断后,回环会有无法接收现象。去掉CRC判断,数据回环无误。

(1)现确定crc计算模块无误,crc_result为接收上位机的值,crc_sum为计算值。
在这里插入图片描述
(2)接收模块中均对目的mac,目的IP,udp端口,IP校验,进行验证均无误。
在这里插入图片描述

此代码用于判断接收CRC值与计算CRC值

always @ (posedge clk125m_o  or negedge reset_n)
		if(!reset_n)
			rx_done_check_ok <= 1'b0;
		else if(crc_result == crc_sum )   
			rx_done_check_ok <= 1'b1;
		else
			rx_done_check_ok <= 1'b0;   //改为1则认为crc值相等,即不判断
	

此代码用于判断CRC是否通过,通过产生结束信号,解析出数据,不通过则回到空闲状态。

RX_DONE:  begin
									
								if((cnt_rx_done >= 2'd2) && (rx_done_check_ok == 1'b0) )
									begin
										curr_state <= IDLE;
										cnt_rx_done <= 0;
									end	
								else if(cnt_rx_done >= 2'd3)
									begin
										GMII_RX_DONE <= 1;
										curr_state = IDLE;
										cnt_rx_done <= 0;
									end
								else 
									begin
										cnt_rx_done <= cnt_rx_done + 1'b1;
										curr_state <= curr_state;	
									end
							end

仿真时没有问题:
在这里插入图片描述
不加CRC判断上板测试时数据传输无误:
在这里插入图片描述
加CRC校验时有时无法通过:
在这里插入图片描述
wireshark抓取也是:
在这里插入图片描述

【注:】

always @ (posedge clk125m_o  or negedge reset_n)
		if(!reset_n)
			rx_done_check_ok <= 1'b0;
		else if(crc_result == crc_sum )   
			rx_done_check_ok <= 1'b1;
		else
			rx_done_check_ok <= 1'b0;   //改为1测为不判断crc校验
	

还请各位大佬不吝赐教,不胜感激!!!
还请各位大佬不吝赐教,不胜感激!!!
还请各位大佬不吝赐教,不胜感激!!!
还请各位大佬不吝赐教,不胜感激!!!
还请各位大佬不吝赐教,不胜感激!!!
还请各位大佬不吝赐教,不胜感激!!!

【工程附件:】链接:https://pan.baidu.com/s/1Rw9Q0jhR82vSSx_FGYmquQ?pwd=2vvu
提取码:2vvu

解决方法:
经过上板实测,通过ILA抓取发现在这里插入图片描述
crc_en未在有效数据地方拉低(只在crc_data有效数据到来时拉高),图中红色部分可见。
修改代码为:

 IDLE:     begin
							    GMII_RX_DONE <= 0;
								crc_en <= 0;
								if(GMII_DV_reg1 && !GMII_DV_reg2)
									begin
										  curr_state <= PREAMBLE_CODE;
										  crc_init <= 1;
									end
								else
								  curr_state <= curr_state;
							end

在IDLE状态加上crc_en <= 0;即可解决。
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C.V-Pupil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值