我的学记|刘航宇的博客 - 通信&信息处理
基于51/52单片机电容、电感、电阻参数测量系统设计与Proteus仿真
{mtitle title="目录"/}一、设计任务和要求二、方案设计与论证2.1 系统总设计框图2.2 方案一：电桥平衡原理① 电阻的测量：直流电桥平衡原理② 电容的测量：交流电桥平衡原理③ 电感的测量：交流电桥平衡原理2.3 方案二：频率转换法（本设计采用）① 电阻的测量：555 构成单稳态② 电容的测量：555 构成单稳态③ 电感的测量：电容三点式正弦波振荡2.4 方案对比与选择三、单元电路设计和参数计算3.1 电阻的检测单元电路设计3.2 电容的检测单元电路设计3.3 电感的检测单元电路设计四、总原理图及元器件清单4.1 总原理图4.2 元器件清单五、程序设计5.1 程序流程图5.2 核心代码中断函数（频率测量）主函数显示函数键盘检测函数5.3 完整程序清单及protues仿真文件（附录）六、安装与调试6.1 仿真调试（1）电阻测量电路仿真（2）电容测量电路仿真（3）电感测量电路仿真调试要点液晶显示电路调试仿真整体显示6.2 实物调试电阻检测电容检测电感检测八、参考文献九、附录-完整软件程序与protues仿真文件完整程序与仿真文件见文章末尾一、设计任务和要求设计并制作一个元器件参数测量仪电阻阻值测量，范围：100Ω ~ 1MΩ电容容值测量，范围：100pF ~ 10000pF测量精度：±5%电感参数的测量扩大量程提高测量精度二、方案设计与论证2.1 系统总设计框图图1 系统总设计框图在测量各元件参数时，采用首先把电感、电容、电阻的参数转化为频率[1]，再送至单片机检测，检测结束后，送至 LCD1602 进行显示。2.2 方案一：电桥平衡原理① 电阻的测量：直流电桥平衡原理图2 直流电桥平衡电路图根据电路平衡原理，不断调节电位器 R3，使得电表指针指向正中间，再测量电位器电阻值。② 电容的测量：交流电桥平衡原理图3 交流电桥平衡电路图通过调节 Z1、Z2 使电桥平衡。这时电表的读数为零。通过读取 Z1、Z2、Zn 的值，即可得到被测电容的值。③ 电感的测量：交流电桥平衡原理图4 交流电桥平衡电路图2.3 方案二：频率转换法（本设计采用）① 电阻的测量：555 构成单稳态图5 555 定时器构成单稳态电路图根据 555 定时器构成单稳态，产生脉冲波形，通过单片机读取高低电平得出频率，通过公式换算得到电阻阻值。② 电容的测量：555 构成单稳态图6 555 定时器构成单稳态电路图**根据 555 定时器构成单稳态，产生脉冲波形，通过单片机读取高低电平得出频率，通过公式换算得到电容值。③ 电感的测量：电容三点式正弦波振荡图7 电容三点式正弦波振荡电路图由电容三点式正弦波振荡电路得出频率，通过单片机读取高低电平得出频率，通过公式换算得到电感值。2.4 方案对比与选择对比项方案一（电桥法）方案二（频率法）测量精度受人为调节影响大单片机数字化，精度高操作难度调节麻烦，不易操作自动测量，一键显示电感测量不易测得准确值振荡电路，相对稳定数字化不易数字化便于单片机处理结论： 方案二通过单片机读取转化，精确度会明显提高，且便于数字化显示。故本设计选择方案二。三、单元电路设计和参数计算3.1 电阻的检测单元电路设计图8 555 定时器构成单稳态电路图由 555 单稳态触发公式：$$f=\frac{1}{\ln2(R_{1}+2R_x)C}$$得：$$R_x=\frac{1}{2}(\frac{1}{\ln2fC}-R_{1})$$从而，可以计算得出电阻值的大小。3.2 电容的检测单元电路设计图9 555 定时器构成单稳态电路图根据 555 定时器构成单稳态，产生脉冲波形，通过单片机读取高低电平得出频率，通过公式换算得到电容值[2]。由：$$f=\frac{1}{\ln2^*(R_1+2R_2)^*C_x}$$若 R1 = R2，得：$$C_x=\frac{1}{3\ln2^*f^*R_1}$$从而，可以计算得出电容值的大小。3.3 电感的检测单元电路设计图10 电容三点式正弦波振荡电路图由 LC 振荡频率公式：$$f=\frac{1}{2\pi\sqrt{\frac{C_1*C_2}{C_1+C_2}*L_x}}$$得：$$L_x=\frac{1}{\left(2\pi f\right)^2\frac{C_1*C_2}{C_1+C_2}}$$从而，可以计算得出电感值的大小。四、总原理图及元器件清单4.1 总原理图图11 电阻、电容、电感参数测试总原理图图12 测量电阻、电容部分的原理图图13 测量电感以及 ±5V 发生原理图4.2 元器件清单元件序号型号数量备注U1STC89C52RC1单片机R3A103J1排阻R2, R3, R17, R1810KΩ4电位器X111.0592M1晶振C325V, 10uF1电解电容C1, C2, C11103 (0.01uF)3瓷片电容R1, R13, R1810KΩ3电阻J1, J2, J3, J4—4按键U216021液晶A1, A2NE5552555 定时器R4300Ω1电阻R5, R6510KΩ2电阻C4~C9104 (0.1uF)6瓷片电容R7, R9100KΩ2电阻C1050V, 22uF1电解电容Q1~Q3S9108 (NPN)3三极管R102KΩ1电阻R8, R11, R141KΩ3电阻C12, C1350V, 47uF2电解电容R12, R1939KΩ2电阻R15, R1651Ω2电阻C1425V, 470uF1电解电容U3NE555321运放五、程序设计5.1 程序流程图图14 中断程序流程图图15 主程序流程图初始化 (led_init, t_init, keyscan) ↓ 清屏 ↓ 循环: ├── 显示频率 display_f(f) └── 根据 a 值分支: ├── case 1: 计算电阻 R，显示 display_R(R) ├── case 2: 计算电容 C，显示 display_C(C) └── case 3: 计算电感 L，显示 display_L(L)5.2 核心代码中断函数（频率测量）void T0_count() interrupt 1 { switch(a) { case 1: // 电阻测量 while(R_out); while(!R_out); TH0 = 0; TL0 = 0; while(R_out); while(!R_out); th0 = TH0; tl0 = TL0; TR0 = 0; break; case 2: // 电容测量 while(C_out); while(!C_out); TH0 = 0; TL0 = 0; while(C_out); while(!C_out); th0 = TH0; tl0 = TL0; TR0 = 0; break; case 3: // 电感测量 while(L_out); while(!L_out); TH0 = 0; TL0 = 0; while(L_out); while(!L_out); th0 = TH0; tl0 = TL0; TR0 = 0; break; } f = 1000000.0 / 1.085069 / (th0 * 256 + tl0) + 0.5; }主函数void main() { led_init(); // 液晶初始化 t_init(); // 定时器初始化 keyscan(); // 按键检测 write_com(0x01); // 清屏 while(1) { display_f(f); switch(a) { case 1: // 电阻: R = (T/0.693 - 150) 换算 R = (ulong)(5000000.0 / 0.6931472 / f - 150 + 0.5); display_R(R); break; case 2: // 电容: C = 换算公式 C = (int)(100000000.0 / 153 / 0.6931472 / f + 0.5); display_C(C); break; case 3: // 电感: L = 1/(4π²f²C) 换算 L = (int)(1000000000000.0 / 0.1 / PI / PI / f / f + 0.5); display_L(L); break; } } }显示函数// 频率显示 void display_f(ulong f) { uchar count = 0; ulong f0 = f; while(f) { f = f / 10; count++; } for(num = 5 + count; num > 5; num--) { table2[num] = f0 % 10 + 48; f0 = f0 / 10; } write_com(0x80); for(num = 0; num < 6 + count; num++) { write_data(table2[num]); delayms(5); } } // 电阻显示 void display_R(ulong R) { uchar count = 0; ulong R0 = R; while(R) { R = R / 10; count++; } for(num = 6 + count; num > 6; num--) { table3[num] = R0 % 10 + 48; R0 = R0 / 10; } write_com(0x80 + 0x40); for(num = 0; num < 7 + count; num++) { write_data(table3[num]); delayms(5); } } // 电容显示 void display_C(uint C) { uchar count = 0; uint C0 = C; while(C) { C = C / 10; count++; } for(num = 5 + count; num > 5; num--) { table4[num] = C0 % 10 + 48; C0 = C0 / 10; } write_com(0x80 + 0x40); for(num = 0; num < 6 + count; num++) { write_data(table4[num]); delayms(5); } } // 电感显示 void display_L(uint L) { uchar count = 0; uint L0 = L; while(L) { L = L / 10; count++; } for(num = 5 + count; num > 5; num--) { table5[num] = L0 % 10 + 48; L0 = L0 / 10; } write_com(0x80 + 0x40); for(num = 0; num < 6 + count; num++) { write_data(table5[num]); delayms(5); } }键盘检测函数void keyscan() { if(key_R == 0) // 检测电阻按键 { delayms(10); // 消抖 if(key_R == 0) a = 1; } else if(key_C == 0) // 检测电容按键 { delayms(10); if(key_C == 0) a = 2; } else if(key_L == 0) // 检测电感按键 { delayms(10); if(key_L == 0) a = 3; } else while(key_R && key_C && key_L); // 等待按键按下 }5.3 完整程序清单及protues仿真文件（附录）见文末附录部分。六、安装与调试6.1 仿真调试（1）电阻测量电路仿真图16 电阻测量的仿真电路图图17 电阻测量的仿真输出波形（2）电容测量电路仿真图18 电容测量的仿真电路图图19 电容测量的仿真输出波形（3）电感测量电路仿真图20 电感测量的仿真电路图图21 电感测量的仿真输出波形调试要点接通电源，用示波器观察输出波形，若为方波，则电路焊接无误，否则检查电路[3]在调试过程中发现，若改变电源电压，输出方波的频率会发生变化，计算出的数值存在一定误差当 VCC 为 3.25V 左右时误差较小液晶显示电路调试将测量电路的输出分别与单片机的 P1^5、P1^6、P1^7 相接，观察液晶是否显示测量结果在调试过程中发现，电阻、电容的测量误差较小由于电容三点式震荡电路的频率不稳定，电感测量的误差较大仿真整体显示图22 电阻测量显示图23 电容测量显示图24 电感测量显示图25 电源生成模块显示6.2 实物调试实物按照仿真电路搭建，通电显示 "Welcome! RCL detector"。图26 实物开机界面电阻检测插入 2.7KΩ 电阻若显示不准确，调节仿真中 R2 对应的电位器即可改变输出频率，使得检测精准检测显示 2735Ω，可见调试准确图27 电阻检测显示电容检测插入 0.1uF 电容若显示不准确，调节仿真中 R3 对应的电位器即可改变输出频率，使得检测精准检测显示 101pF，可见调试准确[4]图28 电容检测显示电感检测插入 65mH 电感若显示不准确，调节程序计算公式5，即可改显示结果，使得检测精准检测显示 65535uH，可见调试准确图29 电感检测显示八、参考文献[1]杨沁佳.浅谈电感传感器微位移检测仪的原理与设计[J].数字通信世界,2019(09):143+159.[2]张璐雅,阮景.一种基于555时基电路的振荡器设计[J].集成电路应用,2019,36(12):12-13.[3]谢琪林.浅谈STC89S51单片机时序[J].电子测试,2020(24):139-140.[4]黄江.基于STM32的高精度电容测量仪设计[J].信息技术与信息化,2020(11):140-141.[5]王晓辉,王智永,韩智伟,胡帅可,谢印庆.基于三极管放大原理的电容三点式LC振荡器的设计[J].电子世界,2020(03):206.[6] E. L. Pankratov. An approach to model manufacturing of an enhanced swing differential Colpitts oscillator based on heterostructures to increase density of their elements with account mismatch-induced stress: on optimization of annealing. 2020, :1-19.九、附录-完整软件程序与protues仿真文件// ============================================ // RCL 测量仪程序 // 基于 STC89C52RC + NE555 + LCD1602 // ============================================ #include <reg52.h> #define uint unsigned int #define uchar unsigned char #define ulong unsigned long #define PI 3.1415926 // ========== 字符串常量 ========== uchar code table1[8] = "Welcome! RCL detector"; uchar table2[16] = "f(Hz)="; uchar table3[16] = "R(Ohm)="; uchar table4[16] = "C(pF)="; uchar table5[16] = "L(uH)=";
利用图像处理技术mfc设计细胞识别程序-C++
{mtitle title="目录"/}一、图像处理设计目标1.1 课题与技术指标1.2 任务点二、设计思路三、创建工程及算法分析3.1 预备工作及工程创建3.2 打开 BMP 图片与显示 HSI 值代码分析主要代码3.3 Mark - 细胞标记代码分析主要代码3.4 OnTwoValue() - 二值化代码分析状态标记说明主要代码3.5 OnFillHoles() - 填洞代码分析主要代码3.6 shrink() - 收缩代码分析主要代码3.7 findcenter() - 中心点获取代码分析合并中心点去除多余圆或者错误圆主要代码3.8 count() - 统计代码分析3.9 OnCellprgAll() - 按序执行全部四、错误情况及分析4.1 未声明全局变量信息头4.2 错把指针当作 int 型4.3 软件菜单栏突然丢失4.4 矩形框在鼠标未按下就出现了五、总结参考文献一、图像处理设计目标1.1 课题与技术指标课题： 利用图像处理技术设计细胞识别程序。设计指标：实验 VS2019 MFC 开发平台待识别图像为 24bit 的真彩色细胞图像进行处理要求识别出细胞，并且保证准确度情况下，统计出细胞的个数和大小1.2 任务点完成图像标注：添加 cdib.h、cdib.cpp、添加函数、添加消息响应函数、添加菜单、打开图像完成细胞的判别：持续判断 Maybe 点邻域有无 Mark 点、Sobel 计算边缘、删除孤立边缘、生成黑白图像细胞收缩：利用 stack、vector 获取孔洞坐标、填充孔洞、Edge 处置 0、4 方向、8 方向交替生成边缘细胞中心点信息获取：递归算法、判别局部是否全是边缘、储存全部中心位置错误信息的删除：计算中心点均值、半径、去除半径过小的点、包含圆的剔除、相交过大圆的剔除、信息统计与显示二、设计思路图像处理之细胞识别的主要工作就是识别细胞数目以及选择出指定大小细胞。设计思路如下图所示。同时我们要去除不符合要求的中心点，来确定最终的细胞数目，去除太小和太大的细胞1，并结合实际来修改各种参数，设计合理。图1 系统设计思路（流程图：打开图像 → HSI 转换 → 细胞标记 → 二值化 → 填洞 → 收缩 → 中心点获取 → 错误删除 → 统计输出）三、创建工程及算法分析3.1 预备工作及工程创建（1）VS2019 安装 MFC 与 C++ 开发环境（2）创建 MFC 工程，配置 MFC 应用程序向导图2 创建工程 / 图3 MFC 配置3.2 打开 BMP 图片与显示 HSI 值代码分析（1）在 OnDraw 函数实现显示图片；在 messages 中添加 display() 实现打开一幅图像的功能。在 LoadBmp() 函数中利用 fopen 实现自动打开图片，利用 fread 读取图片信息。（2）通过：查看 → 建立类向导 → 添加 OnMouseMove() 函数，添加代码实现获取所要信息；实现鼠标移动显示 HSI。（3）通过函数 RgbtoHsi 实现 RGB 向 HSI 的转化。RGB → HSI 转换原理：RGB 向 HSI 模型的转换是由一个基于笛卡尔直角坐标系的单位立方体向基于圆柱极坐标的双锥体的转换。基本要求是将 RGB 中的亮度因素分离，将色度分解为色调和饱和度，并用角向量表示色调2。如果直接对 R、G、B 处理，其处理过程中很可能会引起三个量不同程度的变化，这样就会产生色差问题，甚至带来颜色上的失真。HSI 模型的出现，使得在保持色彩无失真的情况下实现图像处理成为可能。图4 HSI 显示效果主要代码// HSI 主要代码示意 void RgbtoHsi(RGB* rgb, HSI* hsi) { // 将 RGB 转换为 HSI 色彩空间 // H: 色调, S: 饱和度, I: 亮度 // 分离亮度因素，保持色彩无失真 }图5 HSI 主要代码3.3 Mark - 细胞标记代码分析确定 Mark 与 mbMark 是通过半径来的，通过计算图像上的某个像素点与细胞内部像素点的欧几里得距离与归一化门限值分别为 0.09 和 0.15 比较：r < 0.09 → Mark（红色，细胞内部）0.09 < r < 0.15 → mbMark（蓝色，可能边界）OnMouseMove 函数里调用 RgbtoHsi(&rgb, &Hsi) 函数，可以在屏幕上显示鼠标所指点的坐标以及 RGB、HSI 和灰度值，通过 HSI 的可以选取合适的阈值来找到细胞以及边界3。边缘提取的方法：先滤波，去除噪声的影响，防止细胞内的噪声的影响之后用 Sobel 算子 求出边界之后画一个 5×5 的矩形，如果没有遇到边界，是噪声，去除边界点是绿色。细胞边界分别用红色、暗红、蓝色和绿色标记出来主要代码// Mark 主要代码示意 // 根据 HSI 距离判断像素属性 // Sobel 边缘检测 + 噪声去除 // 多色标记不同区域图6 Mark 主要代码 / 图7 标记后情况3.4 OnTwoValue() - 二值化代码分析背景灰度值为 128，细胞灰度值为 240，边缘为 255。二值化便于轮廓提取。均值滤波的基本原理是用均值代替原图像中的各个像素值，即对待处理的当前像素点 (x, y)，选择一个模板，该模板由其近邻的若干像素组成，求模板中所有像素的均值，再把该均值赋予当前像素点 (x, y)，作为处理后图像在该点上的灰度 g(x, y)，即 g(x, y) = 1/m ∑f(x, y)；m 为该模板中包含当前像素在内的像素总个数。状态标记说明标记值含义0x7Xedge 边界（表示边界没 Mark，存在为四边）0x8XMark -- not edge（是细胞）0xfXMark -- edge0xX1visited（已访问）0x2CENTERED（中心点）m_vCenterPoints.at(j) —— 存储最后中心点的地方主要代码// 二值化主要代码示意 // 灰度阈值分割 + 均值滤波 // 状态标记管理图8 二值化主要代码 / 图9 二值化现象3.5 OnFillHoles() - 填洞代码分析在阈值处理时，如果像素在阈值范围内，则像素将被标志。孔洞填充将先统计所有连通的非标志区域面积，总会有一个或者几个面积特别大的区域，其它的都是面积相对较小的区域。较小或者很小的往往就是系统所要填充的孔洞了。填洞方法：用栈（stack）、向量（vector）处理从四个方向遍历，没访问过的黑点进栈，直到边和走完之后读值到 xt, yt 并去值，v 放的是点的位置没有碰到边界和小于 100，则填洞，即令洞的各点值为 Mark 值将细胞中灰度值为 128 的部分的灰度值设置为 2404填完细胞中的洞（即为 0 的值）后，处理非 Mark 的边界值（目的是打开边缘），设为 0。主要代码// 填洞主要代码示意 // stack + vector 获取孔洞坐标 // 连通区域面积统计 // 小区域填充为 Mark 值图10 填洞主要代码 / 图11 填洞现象3.6 shrink() - 收缩代码分析收缩的目的是为了方便计数。扫描图像，对图像进行预先的 3 次腐蚀，判断所生成边界点，然后根据原理判定是否标注该点，存放所标志的中心点，便于统计细胞个数及计算细胞半径。算法：由 Mark 生成边界，我们有四邻域生成边界和八邻域生成边界判断该点是否为 Mark 点，如果是 Mark 点的话，判断 i, j 是否是我们选取图片的边界，如果是的话，将该点变成边缘点否则判断它的上下左右（周围八个点）是否有非 Mark 点，如果有，则将这边变成边缘点，反之不变最后去掉边界则完成收缩主要代码// 收缩主要代码示意 // 3次腐蚀预处理 // 4/8邻域边界生成 // 边界点判定与标记图12 收缩主要代码及现象3.7 findcenter() - 中心点获取代码分析通过判断 MARK 点上下左右四个方向或者八个方向是否有非 Mark 点，如果有的话即认为是边界，将该点加上边界标志。在收缩的过程（直到没有边界可去）中：清除所有标志点在不超过边下，没有被访问过的边缘，四个方向全是非 Mark 的话（收缩 k < 2 时）则是孤立点k >= 2，是中心点，保存 x, y, 半径还有除了边界就是背景，这也要保存（就是消失前保存）Mark(i, j)： 八个方向，没有访问过的 Mark，且是边界点，则保存SaveIT(i, j)： 这点不是中心点（相当于没有访问过）则设为中心点（并保存）；已经是中心点则去除标志，八方向寻找中心点值得注意的是我们也要去除半径不大于 2 的孤立点，因为我们认为它的半径太小，是噪声。如果是半径大于 2 的孤立点，我们对他进行标记成中心点，对半径做一点补偿（pt.radius = k + pre_shrink_count + 4，4 为补偿），然后入队。合并中心点本点是中心点，则八个方向看都不是中心点，则保存。有相连的话，多点求中心与半径（用到了 CalcCenterArea(i, j)）。CalcCenterArea(i, j)： 八方向求中心点后去除标志，循环统计。半径取最大，而 x, y 则是取平均。去除多余圆或者错误圆相近圆： 圆心距离小于 10，则取半径小的中心点为中心点，取半径最大值 + 2去除潜在的错误： 即半径小于 9 的去掉。但四个方向，边部补偿，防止边部的细胞被去除多圆相交时，不相交部分小于则去除：首先，相交部分先取出来保存之后，单个圆内的交上了被标志（画一个方框然后统计之内的点数）之后单个圆不相交的进行统计不相交的占 50% 以下则清除本圆主要代码// 中心点获取主要代码示意 // 递归算法判别局部边缘 // 孤立点过滤与半径补偿 // 中心点合并与错误圆剔除图13 中心点获取主要代码及现象3.8 count() - 统计代码分析首先图像重新打开，然后获取细胞内部的 HSI 的最大值和最小值，并且计算细胞、平均半径、平均面积等值。Count() 函数中首先调用了重载函数 reload()，将图片还原，随后将之前细胞识别所保留下来的信息（细胞个数），从 view.h 中提取信息，将细胞数、半径、面积显示在对话框中。利用前面修正的结果，在 Count 模块进行总的计数，计算出平均半径和平均面积并输出文件重新加载模块： 如果 noclick 置为 true，则进行重新加载图片图14 重新加载图片 / 图15 最终标记现象3.9 OnCellprgAll() - 按序执行全部void OnCellprgAll() { // 依次调用前面各个函数 // 实现细胞识别的所有操作步骤 }图16 OnCellprgAll()代码分析： 不难看出调用了前面各个函数可以依次实现细胞识别的所有操作步骤。四、错误情况及分析4.1 未声明全局变量信息头图17 错误案例1原因： 缺少必要的头文件包含或全局变量声明修正： 在适当位置添加全局变量声明4.2 错把指针当作 int 型图18 错误案例2修正： 应将 int m_pImage; 改为 BYTE* m_pImage;4.3 软件菜单栏突然丢失图19 错误案例3原因： 误碰软件，把菜单移出去了修正： 可以移动菜单栏使其恢复正常图20 修正错误4.4 矩形框在鼠标未按下就出现了原因： OnMouseMove 中判断条件不对修正： 检查鼠标按下状态标志位的逻辑判断五、总结本项目基于 VS2019 MFC 平台，利用图像处理技术实现了细胞识别程序。主要技术路线包括：HSI 色彩空间转换 —— 分离亮度与色度，保持色彩无失真处理Sobel 边缘检测 + 噪声过滤 —— 提取细胞边界二值化与形态学处理 —— 填洞、腐蚀收缩，简化细胞轮廓递归中心点检测 —— 通过迭代收缩获取细胞中心后处理优化 —— 去除噪声点、合并相近圆、剔除错误检测统计输出 —— 细胞个数、平均半径、平均面积参考文献1-2 ↩ 朱会平, 陈志远. 基于细胞显微图像的数量统计应用[J]. 实验室科学, 2011, 14(05): 73-75. ↩ 蔡朋杞. 红细胞识别系统的设计与实现[D]. 电子科技大学, 2011. ↩ 赵秋影. 人体细胞识别技术研究[D]. 长春理工大学, 2007. ↩
格雷码（Gray Code）原理与应用详解-结合工程领域说明
一、什么是格雷码格雷码（Gray Code）是一种特殊的二进制编码方式，它的核心特点是相邻两个数之间只有一位二进制位发生变化。这与普通二进制码不同——比如二进制中 3011011011 到 4100100100 有三位同时翻转，而格雷码中相邻数永远只变一位。二、为什么需要格雷码普通二进制在数值递增时，多位可能同时翻转，这在硬件世界中会引入一个严重问题：亚稳态和毛刺（Glitch）。举个例子：• 二进制从 0111 777 变到 1000 888• 4位同时翻转，由于电路延迟差异，实际可能短暂出现 0101、0010 等错误中间态• 如果此时被采样，就会读到完全错误的数据格雷码从根本上避免了这个问题——任何时候只有1位变化，不存在中间错误态。三、格雷码的主要应用场景应用场景 为什么用格雷码四、格雷码 vs 二进制 对照表（3位）五、FPGA中最经典的用法：异步FIFO// 二进制计数器 → 格雷码转换 → 跨时钟域传输 module gray_code_converter #( parameter WIDTH = 8 )( input WIDTH−1:0WIDTH-1:0WIDTH−1:0 bin, // 二进制计数器值 output WIDTH−1:0WIDTH-1:0WIDTH−1:0 gray // 格雷码输出 ); // 转换公式：gray = bin ^ bin>>1bin >> 1bin>>1 assign gray = bin ^ bin>>1bin >> 1bin>>1; endmodule为什么FIFO指针必须用格雷码？• 写时钟域的写指针要传到读时钟域进行比较• 如果用二进制，多位同时变化 → 跨时钟域采样可能抓到错误值 → 空满判断出错 → 数据丢失或覆盖• 格雷码每次只变1位 → 即使采样时机不对，最多差1个地址 → 不会误判空满状态六、格雷码 ↔ 二进制 转换公式【二进制 → 格雷码】 G(n) = B(n) ^ B(n+1) // 最高位不变，其余位与高位异或 // 或简写： gray = bin ^ (bin >> 1) 【格雷码 → 二进制】 B(n) = G(n) ^ B(n+1) // 从最高位开始，逐位异或恢复 // 或递推： bin[MSB] = gray[MSB] bin[i] = gray[i] ^ bin[i+1] 七、一句话总结格雷码不是为了"计算"方便，而是为了"变化安全"——在硬件世界中，让每一次状态切换都干净、无歧义、无毛刺。这是数字电路从"理论正确"走向"工程可靠"的关键一步，也是FPGA/嵌入式设计中跨时钟域、机械编码器等场景的标准做法。
信号编码系统包括信源编码和信道编码两大类，器作用是把要传输的信息尽可能的与传输信道相匹配，并提供对信息的某种保护以防止信息受到干扰。信源编码与信源译码的目的是提高信息传输的有效性以及完成模数转换等；信道编码与信道译码的目的是增强信号的抗干扰能力，提高传输的可靠性。常见的编码方法如下图：RFID系统常用编码方法：反向不归零（NRZ）编码曼彻斯特（Manchester）编码单极性归零（RZ）编码差动双相（DBP）编码密勒（Miller）编码和差动编码1、反向不归零编码（NRZ，Non Return Zero）反向不归零编码用高电平表示二进制“1”，低电平表示二进制“0”，如下图所示：此码型不宜传输，有以下原因有直流，一般信道难于传输零频附近的频率分量；接收端判决门限与信号功率有关，不方便使用；不能直接用来提取位同步信号，因为NRZ中不含有位同步信号频率成分；要求传输线有一根接地。注：ISO14443 TYPE B协议中电子标签和阅读器传递数据时均采用NRZ2、曼彻斯特编码（Manchester）曼彻斯特编码也被称为分相编码（Split-Phase Coding）。某比特位的值是由该比特长度内半个比特周期时电平的变化（上升或下降）来表示的，在半个比特周期时的负跳变表示二进制“1”，半个比特周期时的正跳变表示二进制“0”，如下图所示：曼彻斯特编码的特点曼彻斯特编码在采用负载波的负载调制或者反向散射调制时，通常用于从电子标签到读写器的数据传输，因为这有利于发现数据传输的错误。这是因为在比特长度内，“没有变化”的状态是不允许的。当多个标签同时发送的数据位有不同值时，则接收的上升边和下降边互相抵消，导致在整个比特长度内是不间断的负载波信号，由于该状态不允许，所以读写器利用该错误就可以判定碰撞发生的具体位置。曼彻斯特编码由于跳变都发生在每一个码元中间，接收端可以方便地利用它作为同步时钟。注：ISO14443 TYPE A协议中电子标签向阅读器传递数据时采用曼彻斯特编码。ISO18000-6 TYPE B 读写器向电子标签传递数据时采用的是曼彻斯特编码3、单极性归零编码（Unipolar RZ）当发码1时发出正电流，但正电流持续的时间短于一个码元的时间宽度，即发出一个窄脉冲当发码0时，完全不发送电流单极性归零编码可用来提取位同步信号。4、差动双相编码（DBP）差动双相编码在半个比特周期中的任意的边沿表示二进制“0”，而没有边沿就是二进制“1”，如下图所示。此外在每个比特周期开始时，电平都要反相。因此，对于接收器来说，位节拍比较容易重建。5、密勒编码（Miller）密勒编码在半个比特周期内的任意边沿表示二进制“1”，而经过下一个比特周期中不变的电平表示二进制“0”。一连串的比特周期开始时产生电平交变，如下图所示，因此，对于接收器来说，位节拍也比较容易重建。6、修正密勒码编码7、脉冲-间歇编码对于脉冲—间歇编码来说，在下一脉冲前的暂停持续时间t表示二进制“1”，而下一脉冲前的暂停持续时间2t则表示二进制“0”，如下图所示。这种编码方法在电感耦合的射频系统中用于从读写器到电子标签的数据传输，由于脉冲转换时间很短，所以就可以在数据传输过程中保证从读写器的高频场中连续给射频标签供给能量。8、脉冲位置编码（PPM，Pulse Position Modulation）脉冲位置编码与上述的脉冲间歇编码类似，不同的是，在脉冲位置编码中，每个数据比特的宽度是一致的。其中，脉冲在第一个时间段表示“00”，第二个时间段表示“01”， 第三个时间段表示“10”， 第四个时间段表示“11”， 如图所示注：ISO15693协议中，数据编码采用PPM9、FM0编码FM0（即Bi-Phase Space）编码的全称为双相间隔码编码、工作原理是在一个位窗内采用电平变化来表示逻辑。如果电平从位窗的起始处翻转，则表示逻辑“1”。如果电平除了在位窗的起始处翻转，还在位窗中间翻转则表示逻辑“0”。注：ISO18000-6 typeA 由标签向阅读器的数据发送采用FM0编码10、PIE编码PIE（Pulse interval encoding）编码的全称为脉冲宽度编码，原理是通过定义脉冲下降沿之间的不同时间宽度来表示数据。在该标准的规定中，由阅读器发往标签的数据帧由SOF（帧开始信号）、EOF（帧结束信号）、数据0和1组成。在标准中定义了一个名称为“Tari”的时间间隔，也称为基准时间间隔，该时间段为相邻两个脉冲下降沿的时间宽度，持续为25μs。注：ISO18000-6 typeA 由阅读器向标签的数据发送采用PIE编码=============================================注：选择编码方法的考虑因素编码方式的选择要考虑电子标签能量的来源在REID系统中使用的电子标签常常是无源的，而无源标签需要在读写器的通信过程中获得自身的能量供应。为了保证系统的正常工作，信道编码方式必须保证不能中断读写器对电子标签的能量供应。在RFID系统中，当电子标签是无源标签时，经常要求基带编码在每两个相邻数据位元间具有跳变的特点，这种相邻数据间有跳变的码，不仅可以保证在连续出现“0”时对电子标签的能量供应，而且便于电子标签从接收到的码中提取时钟信息。编码方式的选择要考虑电子标签的检错的能力出于保障系统可靠工作的需要，还必须在编码中提供数据一级的校验保护，编码方式应该提供这种功能。可以根据码型的变化来判断是否发生误码或有电子标签冲突发生。在实际的数据传输中，由于信道中干扰的存在，数据必然会在传输过程中发生错误，这时要求信道编码能够提供一定程度的检测错误的能力。曼彻斯特编码、差动双向编码、单极性归零编码具有较强的编码检错能力。编码方式的选择要考虑电子标签时钟的提取在电子标签芯片中，一般不会有时钟电路，电子标签芯片一般需要在读写器发来的码流中提取时钟。曼彻斯特编码、密勒编码、差动双向编码容易使电子标签提取时钟。
后向散射通信技术，是在天线对信号散射的基础上，采用标签后向散射的方式，通过改变发射端标签的反射系数来实现后向散射通信。无线电波在传输过程中，当通过不同介质时，因为介质阻抗的差异性，会产生反射作用，根据介质材料和阻抗的不同，会产生不同的反射量。因此通过调节天线端口的阻抗匹配度，入射的无线电波就可以产生不同反射量，导致入射信号和反射信号的差异性，也就是反射系数 Γ 。具体表示如下：$$\Gamma=\frac{Z_L-Z_0}{Z_L+Z_0}$$式中 Z0表示天线端的特征阻抗，一般是 50 Ω，ZL表示标签端口的输入阻抗，Γ表示入射信号振幅和反射信号振幅的复数比。当Γ=0 时，阻抗匹配，入射信号全部传递，无反射信号的产生；Γ = 1时，标签端的输入阻抗为开路，阻抗失配，入射信号被全部反射，产生幅值相同相位相同的反射信号；Γ = −1时，标签端的输入阻抗为短路状态，阻抗失配，入射信号被全部反射，产生幅值相同相位相反的反射信号。因此，通过改变标签的输入阻抗，产生不同的反射系数，就可以控制无线电波的入射和反射，实现有效信号的传递，这也就是后向散射通信的基本原理。为了实现上述后向散射通信，还需要加载天线端口的控制，结构如下图。通过射频开关来控制两个不同的负载阻抗与天线端口的连接，实现阻抗的匹配和失调，完成信号的入射和反射。当开关在负载 Z1和 Z2间转化时，由于负载阻抗的不同，载波信号在天线端的反射比例也不同，因此就产生了不同的调制载波。在实际通信中，为了达到最优传输质量，通常要使反射信号的差异最大，对应完全反射和完全吸收两种形式。对调制后的反射信号进行解调处理后，就可以得到所传递的基带信号，完成后向散射的通信。采用负载 50 Ω 的完全吸收和负载短路的完全反射两种信号传输差异，来实现后向散射的信息传输。使用后向散射开关 ADG 902 来实现基带信号对天线状态的控制，ADG 902 电路结构如图 4.12 所示。将数字基带信号的接入 ADG 902 的 CTRL 端，通过数字基带信号的“0”、“1”来控制 ADG 902 的关断和闭合，RF2 端连接射频天线。通过 ADG 902 中开关的关断，来控制天线对外界调制载波的反射和吸收。{message type="success" content="注意：RF1接天线，RF2接地也可以，这里读者可自行证明"/}当逻辑电平 CTRL=0时，S1关断，S2闭合，此时天线接收端口接地，由式可得，Z=0，T=1，载波信号被完全反射；当逻辑电平 CTRL=1 时，S1 闭合，S2 关断，此时天线接收端匹配，载波被完全吸收。
FPGA&Matlab联合开发之滤波器模块（带通滤波器为例）
在通信或者信号处理中，数字滤波器是非常重要的模块，前面有关博文中提到FIR滤波器的一步步Verilog设计，如https://ee.ac.cn/index.php/archives/511.html本文以带通滤波器为例，利用Matlab进行高效开发{mtitle title="目录"/}MATLAB生成低通滤波器设计步骤：Modelsim仿真上述文件MATLAB生成低通滤波器设计步骤：（1）在MATLAB命令窗口中输入“filterDesigner”或“fdatool”出现如下对话框设置FIR滤波器为和需要的阶数滤波器，选择窗函数的类型为海明窗函数，海明窗函数可以得到旁瓣更小的效果，能量更加集中在主瓣中设置带通滤波器的上下截至频率分别为4MHz 和 5MHz（2）量化输入输出，点击工作栏左边的量化选项，即“set quantization parameters”选项，选择定点，设置输入字长为8，其他选择默认，如下图示：（3）根据自己需求，细化一些配置。这里不难探索设置完成后，点击Targets中Generate HDL，选择生成Verilog 代码，设置路径，MATLAB即可生成设计好的滤波器Verilog HDL 代码以及测试文件：（4）根据需求，配置输出.v文件的全局信号、测试文件，点击生成，生成后，Matlab主页面会提示.v生成的文件路径Modelsim仿真上述文件可以看到输入信号在4MHZ~5MHZ备保留，设计无误。需要注意一点，一般Modelsim仿真输出波形都是离散的01信号，这里需要配置一下，在上图被选中的信号中，在左侧右键鼠标。右击,format,analog(automatic);右击,radix,decimal;这两个步骤完成之后，就出现上图模拟信号的效果
{mtitle title="目录"/}前言波束赋形分类阵列天线混合波束赋形总结参考文献：前言在MIMO系统中，波束赋形技术通过调整每个天线阵元上的信号进行加权求和，使天线波束指向某个特定的方向，即将天线能量集中指向某个特定的用户。波束赋形分类根据波束赋形发生位置的不同，波束赋形技术分为模拟波束赋形(AnalogBeamforming, ABF)技术和数字波束赋形(Digital Beamforming, DBF)技术。在数字基带之前即时域范围内形成波束，称作数字波束赋形;在模拟基带之前即频域范围内形成波束，称作模拟波束赋形。数字波束赋形结构中，每根天线对应的一条射频(RF)链路，产生波束时多条RF链路共同参与，因此可以实现多个数据流共同传输。数字波束赋形使用复杂的硬件结构，可以灵活的调整相位和幅度，产生准确的波束。对于天线数量众多时，导致整个结构的硬件实现非常复杂，成本很高。模拟波束赋形技术使用成本比较低的模拟移相器，只能调整相位而不能调整幅度,产生波束不一定准确。模拟波束赋形，具有简单的硬件结构，实现成本低，没有多条RF链路，只能传输单数据流阵列天线阵列天线实现功能是对多列电磁波进行叠加，不同天线位置会产生不同的电磁波辐射，因此，波束赋形技术与天线位置和摆放有密切关系。阵列天线包括线阵天线和面阵天线两种线阵天线是指所有天线阵元分布在一条直线上，或者所有天线阵元分布在一个圆周上，阵元与阵元的间隔可以是等距的或不等距的;面阵天线是指所有天线阵元以某个点为中心分布在一个矩形面上，或者所有天线阵元分布在一个圆面上，同样，阵元与阵元的间隔可以是等距的或不等距的。对于F大线数量较多的情况，天线阵列可能会扩展到三维空间，也是未米人线架构设计的一个方向。混合波束赋形数字波束赋形可以产生精确的波束，但是每根天线映射一条RF链路，从硬件实现和成本考虑，该技术适用于天线数量较少的系统。对于天线数量较多的系统，可以使用实现成本较低的模拟波束赋形，可能导致波束不准确，增益效果不是很好。因此，对于大规模MIMO系统，结合两者优点，提出了一种混合波束赋形技术,希望在满足硬件条件下，使其增益尽可能达到全数字波束赋形的效果。在较小的面积内拥有大量天线单元使实现高波束成形增益变得切实可行。具有高度方向性的波束有助于抵消较高工作频率下增加的路径损耗，因为波束将功率控制在特定方向上。总结Simulink和Matlab联合仿真，能够设计并且仿真单个天线，天线阵列，MIMO波束成型系统。对于雷达、5G等方向，有着重要意义。当然，工具不仅仅只有这一个，ADS也能设计从射频波束混合系统，到天线阵列的仿真。参考文献：[1]使用Matlab进行5G开发
{mtitle title="目录"/}一、HFSS中的边界条件（Boundaries）二、HFSS中的激励方式（Excitation）三、求解类型和求解设置四、HFSS中的变量和Optimetrics模块的使用五、HFSS的数据后处理六、天线问题的数据后处理﻿# HFSS软件学习笔记一、HFSS中的边界条件（Boundaries）边界条件定义了求解区域的边界以及不同物体交界处的电磁场特性，是求解麦克斯韦方程的基础。只有在假定场矢量是单值、有界、并且沿空间连续分布的前提下，微分形式的麦克斯韦方程组才是有效的；而在求解区域的边界、不同介质的交界处和场源处，场矢量是不连续的，那么场的导数也就失去了意义。边界条件就是定义跨越不连续边界处的电磁场的特性，因此，正确地理解、定义并设置边界条件，是正确使用HFSS仿真分析电磁场场特性的前提。边界条件的类型：理想导体边界（Perfect E）电场矢量垂直于物体表面，有两种边界被自动设为理想导体边界条件： 1、任何与背景相关联的物体表面将被自动定义为理想导体边界，并命名为outer边界 2、材料设为PEC（理想电导体）的物体表面被自动定义为理想导体边界，并命名为smental理想磁边界/自然边界（Perfect H）电场矢量与物体表面相切，磁场矢量与物体表面垂直。 自然边界（Natural）：当理想导体边界和理想磁边界出现交叠时，理想磁边界也称为自然边界 注意：在理想导体边界上叠加理想磁边界将去掉理想导体边界的特性，相当于在理想导体表面开个口，允许电场穿过。有限导体边界（Finite Conductivity）有耗导体/非理性导体边界条件，电场垂直于物体表面，在电磁波的传播方向上电场会愈来愈小 用户需要设置的参数：导电率和导磁率 注意：当物体的材料设置为非理想导体（如铜、铝等金属材料）时，其表面自动定义为有限导体边界条件。辐射边界（Radiation）用于模拟开放的自由空间，模拟波辐射到空间的无限远处的情况，常用于天线问题的分析。当结构中包含辐射边界条件时，HFSS会自动计算结构的远区场。（使用Perfect H边界条件模拟开放空间时，不会计算远区场） 辐射边界条件是自由空间的近似，这种近似的准确程度取决于波的传播方向与辐射边界之间的角度，以及辐射源与边界之间的距离。辐射边界在各个方向上距离辐射体一般不小于1/4个波长。对称边界（Symmetry）模拟理想电壁或理想磁壁对称面，应用对称边界可以构造结构时仅构造一部分，减小结构的尺寸和设计的复杂性，缩短计算时间。 定义对称平面时，需要遵循以下原则： 1、对称平面必须暴露在背景中 2、对称面必须定义在平面表面上，不能定义在曲面上 3、在一个问题上最多只能定义三个正交对称面 决定对称面的类型： 1、如果电场垂直于对称面且对称，使用理想电壁对称面 2、如果磁场垂直于对称面且对称，使用理想磁壁对称面 此外使用对称边界条件需要设置阻抗乘法器： 1、理想电壁对称面将结构分为两部分时，只有一半的电压值和一半的能量被计算，由Zpu=U*U/P计算出的阻抗也只有真实值的一半，所以需要定义2倍的阻抗乘法器。 2、理想磁壁对称面将结构分为两部分时，只有一半的能量被计算，而电压保持不变，由Zpu=U*U/P计算出的阻抗是真实值的2倍，所以需要定义0.5倍的阻抗乘法器。在这里插入图片描述阻抗边界（Impedance）用于模拟已知阻抗的边界表面，如薄膜电阻表面；表面的阻抗Zs=Rs+jXs。 阻抗的计算： number of "Square"=Length(in direction of current flow)/Width Impedance per Square=Desired Lumped Impedance/number of square集总RLC边界（Lumped RLC）类似于阻抗边界条件，利用用户提供的R、L、C值计算出对应的阻抗值 与阻抗边界不同的是，集总RLC边界不需要提供以Ohms/Square为单位的电阻和电抗，而是要给出R、L和C的真实值；之后HFSS就能确定任意频率下集总RLC边界以Ohms/Square为单位的阻抗。分层阻抗边界条件（Layered Impedance）分层阻抗边界条件是用多层结构将物体表面模拟为一个阻抗表面，其效果与阻抗边界条件相同； 与阻抗边界条件不同的是，对于分层阻抗边界条件，HFSS是根据输入的分层结构数据和表面粗糙度来计算表面电阻和表面电抗的。 分层边界条件不支持快速扫频。无限地平面（Infinite Ground Plane）在设置理想导体边界、有限导体边界或阻抗边界时有"Infinite Ground Plane"复选框。 将有限大的边界表面模拟成无限大地平面的作用，设置无限大平面边界后，在后处理中会影响近区、远区辐射场的计算。 定义无限大平面时，需要满足以下条件： 1、必须暴露在背景上 2、必须定义在平面上、 3、无限大平面和对称面的总数不超过3个 4、所有无限大地平面和对称面必须相互垂直主从边界（Master and slave）简称为关联边界条件LBC，主要用于模拟平面周期性结构表面，例如阵列天线。 包括主边界条件（Master）和从边界条件（Slave），总是成对出现，且主边界表面和从边界表面的形状、大小和方向完全相同，主边界表面和从边界表面上的电场存在一定的相位差，该相位差就是周期性结构相邻单元之间存在的相位差。 定义主从边界表面时，用户需要正确设置U、V坐标系，保证主从边界表面大小和方向完全一致。理想匹配层（PML）理想匹配层，是能够完全吸收入射电磁波的假想各项异性材料边界。理想匹配层有两种典型的应用：一是用于外场问题中的自由空间截断，二是用于导波问题中的吸收负载。 对于导波的吸收负载，理想匹配层模拟导波结构均匀地延申到无穷远处。 对于自由空间截断地情况，理想匹配层地作用类似于辐射边界条件，PML表面能够完全吸收入射过来地电磁波。和辐射边界条件相比，理想匹配层因为能够完全吸收入射的电磁波，零反射，因此计算结果更精确；同时理想匹配层表面可以距离辐射体更近（差不过十分之一个波长即可），不需要像辐射边界表面一般需要距离辐射体大约四分之一个波长。二、HFSS中的激励方式（Excitation）HFSS中，激励是一种定义在三维物体表面或者二维物体上的激励源，这种激励源可以是电磁波激励、电压源或者电流源，激励端口是一种允许能量进入或流出几何结构的特殊边界条件类型。激励类型：波端口（Wave Port）默认情况下，所有三维物体和背景之间的接触面都是理想导体边界，没有能量可以进出；波端口设置在背景上，用作模型的激励源并提供一个能量进入/流出的窗口。波端口一般设置在背景平面上，不允许端口平面弯曲。 波端口模式（modes）：对于给定横截面的波导或传输线，特定频率下有一系列的解满足相应的边界条件和麦克斯韦方程组，每个解都称之为一种模式，或者说一种波形。通常，模式是根据电场和磁场沿导波系统传输方向上有无分量这一情况来命名的，假设导波系统沿z轴放置，上述分量是指z向的电场分量Ez和磁场分量Hz。 ​ 对于Ez=0、Hz=0一类的模，称之为横电磁模，即TEM模； ​ 对于Ez=0、Hz不为0一类模，称之为横电模，即TE模； ​ 对于Ez不为0、Hz=0一类的模，称之为横磁模，即TM模。 端口校准：波端口必须被校准以确保一致的结果；校准的目的有两个，确定场的方向、设置电压的积分路径。 端口平移（Deembed）：是指平移端口的位置，查看其对计算结果的影响；选中使用端口平移功能，只影响数据后处理，HFSS不会重新进行仿真计算。HFSS端口平移中正数表示参考平面向模型内部移动，负数则是向外延申。 终端线（Terminal）：对于终端驱动的求解类型，终端的S参数反映的是波端口节点电压和电流的线性叠加，通过波端口处的节点电流和电压可以计算出端口的阻抗和S参数矩阵。集总端口（Lumped Por）集总端口激励和波端口激励是HFSS中最常用的两种激励方式。 集总端口激励类似于传统的波端口，与波端口不同的是集总端口可以设置在物体模型内部，且用户需要设定端口阻抗；集总端口直接在端口处计算S参数，设定的端口阻抗即为集总端口上S参数的参考阻抗；另外集总端口不计算端口处的传播常数，因此集总端口无法进行端口平移操作。 集总端口激励的尺寸大小要比波端口小Floquet端口（Floquet Port）与波端口的求解方式类似，Floquet端口求解的反射和传输系数能够以S参数的形式显示。使用Floquet端口激励并结合周期性边界，能够像传统波导端口激励一样轻松的分析周期型结构的电磁特性，从而避免了场求解器复杂的后处理过程。入射波（Incident Wave）是用户设置的朝某一特定方向传播的电磁波，其等相位面与传播方向垂直；入射波照射到器件表面和器件表面的夹角称为入射角。入射波激励常用于雷达反射截面（RCS）问题的计算。 需要设置的参数有：波的传播方向（Poynting Vector）、电场的强度和方向。电压源激励（Voltage）电压源激励定义在两层导体之间的平面上，用理想电压源来表示该平面上的电场激励。 电压源激励时需要设置的参数有：电压的幅度、相位和电场的方向。 注意：电压源激励所在的平面必须远小于工作波长，且平面上的电场是恒定电场；电压源激励是理想的源，没有内阻，因此后处理时不会输出S参数。电流源激励（Current）电流源激励定义于导体表面或者导体表面的缝隙上，用理想电流源来表示该平面上激励。 电流源激励需要设定的参数有：导体表面缝隙的电流幅度、相位和方向。 注意：电流源激励所在的平面/缝隙必须小于工作波长，且平面/缝隙上的电流是恒定的；电流源激励是理想的源，没有内阻，因此后处理时不会输出S参数。磁偏置激励（Magnetic Bias）创建一个铁氧体材料时，必须通过设置磁偏置激励来定义网格的内部偏置场；该偏置场使得铁氧体中的磁性偶极子规则排列，产生一个非零的磁矩。 ​ 如果应用的偏置场时均匀的，张量坐标系可以通过旋转全局坐标系来设置 ​ 如果应用的偏置场时非均匀的，不允许旋转全局坐标来设置张量坐标系三、求解类型和求解设置1、HFSS中有三种求解类型：模式驱动求解（Driven Model）、终端驱动求解（Driven Terminal）和本征模求解（Eigenmode）​ 模式驱动求解类型：以模式为基础计算S参数，根据导波内各模式场的入射功率和反射功率来计算S参数矩阵的解。​ 终端驱动求解类型：以终端为基础计算导体传输线端口的S参数；此时，根据传输线终端的电压和电流来计算S参数矩阵的解。​ 本征模式求解类型：本征模式求解器主要用于谐振问题的设计与分析，可以用于计算谐振结构的谐振频率和谐振频率处对应的场，也可以用于计算谐振腔体的无载Q值。应用本征模式求解时注意： 不需要设置激励方式 不能定义辐射边界条件 不能进行扫频分析 不能包含铁氧体材料 只有场解结果，没有S参数求解结果2、自适应网格剖分：在分析对象内部搜索误差最大的区域并进行网格的细化，每次网格细化过程中网格增加百分比由用户事先设置，完成一次细化过程后，重新计算并搜索误差最大的区域，然后判断误差是否满足设置的收敛条件。如果满足收敛条件，则完成网格剖分；如果不满足收敛条件，继续下一次网格细化过程，直到满足收敛条件或者达到设置的最大迭代次数为止。3、求解频率（网格自适应剖分频率）的选择HFSS计算时自适应网格剖分是在用户设定的单一频点上进行的，网格剖分完成后，同一个求解设置项下其他频点的求解都是基于前面设定频点上所完成的网格划分。自适应频率设置越高，网格剖分就越细，网格个数就越多，计算结果也相应地更加准确，但同时计算过程中所占用地计算机内存也就越高，计算所花费地时间也越长。下面给出几个常用问题类别的自适应频率的选择：点频或窄带问题：对于点频或者窄带问题，自适应网格剖分直接选择工作频率。宽带问题：对于宽带问题，应该选择最高频率作为自适应网格剖分频率。滤波器问题：对于滤波器问题，由于阻带内电场只存在于断口处，所以自适应频率选择在通带内的高频段。快速扫频问题：对于快速扫频问题，典型的做法就是选择中心频率作为自适应频率。高速数字信号：对于高速数字信号完整性分析问题，需要借助转折频率（Knee Frequency）来决定自适应网格剖分频率4、扫频分析离散扫频（Discrete）：是在频带内的指定频点处计算S参数和场解。例如，指定频带范围为1~2GHz、步长为0.25GHz，则会计算在1GHz、1.25GHz、1.5GHz、1.75GHz、2GHz频点处的S参数和场解。默认情况下，使用离散扫频只保存最后计算频率点的场解。如果希望保存指定的所有频率点的场解，需要选中设置对话框中Save Fields复选框。快速扫频（Fast）：采用ALPS算法，在很宽的频带范围内搜寻处传输函数的全部零、极点。快速扫频适用于谐振问题和高Q值问题的分析，可以得到场在谐振点附近行为的精确描述。使用快速扫频，一般选择频带中心频率作为自适应网格剖分频率进行网格剖分，计算出该频点的S参数和场分布，然后使用基于ALPS算法的求解器从中心频率处的S参数解和场解来外推整个频带范围的S参数和场解。使用快速扫频，计算时只会求解中心频点处的场解，但在数据后处理时整个扫频范围内的任意频点的场都可以显示。插值扫频（Interpolating）：插值扫频使用二分法来计算整个频段内的S参数和场解。使用插值扫频，HFSS自适应选择场解的频率点，并计算相邻两个频点之间的解的误差，找出最大误差，当两点之间的最大误差达到指定的误差收敛标准或者达到了设定的最大频点数目后，扫描完成；其他频率点上的S参数和场解由内插给出。四、HFSS中的变量和Optimetrics模块的使用HFSS不仅能够提供常规的电磁分析，还能够提供优化分析、参数扫描分析、灵敏度分析和统计分析等功能。这些功能都集中在HFSS中的Optimetrics模块中。要使用Optimetrics模块的这些分析和设计功能。首先需要定义和添加相关变量。1、HFSS中变量的定义和使用（1）HFSS中有两种类型的变量：工程变量（Project Variables）和设计变量/本地变量（Local Variables）工程变量和设计变量的区别：工程变量前面有一个"$"前缀，以和本地变量区分工程变量作用区间是整个Project，本地变量作用区间是所在的Design物体模型尺寸、物体的材料属性（工程变量）等都可以使用变量来表示。（2）变量的定义变量名：可以由数字、字母或下划线组成。每个变量在定义时都必须赋一个初始值，变量值可以是数值、数学表达式或者数学函数，也可以是数组、矩阵或者行列式。添加/删除变量：工程变量和设计变量操作不同添加和删除工程变量：Project > Project Variables 或者 [Project Tree] Project > Project Variables 打开 Project Properties 对话框添加和删除设计变量：HFSS > Design Properties 或者 [Project Tree] Design > Design Properties 打开 Design Properties 对话框在设计过程中，也可以直接输入未定义的变量代替设计参数，输入未定义的变量后，HFSS会自动弹出添加变量的对话框2、Optimetrics模块的功能介绍Optimetrics是集成在HFSS中的优化设计模块，该模块通过自动分析设计参数的变化对求解结果的影响，HFSS中Optimetrics模块能够提供如下分析设计功能：参数扫描分析（Parametric）参数扫描分析功能可以用来分析物体的性能随着指定变量的变化而变化的关系，在优化设计之前一般使用参数扫描分析功能来确定被优化变量的合理变化区间参数扫描分析步骤：首先需要定义变量并添加求解设置项HFSS > Optimetrices > Add Parametric...弹出 Setup Sweep Analysis 对话框，添加扫描变量或选中Project Manager 中的 Optimetrics，单击右键 Add > Parametric，弹出 Setup Sweep Analysis 对话框，添加扫描变量设置好扫面变量后，点击”Analyze“就可以进行参数扫描分析查看分析结果优化设计（Optimization）优化设计是HFSS软件结合Optimetrics模块根据特定的优化算法在所有可能的设计变化中寻找出一个满足设计要求的值的过程优化设计的过程：首先需要明确设计要求或设计目标然后用户根据设计要求创建初始结构模型（Nominal Design）、定义设计变量并构造目标函数最后指定优化算法进行优化。在这里插入图片描述调谐分析（Tuning）调谐分析功能是改变变量值的同时实时显示对求解结果的影响程度HFSS中的调谐分析功能是用户在手动改变变量值得同时能实时显示求解结果在这里插入图片描述灵敏度分析（Sensitivity）灵敏度定义为电磁特性/求解结果的变化与电路参数的变化的比值，使用HFSS进行电磁分析时S参数是很常用的一个分析结果。灵敏度分析功能是用来分析设计参数的微小变化对求解结果的影响程度统计分析（Statistical）统计分析功能是利用统计学的观点来研究设计参数容差对求解结果的影响，常用的方法是蒙特卡洛法在这里插入图片描述五、HFSS的数据后处理使用HFSS进行电磁问题的求解分析过程中以及完成求解分析之后，利用数据后处理功能能够直观地给出问题地各种求解信息和求解结果。1、求解信息数据（Solution Data）HFSS > Results > Solution Data 命令，或者右键单机工程树Results节点，从弹出菜单中选择Solution Data命令，可以打开求解信息对话框，显示各种求解信息。2、Results数值结果（1）显示方式HFSS后处理模块能够以多种方式来显示分析数值结果，这些数值结果地显示方式包括：（右击Results > Create Model Solution Data Report）Rectangular Plot：直角坐标图形显示Rectangular Stacked PlotPolar Plot：极坐标图像显示Data Table：数据列表显示Smith Chart： 史密斯圆图显示3D Rectangular Plot：三维直角坐标3D Polar Plot：三维球坐标图形显示Radiation Pattern：辐射方向图（2）参数类型模式驱动求解：Output Variables：用户自定义的输出变量S Parameter：散射参数Y Parameter：导纳参数Z Parameter：阻抗参数VSWR：电压驻波比Gamma：传播常数Port Zo：端口特征阻抗Active S ParameterActive Y ParameterActive Z ParameterActive VSWR终端驱动求解：Output Variables：用户自定义的输出变量S Parameter：散射参数Y Parameter：导纳参数Z Parameter：阻抗参数VSWR：电压驻波比Power：功率Voltage Transform matrix：电压传输矩阵Terminal Port Zo：端口特征阻抗Active S ParameterActive Y ParameterActive Z ParameterActive VSWR（3）输出变量右键单击工程树下的Result节点，从弹出菜单中选择Output Variables命令，便可打开输出变量的定义对话框3、Field Overlays场分布图在HFSS求解完成之后可以通过右击 Field Overlays 来查看电场、磁场、电流密度、坡印廷矢量等场分布图。（1）电场EMag_E：电场幅度瞬时值ComplexMag_E：电场幅度有效值Vector_E：电场矢量（2）磁场HMag_H：磁场幅度瞬时值ComplexMag_H：磁场幅度有效值Vector_H：磁场矢量（3）电流密度JMag_Jvol：体电流密度瞬时值ComplexMag_Jvol：体电流密度有效值Vector_Jvol：体电流密度矢量Mag_Jsurf：面电流密度瞬时值ComplexMag_Jsurf：面电流密度有效值Vector_Jsurf：面电流密度矢量（4）其他Vector_RealPoynting：坡印廷矢量Local\_SAR和Average\_SAR：局部SAR值和平均SAR值六、天线问题的数据后处理1、天线方向图创建天线的方向图：Results > Create Model Solution Data Report > 3D Polar Plot天线的辐射场在固定距离上随球坐标系的角坐标 θ 、φ 分布的图形被称为辐射方向图，简称方向图。方向图通常在远区场确定。用辐射场强表示的方向图称为场强方向图，用辐射功率密度表示的方向图称为功率方向图。2、天线性能参数右击Radiation，创建好查看天线性能参数：右击天线辐射方向图 > Compute Antenna ParametersIncident Power：输入功率HFSS中输入功率是指定义的端口激励功率Acceptable Power：净输入功率净输入功率是指世纪流入天线端口的输入功率，如果分别使用 Pacc 和 Pinc 表示净输入功率和输入功率，对于只有一个传输模式的单端口天线，有： Radiated Power：辐射功率辐射功率是指经由天线辐射到自由空间里的电磁能量，天线的辐射功率可以用坡印廷矢量的曲面积分来计算： Radiation Efficiency：辐射效率辐射效率是辐射功率和净输入功率的比值 Max U：最大辐射强度辐射强度U是指每单位立体角内天线辐射出的功率，Max U是辐射强度的最大值 η 自由空间中的波阻抗为 377Ω，r 为远区场点与天线之间的距离Peak Directivity：方向性系数天线的方向性系数是指在相同的辐射功率和相同的距离的情况下，天线在最大辐射方向上的辐射功率密度与无方向性天线在该方向上的辐射功率密度的比值Peak Gain：天线增益天线增益是指在相同的净输入功率和相同距离的情况下，天线在最大辐射方向上的辐射功率密度与无方向性天线在该方向上的辐射功率密度的比值Peak Realized Gain：最大实际增益天线的最大实际增益是指在相同的输入功率和相同距离的情况下，天线在最大辐射方向上的辐射功率密度与无方向性天线在该方向上的辐射功率密度的比值Front to back Ration：前后向比又称为轴比（Axis Ratio），指方向图中前后瓣的最大比值，代表天线的极化程度3、天线阵的处理由相同的天线单元构成的天线阵的方向图等于单个天线单元的方向图与阵因子的乘积。其中，阵因子取决于天线单元之间的振幅、相位差和相对位置，与天线的类型、尺寸无关。在HFSS中，可以定义天线阵元排列结构和激励方式，然后通过仿真分析分析单个天线单元的方向图等天线参数和阵因子来仿真分析整个天线阵列的方向图等天线参数。HFSS支持两种天线阵列类型：规则排列的均匀天线阵列（Regular Uniform Array）和用户自定义排列（Custom Array）。其中用户自定义阵列：允许用户使用文本文件自定义阵因子信息，然后导入到HFSS软件中，HFSS计算得到阵因子。用户自定义阵列允许更大的灵活性，可以构造天线阵元在空间任意分布的天线阵列。
第三章 辐射积分与辅助函数求解辐射场的分析中，通常需要构造辅助函数来帮助求解。常见的辅助位函数为，磁矢量A- (也称为磁矢位)。远场辐射很多天线的辐射场使用球面坐标来表示会较为方便，其一般形式是重要公式线形天线 Linear Wire Antenna线形天线是最古老、最便宜、最简单、应用最广泛的天线。因此我们尝试从最小的天线结构和最简单的几何形状开始分析。我们以极小偶极子的辐射场特性为例，讲解辐射场的一般求解过程。极小偶极子 Infinitesimal Dipole极小偶极子对应于导线很短,很细，电流近似均匀分布的情况。求解辐射场这样我们就得到了极小偶极子的辐射电场和磁场。以上的分析在源以外的区域都是有效的。功率密度和辐射电阻利用前面计算的结果和坡印廷矢量的计算公式辐射场分布前面所推导的极小偶极子的电磁场的分布 在源以外的区域都是适用的，但在不同的区域，场的一些特性可能有所区别。近场 kr <<1中场 kr>1远场 kr>>1在远场时，径向的电场几乎为0。能流密度垂直于径向，以辐射波为主。从近场到远场的过渡动画： 动画方向性一般远场辐射特性的求解过程前面我们以极小偶极子为例，求解了极小偶极子的辐射特性。一般远场辐射特性的计算过程如下：指定电流或者磁流密度确定辅助场A确定远场的E和H计算(a)能流密度或(b)辐射强度计算辐射功率计算极化计算归一化的功率图计算辐射电阻和输入电阻有限长度偶极子极小偶极子是一种将电流分割成无数小电流源的近似，实际情况中，需要求解的往往是有限长度的偶极子。我们假设电流在导线上的分布是正弦形式的，电流密度可以写成：辐射电阻根据前面辐射功率和辐射电阻的关系，可以得到辐射电抗输入电阻输入端看到的电阻与天线的辐射电阻未必是相同的。因为导线上的电流分布发生了变化。半波偶极子辐射阻抗辐射电阻：
天线作为无线电通信的桥梁，是实现无线通信的关键。随着无线通信技术和电子技术的发展，日常生活中的无线电子产品变得越来越小，越来越薄，越来越轻，而功能变得越来越强大。天线的小型化跟不上电子设备小型化的步伐，经常成为无线电子产品体积缩小的瓶颈。理论上讲，天线的工作波长与天线尺寸成正比。换句话说，要想降低天线的工作频率就要增大天线的尺寸，这就使得天线的小型化成为了研究的难点，实现微带天线小型化设计的主要手段有:1)提高介质基板的介电常数;2)曲流技术;3)短路加载技术;4)附加有源网络;5)应用用电磁带隙结构;6)应用左手介质;{mtitle title="目录"/}1、提高介质基板的介电常数曲流技术贴片表面开槽接地板开槽短路加载技术附加有源网络应用用电磁带隙结构应用左手介质1、提高介质基板的介电常数曲流技术我们知道增加天线的有效长度可以降低天线的谐振频率。曲流技术就是我们常说的表面开槽技术，它的实质就是增加了天线的有效长度，从而达到天线小型化的目的。贴片表面开槽图(3-1)为表面开槽后的辐射贴片电流路径分布。从图中我们可以看出辐射贴片的电流路径在开槽处发生弯曲，有效地延长了电流路径，相当于天线的有效长度变大了。从而在不改变天线几何尺寸的情况下，降低了天线的谐振频率。微带天线的辐射贴片表面上，各个共振模式的电流分布均不相同。如果在相同的共振模式下开槽，就会改变原有的共振模式的电流路径，延长电流路径,使得天线的共振波长变大。所所开凹槽的长度会影响天线的谐振频率，凹槽越长则天线的谐振频率越低。不过，所开凹槽的宽度不宜过大，太大会降低天线的辐射性能。跟采用高介质常数基底的方法一样，辐射贴片表面开槽也有其弊端。表面开槽后天线会.产生垂直于主激发面的额外电流，从而增加了天线的交叉极化，使得天线的辐射效率降低。除此之外，开槽后天线的相对辐射面积就减小了，从而影响到天线的增益。接地板开槽短路加载技术基本的矩形微带天线的为工作波长的二分之一，基本谐振模式为TM。,其电流在两个开路端之间成驻波分布。所以在两个开路端之间有--条零电位线。如果我们在此零电位线处让其接地，将微带天线的另一半舍去，就可以在开路和短路之间形成驻波分布，而不改变天线的内部场分布。这样一来天线的尺寸就减小 了一半，实现了天线小型化的目的。短路加载微带天线的方法有很多，包括短路面加载，短路片加载和短路探针加载。短路加载的数量，每个短路加载的面积以及天线的高度决定了短路加载的效果。图(3-3)分别给出了不同加载方式的示意图。图(3-3a)是短路面加载的微带天线，它的尺寸缩小到了四分之一工作波长。所以此微带天线的尺寸比半波结构的微带天线尺寸减小了一-般。图(3-3a)所示的短路片加载微带天线和图(3-3b)所示的短路探针微带天线的结构比较相似，但实际上它们加载的结构带宽不一样。附加有源网络由于天线的辐射电阻会随着天线尺寸的减小而减小，所以天线尺寸的减小会降低天线的效率。除此之外，天线的带宽也常常因为天线尺寸的减小而降低。而天线性能的恶化会影响整个无线收发系统的性能，甚至使系统无法正常工作。有源网络的放大作用和阻抗补偿技术可以用来弥补由天线尺寸减小而引起的天线性能下降的问题有源天线具有以下优点:1)频带宽;2)高增益;3)容易实现阻抗匹配;.但是有源网络会影响天线的互易性。应用用电磁带隙结构电磁带隙结构(Electromagnetic B and-Gap)是周期结构的统称，包括光子带隙(Photonic Band Gap, PB)、频率选择表面(Frequency Select Surface, FS)以 及光子晶体(photonic Crystal,PC)等周期结构。电磁波与周期结构互相作用的时候，会出现--些如频率禁带、通带以及频率间隙等特性。电磁带隙结构是微带辐射贴片的下方及周围、天线的基片内钻出或刻蚀出一系列间隔非常近的小孔(≤h/10)，通过改变孔间距和孔的大小来改变有效介电常数。EBG 是人造的周期性结构，在此种结构中，一-定范围内的电磁波无法传播。将电磁带隙结构附加在天线辐射贴片的背面，可以抑制天线的表面波，从而实现天线小型化的目的。目前，比较常见的电磁带隙结构有:1)基底打孔型;2)高阻抗表面型;3)地面腐蚀型;4)夹层式结构;5)共面紧凑型;应用左手介质如图(3-5)所示，将左手介质和右手介质相叠加，当电磁波在当中传播时，由于介质两边相位相反，左手介质会对右手介质进行相位补偿，相位变化会完全抵消。这样，由辐射贴片、右手介质、左手介质以及接地板所组成的微带天线的谐振方程不再依赖于d,和d，而只取决于d2/d,.由于传统的谐振腔谐振至少需要半个波长，而这种结构就突破了这个限制，从而很好地降低了天线的高度，实现了微带天线小型化的目的。