为了账号安全,请及时绑定邮箱和手机立即绑定

硬件电路设计-百兆网篇

标签:
面试 嵌入式

写在设计前

其实在构思这篇设计指导前,我想像之前一样,找ST的评估板资料,然后取个标题“STM32硬件电路设计-百兆网篇”,然后对应的解析下设计思路,然后文章结束。

但过程中的一件事让我改变了我的想法,其实在我构思本文的同时,我也在去推自己的公众号。在一个STM32的群里推了自己之前写的一篇文章-“STM32硬件电路设计-SDRAM篇”,一位群友看了后吐槽说看懵圈了,说对于STM32的SDRAM,拿HAL库用不就行了?然后我就被移除群聊了,似乎我推广的路径错了。其实对于“STM32硬件电路设计-SDRAM篇”这篇文,从硬件设计上说,我没有写太多如何设计指导,反而是SDRAM的信号和DRAM的基础知识我做了较多的讲解。

其实在写“STM32硬件电路设计-SDRAM篇”这篇文时,我查阅了ST的评估板资料后,觉得硬件设计上有点难以展开,太深入的话,涉及的东西太多,对于一些没太多接触STM32硬件的读者,读完后可能都已经忘记硬件设计的主题了。浅层点介绍的话,就是参考规格书连接对应的几个信号,这样从硬件设计上说目的其实已达到了,电路肯定能工作。但我觉得作为硬件电路设计者,如果只会连几条线,那我真不知道“硬件工程师”或“电路设计”这些词是否还能用在这个仅会连线的设计者身上,我也不希望阅读我文章的读者是这样的。所以我就做了个折中的选择,对SDRAM的一些基础知识做了讲解,描述了SDRAM的信号和功能,然后才讲解电路设计。

所以对于本文,我取标题为“硬件电路设计-百兆网篇”,不再是以某个MCU为主,也是出于同样的目的,因为我希望我做的设计指导,读者不会仅限知道在某个MCU上是怎么设计,但是换MCU后就觉得无从下手了。其实对于硬件设计,无论是否换MCU或其他的,我们想要和交付的最终结果是一个电子产品和功能,所以硬件设计是一种解决问题的方法,是一种艺术,不是局限在固定的东西上的固定思维。

百兆网电路的一些基础知识

为什么是百兆网,因为在现在的网络通信解决方案中,能找到的芯片几乎都是支持百兆网,然后向下兼容10兆,当然还有更高速度的千兆网、万兆网,对于更高速率网络需求的硬件设计,我们放在后续的文章慢慢来介绍,这里我们先从百兆入手,想看电路设计细节直接跳到设计详解章节。

一个百兆网的硬件电路如下图,摘自ST评估板MB1219B。要完成一个百兆网的电路设计,我们选择好支持百兆网的主控后,剩下需要做的工作是选择一颗支持百兆网的PHY芯片和一个带网络变压器的RJ45即可,如果选择的RJ45不带网络变压器,那还需要再找个网络变压器。

图片

ST评估板MB1219B的百兆网参考电路

有了上面的描述后,我们现在总结一个百兆网电路能跑起来的三个必要条件是:

1- 支持百兆网的主控芯片

2- 百兆网PHY芯片

3- 带网络变压器的RJ45,不带网络变压器的话还需下面条件四

4- 网络变压器

应用拓扑如下图所示,主控芯片有MAC接口,主控通过MAC接口跟PHY芯片通信,PHY芯片把通信数据编码后通过网络变压器把数据传输出去,或者通过网络变压器接收数据解码后通过MAC接口传给主控芯片。为什么要通过PHY芯片?原因是普通的电信号传输会有衰减和容易被干扰,解决方法是把普通电信号变成差分电信号传输。差分信号抗干扰能力强,也不容易信号衰减,但用差分信号传输数据还是不能完全解决抗干扰问题,所以就加入了数据编码来增强数据传输抗干扰能力,PHY就是做这些事的。

图片

