文章目录

  • 前言
  • 一、硬件设计
    • 1.创建 Block Design
    • 2.配置 1G/2.5G Ethernet PCS/PMA or SGMII 核
    • 3.配置PS端
    • 4.连接PS端和1G/2.5G Ethernet PCS/PMA or SGMII
    • 5.添加约束并生成硬件比特流文件
  • 二、在Petalinux中验证
    • 1.导入硬件文件
    • 2.编译后启动

前言

项目最近要用芯片的GTH高速收发器进行通讯,还必须要到1Gbps以上的速率,只能用一个GTH收发器。最开始想着是用 AXI DMA + Aurora 8b10b 这俩IP核,用Petalinux做PS端系统。后来发现因为没折腾过这个东西,做起来太麻烦了。

偶然发现 1G/2.5G Ethernet PCS/PMA or SGMII 这个IP核正好能满足需求,而且因为是走千兆以太网,不仅满足之前的速率要求,还利于后续系统开发。

但是这以太网物理层配置的时候还是踩了不少坑,所以单独拿出来说说。


注:以下是本篇文章正文内容,下面案例仅供参考

一、硬件设计

1.创建 Block Design


并在 Block Design 中添加 Zynq 的 PS 端内核1,和1G/2.5G Ethernet PCS/PMA or SGMII IP核。其中如果你同样也是官方支持的开发板,建议点击上方“自动配置开发板”,这会自动设置你的 Zynq 的 PS 端内核,减少后期工作量。



2.配置 1G/2.5G Ethernet PCS/PMA or SGMII 核

Board 页面是用于官方支持的开发板自动配置,如果没有该页面,不影响使用。在我的项目中是设置外部时钟的输入,本文不需要用到,故设置为自定义。

Ethernet MAC 页面是设置MAC层,本文使用的是PS端的MAC层。另一个选项是和 Tri-Mode Ethernet MAC IP核配合使用的。

Standard 页面用于设置网口标准,本文使用光口作为网络接口,所以选择1000BASEX标准,如果你使用RJ-45千兆网口,亦或是需要转换成RGMII等信号,请选择SGMII或BOTH。

Core Functionality页面用于配置输出接口,根据自己的硬件设备进行选择。本文使用的Zynq系列有GT高速接口,配置时要注意参考时钟和GT收发器位置的设置。

Shared Logic 页面设置逻辑核共享,如果有多个IP核,可以由其中一个当做主核,其余分享主核逻辑,这样可以节省硬件资源。本文仅有一个核,所以选择包含共享内核。

3.配置PS端

PS端其余部分请根据自己的板子进行配置,本文只对以太网接口进行配置。在I/O配置界面,选择需要使用的网口,并打开MDIO接口,同时选择引脚为EMIO。

[可选] 在时钟配置界面,修改输出时钟为50MHz,方便后续时钟配置。也可根据自己需求选择。

4.连接PS端和1G/2.5G Ethernet PCS/PMA or SGMII


除此之外还需要对 1G/2.5G Ethernet PCS/PMA or SGMII 的输入接口进行配置。根据官方IP核的文档PG4072

首先是phyaddr[4:0],是当两个PHY设备被连接到MDIO总线上。每一个都需要有一个不同的物理地址,为了给预定的PHY寻址用。该值必须为常数,且地址不能为03,否则后续设备树中无法识别。



configuration_vector 和 an_adv_config_vector 分别用于配置内核和自动速率协商功能,同样可以在PG047找到相应的配置表格。在MDIO启用后,会以MDIO的配置为准。若需要强制配置,可以将configuration_valid和an_adv_config_val信号线提供上升沿。an_restart_config 用于初始化时配置有效,也是上升沿有效的信号。本文中这些信号都不需要用到,所以全部配置成 0 。并使用VIO核(虚拟I/O接口)用于JTAG调试的时候可以方便调整数值进行配置。


reset 通过非门与系统复位输出相连,signal_detect 连接到一个光学模块,以检测光的存在。逻辑1表示光学模块正确地检测到了光;逻辑0表示有故障,如果没有连接任何模块,信号必须是逻辑1。本文直接设置为逻辑1,来保证模块永久运行。

最终的BD如下:

5.添加约束并生成硬件比特流文件

右键BD,由BD生成顶层设计。

一键二连!然后打开lmplemented Design,在里面对输入的时钟引脚进行约束。记得保存!

一键三连!

导出硬件文件,记得包含比特流文件

二、在Petalinux中验证

1.导入硬件文件

使用命令

petalinux- config -- get-hw- description <*.xsa>

在配置目录中,可以看到选择的网卡

 Subsystem AUTO Hardware Settings → Ethernet Settings→ Primary Ethernet (psu_ ethernet 0)

2.编译后启动

开机后在载入Linux内核前,会发现自动给网卡分配MAC地址,如果没有分配而显示找不到网卡,大概率是网卡没有正常启动。(写文章的时候开发板暂时不在身边没有图片,以后想起来再补上)


  1. 如果你是 ZYNQ7000 系列,将会与本文有区别 ↩︎

  2. pg047-gig-eth-pcs-pma ↩︎

  3. 说实话我也没搞明白到底是几,手册上说只是0不可以,但是我后来发现1也不能识别,最终我换到了9才能正常调通。 ↩︎

