1.17 AC电容在高速电路中作用

目录

1 简介

 2 AC电容的位置

2.1 AC耦合电容放置于发送端

2.2 AC耦合电容放置于接收端

2.3 结果分析

3 AC电容的容值

3.1 0.1μF AC电容

3.2 10μF AC电容

3.3 结果分析

4 AC电容总结


1 简介

对于低频电路,电阻和电容可以作为一种理想器件进行分析。但是在高频电路中,这两种器件将不在“理想”。今天我我们主要讨论的是AC电容这个问题,也就是我们常见的交流耦合电容,其主要的功能就是滤除信号的直流分量,是信号关于X轴对称。下面我们通过MULTISIM进行仿真,具体的仿真电路如下:

 仿真波形见下:

下面我门针对AC电容的放置位置容值大小两个话题进行分析。

 2 AC电容的位置

下图是一个电容的AC电容耦合电路,今天我们就以该电路对AC电容的位置进行分析:

 在电路电路的设计中,该电容可以等效为理想电容,PORT1和PORT2可以视为开路。在高速电路中,该电容不能等效为理想电容,信号的频率为2.5G。

2.1 AC耦合电容放置于发送端

将AC电容至于发送端(PORT1),具体电路如下图:

 测试眼图如下:

2.2 AC耦合电容放置于接收端

将AC电容至于发送端(PORT2),具体电路如下图:

 测试眼图如下:

2.3 结果分析

AC耦合电容处于接收端(PORT2)时,性能远远优于放置在发送端(PORT1)。

分析:非理想电容器阻抗不连续,信号经过通道衰减后反射的能量会小于直接反射的能量,所以绝大多数串行链路要求这颗AC耦合电容放在接收端。但也有例外,笔者之前做板对板连接时遇到过这个问题,查PCIE规范发现如果是两个板通常放置在发送端上,此时还利用到了AC耦合电容的另外一个作用——过压保护。比如说SATA,所以通常要求靠近连接器放置。

3 AC电容的容值

信号链路可以等效为固定的电阻R,此时AC耦合电容的容值的大小会影响时间常数τ,RC越大,过的直流分量越大,直流压降越低。下面我们就来针对AC电容的容值进行分析:

3.1 0.1μF AC电容

AC耦合电容采用0.1μF,封装为0402,电容的位置处于接收端,电路如下图所示:

 测试的眼图如下:

3.2 10μF AC电容

AC耦合电容采用10μF,封装为0402,电容的位置处于接收端,电路如下图所示:

 测试的眼图如下:

3.3 结果分析

  • 可以看出增大耦合电容后,眼高变低。

分析:是“高速”使电容变的不理想。感应电感会产生串联谐振,容值越大,谐振频率越低,AC耦合电容在低频情况下呈感性,因此高频分量衰减增大,眼高变小,上升沿变缓,相应的JITTER也会增大。通常建议AC耦合电容在0.01uf~0.2uf之间,项目中0.1uf比较常见。推荐使用0402的封装。

4 AC电容总结

  • 第一,一些协议或者手册会提供设计要求,我们按照design guideline要求放置。

(分析:一般来讲AC耦合电容的位置和容值大小都是由信号的协议或者芯片供应商去提供,对于不同信号和不同芯片,其位置和容值大小都是不一样的。比如PCIE信号要求AC耦合电容靠近通道的发送端,SATA信号要求AC耦合电容靠近连接器处,对于10GBASE-KR信号要求AC耦合电容靠近信号通道的接收端。)。

  • 第二,如果是IC 到IC,请靠近接收端放置。

(分析一,电容看成一个阻抗不连续点(所以要求尽量跟传输线匹配),如果靠近接收端放,相同的反射系数下,信号经过通道衰减之后再反射会比一开始就反射的能量小。所以大多数的串行链路都要求靠接收端放;分析二,在信号传输过程中,也可能串扰进去一些直流分量,导致接收出问题,所以靠近接收端。分析三,经过AD仿真也发现放在接收端眼图质量效果更好)

  • 第三:如果是IC 到连接器,请靠近连接器放置。

(分析:我们知道AC耦合电容还有另外一个作用,就是提供过电压和过流的保护。那么在有连接器的情况下,刚好就起到了这个作用。所以更多的要求是靠近连接器放)

特别地:

  • 在SATA 信号传输的过程中会有衰减,传的距离越长衰减会越厉害,所以会给他一个载波(也就是直流分量),在进入IC 或者SATA device 后再用串电容的方法把直流分量滤掉,这样做会有比较好的信号质量,也就是隔直作用。
  • PCIE 放在发送端是协议规定的, 记得放在近端TX 是给detector 做充电检测device 用的。
  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
在 Go 1.17 ,你可以使用 embed 包将静态文件嵌入到可执行文件,因此可以将 Swagger UI 嵌入到 Go Web 项目,而不需要单独部署 Swagger UI。 以下是在 Goland 项目使用 Swagger 的步骤: 1. 安装 Swagger 相关依赖:在项目添加 `github.com/swaggo/swag` 和 `github.com/swaggo/gin-swagger` 两个依赖库,可以使用以下命令: ``` go get -u github.com/swaggo/swag go get -u github.com/swaggo/gin-swagger go get -u github.com/swaggo/gin-swagger/swaggerFiles ``` 2. 在项目添加 Swagger 注释:在需要生成 Swagger 文档的接口上添加注释,例如: ``` // @Summary 获取用户信息 // @Description 根据用户ID获取用户信息 // @Tags 用户管理 // @Produce json // @Param id path int true "用户ID" // @Success 200 {object} UserResponse // @Failure 400 {string} string "请求参数错误" // @Router /users/{id} [get] func GetUserByID(c *gin.Context) { // ... } ``` 3. 生成 Swagger 文档:在项目根目录下执行以下命令,生成 Swagger 文档: ``` swag init ``` 该命令会在项目生成一个 `docs` 目录,其包含了 Swagger 文档的 JSON 文件和 HTML 文件。 4. 在项目嵌入 Swagger UI:在项目添加一个 `swagger` 目录,并将 Swagger UI 的静态文件拷贝到该目录。可以从 Swagger 官网(https://swagger.io/tools/swagger-ui/)下载最新的 Swagger UI 版本。 ``` ├── main.go ├── go.mod ├── go.sum ├── docs │ ├── docs.go │ ├── swagger.json │ └── swagger.yaml └── swagger ├── index.html ├── swagger-ui-standalone-preset.js ├── swagger-ui-standalone-preset.js.map ├── swagger-ui.css ├── swagger-ui.css.map ├── swagger-ui.js ├── swagger-ui.js.map └── swagger-ui.min.js ``` 5. 在项目添加 Swagger UI 的路由:在项目添加一个路由,将 Swagger UI 的 HTML 文件和静态文件提供给用户访问,例如: ``` router.GET("/swagger/*any", gin.WrapH(http.FileServer(http.Dir("./swagger")))) ``` 这样,用户可以通过访问 `/swagger/index.html` 来查看 Swagger 文档。 6. 启动项目并访问 Swagger UI:在 Goland 启动项目,然后在浏览器访问 `http://localhost:8080/swagger/index.html`,即可访问 Swagger UI 并查看文档。 需要注意的是,这种方式虽然可以将 Swagger UI 嵌入到可执行文件,但是每次修改 Swagger UI 后都需要重新编译可执行文件,因此不建议在生产环境使用。如果你需要在生产环境使用 Swagger UI,建议单独部署一个 Swagger UI 服务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一杯苦 Coffee

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

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

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

打赏作者

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

抵扣说明:

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

余额充值