有了上面的概念后,我们如何知道主控芯片是否支持百兆网?我们可以从主控芯片的概述中获取这个信息,只要我们在主控芯片中看到有10/100兆 MAC接口,那这颗芯片就是支持百兆网的,如下图所示。为什么是MAC接口,往下我在设计详解中说明。

图片

STM32F7系列规格书中描述支持百兆网

那什么是RJ45接口,RJ45就是插网线那个接口,如下图,这没啥好说的,放图就知道。

图片

RJ45连接器

什么是网络变压器,网络变压器就是下图这个东西,相信你会在很多拆机的工控板上能看到。为什么要放网络变压器,因为以太网标准里规定了以太网网络设备信号之间必须满足1500V的耐压隔离要求,要实现隔离无非就是电磁隔离和电容隔离,电磁隔离方式就是用变压器,电容隔离就是用电容。

图片

网络变压器

设计详解

MII/RMII接口设计


我们知道百兆网电路能否工作起来,只要把PHY电路对应接到主控芯片和RJ45接口即可,这里选了TI的百兆网PHY芯片DP83848CVV做讲解,对于其他的PHY芯片,也都是同样的方法和思路。

我们先来看PHY芯片DP83848CVV的信号如下图,我把PHY的信号分为4类,1为MII/RMII接口,2为MDI接口,3为配置接口,4为电源。

图片

DP83848CVV引脚信号

MII/RMII接口:

MII/RMII信号是用来跟主控芯片的MAC通信的,有发送(TX)和接收(RX)两种,设计时把它们一一对应连接至主控的MII/RMII信号上即可,**即****TX信号接TX信号,RX信号接RX信号。**比如这里参考ST评估板的原理图MB1219B,随机抓取百兆网电路的三个MII/RMII信号如下。

图片

ST评估板MB1219B的百兆网连接

可以看到MII_TX_CLK接到PC3,MII_RXD0接到PC4,MII_RXD1接到PC5,我们查阅主控规格书的引脚复用表,在第92页的Table 13,如下图,可以看到复用的信号跟上面连接的一样。

图片

STM32F7xx的引脚复用-MII接口

当然,有时为了产品成本和EMI考虑,会在MII/RMII信号线上串约22Ω的电阻做阻抗匹配来避免EMI问题,这些串联电阻的Layout摆放位置有个要求,TX信号线的串联电阻尽可能靠近MCU侧,RX信号线串联的电阻尽可能靠近PHY侧,一个方便理解的拓扑图如下所示。

图片

TX信号的串联电阻靠近MCU侧,RX信号的串联电阻靠近PHY侧

PHY配置电路设计


处理好MII/RMII的信号线后,剩下来我们再把PHY芯片的外围配置电路对应处理一下,电路就可以工作了。首先我们先看PHY的RX信号定义,可以看到,RX的信号除了做RX信号线传输数据以外,还有其他功能复用在上面。这些复用功能就是用来配置PHY芯片的,对应的处理上拉或者下拉,芯片上电后通过读取这些上下拉电平信号来对应配置芯片工作。

图片

PHY芯片的RX信号有复用功能

首先我们先看PIN 39,可以看到该引脚复用功能为MII_MODE,这个信号和6号脚复用的SNI_MODE组合用来设置PHY跟MAC通信接口方式,可以在规格书第9页看到,如下图所示。

图片

MII_MODE和SNI_MODE组合设置跟MAC的通信方式

在上图的规格书截图中可以看到,MII_MODE和SNI_MODE可以设置PHY芯片工作在3种模式。MII模式会用到DATA0-DATA3四条信号线,RMII仅用到DATA0-DATA12条线,SNI仅用DATA0一条线,其中MII和RMII都工作在百兆,而SNI仅能工作在10兆。限于篇幅,如果读者想细节了解MII和RMII的话,请参考后续发表的文章“硬件设计之MAC接口-MII/RMII”。

