MSK调制差分编码串并转换代码帮助
时间:10-02
整理:3721RD
点击:
小弟看书也没看懂。
在MSK调制的差分编码串并转换模块代码如下,请达人帮忙解释:
module s2p(
input clk,
input clk_div2,
input reset,
input x,
output b_q,
output b_i
);
reg b_i;
reg b_q;
reg [1:0] x_t,d_t;
wire d_x;
always @(posedge clk) begin
if(!reset) begin
x_t<=0;
d_t<=0;
end
else begin
x_t[1:0]<={x_t[0],x};
d_t[1:0]<={d_t[0],d_x};
end
end
assign d_x=(x_t==2'b11)?0x_t==2'b00)?0:1;
reg s_flag;
always @(posedge clk) begin
if(!reset) begin
b_i<=0;
b_q<=0;
s_flag<=0;
end
else begin
if(d_t[1]==d_t[0])
s_flag<=s_flag;
else
if(clk_div2)
s_flag<=!s_flag;
else
s_flag<=s_flag;
if(clk_div2)
b_i=s_flag;
else
b_q<=s_flag^d_t[1];
end
end
endmodule
在MSK调制的差分编码串并转换模块代码如下,请达人帮忙解释:
module s2p(
input clk,
input clk_div2,
input reset,
input x,
output b_q,
output b_i
);
reg b_i;
reg b_q;
reg [1:0] x_t,d_t;
wire d_x;
always @(posedge clk) begin
if(!reset) begin
x_t<=0;
d_t<=0;
end
else begin
x_t[1:0]<={x_t[0],x};
d_t[1:0]<={d_t[0],d_x};
end
end
assign d_x=(x_t==2'b11)?0x_t==2'b00)?0:1;
reg s_flag;
always @(posedge clk) begin
if(!reset) begin
b_i<=0;
b_q<=0;
s_flag<=0;
end
else begin
if(d_t[1]==d_t[0])
s_flag<=s_flag;
else
if(clk_div2)
s_flag<=!s_flag;
else
s_flag<=s_flag;
if(clk_div2)
b_i=s_flag;
else
b_q<=s_flag^d_t[1];
end
end
endmodule
