天天看點

基于Verilog實作2FSK調制為什麼要進行調制?FSK調制原理二、調制的過程總結

提示:文章寫完後,目錄可以自動生成,如何生成可參考右邊的幫助文檔

文章目錄

  • 為什麼要進行調制?
  • FSK調制原理
  • 二、調制的過程
    • 1.M序列發生器
    • 2.載波的實作
    • 3.調制信号
    • 4.wave仿真圖
    • 5.波形檢視技巧
  • 總結

為什麼要進行調制?

FSK(Frequency-shift keying)- 頻移鍵控是利用載波的du頻率變化來傳遞數字資訊。它是利用基帶數字信号離散取值特點去鍵控載波頻率以傳遞資訊的一種數字調制技術。FSK(Frequency-shift keying)是資訊傳輸中使用得較早的一種調制方式,它的主要優點是: 實作起來較容易,抗噪聲與抗衰減的性能較好。在中低速資料傳輸中得到了廣泛的應用。 最常見的是用兩個頻率承載二進制1和0的雙頻FSK系統。 技術上的FSK有兩個分類,非相幹和相幹的FSK 。 在非相幹的FSK ,瞬時頻率之間的轉移是兩個分立的價值觀命名為馬克和空間頻率,分别為。 在另一方面,在相幹頻移鍵控或二進制的FSK ,是沒有間斷期在輸出信号。 在數字化時代,電腦通信在資料線路(電話線、網絡電纜、光纖或者無線媒介)上進行傳輸,就是用FSK調制信号進行的,即把二進制資料轉換成FSK信号傳輸,反過來又将接收到的FSK信号解調成二進制資料,并将其轉換為用高,低電平所表示的二進制語言,這是計算機能夠直接識别的語言

FSK調制(2FSK為二進zhi數字頻率調制),用載波的頻率來傳送數字資訊,即用所傳送的數字資訊控制載波dao的頻率。

2FSK信号便是符号“0”對應于載頻 f1,而符号“1”對應于載頻 f2(與 f1 不同的另一載頻)的已調波形,而且 f1 與 f2 之間的改變是瞬間的。

傳“0”信号時,發送頻率為 f1 的載波; 傳“1”信号時,發送頻率為 f2的載波。可見,FSK 是用不同頻率的載波來傳遞數字消息的。

FSK調制原理

基于Verilog實作2FSK調制為什麼要進行調制?FSK調制原理二、調制的過程總結

示例:pandas 是基于NumPy 的一種工具,該工具是為了解決資料分析任務而建立的。

二、調制的過程

1.M序列發生器

M序列的方式又很多種,這是比較簡單的一種,代碼如下(示例):

module m_seq1023(
    input  rst_n,
    input  clk ,
    input  clk_en,
    output  m_seq_out
);

reg [9:0] data_temp;

wire bit_temp;

assign bit_temp = data_temp[7]^data_temp[0];

//移位寄存器

always @(posedge clk or negedge rst_n)
    if (!rst_n)
        data_temp <= 10'd5; 
    else if(clk_en)
        data_temp <= {bit_temp,data_temp[9:1]};

assign m_seq_out = data_temp[9];

endmodule
           

2.載波的實作

載波可以直接使用IPcore,在這裡投個懶直接使用查表法,構造SIN函數波形。

