基于HFSS的微带线特性阻抗仿真-与基于FDTD的计算电磁学方法对比(Matlab)
基于HFSS的微带线特性阻抗仿真-与基于FDTD的计算电磁学方法对比(Matlab)
工程下载:
HFSS的微带线特性阻抗仿真工程文件(注意版本:HFSS2023R2):
https://download.csdn.net/download/weixin_44584198/88748285
基于FDTD的微带线特性阻抗仿真Matlab工程:
https://download.csdn.net/download/weixin_44584198/88748215
目录
- 基于HFSS的微带线特性阻抗仿真-与基于FDTD的计算电磁学方法对比(Matlab)
- 1、微带线特性阻抗仿真基础
- 2、使用HFSS确定微带线特性阻抗
- 2.1、创建基板
- 2.2、背面覆铜
- 2.3、信号线覆铜
- 2.4、设置空气盒子
- 2.5、设置波端口
- 2.6、设置分析
- 2.7、check和运行
- 3、使用FDTD确定微带线特性阻抗
- 3.1 基本思路
- 3.2 建模
- 3.3 网格剖分
- 3.4 结果
- 3.5 代码运行的tips
1、微带线特性阻抗仿真基础
微带线特性阻抗的仿真是电磁学里面一个比较基本的仿真了,很多学校都会把这个当成HFSS学习的作业来弄。当然,微带线阻抗的仿真和实际的测量是有一定差别的,在仿真时候我们可以用波端口或者使用CPML边界截断,而实际测量的话手段是非常有限的。感兴趣可以阅读:
利用矢网测试PCB走线的特性阻抗
第二章 微带线阻抗实验
这种基于四分之一阻抗线的实际测量方法只能大概测一下,因为不同频率下的特性阻抗实际都是不一致的,要不然SMA接口还分0-6Ghz、0-10GHz那么多类型干嘛。
当然,有些刚刚入门的小伙伴会问了,特性阻抗不是可以使用公式进行计算的嘛,确实是这样的,但是这种是基于大量近似的计算,其精度必然没有电磁学方法准确。那么我们来给出今天的一个简单的案例:
基板:Rogers5880(相对介电常数2.2,损耗角正切0.0009)
结构:背板覆铜,正面信号线(微带线)
参数:铜厚35um,微带线宽为1mm,板子高度为1mm
目标:计算1-10GHz的该微带线特性阻抗
事实上,使用上面的这些参数,我们已经可以使用市面上常见的特性阻抗计算工具对特性阻抗进行计算了,比如ADS自带的计算工具linecalc:

计算出来的结果也非常明确,该结构在1GHz的特性阻抗为92.7欧姆。之前也提到,微带线特性阻抗对于不同频率是变化的,在10GHz处,计算出来的特性阻抗为93.6欧姆。使用linecalc工具得到的结果如下表,其基本的趋势是频率越高特性阻抗越大:
| 频率 | 特性阻抗 |
|---|---|
| 1GHz | 92.736200 |
| 2GHz | 92.741900 |
| 3GHz | 92.758900 |
| 4GHz | 92.796500 |
| 5GHz | 92.859500 |
| 6GHz | 92.950900 |
| 7GHz | 93.073200 |
| 8GHz | 93.228200 |
| 9GHz | 93.417100 |
| 10GHz | 93.640700 |
2、使用HFSS确定微带线特性阻抗
2.1、创建基板
首先创建基板,基板材料直接选5880就行,这个材料的相对介电常数2.2,损耗角正切0.0009,设置基板的高h=1,宽度一般为线宽的11倍左右,此处微带线线宽是1mm,因此板材的宽被设置为12mm,长度随意设置,美观就行,此处长设置为32mm:


2.2、背面覆铜
然后就是设置铜皮的位置了,此处我们底部是全部覆铜的,厚度为35um:


2.3、信号线覆铜
我们的顶部是信号线,也就是宽度为1mm的微带线:


