色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 模擬技術 > 設計應用 > 射頻定時發(fā)送器基本功能模塊的設計

          射頻定時發(fā)送器基本功能模塊的設計

          ——
          作者: 時間:2007-09-19 來源: 收藏
          引言 

          控制模塊中的一個重要組成部分,用于產(chǎn)生需要定時發(fā)送的控制信號:AD_ON(模數(shù)轉換信號)、DA_ON(數(shù)模轉換信號)、APC(自動功率控制信號)、AGC(自動增益控制信號)和AFC(自動頻率控制信號),再通過選擇兩個SPI接口RF_SPI和AD_SPI把控制信號定時地傳送到射頻發(fā)送模塊。射頻需要完成的四種基本功能分別是:定時發(fā)送、競爭發(fā)送、數(shù)據(jù)采樣時鐘分頻,以及APC_burst模式,如圖1所示,本文將詳細闡述這些基本功能模塊的設計原理。

           

          定時發(fā)送模塊

          射頻的主要功能就是定時傳輸射頻控制信息,為了滿足此功能,需要在模塊中設計兩個:DATA 用于存儲射頻控制信息;T1ME 用于存儲時間信息。模塊中設定當系統(tǒng)幀計數(shù)器與TIME FIFO中存儲的某一時間相同時,就把與這個時間對應的射頻控制信息發(fā)送出去。因此還需設計一個模塊,判斷當幀計數(shù)器的值等于FIFO_time(FIFO中存儲的時間)時,產(chǎn)生使能信號(read_en,fifo_read_en,time_int)發(fā)送信息,工作流程如圖2所示。

          FIFO

          該模塊中將設計兩個FIFO,它們將需要發(fā)送的射頻控制信息及其發(fā)送時間緩存起來,設計用FIFO進行存儲的目的是將這兩種信息一一對應起來,避免發(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_(復位信號)、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];

          使能信號及中斷產(chǎn)生模塊

          FIFO讀/寫使能信號是由外部模塊驅動的,因此需要設計一個模塊用于產(chǎn)生控制FIFO的讀/寫信號,并且該模塊還需產(chǎn)生時間中斷信號用于使能發(fā)送器。

          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(幀計數(shù)器值);輸出信號為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[O];

          2) 定義fifo_read_en信號在time_int被拉高后延遲一個clk拉高,再延遲一個clk拉低,即assignfifo_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的上升沿立即計算出下一次取值的地址,這樣就能保證在每一次取值之前其所在的位置已經(jīng)計算完成,避免了取值出錯的情況。

          3) 最后定義如何產(chǎn)生time_int信號。time_int產(chǎn)生的條件是:當fifo_time中存儲的時間信息等于framc時,time_int被拉高,即被使能,if(fifo_time==framc)time_int<=1′bl;

          FIFO讀寫操作的仿真結果如圖3所示,對FIFO的讀/寫操作分別由we_i和rd_i(fifo_read_en)控制,而計算讀FIFO的地址由read_en控制,這樣就能保證在每次取FIFO值之前其所在地址已經(jīng)被計算完成。

           

          競爭發(fā)送模塊

          芯片在空閑情況下,可能會有空閑狀態(tài)的射頻控制信息(idle_data)需要發(fā)送,當芯片喚醒后則應優(yōu)先發(fā)送該信息。但當芯片喚醒后產(chǎn)生的射頻控制信息fifo_data與idle_data在同一時刻發(fā)送時,就會出現(xiàn)競爭發(fā)送的情況。因此,在設計該模塊時限定當idle_en(空閑使能信號)與pllon(pll時鐘使能信號)同時拉高時,發(fā)送idle_data中的相應比特來取代fifo_data中的相應比特,如圖4所示。

          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、fjfo_data、idle_data和idle_en,即當上述電平中任意一個發(fā)生變化時,就執(zhí)行下面的語句:

           

          競爭發(fā)送的仿真結果如圖5所示:在pllon沒有被拉高的情況下,rfctrl_o發(fā)送的就是fifo_data的值,只有當pllon被拉高的條件下才會有競爭發(fā)送的情況。

           

          數(shù)據(jù)采樣時鐘分頻模塊

          為了數(shù)據(jù)發(fā)送同步,射頻定時發(fā)送器輸出數(shù)據(jù)的頻率應與外接模塊保持一致,射頻定時發(fā)送器采樣發(fā)送數(shù)據(jù)的時鐘是系統(tǒng)時鐘的分頻時鐘。因此,產(chǎn)生分頻時鐘和采樣使能信號是該模塊設計的關鍵所在,并要求每次對發(fā)送數(shù)據(jù)的采樣都應發(fā)生在分頻時鐘的上升沿。

          generator ad_clk and sendad_sdatao:

          module drv_clk(rst_,clk,frq_drv,ad_sclk,spi_en,rfctrl_data,ad_datao);

          1) 定義該模塊的信號線:輸入信號為tst_、clk、frq_drv(分頻系數(shù))、rfctrl_data(射頻控制信息);輸出信號為ad_sclk(分頻時鐘)、ad_sdatao(發(fā)送數(shù)據(jù))。

          2) 以clk為基準時鐘,定義一個reg[3:0]count計數(shù)器對clk的上升沿進行計數(shù)。當count=frq_drv-1時,ad_sclk進行反轉并對count清零,這樣就產(chǎn)生了分頻時鐘。

          3) 該模塊設計要求每次對發(fā)送數(shù)據(jù)的采樣都應發(fā)生在分頻時鐘的上升沿。但為了避免產(chǎn)生異步,對數(shù)據(jù)進行采樣時不能以產(chǎn)生的ad_sclk為標準,應仍以clk為基準時鐘。即在每8個clk時鐘的上升沿發(fā)送1位的rfctrl_data,并由高位到低位發(fā)送,這樣采樣時就不會出現(xiàn)毛刺,能做到較好的同步。

           

          這種方式能確保在每一個ad_sclk的上升沿對發(fā)送數(shù)據(jù)的數(shù)據(jù)進行采樣,避免了產(chǎn)生毛刺。

          burst發(fā)送模式設計

          為了使發(fā)送功率更加穩(wěn)定,射頻定時發(fā)送器中設計了一種burst模式,即把一次性需要發(fā)送的功率分為幾步發(fā)送出去,并規(guī)定了每步發(fā)送的功率值=step_value*para(每步值


          評論


          相關推薦

          技術專區(qū)

          關閉