Johnlubao 发表于 2007-8-3 00:10

关于RF接收机前端的组件问题请教

本人在模拟一个关于RF接收机前端的组件(主要是开关电容滤波器)
这个组件的功能是可以将高频信号降频到ADC可以接收的范围


我的原始信号频率是2.4GHZ,根据paper上说的,第1步是直接采样,用4.8GHZ的LO进行采样,采样后使用半整流后的正半周期采样信号.上述完成后,采样信号以8个数值为一组,按照时间顺序,进入电容器(过程相当于FIR抽样滤波,将2.4GHZ的采样信号降低到300MHZ),接着信号通过一个IIR滤波器.当头8个采样信号存储到电容器后,从第9个采样信号开始,采样信号开始存储到第2个并行的电容器,存储过程一直持续到第16个采样信号为止.以此类推,当第4组采样信号也存储到第4个电容器,并通过IIR滤波器后(每组滤波过程都是相对独立的),由于时间的扩展,这4个并行的电容器又相当于一个FIR 抽样滤波器,将300MHZ频率降低到75MHZ.

因为对matlab一直不是很熟悉,下面的程序有些问题想请教下
dt = 0.000000000001;
tf = 0.000000001; t= 0:dt:tf;
ua= sin(2*pi*2.4e9*t-pi/2); %原始信号
T= 1/(4.8e9); %采样周期
n = 0: tf/T;
u = sin(2*pi*2.4e9*n*T-pi/2); %采样信号
for num = 1:2:tf/T
    u(num)= sin(2*pi*2.4e9*num*T-pi/2); %离散半整流采样信号(正半周期)
end
p = n/16;
for q = 1:p
    Uin(q) = ; %8个离散采样信号值
    b1 = ;a1 = ; %第1个FIR滤波器系数
    Uout(q) = filter(b1,a1,Uin(q));% FIR滤波(移动平均 Temporal moving average)
    w1(q) = downsample(Uout(q),8);   %下采样
    w(q) = 8*w1(q);                  %增益
    b2 = ; a2 = ;      %第1个IIR滤波器系数
    s(q) = filter(b2,a2,w(q));       %IIR滤波
    c(q) = (1-0.9686)*s(q);          %增益
end
    Xin =;   %采集4个输出信号            
    b3 = ; a3 = ;%第2个FIR滤波器系数
    Y = filter(b3,a3,Xin);               %FIR滤波(空间移动平均 spatial MA)


现在程序报错说Underfined function or method 'c' for input arguments of type 'double',我想请问下出错的原因,另外我对matlab实在是不太明白,不知道这个程序写的到底对不对,是不是和我所描述的过程是一样的.还请大家给看看

[ 本帖最后由 eight 于 2007-8-3 11:43 编辑 ]

Johnlubao 发表于 2007-8-3 00:24

为了更直观些,我把相应的电路图也放上来,我在1楼说的那个过程只设计DCU,和bank A以前的部分,后面的还不涉及
图里面,每个CR电容的采集过程都相当于一个FIR抽取滤波器(抽取率为8),电容CH和每个CR的组合相当于FIR抽取滤波后的IIR滤波, BANK A里的4个CR电容组合在一起就相当于第2个FIR抽取滤波器(抽取率为4)

花如月 发表于 2007-8-3 08:38

对于你的错误,是很常见的错误。本版置顶帖子里有解释,既然用到matlab就不要以对matlab不熟悉为由,连一些简单问题都不去想(谁都是由不熟悉到慢慢熟悉,然后熟悉,精通)
c(q) = (1-0.9686)*s(q);          %增益
错误一定是在这句吧,你的c是什么呢?已经提示c是未定义函数或者方法,我想楼主的英文那可是比我好多了。你的问题很专业,记得在sinmlink版区看到过一个这样的帖子(我想应该也是你发的,看样子是没有得到满意的答案了)

   建议:你的这个图(包括)在sinmlink版区发的图,我都看了是讲解电路工作原理的。matlab仿真的功能也是有限的,特别是非常专业的问题。你要弄清你问题的焦点所在(也就是你的主要目的),如果是想验证你的那个电路图是否可以完成分频的功能那么建议使用sim power system里边的模块找电路原型搭建一个抽样器出来看看。

