基于FPGA的千兆以太网设计

原创 FPGA技术江湖 2024-05-02 07:06

大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。


今天给大侠带来基于FPGA的千兆以太网设计,话不多说,上货。


一、设计概述


由于设计比较复杂,本篇带来设计流程以及设计思路,仅供各位大侠参考。

本篇通过管理数据输入输出MDIO配置PHY寄存器,使其工作在千兆通信模式下。FPGA通过ddio_out的IP核将数据单沿转双沿通过TX发送到PHY-A,PHY—B把收到的数据RX通过ddio_in的IP核双沿转单沿给FPGA采集,实现FPGA与PHY的交互通信。通过FPGA的SDRAM控制模块对SDRAM进行读写和刷新的操作,从而进行数据的存储与读取的操作。

根据UDP/IP协议将数据打包,并且通过IP源地址以及目的地址等来计算IP头部checksum和UDP头部checksum,在PC机上通过上位机软件Wireshark获取FPGA发送的1024byte的数据包,并且上位机显示通过UDP协议接收数据,数据位打包时加上CRC32冗余校验码,在FPGA的接收端可以加上CRC32解码操作,用来验证数据在传输过程中是否出错。



二、设计框架


整体模块比较复杂,自顶向下设计流程,分模块较多,需要注意各个端口信号,最好可以做成端口信号表,以免自己搞混淆。


注:复位省略,_t后缀表示数据或标志信号经过一级寄存器打拍操作。输入时钟25M,PLL倍频输出sclk125M,tx_data是偏移90度125M时钟。



三、数据流框图描述




四、DDIO模块简单描述


DDIO模块描述:

1、DDIO为调用的FPGA内部IP核;

2、ddioin是将双沿数转为单沿数据,ddioout是将单沿数据转化双沿数据。


ddioin时序图:



五、ram64模块时序描述


ram64模块描述:

ram64是深度为64位宽为8的LCs分布式RAM。


作用:

同频异相的同步化操作。


write时序图:


RAM64的Read控制模块描述:

rx_clk时钟域下的start_en和CRC_en转化到sclk时钟域下,都要先进行打三拍操作之后在被引用。(数据跨时钟域处理可以用双口RAM或FIFO,一般的标志信号有打拍法就可以)

1、 在start_ttt为高时,产生一个rd_flag信号,rd_flag信号在rd_cnt == batch_data – 1 时拉低,rd_flag信号为高时,rd_cnt开始计数自加1,在rd_cnt == batch_data – 1并且rd_flag=1时清零。

2、 Rd_en在CRC_en_ttt==1时拉高,否则为低。Rd_addr在rd_en=1时自加,在rd_cnt == batch_data – 1并且rd_flag=1时清零。

 


六、image模块时序描述


image模块描述:

por_img_pixel_cnt:像素点计数器;

por_img_pixel_max:像素点最大值;

por_img_udp_cnt:udp包计数器;   

por_img_udp_max:UDP包最大值; 

por_img_row_max:图片行最大值;

por_img_row_cnt:图片行计数器。


头包时序:  


在mac_cnt=50时,取出image_w_h;

等于51时,取出image_w_l;

等于52、53、54时,分别取出image_h_h、image_h_l、image_type。

 

数据包时序:


Image_row_end_flag信号在por_img_pixel_cnt == por_img_pixel_mux&& por_img_udp_cnt == por_img_udp_mux&&colour_cnt == 2时拉高一个时钟周期。

Image_end_flag信号在por_img_row_cnt == por_img_row_mux&&por_img_pixel_cnt == por_img_pixel_mux&& por_img_udp_cnt == por_img_udp_mux&&colour_cnt == 2时,拉高一个时钟周期。



七、TWO_buffer模块时序描述

TWO_buffer模块描述:

two_buffer:乒乓操作。


作用:

使得SDRAM每次都能读到一行完整的图片数据。



1、 解决包间隔时间问题;

2、 分时、交替存储和读取,起到缓冲作用;

3、sel_w在image_row_end==1时进行反转;sel_r在sdram_read_ack ==1时进行反转。



八、SDRAM控制模块描述


