# 另一種可能:自設計的上採器 ### 主旨: 本篇為[延伸報告二:以AD9361接收訊號探討專題結論](https://hackmd.io/Z57LAlxFTD6LcFhT4gUJjg)的平行分支 重點差異在於上採樣模組的差異: **延伸報告二** : 使用polyphase架構 **本篇** : 使用自設計的上採器 內容-運用MATLAB分析發射資料的特性(頻譜與星座圖) 目標-客觀評鑑專題之成果(發射訊號特性) --- ## 引言:上採樣模組的使命 為了達到16倍的上採樣,我們設計了另一種電路架構。 這個架構的想法是,為了配合AD9361的DAC之採樣率(30.72MHz),我們需要將承接自pulse shaping的訊號再進一步產生匹配的資料率,使訊號被DAC採樣時能夠連續。 本篇除了著重分析自設計之上採器的功效外,也會帶到訊號產生的速度隨著電路的處理變化的情形。接下來會講解電路架構中的各模組在處理資料時的 ### 電路架構 ![](https://hackmd.io/_uploads/BJ0Qu5vIn.png)*圖一、原自設計模組的加上上採樣器的電路* #### 除頻(freq_divider_0) > <font color="#315484">Zynq的系統時脈為 100MHz,則一個clock的週期為10ns,因此產生1023個gold code需要10.23us,透過clock_div模組,產生新的震盪訊號,將週期使其週期為970ns,頻率約為1.03MHz,產生1023個gold code需要992.31us(實際上不會剛好,在最後一個時脈會有必較長的周期,製造出1023個code費時1000us)。新的震盪訊號的頻率大約為系統時脈的百分之一倍,由於1023個code耗時1ms,則頻率為1.023Mz,我們稱此時脈為除頻clock。 > > 受除頻clock所控制,模組goldto map_0、encoder_0及maptodma_0運作的速度都會是1.023MHz。</font> #### QPSK調變(maptodma_0) > <font color="#315484">maptodma模組的主要工作就是將串接數列轉換為平行數列(serial to parallel),同時將數值兩兩一組,判斷mapping到二維空間中的四個象限上。因此mapping時先收到的第一個訊號都必須等一個模組運作時脈,等第二個訊號到了之後,在一起做判斷。因此這個運作模式就會讓原本1.023MHz的資料輸入速率減半,變成0.5115Mz。</font> #### 升餘弦濾波器(DVB_S2_PS_AXI_0) > <font color="#315484">此模組在做pulse shaping,目的是消除ISI。同時,在**延伸報告二:以AD9361接收訊號探討專題結論**中我們有提到,為了讓輸入的資料點更連續(使訊號更接近理想的類比發射訊號),因此做了四倍的上採樣。所以從maptodma做完qpsk調變後的資料再送進pulse shaping模組中,即會產生0.5115乘四,為2.046MHz。</font> 事實上在做完pulse shaping後,訊號即具備發射的特性。觀察結果: **頻譜** ![](https://hackmd.io/_uploads/S1o7949Un.jpg)*圖八、做完pulse shaping後發射訊號繪製的頻譜與頻譜分析儀結果* **星座圖** ![](https://hackmd.io/_uploads/B1JBqEq82.jpg)*圖九、做完pulse shaping後發射訊號繪製的星座圖* #### 自設計的上採樣模組(sample_up_75_0) > <font color="#315484">由於做完pulse shaping後的訊號其實就已經具備發射訊號的特質了,但為了配合AD9361的DAC模組採樣率(30.72MHz),我們需要將訊號再進一步上採樣。 > > 為何需要配合DAC模組採樣率? Ans:因為若資料產生的速度與採樣率不匹配,則發射的訊號會有問題。若資料產生速度大於採樣率,則採樣的訊號可能會不連續,因為在每次採樣的間隔內資料的持續時間太短,還沒被採樣到就換下一個訊號了,因此導致不連續。 > > 而我們遇到的狀況就是資料產生速度大於採樣率,因此我們嘗試將資料的持續時間拉長16倍,使相同資料點多出15個,藉此提高相同時間內,訊號的數量,以最粗略的方式做到插值,達成上採樣。</font> ### 總結 ```mermaid graph LR; 1(1.023MHz)-->2(做QPSK調變 除以2); 2(做QPSK調變 除以2)-->3(做pulse shaping 乘以4); 3(做pulse shaping 乘以4)-->4(做上採樣 乘以16); 4(做上採樣 乘以16)-->5(32.736MHz); ``` $$\frac{1.023MHz}{2}\times4\times16=32.736MHz$$ 最終的資料率達到,32.736MHz,超過採樣率30.72MHz,理論上就可以解決採樣訊號不連續的問題,讓採樣訊號連續。 ### 模組程式碼 ```verilog= `timescale 1ns / 1ps module sample_up_75(clk, rstn, shap_I, shap_Q, s_axis_tvalid, s_axis_tready, m_axis_tvalid, m_axis_tready, slice_I, slice_Q); input clk, rstn; input [15:0] shap_I, shap_Q; input s_axis_tvalid, m_axis_tready; output [15:0] slice_I, slice_Q; output m_axis_tvalid, s_axis_tready; reg [3:0] counter = 4'd0; // 7-bit binary counter reg [15:0]hold_I; reg [15:0]hold_Q; reg stop_ovalid; reg keep; wire clk_16th = (counter == 15); assign slice_I = hold_I; assign slice_Q = hold_Q; assign s_axis_tready = clk_16th; assign m_axis_tvalid = keep; always @(posedge clk, negedge rstn) begin if (~rstn) begin hold_I <= 0; hold_Q <= 0; counter <= 0; keep <= 0; end else if (clk_16th) begin counter <= 0; hold_I <= shap_I; hold_Q <= shap_Q; if (s_axis_tvalid) begin keep <= 1; end else if (~s_axis_tvalid) begin keep <= 0; end end counter <= counter + 1; end endmodule ``` ### 模組時序圖 > ![](https://hackmd.io/_uploads/HyDeukYI3.png)*圖二、vivado中模組的運作時序圖* > > PS_out_I及PS_out_Q為pulse shaping 完的實部急虛部序列。以PS_out_I為例可以看到在系統時間10,115ns時,開始有產出前段模組產生的訊號。在經過上採樣模組後的輸出為 slice_I 及 slice_Q ,而slice_I的數值會對應PS_out_I的數值,但持續時間變長16倍,達到訊號變多16倍的效果。 ### 以cable作為發射及接收通道的成果 #### 頻譜分析儀結果 ![](https://hackmd.io/_uploads/HJN_7V58n.jpg)*圖三、接收訊號繪製的頻譜與頻譜分析儀結果* #### 星座圖 ![](https://hackmd.io/_uploads/HJ4WENqUn.jpg)*圖四、接收訊號繪製星座圖* ### 以天線作為發射及接收通道的成果 #### 天線位置的差異 ![](https://hackmd.io/_uploads/Bk6e_bxD2.png)*圖五、實際電路板的無線通道情形* #### 頻譜比較 ![](https://hackmd.io/_uploads/SyD_rVqU3.png)*圖六、不同距離的通道所繪製的頻譜* #### 星座圖比較 ![](https://hackmd.io/_uploads/rJ5JKEqUn.png)*圖七、不同距離的通道所繪製的星座圖* 可以發現當天線的距離越大,發送的訊號星座圖就越不理想(左圖);當天現越靠近彼此,展現的星座圖就會趨近於以理想通道(有線)傳送的樣子。 ## Reference + NCU-CE, SDR LAB + 以GPS規格及zedboard實現通訊發射機模擬 + [延伸報告一:以頻譜分析儀探討專題結論](https://hackmd.io/@ajO9iAiKQw-VU35zjKDr1g/r1PKDeEVh) + [延伸報告二:以AD9361接收訊號探討專題結論](https://hackmd.io/Z57LAlxFTD6LcFhT4gUJjg) **特別感謝SDR LAB的學長姐,與我們一起想辦法並協助我們學習**:100: ###### tags:`Xilinix zedboard` `AD9361` `Result Analysis` `NCU CE` >Department Communication Engineering National Central University, Taiwan 主編:[name=Dylan傅詮恩]協助編輯:[name=張榮軒、陳泓宇、冼義佑]