2.4、设置空气盒子
下一步就是设置空气盒子了,一般要原理自己设置的结构的四分之一波长,根据上面的要求,我们要计算1-10GHz的该微带线特性阻抗,那么使用的最高频率所对应的波长为30mm,也就是空气盒子需要大于7.5mm,此处设置为8mm即可:


观察上面的图片,还有地方需要改一下,因为我们使用的是波端口,所以空气盒子要紧贴两个端口位置,改为:


2.5、设置波端口
下面需要设置波端口,波端口是一个面,其与微带线基板紧贴,但是要比基板结构高一点,比信号线铜皮宽一点(波端口要尽量大,因为要包含整个辐射面):

在此给出一种推荐的设置(高度为基板的6倍,宽度为微带线的6倍):

当然,还要选中刚刚创建的面,添加激励为Modal的Waveport(Modal:用于计算无源高频结构的S参数,如微带、波导和由源驱动的传输线,并用于计算入射平面波散射。S矩阵解将用波导模的入射功率和反射功率来表示。Terminal:用于计算单或多导体传输线端口的无源、高频结构的基于终端的S参数,这些S参数是由源驱动的。这种解决方案类型是基于终端的电压和电流描述):

此外,如果在之后的仿真中出现这样的信息,我们需要将其适当缩小,因为面太大了引入了其他的传播模式,这在此处的实验中是不恰当的:

2.6、设置分析
设置求解器和扫频范围:


2.7、check和运行
check一下,发现没有问题:

在结果中查看特性阻抗Z0,频率越高阻抗越低,好像和之前LineCalc算出来的相反有没有(算出来的大概范围是94-95欧姆的样子):

3、使用FDTD确定微带线特性阻抗
3.1 基本思路
FDTD没有HFSS的波端口可以直接用来确定特性阻抗Z0,此处使用S参数作为中间量求取特性阻抗。在终端完美匹配时,输入回波损耗S11和传输线特性阻抗具有如下关系:
Z 0 = Z t e r m 1 + S 11 1 − S 11 Z0 = {Z_{term}}\frac{{1 + {S_{11}}}}{{1 - {S_{11}}}} Z0=Zterm1−S111+S11
其中Z0是要求的微带线的阻抗, Z t e r m Z_{term} Zterm是端口1的阻抗。为达到终端完美匹配的条件,在实际仿真过程中将板材后半部分用CPML截断。
3.2 建模
实际上,电路板的三个边都被CPML截断,来实现无限大的电路板结构:

背面全部覆铜:

3.3 网格剖分
close all; clc;
addpath(genpath('K:\Project_WXP\20240115_FDTD\FDTD_Z0'))
% initialize the matlab workspace
%参数赋值,定义分辨率单位m
wxp_dx = 1.00e-4;
wxp_dy = 1.00e-4;
wxp_dz = 0.25e-4;%定义板材和微带大小参数,单位mm
wxp_cond_width = 1;
wxp_cond_T = 0.00;
wxp_cond_bottom_T = 0.00;
wxp_sub_width = 12;
wxp_sub_length = 11;
wxp_sub_height = 1;
wxp_sub_eps_r = 2.2;
wxp_sub_eps_i = 0.0009;
wxp_sample_position = 0.25;
fdtd_solve;
3.4 结果
在结果中查看特性阻抗Z0,频率越高阻抗越高,算出来的结果也和LineCalc中比较接近,很难说哪个比较准确:

