UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

取消
显示结果 
搜索替代 
您的意思是: 
Visitor pyap123
Visitor
131 次查看
注册日期: ‎08-27-2019

有没有做过自动增益控制(Automatic Gain Control)的,能不能帮我看看这个怎么设计自动增益控制(AGC)系统

 

其实我是有点没看懂下边这个图是怎么实现自动增益控制的,尤其是在Verilog的编程中,如下图我标注的所示,可以看到,H的对power_out的输出,要几个时钟周期

才能到E,并且得到F,才能得到下一个H,可下一个H这个时候再乘power的输出的时候,下一个H是下一个,可是POWER已经过了好几个了把(我的意思是从B到E的话要比较久 ,而H却是每一个时钟周期更新和对power处理一次)。

 

我还是没能看懂这个图的深层意思和表达,所以我感觉用Verilog在vivado上实现,我举步维艰,如果你有时间,麻烦指点我一下,谢谢大家了

 

QQ图片20191002111303.png

微信截图_20191002111856.png

 

其实我自己根据理解写了一段MATLAB代码,我的Verilog实现也是根据我自己整的这个代码写的,但是FIR滤波器二分频以后,CLK的时钟,和FIR输出的有效位的那个电平(trvail)是两倍的关系,我在vivado中,对下边的代码走的时钟,只有E到F的加法器是时钟了trvail的时钟,而其他的都是用clk,问题是,CLK并不能保证在下一次trvail到达前,完成H的更新,困扰了我很久

AGC_IN_RE = abs(real(agc_in_deal));
AGC_IN_IM = abs(imag(agc_in_deal));
for n=1:length(agc_in_deal)

if(AGC_IN_RE(n)>=AGC_IN_IM(n))
L(n) = AGC_IN_RE(n) ;
S(n) = AGC_IN_IM(n);
else
L(n) = AGC_IN_IM(n) ;
S(n) = AGC_IN_RE(n);
end
power_in(n) = L(n) + 0.4 * S(n) ;
end
B=zeros(1,length(power_in));
C=zeros(1,length(power_in));
D=zeros(1,length(power_in));
E=zeros(1,length(power_in));
F=ones(1,length(power_in));
G=ones(1,length(power_in));
H=ones(1,length(power_in));
for n=2:length(power_in)
  B(n) = power_in(n) * H(n) ;
  C(n) = refer_C - B(n);
  D(n) = C(n-1);
  E(n) = Loop_gain * D(n);
  F(n) = H(n) + E(n);
  H(n+1) = F(n);
end

0 项奖励
2 条回复2
Observer colorfulstar
Observer
88 次查看
注册日期: ‎07-30-2017

回复: 有没有做过自动增益控制(Automatic Gain Control)的,能不能帮我看看这个怎么设计自动增益控制(AGC)系统

我的理解是,比如累计一段时间的,T0~T99假设是100个clk周期,那么这时候的结果是需要反馈给T0的,在T0~T99内选取这个结果。

0 项奖励
Visitor pyap123
Visitor
62 次查看
注册日期: ‎08-27-2019

回复: 有没有做过自动增益控制(Automatic Gain Control)的,能不能帮我看看这个怎么设计自动增益控制(AGC)系统

这个模块能不能写一个传递函数出来直接做呢?如果依你看的话

0 项奖励