求解答
Decapton Wang:
先提供两种,一是基于平均功率统计,二是基于峰值检测,具体用哪种看你应用了。
1. 平均功率统计:信号链路里有ADC,则AGC的输入直接从ADC拉过来,具体拉几位看你的精度要求。对输入信号在一个比较长的时间里取平均,统计平均功率,并设定一个窗口值,当平均功率低于窗口值下限时,AGC发送指令增加PGA增益;当平均功率高于窗口值上限时,AGC发送指令降低PGA增益;当平均功率在窗口内时,认为环路稳定,不调增益。注意一下如果有多级PGA时,增益从后往前调,免得DCOC被逐级放大。
2. 峰值检测:信号链路里有ADC,则AGC的输入直接从ADC拉过来,具体拉几位看你的精度要求。在一段时间内数信号的峰值,峰值数量多了降增益,少了则升增益。同样是增益从后往前调。
信号链路没有ADC的话,就加个一到两位的比较器,把比较粗略的幅度信息取出来。
XZ:
回复 Decapton Wang:
我目前用的就是峰值检测,检测出输出峰值了以后,然后再用ADC采样后与自己设定的值比较,如果比它大,单片机就控制DAC输出直流量减小VGA的增益,如果小,就增加其增益,整体思路是这样,但是就是这个比较的程序如何写,我用单片机输出一个固定的直流量,电路工作正常,如果一变话,一比较,就出问题了,感觉程序不是按照我所想的执行,乱变
XZ:
回复 Decapton Wang:
我目前用的就是峰值检测,检测出输出峰值了以后,然后再用ADC采样后与自己设定的值比较,如果比它大,单片机就控制DAC输出直流量减小VGA的增益,如果小,就增加其增益,整体思路是这样,但是就是这个比较的程序如何写,我用单片机输出一个固定的直流量,电路工作正常,如果一变话,一比较,就出问题了,感觉程序不是按照我所想的执行,乱变
Decapton Wang:
回复 XZ:
这个正常,你看一下你的系统里除了AGC以外还有没有别的环路。我之前做的那个系统是AGC和DCOC两个环路,工作的时候如果不加控制,两个环路会打架,最后都不能稳定。查一下关键节点的电压和MCU发给PGA的数字量是怎么变化的。