3.5 代码运行的tips
主函数在FDTD_Z0\main里面的wxp_main.m
第一次运行修改addpath(genpath(‘K:\Project_WXP\20240115_FDTD\FDTD_Z0’))为实际电脑上的路径
相关文章:
基于HFSS的微带线特性阻抗仿真-与基于FDTD的计算电磁学方法对比(Matlab)
基于HFSS的微带线特性阻抗仿真-与基于FDTD的计算电磁学方法对比(Matlab) 工程下载: HFSS的微带线特性阻抗仿真工程文件(注意版本:HFSS2023R2): https://download.csdn.net/download/weixin_445…...
【SQL】SQL语法小结
相关资料 参考链接1:SQL 语法(超级详细) 参考链接2:史上超强最常用SQL语句大全 SQL练习网站:CSDN、牛客、LeetCode、LintCode SQL相关视频: 推荐书籍: 文章目录 数据分析对SQL的要求SQL语法简介…...
Open CASCADE学习|显示模型
目录 1、编写代码 Viewer.h Viewer.cpp ViewerInteractor.h ViewerInteractor.cpp helloworld.cpp 2、配置 3、编译运行 1、编写代码 Viewer.h #pragma once #ifdef _WIN32 #include <Windows.h> #endif // Local includes #include "ViewerInteract…...
【C++】string的基本使用
从这篇博客开始,我们的C部分就进入到了STL,STL的出现可以说是C发展历史上非常关键的一步,自此C和C语言有了较为明显的差别。那么什么是STL呢? 后来不断的演化,发展成了知名的两个版本,一个叫做P.J.版本&am…...
vue 里 props 类型为 Object 时设置 default: () => {} 返回的是 undefined 而不是 {}?
问题 今天遇到个小坑,就是 vue 里使用 props 传参类型为 Object 的时候设置 default: () > {} 报错,具体代码如下 <template><div class"pre-archive-info"><template v-if"infoData.kaimo ! null">{{ infoD…...
04 SpringMVC响应数据之页面跳转控制+返回JSON数据+返回静态资源
1. handler方法分析 /*** TODO: 一个controller的方法是控制层的一个处理器,我们称为handler* TODO: handler需要使用RequestMapping/GetMapping系列,声明路径,在HandlerMapping中注册,供DS查找!* TODO: handler作用总结:* 1.接收请求参数(param,json,pathVariable,共享…...
Python圣诞主题绘图:用turtle库打造冬日奇妙画面【第31篇—python:圣诞节】
文章目录 Python圣诞主题绘图导言代码结构概览详细解析drawlight函数tree函数xzs函数drawsnow函数五角星的绘制 完整代码代码解析总结 Python圣诞主题绘图 导言 圣诞季节是个充满欢乐和创意的时刻。在这个技术博客中,我们将深入探讨如何使用Python的turtle库创建一…...
[开发语言][c++]:Static关键字和全局变量
Static关键字和全局变量 1. 生命周期、作用域和初始化时机2. 全局变量3. Static 关键字3.1 面向过程3.1.1 静态全局变量3.1.2 静态局部变量(单例中会使用)3.1.3 静态函数 3.2 面向对象3.2.1 类内静态成员变量3.2.2 类内静态成员函数 Reference 写在前面&…...
计算机组成原理 第一弹
ps:本文章的图片来源都是来自于湖科大教书匠高老师的视频,声明:仅供自己复习,里面加上了自己的理解 这里附上视频链接地址:1-2 计算机的发展_哔哩哔哩_bilibili 目录 🚀计算机系统 🚀计…...
Hadoop基础知识
Hadoop基础知识 1、Hadoop简介 广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈。狭义上说,Hadoop指Apache这款开源框架,它的核心组件有: HDFS(分布式文件系统):解决海量数据存储Y…...
Java进阶之旅第五天
Java进阶之旅第五天 不可变集合 应用场景 1.如果某个数据不能被修改,把它拷贝到不可变集合中是个很好的实践2.当集合对象被不可信的库调用时,不可变形式是安全的3.不可变集合不能修改,只能进行查询 获取方式 在List,Set,Map接口中,都存在静态的of方法,可以获取一个不可变的…...
拓展边界:前端世界的跨域挑战
目录 什么是跨域 概念 同源策略及限制内容 常见跨域场景 如何解决跨域 CORS Nginx代理跨域 Node中间件代理跨域 WebSocket postMessage JSONP 其他 什么是跨域 概念 在此之前,我们了解一下一个域名地址的组成: 跨域指的是在网络安全中&…...
旅游项目day03
1. 前端整合后端发短信接口 2. 注册功能 后端提供注册接口,接受前端传入的参数,创建新的用户对象,保存到数据库。 接口设计: 实现步骤: 手机号码唯一性校验(后端一定要再次校验手机号唯一性)…...
单片机学习记录(一)
简答题 第1章 1.微处理器、微计算机、CPU、单片机、嵌入式处理器他们之间有何区别? 答:微处理器、CPU都是中央处理器的不同称谓,微处理器芯片本身不是计算机; 单片机、微计算机都是一个完整的计算机系统,单片机是集…...
MacBookPro怎么数据恢复? mac电脑数据恢复?
使用电脑的用户都知道,被删除的文件一般都会经过回收站,想要恢复它直接点击“还原”就可以恢复到原始位置。mac电脑同理也是这样,但是“回收站”在mac电脑显示为“废纸篓”。 如果电脑回收站,或者是废纸篓里面的数据被清空了&…...
Python多线程—threading模块
参考:《Python核心编程》 threading 模块的Thread 类是主要的执行对象,而且,使用Thread类可以有很多方法来创建线程,这里介绍以下两种方法: 创建 Thread 实例,传给它一个函数。派生 Thread 的子类…...
mysql limit
语法 SELECT * FROM TABLE_NAME LIMIT 起始位置,偏移量注: 起始位置从0开始 示例 查询的第1条数据到第100条数据 limit 0,100查询的第101条数据到第200条数据 limit 100,100注意不要用 limit 101,100示例2 limit 语句应放在order by语句后面执行 …...
解决国内Linux服务器无法使用Github的方法
解决思路:修改Host https://www.ipaddress.com/ 利用上面的网站查询github.com和raw.githubusercontent.com的DNS解析的IP地址 最后,修改服务器的/etc/hosts 添加如下两行: 140.82.112.3 github.com 185.199.108.133 raw.githubuserconte…...
动态规划基础(二)最长公共子序列 LCS
讲解求两个串中最长的公共的子序列长度或输出子序列等 poj1458 题目大意 给定两个字符串,要求输出两个字符串中最长公共子序列长度 思路 我们定义 a [ i ] [ j ] a[i][j] a[i][j]为,当字串 s t r 1 str1 str1到 i i i位置,字串 s t r 2 s…...
React配置src根目录@
文章目录 1.打开webpack配置文件2.配置webpack 1.打开webpack配置文件 yarn eject or npm run eject 如果报错了记得提前 git commit一下 2.配置webpack 找到 webpack.config.js 文件在 webpack.config.js 文件中找到 alias 配置在alias里添加: path.resolve(src) , 或者 : pa…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
HTML前端开发:JavaScript 获取元素方法详解
作为前端开发者,高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法,分为两大系列: 一、getElementBy... 系列 传统方法,直接通过 DOM 接口访问,返回动态集合(元素变化会实时更新)。…...
《Offer来了:Java面试核心知识点精讲》大纲
文章目录 一、《Offer来了:Java面试核心知识点精讲》的典型大纲框架Java基础并发编程JVM原理数据库与缓存分布式架构系统设计二、《Offer来了:Java面试核心知识点精讲(原理篇)》技术文章大纲核心主题:Java基础原理与面试高频考点Java虚拟机(JVM)原理Java并发编程原理Jav…...
如何通过git命令查看项目连接的仓库地址?
要通过 Git 命令查看项目连接的仓库地址,您可以使用以下几种方法: 1. 查看所有远程仓库地址 使用 git remote -v 命令,它会显示项目中配置的所有远程仓库及其对应的 URL: git remote -v输出示例: origin https://…...
「Java基本语法」变量的使用
变量定义 变量是程序中存储数据的容器,用于保存可变的数据值。在Java中,变量必须先声明后使用,声明时需指定变量的数据类型和变量名。 语法 数据类型 变量名 [ 初始值]; 示例:声明与初始化 public class VariableDemo {publi…...
