FPGA产生相位编码基带信号
生活随笔
收集整理的這篇文章主要介紹了
FPGA产生相位编码基带信号
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
相位編碼信號簡介
?對于基帶信號來說,不需要載頻,只需要產生復包絡即可,即生成雙極性的m序列。
m序列產生原理
????????m序列利用多級移位寄存器產生,由N個串聯的寄存器、移位脈沖產生器、和模2加法器組成。反饋線的連接狀態用Ci表示,Ci=1表示此線接通(參加反饋),Ci=0表示此線斷開。
????????由于反饋線的存在,移位寄存器的輸入端自發地輸入信號,除全零狀態外,N級移位寄存器最大有種狀態。
m序列產生原理?m序列的產生原理圖如上圖所示,自發式的產生種狀態。
Verilog代碼如下:
module m_produce(input clk,input enable,output s_out //);reg [31:0] shift_reg = 32'h0000_0001; // 32長度的m序列發生器reg out_weima = 0 ;reg clk_weima = 0 ;reg [2:0] weima_cnt = 0 ;assign s_out=out_weima;always @(posedge clk) beginif (enable)clk_weima <= ~clk_weima;endalways @(posedge clk_weima) beginif (shift_reg==0)shift_reg<=1;elsebeginshift_reg[31:0] <= {shift_reg[30:0],shift_reg[0]}; //移位shift_reg[0] <= shift_reg[0]^shift_reg[1]^shift_reg[2]^shift_reg[22]; //反饋抽頭out_weima <= shift_reg[0];endendendmodule????????此時產生了一位單極性的m序列?,然后進行極性轉換并轉換成14位的數據,最后變成25%占空比的脈沖信號。這樣就產生了14位的相位編碼信號。
Verilog代碼如下:
module Pulse_signal(input clk_160M,input clk_5M,//input [13:0] s_in,//output reg enable,output reg [13:0] s_out //);reg [4:0] ena_num=0;wire m_out;reg enable;//reg [13:0] s_out_temp; //進行代碼的轉換 m_produce u_m0_produce(.clk(~clk_160M),.enable(1),.s_out(m_out));always @(negedge clk_160M ) begin //生成5M 25%占空比的時鐘if(1)ena_num=ena_num+1;elseena_num=0;if ((ena_num>8)|(ena_num==0))enable =0;else enable = 1; endalways @(posedge clk_160M) begin //m序列變成14位的雙極性碼if(enable)if(m_out)s_out = 8191;elses_out = -8191;elses_out=0;endendmodule產生原理框圖
????????相位編碼信號的系統框圖如下圖所示,系統包括三個部分,由移位寄存器,編碼轉換、脈沖轉換三個部分組成。
????????32位的移位寄存器用于產生m序列。然后經過編碼轉換,單比特的碼值轉換為14比特的并行數據。然后經過脈沖轉換,這部分由一個5MHz、25%占空比的使能信號來控制,將連續的信號轉換為脈沖信號。
Vivado仿真結果
總結
以上是生活随笔為你收集整理的FPGA产生相位编码基带信号的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UMLChina建模竞赛第3赛季第10轮
- 下一篇: C语言为何不会过时