网站首页
IC库存
IC展台
电子资讯
技术资料
PDF文档
我的博客
IC72论坛
ic72 logo
搜索关键字: 所有资讯 行业动态 市场趋势 政策法规 新品发布 技术资讯 价格快报 展会资讯
  • 达普IC芯片交易网 > 新闻中心 > 模拟技术 > 正文
  • RSS
  • 射频定时发送器基本功能模块的设计
    http://www.ic72.com 发布时间:2008/5/23 9:15:00

          引言

        射频定时发送器是射频控制模块中的一个重要组成部分,用于产生需要定时发送的射频控制信号:AD_ON(模数转换信号)、DA_ON(数模转换信号)、APC(自动功率控制信号)、AGC(自动增益控制信号)和AFC(自动频率控制信号),再通过选择两个SPI接口RF_SPI和AD_SPI把控制信号定时地传送到射频发送模块。射频定时发送器需要完成的四种基本功能分别是:定时发送、竞争发送、数据采样时钟分频,以及APC_burst模式,如图1所示,本文将详细阐述这些基本功能模块的设计原理。

    ic72新闻中心

          图1 射频定时发送器功能结构图

        定时发送模块

        射频定时发送器的主要功能就是定时传输射频控制信息,为了满足此功能,需要在模块中设计两个FIFO:DATA FIFO用于存储射频控制信息;TIME FIFO用于存储时间信息。模块中设定当系统帧计数器与TIME FIFO中存储的某一时间相同时,就把与这个时间对应的射频控制信息发送出去。因此还需设计一个模块,判断当帧计数器的值等于FIFO_time(FIFO中存储的时间)时,产生使能信号(read_en, fifo_read_en, time_int)发送信息,工作流程如图2所示。

    ic72新闻中心

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

        FIFO

        该模块中将设计两个FIFO,它们将需要发送的射频控制信息及其发送时间缓存起来,设计用FIFO进行存储的目的是将这两种信息一一对应起来,避免发送的时候出错。

        define data_fifo

        module  data_fifo (rst_,clk,we_i,rd_i, addwr_i,addrd_i,fifo_data_i,fifo_data_o);

        1) 首先定义该模块的信号线:输入信号为rst_ (复位信号)、clk(标准时钟)、 we_i(写信号)、 rd_i(读信号)、addwr_i[4:0](写FIFO地址)、 addrd_i[4:0](读FIFO地址)和fifo_data_i[11:0](写入FIFO的值);输出信号为fifo_data_o[11:0](FIFO输出值)。

        2) 再定义一个宽度为12位、深度为32的FIFO:reg   [11:0]  register_fifo[0:31];

        3) 设计写FIFO的情况:以clk为参考时钟,首先判断复位信号,当复位信号为低时,对FIFO进行复位:if(!rst_) register_fifo[0......31] <= 12’b0;当rst_不为低且we_i为高时,则对FIFO进行写操作:if(we_i == 1’b1)  register_fifo[addwr_i] <= fifo_data_i;

        4) 设计读FIFO的情况:同样以clk为参考时钟,先判断复位信号,当复位信号为低时,对fifo_data_o进行复位:if(!rst_) fifo_data_o<= 12’b0;当rst_不为低且rd_i为高时,则对FIFO进行读操作:if(rd_i == 1’b1) fifo_data_o <= regsiter_fifo[addrd_i];

        使能信号及中断产生模块

        FIFO读/写使能信号是由外部模块驱动的,因此需要设计一个模块用于产生控制FIFO的读/写信号,并且该模块还需产生时间中断信号用于使能发送器。

        define transfer time

        module time_count(rst_,clk,fifo _time,framc,read_en,fifo_read _en,time_int);

        1) 首先定义该模块的信号线:输入信号为rst_、clk、 fifo_time[15:0](FIFO中存储的时间信息)、framc(帧计数器值);输出信号为read_en(FIFO地址累加使能信号)、fifo_read_en(读FIFO值使能信号)、time_int(时间中断信号);再定义一个reg [1:0] time_int_delay,用于存储time_int在上一个时钟的信息,如time_int_delay[0] <= time_int; time_int_delay[1] <= time_int_delay[0];

        2) 定义fifo_read_en信号在time_int被拉高后延迟一个clk拉高,再延迟一个clk拉低,即assign fifo_read_en = time_int |(time_int_delay[0]);定义read_en信号在time_int被拉高后延迟两个clk后拉高,再延迟一个clk拉低,即assgin read_en = time_int_delay[0] |(time_int_delay[1])。这样做的目的是控制在当前clk的上升沿到来时取出FIFO中当前地址的值,然后在下一个clk的上升沿立即计算出下一次取值的地址,这样就能保证在每一次取值之前其所在的位置已经计算完成,避免了取值出错的情况。

        3) 最后定义如何产生time_int信号。time_int产生的条件是:当fifo_time中存储的时间信息等于framc时,time_int被拉高,即被使能,if(fifo_time== framc )   time_int <= 1b1;

        FIFO读写操作的仿真结果如图3所示,对FIFO的读/写操作分别由we_i和rd_i(fifo_read_en)控制,而计算读FIFO的地址由read_en控制,这样就能保证在每次取FIFO值之前其所在地址已经被计算完成。

    ic72新闻中心

        图3 FIFO读/写操作仿真图

        竞争发送模块

        芯片在空闲情况下,可能会有空闲状态的射频控制信息(idle_data)需要发送,当芯片唤醒后则应优先发送该信息。但当芯片唤醒后产生的射频控制信息fifo_data与idle_data在同一时刻发送时,就会出现竞争发送的情况。因此,在设计该模块时限定当idle_en(空闲使能信号)与pllon(pll时钟使能信号)同时拉高时,发送idle_data中的相应比特来取代fifo_data中的相应比特,如图4所示。

    ic72新闻中心

         图4 射频定时发送器在空闲情况下的工作流程

        transfer idle_data and fifo_data:

        module idle_time(fifo_ data,pllon,idle_en,idle_data,rfctrl_o);


    www.ic72.com 达普IC芯片交易网
  • 行业动态
  • 市场趋势
  • 政策法规
  • 新品发布
  • Baidu

    IC快速检索:abcdefghijklmnopqrstuvwxyz0123456789
    COPYRIGHT:(1998-2010) IC72 达普IC芯片交易网
    客户服务:service@IC72.com 库存上载:IC72@IC72.com
    (北京)联系方式: 在线QQ咨询:点击这里给我发消息 联系电话:010-82614113 传真:010-82614123
    京ICP备06008810号-21 京公网安备 11010802032910 号 企业资质