SDRAM控制模块描述:

1、512Kbit*32bit*4bank(64Mbit);

2、模式寄存器设置:0032,潜伏期3,突发长度4;

3、自刷新时间间隔:15us。


Sdram状态EBD描述:

Arbit_state:


Write_state:


读写模块状态机基本相似,自刷新模块状态机直接用线性序列机就可实现。这里不做重复概述。



九、RAM_2k模块描述


RAM_2k模块描述:

1、位宽24位,深度2K;

2、作用:缓存从SDRAM读出的图片的一行数据;

3、等待数据头包的发送和包间隔,并且进行图像一横数据的分包成帧发送。



十、frame(成帧)模块的描述


frame(成帧模块的描述:

根据千兆以太网协议(附录)进行帧包的配置,以太网(IEEE 802.3)帧格式:

1、前导码:7字节0x55,一串1、0间隔,用于信号同步 有的说是AA;

2、帧起始定界符:1字节0xD5(10101011),表示一帧开始 有的说是AB;

3、DA(目的MAC):6字节 如果设置为全1 为广播包;

4、SA(源MAC):6字节;

5、类型/长度:2字节,0~1500保留为长度域值,1536~65535保留为类型域值(0x0600~0xFFFF);

6、数据:46~1500字节;

7、帧校验序列(FCS):4字节,使用CRC计算从目的MAC到数据域这部分内容而得到的校验和。


注释:

1、head_flag在image_end=1时拉高,在head_cnt=cnt_len时拉低。

2、cnt_flag在head_flag=1||data_flag=1时拉高,在cnt=cnt_len+pkt_gap时拉低

3、sd_req在head_flag=1&&head_cnt=cnt_len||por_img_udp_cnt=por_img_udp_max&& data_flag=1&&data_cnt=cnt_len时拉高,在sd_ack=1时拉低。

4、ram_wr_en在sd_req=1时拉高,在image_row_end=1时拉低。

5、data_flag在cnt_end_flag=1 时拉高,在data_cnt=cnt_len时拉低。

6、colour_flag在data_cnt=60时拉高,在data_cnt=cnt_len时拉低。

7、ram_rd_addr在por_img_udp_cnt=por_img_udp_max && data_cnt=cnt_len清零。



十一、check_sum模块描述


check_sum模块描述:

check_sum是将成帧数据进行指定算法计算后的结果,用于数据校验。上位机会对接收到的数据做check_sum计算并且与成帧模块的check_sum计算结果进行比较,做出正确或错误提示。(wireshark数据包监控软件)


Chueck_sum部分波形图:


注释:

1、实现方法:将从frame模块输入到check_sum的数据进行check_sum计算,同时将输入data_in先存入一个深度为2k的RAM中,在所有chenck_sum算完之后,在建数据一个一个读出,在协议的相应位置加入check_sum值。



十二、crc模块描述


crc模块描述:

1、crc:循环冗余校验码,8位输入,32位输出。

算子方程式:

 2、将输入数据进行crc运算,在crc校验运算完的同时,将32位校验码补在数据流的后四位。



总结


上位机软件:

1、receive_image上位机与从机通信软件;

2、wireshark数据包监控软件。


总结:

1、先进行DDIO的回环测试;

2、模块化设计编程实现,测试通过之后在进行top装配测试;

3、时序未出现违规时,查看slack是否大于0.3ns,注意时序约束;

4、注意assign语句的使用,尽量用时序进行操作,避免不必要的时序违例;

5、注意标志信号的使用,尽量避免运算式在判断条件里出现且进行多重判断逻辑嵌套;

6、 了解上位机与从机之间通信的基本原理;

7、 熟悉wireshark数据包监控软件的使用。


本篇大概分享了设计框架及思路,给各位大侠做设计学习参考,若想要详细学习,可阅读以下推文,系统性学习。


FPGA就业班,05.04开班,新增课程内容不加价,高薪就业,线上线下同步!



END

后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。
大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见!

FPGA技术江湖广发江湖帖

无广告纯净模式,给技术交流一片净土,从初学小白到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有,QQ微信双选,FPGA技术江湖打造最纯净最专业的技术交流学习平台。


FPGA技术江湖微信交流群

加群主微信,备注姓名+公司/学校+岗位/专业进群


FPGA技术江湖QQ交流群

备注姓名+公司/学校+岗位/专业进群

FPGA技术江湖 任何技术的学习就好比一个江湖,对于每一位侠客都需要不断的历练,从初入江湖的小白到归隐山林的隐世高人,需要不断的自我感悟自己修炼,让我们一起仗剑闯FPGA乃至更大的江湖。
评论 (0)
  • 反激电源包含原边反激何副边反激,原边反馈动态响应比副边反馈慢,但是相对成本低,无论是原边反馈还是副边反馈由于反激电源电路简单,成本低广泛的用在在电动两轮车Escooter,电动工具,打印机,清洁电器等充电场景,也广泛的应用在电表,家电,新能源等场景作为辅助电源给芯片供电,下面就以无锡明芯微的MX1210E作为例子详细的介绍下一款24v2.5A的一个方案,从该方案来看输入口有NTC防止过流,采用10D561K 的压敏作输入过压保护,有个滤波的0.47uF的X电容并采用分压电阻做X电容放电,串联差模
    王萌 2024-06-21 09:27 304浏览
  • TT电机(直流电机)的功率、电压、电流、瞬间启动电压和电流是其运行的关键参数。这些参数决定了电机的性能和适用场景**。在探讨TT电机的这些特性时,需要综合考虑其电气特性以及启动和运行条件。以下将逐一解析这些关键参数: 1. 功率:    - TT电机的功率通常取决于其设计和应用场景。例如,普通TT电机的额定功率可以在几瓦到几十瓦不等[^4^]。    - 对于不同的TT电机型号,如370电机和310电机,它们的功率输出也会有所不同。例如,370电机通常适
    丙丁先生 2024-06-21 17:18 153浏览
  • 电脑显示器已逐渐成为现代人时常会接触到的3C产品,能带给消费者愉快的视听娱乐,不管是看电影、追剧、听音乐放松心情,或是玩一场紧张刺激的电竞游戏。忙碌之余,能够偶尔享受闲暇时光,也是一种释放。 您是否也曾遇过,在享受电影或游戏的过程当中,显示器带给我们的影像和声音突然出现不协调的情况呢?这就像是两者间没有互相搭配好,节奏步调变得不一样!这种情况我们称为「影音延迟」或「影音不同步」。 当这类问题持续发生时,无法好好享受电影或者追剧,会让人心情烦躁。对于电竞玩家来说更是硬伤,除了分心、受干扰外,更
    百佳泰测试实验室 2024-06-20 15:55 133浏览
  • 随着科技的进步不断更迭,电子设备的传输速度越来越快,时至今日对于高速传输带宽的要求也愈来愈高。印刷电路板(PCB,以下简称PCB) 在高速传输接口中扮演不可或缺的角色,其高频特性直接影响了整体传输效能。高频特性是指PCB在高频率下的电气性能,包括阻抗、插入损耗、回波损耗、群延迟等。这些参数会影响信号的传输速度、完整性和可靠性。 PCB潜在风险 你知道吗?如果PCB的高频特性不佳时,可能会导致以下问题: 信号传输速度变慢信号衰减增加信号反射增加信号失真 这些问题都会影响电子设备的性能,甚至
    百佳泰测试实验室 2024-06-20 16:05 159浏览
  • 在汽车的复杂电路网络中,仪表网关扮演着信息枢纽的角色。对于驾校使用大众朗逸车主而言,了解仪表网关的位置不仅有助于日常维护,更是故障诊断和车辆升级的关键所在。大众朗逸作为一款深受消费者喜爱的车型,凭借其稳定的性能和经济的油耗赢得了广泛的市场认可。然而,即便是这样一款优秀的车型,在驾校使用过程中也难免会遇到一些技术问题,这时候对仪表网关的了解就显得尤为重要。18年后的大众,网关都是标配,直接从OBD通过CAN监听是没有数据报文对外发出的,不是没有,而是避开诊断请求,这个后边说。朗逸CAN总线技术的引
    lauguo2013 2024-06-21 08:18 155浏览
  • 1. 版权保护芯片RJGT102介绍为了防止硬件电路与固件被抄袭,核心在于加密芯片和安全解决方案的设计,目前大多MPU并不具备安全防护功能,所以最好的办法是使用一颗专用的加密芯片,通过加密芯片对接MPU,进行认证,授权,保存关键数据等。RJGT102采用了SHA256对称加密算法,256位的大数加密, 加密算法强度高。每片RJGT102都有唯一的客户编码,非常适合做防抄板,防抄软件,管控工厂生产数量,防止方案外泄等。参与SHA256运算的数据为:8字节Key(可动态更换),8
    万象奥科 2024-06-20 17:37 138浏览
  •  经过近几年的618大促之后,如今的618已经被默认的低价竞争给包围了。随着低价竞争的持续蔓延,曾经积极参与其中的一些品牌商,态度也从积极转为消极;各种被“忽悠”的消费者,也在想着法逃离电商平台设置的套路。与此同时,不甘心被大主播绑架的电商平台,与胃口不断加大的头部主播,开始展开极限拉扯。以往热闹的618,如今变成了各路参与者的围城,渴望进去的不停向里面张望,渴望出来的则变着法地希望,跳出618这个牢笼。虚假繁荣背后的暗流涌动在直播电商红利之下,抖音、淘宝、京东、唯品会等各路平台,在直
    刘旷 2024-06-21 09:58 159浏览
  • Matter是连接标准联盟(CSA)所推出的统一连接标准,旨在让不同品牌的智能装置可以互通互联。并且支持包含Wi-Fi、Ethernet、Thread和Bluetooth等多种连接协议。 随着Matter被广泛运用于智能家居生态圈,目前Apple Homekit、Amazon Alexa、Google Home和Samsung SmartThings等智能语音助理都已支持Matter。然而,要是网络服务供货商的网络突然断线了,家里的智能装置是否还能正常操作?还是必需连接到外部网络才能控制智能装
    百佳泰测试实验室 2024-06-20 15:40 134浏览
  • GPIO的功率、电压和电流取决于具体的GPIO类型和配置。 GPIO(General Purpose Input/Output)通用型输入输出端口,是一种多功能的电子接口,广泛应用于微控制器、微处理器以及各种电子设备中,用于读取或输出信号。理解GPIO的功率、电压和电流的相关特性是进行电子电路设计和编程的基础。这些参数决定了GPIO端口能安全处理的电量,以及它与其他电子组件交互时的兼容性。 从电压角度来看,GPIO端口通常设计有一定的耐压限度,这意味着它们可以安全地在特定的电压范围内工作。例
    丙丁先生 2024-06-21 17:43 170浏览
  • 站上风口,交付量狂飙,装机量翻番……是什么让LiDAR再次“翻红”? 一波三折。如果要用一个词形容近两年的激光雷达市场,恐怕它最为合适。人类纪元,2022年。开启量产元年的车载激光雷达,一度风光无限。当时OEM厂商对激光雷达关键指标提升的需求仿佛“军备竞赛”。加速批量上车,进一步控制成本,将其控制在500美元左右……那一年,产业链上下游众志成城,万众一心。转眼到了2023年,车企在面向ADAS和自动驾驶的感知技术上逐渐分化成两派,纯视觉路线的落地以及价格战带来的降本压力,让很多车企出现
    艾迈斯欧司朗 2024-06-21 17:10 157浏览
  • ​在为期三天的上海国际嵌入式展会中,树莓派和上海晶珩一起展示了众多的基于树莓派和CODESYS的解决方案,没去过展会现场的小伙伴千万别错过这篇文章!视频地址:https://www.bilibili.com/video/BV1c1421k7ne/?vd_source=a637ced2b66f15709d16fcbaceeb47a9这个基于Raspberry Pi 5的嵌入式系统解决方案集成了16个EtherCAT总线控制的步进电机,旨在实现高性能的多轴运动控制。Raspberry Pi 5作为核
    树莓派开发者 2024-06-21 14:29 128浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