0:begin carryWave0<=0;carryWave1<=0; carryWave2<=0;carryWave3<=0;end
1:begin carryWave0<=12;carryWave1<=25; carryWave2<=49;carryWave3<=90;end
2:begin carryWave0<=25;carryWave1<=49; carryWave2<=90;carryWave3<=127;end
3:begin carryWave0<=37;carryWave1<=71; carryWave2<=117;carryWave3<=90;end
4:begin carryWave0<=49;carryWave1<=90; carryWave2<=127;carryWave3<=0;end
5:begin carryWave0<=60;carryWave1<=106; carryWave2<=117;carryWave3<=-90;end
6:begin carryWave0<=71;carryWave1<=117; carryWave2<=90;carryWave3<=-127;end
7:begin carryWave0<=81;carryWave1<=125; carryWave2<=49;carryWave3<=-90;end
8:begin carryWave0<=90;carryWave1<=127; carryWave2<=0;carryWave3<=0;end
9:begin carryWave0<=98;carryWave1<=125; carryWave2<=-49;carryWave3<=90;end
10:begin carryWave0<=106;carryWave1<=117; carryWave2<=-90;carryWave3<=127;end
11:begin carryWave0<=112;carryWave1<=106; carryWave2<=-117;carryWave3<=90;end
12:begin carryWave0<=117;carryWave1<=90; carryWave2<=-127;carryWave3<=0;end
13:begin carryWave0<=122;carryWave1<=71; carryWave2<=-117;carryWave3<=-90;end
14:begin carryWave0<=125;carryWave1<=49; carryWave2<=-90;carryWave3<=-127;end
15:begin carryWave0<=126;carryWave1<=25; carryWave2<=-49;carryWave3<=-90;end
16:begin carryWave0<=127;carryWave1<=0; carryWave2<=0;carryWave3<=0;end
17:begin carryWave0<=126;carryWave1<=-25; carryWave2<=49;carryWave3<=90;end
18:begin carryWave0<=125;carryWave1<=-49; carryWave2<=90;carryWave3<=127;end
19:begin carryWave0<=122;carryWave1<=-71; carryWave2<=117;carryWave3<=90;end
20:begin carryWave0<=117;carryWave1<=-90; carryWave2<=127;carryWave3<=0;end
21:begin carryWave0<=112;carryWave1<=-106; carryWave2<=117;carryWave3<=-90;end
22:begin carryWave0<=106;carryWave1<=-117; carryWave2<=90;carryWave3<=-127;end
23:begin carryWave0<=98;carryWave1<=-125; carryWave2<=49;carryWave3<=-90;end
24:begin carryWave0<=90;carryWave1<=-127; carryWave2<=0;carryWave3<=0;end
25:begin carryWave0<=81;carryWave1<=-125; carryWave2<=-49;carryWave3<=90;end
26:begin carryWave0<=71;carryWave1<=-117; carryWave2<=-90;carryWave3<=127;end
27:begin carryWave0<=60;carryWave1<=-106; carryWave2<=-117;carryWave3<=90;end
28:begin carryWave0<=49;carryWave1<=-90; carryWave2<=-127;carryWave3<=0;end
29:begin carryWave0<=37;carryWave1<=-71; carryWave2<=-117;carryWave3<=-90;end
30:begin carryWave0<=25;carryWave1<=-49; carryWave2<=-90;carryWave3<=-127;end
31:begin carryWave0<=12;carryWave1<=-25; carryWave2<=-49;carryWave3<=-90;end
32:begin carryWave0<=0;carryWave1<=0; carryWave2<=0;carryWave3<=0;end
33:begin carryWave0<=-12;carryWave1<=25; carryWave2<=49;carryWave3<=90;end
34:begin carryWave0<=-25;carryWave1<=49; carryWave2<=90;carryWave3<=127;end
35:begin carryWave0<=-37;carryWave1<=71; carryWave2<=117;carryWave3<=90;end
36:begin carryWave0<=-49;carryWave1<=90; carryWave2<=127;carryWave3<=0;end
37:begin carryWave0<=-60;carryWave1<=106; carryWave2<=117;carryWave3<=-90;end
38:begin carryWave0<=-71;carryWave1<=117; carryWave2<=90;carryWave3<=-127;end
39:begin carryWave0<=-81;carryWave1<=125; carryWave2<=49;carryWave3<=-90;end
40:begin carryWave0<=-90;carryWave1<=127; carryWave2<=0;carryWave3<=0;end
41:begin carryWave0<=-98;carryWave1<=125; carryWave2<=-49;carryWave3<=90;end
42:begin carryWave0<=-106;carryWave1<=117; carryWave2<=-90;carryWave3<=127;end
43:begin carryWave0<=-112;carryWave1<=106; carryWave2<=-117;carryWave3<=90;end
44:begin carryWave0<=-117;carryWave1<=90; carryWave2<=-127;carryWave3<=0;end
45:begin carryWave0<=-122;carryWave1<=71; carryWave2<=-117;carryWave3<=-90;end
46:begin carryWave0<=-125;carryWave1<=49; carryWave2<=-90;carryWave3<=-127;end
47:begin carryWave0<=-126;carryWave1<=25; carryWave2<=-49;carryWave3<=-90;end
48:begin carryWave0<=-127;carryWave1<=0; carryWave2<=0;carryWave3<=0;end
49:begin carryWave0<=-126;carryWave1<=-25; carryWave2<=49;carryWave3<=90;end
50:begin carryWave0<=-125;carryWave1<=-49; carryWave2<=90;carryWave3<=127;end
51:begin carryWave0<=-122;carryWave1<=-71; carryWave2<=117;carryWave3<=90;end
52:begin carryWave0<=-117;carryWave1<=-90; carryWave2<=127;carryWave3<=0;end
53:begin carryWave0<=-112;carryWave1<=-106; carryWave2<=117;carryWave3<=-90;end
54:begin carryWave0<=-106;carryWave1<=-117; carryWave2<=90;carryWave3<=-127;end
55:begin carryWave0<=-98;carryWave1<=-125; carryWave2<=49;carryWave3<=-90;end
56:begin carryWave0<=-90;carryWave1<=-127; carryWave2<=0;carryWave3<=0;end
57:begin carryWave0<=-81;carryWave1<=-125; carryWave2<=-49;carryWave3<=90;end
58:begin carryWave0<=-71;carryWave1<=-117; carryWave2<=-90;carryWave3<=127;end
59:begin carryWave0<=-60;carryWave1<=-106; carryWave2<=-117;carryWave3<=90;end
60:begin carryWave0<=-49;carryWave1<=-90; carryWave2<=-127;carryWave3<=0;end
61:begin carryWave0<=-37;carryWave1<=-71; carryWave2<=-117;carryWave3<=-90;end
62:begin carryWave0<=-25;carryWave1<=-49; carryWave2<=-90;carryWave3<=-127;end
63:begin carryWave0<=-12;carryWave1<=-25; carryWave2<=-49;carryWave3<=-90;end

           

3.調制信号

//調制部分
always @(posedge stClk)
begin
	if(codeSource)
	begin
		sigOut=carryWave1;
	end
	else
	begin
		sigOut=carryWave0;
	end
end
           

4.wave仿真圖

代碼如下(示例):

基于Verilog實作2FSK調制為什麼要進行調制?FSK調制原理二、調制的過程總結

5.波形檢視技巧

選中希望以模拟波形顯示的信号,右擊選擇format—>Analog(automatic),此外,如果發現波形不對的話,可以選擇Radix,下選有符号數試一試

基于Verilog實作2FSK調制為什麼要進行調制?FSK調制原理二、調制的過程總結

總結

2FSK調制的核心思想就是0和1兩種不同的狀态對應兩種不同的頻率,到信号接收端的時候通過判斷信号的頻率進而确定數字信号原本的狀态。是以通過一個if的判斷語句即可完成。