2.2.1概述
相移键控(PSK)是一种用载波相位表示输入信号信息的调制技术。移相键控分为绝对移相和相对移相两种。
2.2.2PSK调制的原理
图2.2.2 PSK框图
相移键控通过载波的不同相位来发送内容,振幅保持不变和频率保持不变。实现框图如图2.2.1所示。在2PSK中,初始相位0表示二进制“0”。 初始相位π分别表示二进制“1”。因此,2PSK信号的时域表达式如2.1式所示。
...................................................................................(2.2.1)
其中,表示第n个符号的绝对相位:
......................................................................(2.2.2)
所以,式(2.2.1)可以简化为
...................................................................(2.2.3)
由于表示两种的信号波形相同,相位相差180度,所以2PSK信号表达成(2-4)式
............................................................................................(2.2.4)
其中
.....................................................................................(2.2.5)
其中g(t)为矩形脉冲,而统计为
.................................................................................... (2.2.6)
2.2.3 PSK调制优点
数字信号调制载波,提高了抗干扰性,容易加密传输。
代码
module psk(
data_in,
sys_clk,
en,
sys_restn,
signal_out
);
/////////////////////////////////////////////////////////
input data_in;
input sys_clk;
input sys_restn;
input en;
output [15:0]signal_out;
wire [9:0]address_sig;
//////////////////////////////////////////////////////////
sin_data sin_data_ROM (
.address ( address_sig ),
.clock ( sys_clk ),
.q ( signal_out )
);
/////////////////////////////////////////////////////////
//数据两级缓存
reg data_in_frist;
reg data_in_second;
always @(posedge sys_clk or negedge sys_restn)
begin
if(!sys_restn)
begin
data_in_second <= 1'b0;
data_in_frist <= 1'b0;
end
else
begin
data_in_frist <= data_in;
data_in_second <= data_in_frist;
end
end
///////////////////////////////////////////////////////////////////
assign phase_shift = data_in_frist^data_in_second;
///////////////////////////////////////////////////////////////////
//2PSK phase_shift 180
reg [9:0]count;
always @(posedge sys_clk or negedge sys_restn)
begin
if(!sys_restn)
count <= 10'd0;
else if(en)
begin
if(phase_shift)
count <= count + 10'd512;
else
count <= count + 1'b1;
end
else
count <= count;
end
///////////////////////////////////////////////////////////
assign address_sig = count;
endmodule
文章评论(0条评论)
登录后参与讨论