分享
 
 
 

RFAD

王朝百科·作者佚名  2011-06-10
窄屏简体版  字體: |||超大  

RFAD(射频A/D控制信息定时发送器)。1. 引言RFAD是射频控制信息A/D转换模块中的一个重要组成部分,其用于产生需要定时的射频控制信号,如:AD_ON,DA_ON,通过选择两个SPI接口RF_SPI和AD_SPI把控制信号定时地发送到射频控制模块中的其他相应模块中,如:FIR模块[1]。该模块在整个射频控制中有着非常重要的作用,本文将详细阐述其基本功能和设计原理。如图1-1介绍了RFAD的功能结构:

图1-1 RFAD 功能结构图2. 定时发送射频控制信息RFAD的主要功能是定时传输射频控制信息,在此模块中设计了两个FIFO: DATA FIFO用于存储射频控制信息, TIME FIFO用于存储时间信息。模块中将设定当系统帧计数器与TIME FIFO中对应的时间相同时,与这个时间对应的射频控制信息就应被发送出去[2] ,设计流程如下图所示:

图2-1定时发送射频控制信息设计流程图

l 设计存储射频控制信息模块

该模块的设计中将定义两个FIFO(first in first out),分别用于存储时间信息和射频控制信息。如例2-1将说明如何定义data_fifo(用于存储射频控制信息)以及如何对fifo进行读/写操作:

eg2-1:define data_fifo

module data_fifo (rst_,clk,wr_i,rd_i,wr_addr,rd_addr,fifo_data_i,fifo_data_o);

input rst_ ,clk, wr_i,rd_i;

input [4:0] wr_addr, [4:0] rd_addr;

input [11:0] fifo_data_i;

output [11:0] fifo_data_o;

reg [11:0] fifo_data_o;

// 定义12bit,深度为32的FIFO

reg [11:0] register_fifo[0:31];

//下面设计写fifo的情况

always @(posedge clk or negedge rst_)

begin

if(!rst_) //复位信号到来时,复位fifo中的每一位。

begin

register_fifo[0]<=12'b0;

end

