电路设计中的相噪Phase Noise是取10log还是取20log呢?

最近在仿真VCO,用Cadence中的pss+pnoise对VCO的相噪进行仿真,发现noise summary和Phase Noise给出来的值不是直接能够对上的:
在这里插入图片描述
所以从nosie summary给出的噪声功率及其占比到Phase Noise之间是需要转换的。
从Phase Noise的单位dBc/Hz我们可以得到一些线索:比如我们需要知道载波频率carrier power是多少。
——还是用pss仿真可以得到不同谐波处的power值:
在这里插入图片描述
得到载波功率为 P c a r r i e r = 2.613 m W P_{carrier} = 2.613mW Pcarrier=2.613mW
根据noise summary得到噪声功率,因此 P n o i s e P c a r r i e r \frac{P_{noise}}{P_{carrier}} PcarrierPnoise可以计算了。
那么接下来陷阱要来了,你觉得此时求Phase Noise的话是该取10log呢还是该取20log呢?

Answer:看noise summary给出的单位是 V 2 / H z V^2/Hz V2/Hz,再加上计算的都是功率,是不是觉得应该取10log呢?

如果你是这样想的,那就恭喜你,落入陷阱啦!
正确的做法应该是取20log,因此这里的噪声功率和载波功率相除后就没有单位啦,当然直接取20log啦~

下面我们来验证一下:
P h a s e N o i s e = 20 × l o g ( P n o i s e ÷ P c a r r i e r ) = 20 × l o g ( 1.88573 e − 6 ÷ 2.613 e − 3 ) = − 62.833 d B c / H z Phase Noise = 20 × log (P_{noise }÷ P_{carrier}) = 20 × log (1.88573e-6 ÷ 2.613e-3) = -62.833 dBc/Hz PhaseNoise=20×log(Pnoise÷Pcarrier)=20×log(1.88573e6÷2.613e3)=62.833dBc/Hz
与图1中相噪曲线的Mark值非常接近。

所以下次不要记错了,求Phase Noise之类的指标都是用20log啦!

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
要生成一个 f(x) = f1(f2(x)) 的查找表,可以按照以下步骤进行: 1. 定义 f1 和 f2 的函数表达式。 2. 创建两个数组,分别存储 f1 和 f2 的输出值。 3. 遍历输入值 x 的范围,对于每个 x 值,先将 x 代入 f2 计算,再将计算结果代入 f1 计算,得到 f(x) 的值,并将其存储在输出数组。 4. 最后将两个数组合并成一个查找表,可以使用 OpenCV 的 LUT 函数实现。 下面是一个简单的示例代码,可以生成 f(x) = log(sqrt(x)) 的查找表: ```c++ #include <opencv2/opencv.hpp> #include <cmath> using namespace std; using namespace cv; int main() { // 定义 f1 和 f2 的函数表达式 auto f1 = [](float x) { return log(x); }; auto f2 = [](float x) { return sqrt(x); }; // 创建两个数组,存储 f1 和 f2 的输出值 const int tableSize = 256; float f1Table[tableSize]; float f2Table[tableSize]; for (int i = 0; i < tableSize; i++) { float x = i / 255.0f; f1Table[i] = f1(f2(x)); f2Table[i] = f2(x); } // 合并两个数组成为查找表 Mat lutTable(1, tableSize, CV_32F); for (int i = 0; i < tableSize; i++) { lutTable.at<float>(0, i) = f1Table[i]; } // 使用 LUT 函数对图像进行查找表变换 Mat srcImage = imread("lena.jpg", IMREAD_GRAYSCALE); Mat dstImage; LUT(srcImage, lutTable, dstImage); // 显示结果 imshow("src", srcImage); imshow("dst", dstImage); waitKey(0); return 0; } ``` 在这个示例代码,我们先定义了 f1 和 f2 的函数表达式。然后创建了两个数组,分别存储 f1 和 f2 的输出值。接着遍历了输入值 x 的范围,对于每个 x 值,先将 x 代入 f2 计算,再将计算结果代入 f1 计算,得到 f(x) 的值,并将其存储在输出数组。最后将两个数组合并成一个查找表,使用 OpenCV 的 LUT 函数对图像进行查找表变换,实现了 f(x) = log(sqrt(x)) 的变换。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值