那我们该选择工作在哪种方式呢?这个问题具体看主控芯片MAC接口支持哪几种,如果3种都支持,那就选RMII模式,因为同样是百兆网模式,RMII信号线更少,Layout方便。如果不支持RMII,那就选MII了,至于SNI,目前应用场合不多了,就不考虑。所以对于PHY芯片的39号引脚,除了连接到主控芯片外,参考ST评估板的主控芯片的MAC仅支持MII模式,所以按照这个信息,需要把39号脚下拉一个10kΩ电阻到GND。但这里有个比较有意思的事,在上图中的描述里,对于MII_MODE这个引脚,可以不处理上下拉,芯片会默认为MII模式,描述如下图。这里我们刚好需要MII模式,所以参考规格书的这样说明,就可以不放置下拉。

图片

完成MII/RMII/SNI模式选择设置后,我们再看42-46号脚,这几个引脚的复用功能PHYAD0-PHYAD4是用于设置PHY芯片的地址的。为什么要设置地址,待会我们会说到,PHY芯片有个叫MDI接口,它跟I2C类似,可以挂载多个器件,各个器件需要设置地址才能被正确访问到。

同样我们看规格书第9页的描述如下图所示,可以看到这几个引脚内部都有了默认的上下拉电阻,所以对于只有一个PHY芯片的电路,没啥要求的话就不用自己手动加上下拉,直接使用芯片默认的即可。

图片

PHYAD0-PHYAD4内部均有上下拉电阻

那剩下还有LED_CFG这个信号了,这个信号是用于设置指示灯的,对的,就是网口会闪的那2个黄绿指示灯。规格书中描述该信号用来选择LED的模式,如下图所示,默认为模式1。模式1表述LED_LINK这个引脚ON时表示网线连接上了,OFF表示没连接。LED_SPEED这个引脚ON时表示在百兆网,OFF时在十兆网。LED_ACT/LED_COL引脚ON时表示有网络数据传输,OFF时没有数据传输。

图片

下面我们来看网口LED的设计,在规格书的引脚分布图中,我们可以知道LED_LINK、LED_SPEED和LED_ACT/LED_COL分别在引脚28、27、26号引脚,这几个引脚除了用来做LED指示以外,还复用其他功能。复用的功能是用来设置网络协商的,先说说这个网络协商配置,细节也在规格书第9页如下图所示。

图片

引脚26-28除了用于控制LED外还用于设置PHY芯片的网络协商方式

上图可以看到,AN0-AN1是设置不同协商工作模式的,这里具体要设置哪种模式就看项目需求了,如果没有特别需求,那么就设置为十兆、百兆半/全双通信自协商。即把AN_EN通过2.2kΩ电阻拉到VCC,这时无论AN0-AN1怎么设置,网络工作模式由PHY芯片和接到的网络设备自行握手协商确定。这里注意图中圈出的描述,这几个引脚是不能直接接地或者接到VCC的。

完成网络协商配置之后,我们继续看LED电路设计。因为LED和协商配置都共用一个引脚,所以协商模式设置的上下拉电阻会对LED的电路设计造成影响。所以设计电路时需要根据协商模式的上下拉设计LED电路。从规格书中知道,PHY芯片上电后会去读一次AN_EN、AN1和AN0这三个引脚的电平保存,当这三个引脚作为LED功能时,引脚作为LED控制信号时,控制LED打开的信号是初始读到的电平的相反值。意思就是,如果上电时读引脚为高电平,那么表示LED打开时,该引脚会输出低电平,如果上电读引脚为低电平,那么表示LED打开时,输出高电平。

一个典型的例子如下图所示,LED_SPEED这个引脚作为AN1功能做了上拉,按照上面描述,当这个引脚作为LED指示功能时,会输出相反的电平表示ON信号,所以这里低电平为LED的ON信号,所以电路设计时,LED的负极接到LED_SPEED上,正极通过限流电阻接至3.3V,当LED_SPEED输出低电平时LED亮。同样的逻辑,LED_LINK因为下拉,所以相反电平高电平指示LED亮,所以LED的正极串联一个电阻值接到LED_LINK,负极接地,LED_LINK输出高电平时LED亮。