else if(wr_i==1'b1)//写信号使能时,根据写地址,把射频控制信息写入fifo

register_fifo[wr_addr]<=fifo_data_i;

end

//下面设计读fifo的情况

always @(posedge clk or negedge rst_)

begin

if (!rst_)

fifo_data_o<=12'b0;

else if (rd_i==1'b1)

//读信号使能时,根据读地址,把射频控制信息从fifo中取出来

fifo_data_o<=register_fifo[addrd_i];

end

endmodule

l 定时发送模块设计

在上例中的fifo读/写使能信号都是由外部模块驱动的,因此需要设计一个模块用于确定何时使能读/写信号,即当time_fifo中存储的时间信息与帧计数器相同时,需使能读/写使能信号输出data_fifo存储的射频控制信息。如例2-2所示:

eg2-2:define transfer time

module time_count(rst_,clk,fifo_time,framc,read_en,fifo_read_en);

input rst_, clk;

input [15:0] fifo_time,[15:0] framc;

output read_en;//该信号使能,读地址累加

output fifo_read_en;//该信号使能,data_fifo输出射频控制信号

reg time_int;

reg[1:0] time_int_delay;

assign fifo_read_en = time_int |(time_int_delay[0]);

assgin read_en = time_int_delay[0] |(time_int_delay[1]);

//即read_en比fifo_read_en延迟一个clk使能

always @(posedge clk or negedge rst_)

begin

if(!rst_)

time_int <= 1'b0;

else if(fifo_time == framc)// 当time_fifo中存储的时间信息等于framc(帧计数器)

time_int <= 1'b1; //time_int被使能

else

time_int <= 1'b0;

end

always @(posedge clk or negedge rst_)

begin

if(!rst_)

time_int_delay[1:0] <= 2'b0;

else

time_int_delay[0] <= time_int;

time_int_delay[1] <= time_int_delay[0];

end

endmodule

l 竞争发送模块设计

当chip在 idle情况下,将有RF控制信息(此时为idle_data)需要发送,当chip唤醒后则应优先发送idle_data。若idle_data与控制信息在同一时刻发送,则存在竞争发送的情况。因此该模块限定了当idle_en与pllon信号同时拉高时,rfctrl要发送idle_data中的相应比特,从而取代fifo_data中相应比特的发送。如图2-2所示:

图2-2 RFAD 在idle情况下工作流程图

Verilog设计举例如例2-3所示:

eg2-3:transfer idle_data and fifo_data:

module idle_time(fifo_data,pllon,idle_en,idle_data,rfctrl_o);

input [5:0] fifo_data,[5:0] idle_data,[5:0]idle_en;

input pllon;

output [5:0] rfctrl_o;

reg[5:0] rfctrl_o;

always @(pllon or fifo_data or idle_data or idle_en)//组合逻辑电路

begin

if(!pllon)

rfctrl_o[5:0] = fifo_data[5:0];

else

//即当pllon拉高时且idle_en的相应bit位为1时,输出idle_data的相应bit,否则输出fifo_data的相应bit

rfctrl_o[0] = (idle_en[0])?idle_data[0]:fifo_data[0];

rfctrl_o[1] = (idle_en[1])?idle_data[1]:fifo_data[1];

rfctrl_o[2] = (idle_en[2])?idle_data[2]:fifo_data[2];

rfctrl_o[3] = (idle_en[3])?idle_data[3]:fifo_data[3];

rfctrl_o[4] = (idle_en[4])?idle_data[4]:fifo_data[4];

end

end

endmodule3. 产生数据采样分频时钟RFAD发送数据的频率需与外接模块如:FIR保持一致,RFAD采样发送数据的时钟是系统时钟的分频时钟,其关系如图3-1所示。因此产生分频时钟和采样使能信号是该模块设计的关键,如图3-2所示:

图3-1 设置分频系数=4时sclk和clk之间的关系

图3-2 在spi_en =0,CKE=1,CKP=0配置下发送数据采样波形

产生分频时钟及发送数据时序设计思路如例3-1所示,下图为仿真结果图:

图3-3 产生Sclk及发送Rf_data仿真结果图

eg3-1: generator drv_clk and send rfctrl_data:

module drv_clk(rst_,clk,frq_drv,sclk,spi_en,rfctrl_data,Rf_data_o);

input clk,rst_; //系统时钟

input[3:0] frq_drv; //分频系数

input[11:0] rfctrl_data; //需要发送的射频信息

output Rf_data_o; //发送数据信号线

output sclk,spi_en;

reg[3:0] count;

//产生数据采样分频时钟

always @(posedge clk or negedge rst_)

begin

if(!rst_)

count[3:0] <= 4'b0;

sclk <= 1'b0;

else

begin

count <= count+1;

if(count == frq_drv - 1) //当count计数到分频系数-1时,sclk变相

begin

sclk <= ~sclk;

end

end

end

//发送射频控制信息

always @(posedge clk or negedge rst_)

begin

if(!rst_)

count[3:0] <= 4'b0;

Rf_data_o <= 1'b0;

else

begin

count <= count+1

if(count == 2*frq_drv-1)

begin

Rf_data <= rfctrl_data[11]; //每次发送rfctrl_data的最高bit

rfctrl_data[11:0] <= {rfctrl_data[10:0], 1'b0};//然后rfctrl_data[11:0]左移一位

end

end

endmodule4. burst发送模式设计为了使发送功率更加稳定,此模块在发送APC(自动功率控制)时提供了burst模式,即把一次性需要发送的功率分为几步发送出去,并规定了每步发送的功率=step_value*para,这样就避免在发送功率控制信息时产生突激[4]。仿真结果如图4-1所示:

图4-1 APC在burst方式下发送数据仿真结果时序图

burst的设计思路如例4-1所示:

eg4-1 burst step design:

module burst(rst_,clk,apc_flag,step0,step1,step2,para,burstout,burst_en);

input rst_,clk,flag;

input [11:0]step0,[11:0]step1,[11:0]step2;//每步所需发送的功率值

input [11:0]para;//每步功率的增益

otput[15:0] burstout;//最后每步发送的功率值= para * step_value

input burst_en;

wire [15:0] burstout;

reg [11:0] step_value;

reg [1:0] step_count;//记录目前发送的步数

assign burstout = step_value*para;

always @(posedge clk or negedge rst_)

begin

if(!rst_)

step_value[11:0] <= 12'b0;

else

begin

case(step_count)

2'b00: step_value[11:0]<= step0[11:0];

2'b01: step_value[11:0]<= step1[11:0];

2'b10: step_value[11:0]<= step2[11:0];

ndcase

end

end

//计算step_count

always @(burst_en)

begin

step_count <= step_count+1;

end

endmodule5. 总结RFAD作为射频控制模块中的重要部分,能够定时发送射频控制信息,并能根据实际情况调整发送模式。设计该模块最重要的三个方面即:定时发送射频控制信息,产生采样发送数据时钟分频和设计burst发送模式。本文对以上三大功能的设计方案做了基本介绍,希望对RFAD设计人员有所帮助。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有