V125-260722:(暂时发现DPD/FSSI/网页频谱显示都不正常,临时提交)1.合并增加 Web 端 FPGA .mcs 在线升级功能,支持升级进度及错误状态反馈。2.合并优化 FPGA 升级后的恢复流程,实现无需断电的 FPGA 配置、JESD 链路及 RF 热恢复。3.合并重构 ORx 功率、FSSI 和 FWD 计算;4.合并DPD相关优化和调试日志;5.合并IQ 频谱数据接收由 eth1 调整至 eth0,降低对外部网口连接状态的依赖。

This commit is contained in:
2026-07-22 17:08:03 +08:00
commit c6ab382383
1655 changed files with 516169 additions and 0 deletions
+69
View File
@@ -0,0 +1,69 @@
#include <math.h>
#include "orx_power.h"
float orx_power_combine_db(uint16 fagc_cw, uint16 rms)
{
/* 环路方向(dpd_rx_rfagc_1x.vhd:179-187): 输入升高 -> 实测高于设定点
* -> agcctrlword 递增 -> gain_index = ~cw[15:8] 递减 -> 增益降低。
* 故 cw 高字节随输入功率单调递增, 与 rms 项同向, 可直接相加。 */
if (rms == 0)
rms = 1; /* 防 log10(0) 产生 -inf */
return 0.5f * (float)((fagc_cw >> 8) & 0xff)
+ 10.0f * log10f((float)rms);
}
uint16 orx_median5(const uint16 *v)
{
uint16 a[5];
int i, j;
for (i = 0; i < 5; i++)
a[i] = v[i];
for (i = 1; i < 5; i++) { /* 插入排序, n=5 足够 */
uint16 key = a[i];
for (j = i - 1; j >= 0 && a[j] > key; j--)
a[j + 1] = a[j];
a[j + 1] = key;
}
return a[2];
}
uint8 orx_fssi_percent(float p_db, float ref_db, int is_vhf)
{
float pct = (p_db - ref_db) * 100.0f / ORX_FSSI_SPAN_DB;
int f;
if (pct < 0.0f) pct = 0.0f;
if (pct > 100.0f) pct = 100.0f;
f = (int)pct;
/* 以下两段是 EMV7 时代的显示微调, 按现状保留(见 spec 3.3)。
* 注意它们作用在线性映射之后, 会吃掉量程顶部 20%(VHF 38%),
* 故 ref_db 必须按微调后的最终显示值标定。 */
if (f > 20) f -= 20;
else f = 0;
if (is_vhf && f > 18)
f -= 18;
return (uint8)f;
}
uint8 orx_fwd_percent(float p_db, float ref_db)
{
float pct = 100.0f * powf(10.0f, (p_db - ref_db) / 10.0f);
if (pct < 0.0f) pct = 0.0f;
if (pct > 200.0f) pct = 200.0f;
return (uint8)pct;
}
uint8 orx_fssi_hysteresis(uint8 prev, uint8 now)
{
int d = (int)now - (int)prev;
if (d < 0)
d = -d;
return (d < 2) ? prev : now;
}