基于紫光盘古50H的以太网设计
由于本人在参加第九届集创赛的时候使用紫光的以太网例程时遇到很多问题,所以在此将我在跑例程中遇到的问题及解决方案分享出来,文中可还会掺杂一些对代码的讲解,可能比较浅薄或有误,请各位大佬指正。(为了节省篇幅,在此只简述以太网协议)(文件在最后,记得先读txt文件)

前导码(Preamble):8 字节,连续 7 个 8’h55 加 1 个 8’hd5,表示一个帧的开始,
用于双方;设备数据的同步。
目的 MAC 地址:6 字节,存放目的设备的物理地址,即 MAC 地址;
源 MAC 地址:6 字节,存放发送端设备的物理地址;
类型:2 字节,用于指定协议类型,常用的有 0800 表示 IP 协议,0806 表示 ARP 协议,
8035 表示 RARP 协议;
数据:46 到 1500 字节,最少 46 字节,不足需要补全 46 字节,例如 IP 协议层就包含
在数据部分,包括其 IP 头及数据。
FCS:帧尾,4 字节,称为帧校验序列,采用 32 位 CRC 校验,对目的 MAC 地址字段到数据字段进行校验。
进一步扩展,以 UDP 协议为例,可以看到其结构如下,除了以太网首部的 14 字节,数据
部分包含 IP 首部,UDP 首部,应用数据共 46~1500 字节。(该部分借鉴小眼睛半导体的以太网实验传输例程)。
IP首部和UDP首部在此不作过多介绍。
当我们拿到这个工程时首先第一步,让工程不报错。由于此工程的版本和Pango Design Suite 2022.2-SP1-Lite不一致,所以首先更新工程版本。更新之后,我们将工程的IP核全部替换一遍,但是新生成的IP核的名字和之前的相同,便于修改,其中udp_shift_register不用修改,如果需要节约资源,ref_clock中的200mhz时钟可以不生成(因为在代码中官方写了一个延时复位,但是没有用到,所以可以连同和200mhz有关的代码一同删除)

第二步,可能有些人会遇见check_sum.vh文件报错的情况,那是因为该文件不是一个模块,系统可能会将其认为是system_verilog,且该版本不支持system_verilog,所以这时你只需将该文件中的所有内容全部复制到eth_udp_test.v文件中(要在endmodule的上面)。
第三步,打开顶层文件ethernet_test.v,在此修改板子的IP、MAC地址(可改可不改,主要是我自己没改过,我去问大佬,大佬说修改之后也没影响),并在DEST_IP填写自己电脑的IP地址,端口号可自己修改。到此就可以进行上板测试了。
第四步,在接好以太网线之后,观察以太网接口处灯是否在规律闪烁,这时是FPGA板子在发送ARP请求,等待电脑应答,如果FPGA的IP地址和以太网的IP地址在同一个子网下,则会进行ARP应答(假如FPGA的ip地址是192.168.1.11,那么电脑的在192.168这个子网下就会进行应答,否则需要解除子网隔离)。也可以使用wireshark进行抓取arp请求,查看arp是否正确。
第五步,在电脑上打开任务管理器,在进程界面以管理员身份运行cmd命令窗口,首先输入arp -a,查看是否有板子的以太网的地址及mac地址。如果有就将IP地址和MAC地址记录下来,并在命令窗口输入arp -s(eg:arp -s 192.168.1.11 a0-b1-c2-d3-e1-e1),保存IP地址和MAC地址。
再route add 192.168.1.0(板卡所在的IP子网地址) mask 255.255.255.0 169.254.141.193(自己的以太网IP地址) # 添加静态路由。这时,你可以在wireshark上看见以太网的arp应答,如果你有NetAssist或其它以太网接收工具时,可以在上面看见www.meyesemi.com这个数据(小眼睛半导体的官网)。
最后如果你想要修改发送的数据,可以打开eth_udp_test.v文件。下图是该文件的状态机,建议先修改ONE_SECOND_CNT参数,初始设置的是1s发送一次数据,可按需修改。

注意,你需要在WRITE_RAM状态下写入数据,要保证写入的数据和udp_send_data_length参数的个数是一致的,不然会出错。建议将该文件代码仔细阅读一遍再进行修改,并且最好写一个仿真程序,仿真程序中的FCS要是自己计算太麻烦了, 你可以将crc32.v文件单独提取出来新建立一个工程,作为计算FCS的工具,还有网络上的CRC32计算和这里的计算有些不同,不能使用网站上计算的CRC32计算结果作为FCS校验,否则,你进行以太网仿真的会出现最后FCS校验不同丢包的情况。
最后附上整理的文件,希望可以帮到大家。
通过网盘分享的文件:CSDN_以太网历程.zip
链接: https://pan.baidu.com/s/1Fqq3RzG0ZyZRB95TSMjt8A?pwd=m4qq 提取码: m4qq
更多推荐


所有评论(0)