在DCU里SV是什么器件(或门?与门?)?,不要让我们猜测。CKVD8估计是4.8G的取样脉冲吧?每个SV都有2个输入信号,另外一个干什么用呢?接成那个样子,逻辑关系是如何呢?最起码把数据从哪儿进,从哪儿出讲清楚,才能谈仿真的事情。

细化问题,把每一块描述清楚,确定你最主要的目的。如果单是进行分频直接/N就ok了。如果是对电路原理进行仿真考虑一下2种途径:(1)simpower system里的模块直接构建抽取模型(和电路图一样的仿真模型,你图中的器件模块库里都有)(2)利用系统传递函数进行仿真,你提到“每个CR电容的采集过程都相当于一个FIR抽取滤波器(抽取率为8),电容CH和每个CR的组合相当于FIR抽取滤波后的IIR滤波, BANK A里的4个CR电容组合在一起就相当于第2个FIR抽取滤波器(抽取率为4)”这个一点没错(不过也只是相当于,实质上他们都是模拟滤波器)。不管是用哪种方法,FIR和IIR抽取器都是关键,特别是在电路仿真中更麻烦些(你的是连续系统和离散混合系统)

理清思路,一步一步来,遇到问题再来讨论。建议就这么多,还是老话,提问的技巧很重要。祝你好运了

[ 本帖最后由 花如月 于 2007-8-3 08:39 编辑 ]

Johnlubao 发表于 2007-8-3 09:25

回复 #3 花如月 的帖子

谢谢斑竹的建议

你的意思是说c必须要在程序开头定义一下?这里的C就是一个符号表示,代表信号的输出,即Uin(q)-->通过第一个FIR滤波-->下采样8-->增益8-->IIR滤波--->增益输出C.如果说C必须要提前定义的话,那是不是说我前面Uout(q),w1(q),w(q),s(q)这些也要在程序开头定义一下?


关于电路图的问题,DCU实际上是一个移位寄存器,作用相当于开关电容的开关,移位寄存器的初始值是10000000,只有当SV的值是1个时候(或者说是高电平),相对应的电容器才开始工作(采集),CKVD8是300MHZ的信号,即2.4GHZ/8,作用是控制移位寄存器里数据传递的速度,保证每个SV都能有8个本振周期的高电平,让每个CR电容采集8个样本.

关于sinmlink的模型,我用的是你说的第2种方法,"利用系统传递函数进行仿真",现在同样有些问题,主要集中在DCU上,我是利用的buffer来模拟的移位寄存器,但问题是我不知道如何能让数据"1"在每个buffer之间保持一定的时间(1/300MHZ),也就是使SV上的高电平保持一定时间,让CR电容进行采集的工作.

还有斑竹说"FIR和IIR抽取器都是关键",现在这几个滤波器的传递函数我已经得出来了,相应的频率响应也没什么问题,但在系统组合上由于软件操作的不熟练,所以一直没有搭建起来

[ 本帖最后由 Johnlubao 于 2007-8-3 09:42 编辑 ]

Johnlubao 发表于 2007-8-3 09:33

另外关于这个电路的实际表现,因为这个结构是2004年美国TI提出来的,手里的paper也都是05/06年的,作用就是降频,用来取代以前接收机的mixer,所以电路功能性可以不用质疑,我现在要做的就是整个这个系统的仿真.

[ 本帖最后由 Johnlubao 于 2007-8-3 09:40 编辑 ]

花如月 发表于 2007-8-3 09:55

算是明白了一二。
第一问题:仔细看了一下程序本身没有语法错误,之所以报错未定义是因为第二个循环没有采集到任何点(相当于空循环),根本没有被运行,所以里边的赋值语句都不起作用的Uout(q),w1(q),w(q),s(q)这些也都是未定义的。第一for循环也只采集了3个点,基本没什么信号可言了。

关于移位寄存器的问题,似乎里边有现成的模块。找本matlab数字电路仿真方面的书看一下就行了,我以前看到过
页: [1]
查看完整版本: 关于RF接收机前端的组件问题请教