图片

LED_SPEED输出低电平LED亮,LED_LINK输出高电平LED亮

有了上面的介绍后,我们参考ST评估板MB1219B来确认看看,如下图所示,可以看到26、27、28三个引脚都做了上拉,所以LED电路得用上图LED_SPEED的那种方式,可以看到是符合分析的。这里说明下,常规情况下,网口绿灯表示网线连接上,黄灯表示有数据传输,所以设计时对应连即可,当然也可以不按照这个要求来,可以根据自己的需求来选,比如有的设备就用绿灯来表示网络在百兆还是十兆,黄灯表示数据传输。

图片

ST评估板的LED处理连接方式

完成LED电路设计后,离百兆网电路正常工作就不远了,剩下就是参考时钟和刚才说的MDIO接口。MDIO是由MDC(时钟信号)和MDIO(数据信号)构成的两线通信接口,信号没有什么复杂的,对应接到主控芯片的引脚上即可,因为MDIO是双向的,参考规格书要求,需要加一个1.5kΩ的上拉。

对于参考时钟,如果使用MII接口,参考时钟选择25MHz,如果是RMII接口,参考时钟选择50MHz,关于晶振作为参考时钟如何设计选择负载电容的相关信息请参考之前文章-“无源晶振电路设计”。

网络变压器电路


剩下最后一步就是如何接到网口上了,前面说过,以太网标准里规定了网线必须做信号耐压隔离,耐压值是1500V,所以PHY信号接到网口上必须经过变压器或者电容隔离,这里主要讲解变压器隔离的设计,对于电容隔离的设计方法,感兴趣的读者可以参考后续发表的文章-“百兆网网口隔离-电容隔离”。

如下图所示,PHY芯片的信号TD-、TD+、RD-、RD+分别对应下图的TPTDP、TPTDM、TPRDP、TPRDM。信号中TD-和TD+为一对差分信号,RD-和RD+为一对差分信号。设计时需要注意网络变压器前后的极性要对应,比如下图中RJ45口的RD-接到网络变压器的同名端,对应的TPRDM也要接到网络变压器的同名端,不然会导致数据是错的。不过有的PHY芯片支持自动极性矫正,接反也没事,有的不支持极性矫正的就不能接反,具体还得仔细看规格书描述。

图片

PHY芯片通过网络变压器接至RJ45接口

参考上面描述把信号线一一对应接好后,剩下的就是对信号处理下端接,不同PHY芯片有不同端接方式,一般都会在规格书中描述,如果没有描述的话就找官方参考设计看看,或者问芯片厂家。上图是DP83848VYB的端接处理方式,网络变压器的抽头接至VDD,在抽头位置放置一个0.1uF得滤波电容,差分信号线通过49.9Ω电阻上拉端接至VDD,并放在一个0.1uF滤波电容。

上图中用红色框框了网络变压器和RJ45在一起,原因是有很多RJ45厂家已经把网络变压器跟RJ45集成到一起了,所以电路设计时只要参考规格书的PHY连接到网络变压器的部分电路即可。如下为汉仁的一个百兆RJ45内部原理框图,可以看到已经集成了网络变压器,所以选用设计时只需要把PHY的RD-接到RJ45的RD-,RD+接到RD+即可。

图片

RJ45内部集成了网络变压器

参考资料:
[1]. Texas Instruments: DP83848C/I/VYB/YB PHYTER™ QFP Single Port 10/100 Mb/s EthernetPhysical Layer Transceiver.
[2]. STMicroelectronics: MB1219B,STM32F779I-EVAL,B1,2016.
[3]. Institute of Electrical and Electronics Engineers: IEEE Std 802.3™-2018,IEEE Standard for Ethernet,June 2018.
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Python工程师
手记
粉丝
1
获赞与收藏
1

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消