射頻定時發(fā)送器是射頻控制模塊中的一個重要組成部分,用于產(chǎn)生需要定時發(fā)送的射頻控制信號:AD_ON(模數(shù)轉(zhuǎn)換信號)、DA_ON(數(shù)模轉(zhuǎn)換信號)、APC(自動功率控制信號)、AGC(自動增益控制信號)和AFC(自動頻率控制信號),再通過選擇兩個SPI接口RF_SPI和AD_SPI把控制信號定時地傳送到射頻發(fā)送模塊。射頻定時發(fā)送器需要完成的四種基本功能分別是:定時發(fā)送、競爭發(fā)送、數(shù)據(jù)采樣時鐘分頻,以及APC_burst模式,如圖1所示,本文將詳細闡述這些基本功能模塊的設(shè)計原理。 圖1 射頻定時發(fā)送器功能結(jié)構(gòu)圖 定時發(fā)送模塊 射頻定時發(fā)送器的主要功能就是定時傳輸射頻控制信息,為了滿足此功能,需要在模塊中設(shè)計兩個FIFO:DATA FIFO用于存儲射頻控制信息;TIME FIFO用于存儲時間信息。模塊中設(shè)定當(dāng)系統(tǒng)幀計數(shù)器與TIME FIFO中存儲的某一時間相同時,就把與這個時間對應(yīng)的射頻控制信息發(fā)送出去。因此還需設(shè)計一個模塊,判斷當(dāng)幀計數(shù)器的值等于FIFO_time(FIFO中存儲的時間)時,產(chǎn)生使能信號(read_en, fifo_read_en, time_int)發(fā)送信息,工作流程如圖2所示。 圖2 定時發(fā)送射頻控制信息設(shè)計流程圖 FIFO 該模塊中將設(shè)計兩個FIFO,它們將需要發(fā)送的射頻控制信息及其發(fā)送時間緩存起來,設(shè)計用FIFO進行存儲的目的是將這兩種信息一一對應(yīng)起來,避免發(fā)送的時候出錯。 define data_fifo module data_fifo (rst_,clk,we_i,rd_i, addwr_i,addrd_i,fifo_data_i,fifo_data_o); 1) 首先定義該模塊的信號線:輸入信號為rst_ (復(fù)位信號)、clk(標(biāo)準(zhǔn)時鐘)、 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) 設(shè)計寫FIFO的情況:以clk為參考時鐘,首先判斷復(fù)位信號,當(dāng)復(fù)位信號為低時,對FIFO進行復(fù)位:if(!rst_) register_fifo[0......31] 圖3 FIFO讀/寫操作仿真圖 競爭發(fā)送模塊 芯片在空閑情況下,可能會有空閑狀態(tài)的射頻控制信息(idle_data)需要發(fā)送,當(dāng)芯片喚醒后則應(yīng)優(yōu)先發(fā)送該信息。但當(dāng)芯片喚醒后產(chǎn)生的射頻控制信息fifo_data與idle_data在同一時刻發(fā)送時,就會出現(xiàn)競爭發(fā)送的情況。因此,在設(shè)計該模塊時限定當(dāng)idle_en(空閑使能信號)與pllon(pll時鐘使能信號)同時拉高時,發(fā)送idle_data中的相應(yīng)比特來取代fifo_data中的相應(yīng)比特,如圖4所示。 圖4 射頻定時發(fā)送器在空閑情況下的工作流程 transfer idle_data and fifo_data: module idle_time(fifo_ data,pllon,idle_en,idle_data,rfctrl_o); 1) 定義該模塊的信號線:輸入信號為fifo_data[11:0](FIFO中存儲的射頻控制信息)、idle_data (空閑時需發(fā)送的射頻控制信息)、idle_en、pllon;輸出信號為rfctrl_o(最后輸出的射頻控制信息)。 2) 下面對需發(fā)送的控制信息進行邏輯組合。其敏感電平是pllon、fifo_data、idle_data和idle_en,即當(dāng)上述電平中任意一個發(fā)生變化時,就執(zhí)行下面的語句: always @(pllon or fifo_data or idle_data or idle_en)//組合邏輯電路 begin 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 競爭發(fā)送的仿真結(jié)果如圖5所示:在pllon沒有被拉高的情況下,rfctrl_o發(fā)送的就是fifo_data的值,只有當(dāng)pllon被拉高的條件下才會有競爭發(fā)送的情況。 數(shù)據(jù)采樣時鐘分頻模塊 為了數(shù)據(jù)發(fā)送同步,射頻定時發(fā)送器輸出數(shù)據(jù)的頻率應(yīng)與外接模塊保持一致,射頻定時發(fā)送器采樣發(fā)送數(shù)據(jù)的時鐘是系統(tǒng)時鐘的分頻時鐘。因此,產(chǎn)生分頻時鐘和采樣使能信號是該模塊設(shè)計的關(guān)鍵所在,并要求每次對發(fā)送數(shù)據(jù)的采樣都應(yīng)發(fā)生在分頻時鐘的上升沿。 generator ad_clk and send ad_sdatao: module drv_clk(rst_,clk,frq_ drv,ad_sclk,spi_en,rfctrl_data,ad_datao); 1) 定義該模塊的信號線:輸入信號為rst_、 clk、 frq_drv(分頻系數(shù))、rfctrl_data(射頻控制信息);輸出信號為ad_sclk(分頻時鐘)、ad_sdatao(發(fā)送數(shù)據(jù))。 2) 以clk為基準(zhǔn)時鐘,定義一個reg[3:0] count計數(shù)器對clk的上升沿進行計數(shù)。當(dāng)count=frq_drv-1時,ad_sclk進行反轉(zhuǎn)并對count清零,這樣就產(chǎn)生了分頻時鐘。 3) 該模塊設(shè)計要求每次對發(fā)送數(shù)據(jù)的采樣都應(yīng)發(fā)生在分頻時鐘的上升沿。但為了避免產(chǎn)生異步,對數(shù)據(jù)進行采樣時不能以產(chǎn)生的ad_sclk為標(biāo)準(zhǔn),應(yīng)仍以clk為基準(zhǔn)時鐘。即在每8個clk時鐘的上升沿發(fā)送1位的rfctrl_data,并由高位到低位發(fā)送,這樣采樣時就不會出現(xiàn)毛刺,能做到較好的同步。 always @(posedge clk or negedge rst_) begin count 圖5 競爭發(fā)送仿真圖 burst發(fā)送模式設(shè)計 為了使發(fā)送功率更加穩(wěn)定,射頻定時發(fā)送器中設(shè)計了一種burst模式,即把一次性需要發(fā)送的功率分為幾步發(fā)送出去,并規(guī)定了每步發(fā)送的功率值=step_value*para(每步值×增益),這樣就可以避免在發(fā)送功率控制信息時產(chǎn)生突激。 burst step design: module burst(rst_,clk,apc_ flag_i,step0.....step11,para,ad_s datao,apc_burst_en,apc_burstout); 1) 定義該模塊的信號線:輸入信號為rst_、 clk、 apc_flag_i(apc標(biāo)志信號)、step0.....step11 (每步需發(fā)送的功率值)、para(每步增益)、apc_burst_en(burst模式使能信號);輸出信號為apc_burstout(每步最終發(fā)送的功率)、ad_sdatao(發(fā)送數(shù)據(jù))。 2) 定義assign apc_burstout = step_value*para,設(shè)置step_count記錄目前發(fā)送的步數(shù),并根據(jù)step_count的信息,用step_value存儲當(dāng)前步數(shù)的值。 always @(posedge clk or negedge rst_) begin case(step_count) 2'b00: step_value[11:0] 圖6 APC在burst模式下發(fā)送數(shù)據(jù)的仿真結(jié)果時序圖 結(jié)語 作為射頻控制模塊中的重要部分,射頻定時發(fā)送器能夠定時發(fā)送射頻控制信息,并能根據(jù)實際情況調(diào)整發(fā)送模式。本文對該模塊最重要的四大功能模塊,即定時發(fā)送模塊、競爭發(fā)送模塊、分頻采樣時鐘模塊以及burst模式發(fā)送模塊的設(shè)計方案作了基本介紹,希望對芯片設(shè)計人員有所幫助。 |