ZYNQ使用1G/2.5G Ethernet PCS/PMA or SGMII拓展PS端网口相关推荐

  1. FPGA基于SFP光口实现1G千兆网UDP通信 1G/2.5G Ethernet PCS/PMA or SGMII替代网络PHY芯片 提供工程源码和技术支持

    目录 1.前言 2.我这里已有的UDP方案 3.详细设计方案 4.vivado工程详解 5.上板调试验证并演示 6.福利:工程代码的获取 1.前言 目前网上的fpga实现udp基本生态如下: 1:ve ...

  2. FPGA的PL端使用1G/2.5G Ethernet PCS/PMA or SGMII核实现SFP千兆以太

    FPGA的PL端使用1G/2.5G Ethernet PCS/PMA or SGMII核实现SFP千兆以太 在实现SFP千兆以太网传输时需要使用Tri Mode Ethernet MAC之间通过GMI ...

  3. 10G Ethernet PCS/PMA IP 核

    目录 1 代码说明 2 时序说明 一个完整的10G以太网接口分为10G PHY和10G MAC两部分.上一节对MAC进行过介绍,这里主要讲PHY.通常都会用PHY芯片,目前vivado也有PHY 对应 ...

  4. Xilinx zynq系列pcie xdma通信(二):下位机PS端

    在上一篇博文中介绍了PL端的设置,本文继续介绍PS端的设置.PS端仅用于验证上位机读写DDR3是否正确,因此相对比较简单. 一.新建SDK项目 在生成好bit文件之后先Export Hardware ...

  5. 【ZYNQ实战】利用AXI Quad SPI快速打通Linux至PL端SPI从设备

    关注.星标嵌入式客栈,精彩及时送达 [导读] 前面写过篇介绍ZYNQ基本情况的文章,今天来肝一篇实战文章介绍AXI quad SPI 使用方法,如果你正使用ZYNQ的这个IP,希望对你有所帮助. 初识 ...

  6. Zynq-Linux移植学习笔记之34-使用PCS/PMA IP核配置网络

    1.硬件设计 设计图如下,zynq PS ETH1连接PCS/PMA IP核. 这里PCS/PMA IP核相当于PHY,外部通过PCB连接到光模块.IP核的对应配置如下: 上面重要的部分是PHY的地址 ...

  7. 从1G到5G,从回顾过去到展望未来

    来源:<从1G到5G:移动通信如何改变世界>   作者:王建宙 始于20世纪80年代的蜂窝式移动通信,只用了30多年的时间,就实现了在全世界的普及.如今,手机是人们随身携带的使用频率最高的 ...

  8. 解析1G到5G技术与设备发展历程

    来源:5G 作者:张国宝:国家发改委原副主任.国家能源局原局长 摘要:解析1G到5G技术与设备发展历程 未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学交叉研究机构. 未 ...

  9. zynq - ps端的pcie ep功能测试

    参考资料: Zynq UltraScale+ MPSoC PS-PCIe End Point Driver - Xilinx Wiki - Confluence PCIe Tips and Trick ...

最新文章

  1. 如何像算法工程师一样,看待这个世界?
  2. AI 芯片和传统芯片的区别
  3. Win 8 app 获取窗口的宽度和高度, 本地化, 及文本读取
  4. dnn模型 list index out of range_基于svm的财务预警模型
  5. Java文件路径及文件名乱码_javaweb文件下载及文件名中文乱码处理
  6. vs2017调用linux脚本,[代码] ShellExecute调用外部程序_VS2017
  7. Matlab求高斯脉冲函数
  8. java 循环写法_java的for循环的几种写法
  9. 俺也用一下mandriva,恩,KDE的效果的确不错
  10. asp.net页生命周期
  11. 09年全年的case处理总量
  12. 分布式系统设计时,遵循CAP原则
  13. 网络安全:系统进程的基本概述
  14. 计算机二级 Excel常用函数公式总结
  15. 百度网盘青春版,免费不限速来了(使用体验)
  16. 阿里面试官没想到一个ArrayList,我都能跟他扯半小时
  17. ruoyi框架集成magic-api
  18. 宝塔linux面板环境安装,BT.CN宝塔面板环境安装流程(图文教程)
  19. 西电计科院Python程序设计随课笔记(李光夏)
  20. 萤石、小米对垒智能摄像头

热门文章

  1. js随机数方法 random()
  2. 双系统重装windows后恢复ubuntu
  3. 用AE实现一个文字光晕效果
  4. C# 给Word中的字符添加强调符号(着重号)
  5. 2020数字经济科技创新应用颁奖盛典圆满收官,数据宝荣膺大数据50强等多项大奖!
  6. 参考文献可以自动生成
  7. 给中国学生的一封信:从诚信…
  8. linux怎么添加用户
  9. Python数学计算工具5、Python求最最小公倍数
  10. Android-Studio简易手机通讯录