📄 pn_code.v
字号:
module pn_encode(data_source,init,clk_pn,reset_pn,flag_tra,pn_out);
input data_source;
input init; //init为1时,赋予x[3:0]初值0001,下拉
input clk_pn; //pn码的码元速率
input reset_pn; //pn码重新回零,上拉
output flag_tra; //当reset_pn重启后,flag_tra开始计数,计够两个来一个0,计够四个来一个1,并回零重来
output pn_out; //pn码与输入全一信号相乘后的输出信号
reg flag_tra; //4b5b的转换信号,上升沿有效
reg[3:0] flag_tra_counter;
reg[3:0] x; //寄存器
assign pn_out=data_source^x[3]^x[0];
always @(posedge clk_pn)
begin
if(!reset_pn) //零的时候回零
x[3:0]<='b0000;
else
begin
if(init==1)
begin
x[3:0]<='b0001;
flag_tra_counter<='b000;
end
else
begin
x[0]<=x[3]^x[0]^data_source;
x[1]<=x[0];
x[2]<=x[1];
x[3]<=x[2];
if(flag_tra_counter==3)
flag_tra_counter<='b000;
else
begin
flag_tra_counter<=flag_tra_counter+1;
if(flag_tra_counter<=1)
flag_tra<=1;
else
flag_tra<=0;
end
end
end
end
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -