扰码器(一)扰码器综述及设计思路

学习更多相关知识,关注博主知乎账号,用户名Trustintruth   https://www.zhihu.com/people/suo-yi-xin-90/activities,免费获取代码欢迎关注公共号Trustintruth。

首先,扰码:

扰码的目的是抑制线路码中的长连“0” 和长连“1” ,便于从线路信号中提取时钟信号。由于线路信号仅通过扰码,所以SDH的线路信号速率与SDH电口标准信号速率相一致,这样就不会增加发端激光器的光功率代价。 [1] 

另外,扰码还可以将不同的终端或基站区分开来,同时,扰码还有助于提高通信的保密性。加扰不改变信号的带宽,只是将来自不同信源的信号区分开来。这样,即使多个发射机使用相同的码字扩频也不会出现问题。

                                                                                                                                ——摘自 百度百科

接下来就来说一说如何实现

扰码产生是通过循环移位寄存器来实现的,而扰码生成多项式决定循环移位寄存器的结构。例如:

使用的扰码生成多项式:  X7 + X6 + 1

则对应的循环移位寄存器应当为

及在多项式中的常数项为1的项给模二计数器输出进行模二加法运算。

有了这个图之后就很好设计我们的串行扰码器了。应用状态机控制将数据按顺序进入循环移位寄存器就好。

很幼稚的想法就是最一开始居然想级联几个串行扰码器来实现并行,但是扰码是一个和你前后数据息息相关的设计,拆分并行并不可取,因为他只是将串行转化成并行而已。那如何转变成为并行呢?

请听下回分解!

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
以下是一个简单的Verilog代码实现: ```Verilog module parallel_scrambler ( input clk, input reset, input [7:0] data_in, output [7:0] data_out ); reg [7:0] shift_reg; reg [7:0] scrambler_poly = 8'b11001001; // Scrambling polynomial always @(posedge clk) begin if (reset) begin shift_reg <= 8'b00000000; end else begin // XOR the shift register with the scrambling polynomial shift_reg[7] <= shift_reg[6] ^ shift_reg[0] ^ data_in; shift_reg[6] <= shift_reg[5] ^ shift_reg[4] ^ shift_reg[0] ^ data_in; shift_reg[5] <= shift_reg[4] ^ shift_reg[3] ^ shift_reg[2] ^ shift_reg[0] ^ data_in; shift_reg[4] <= shift_reg[3] ^ shift_reg[2] ^ shift_reg[1] ^ data_in; shift_reg[3] <= shift_reg[2] ^ shift_reg[1] ^ shift_reg[0]; shift_reg[2] <= shift_reg[1] ^ shift_reg[0]; shift_reg[1] <= shift_reg[0]; shift_reg[0] <= data_in; end end assign data_out = shift_reg; endmodule ``` 这个模块有四个输入输出端口: - clk:时钟信号 - reset:复位信号 - data_in:输入数据 - data_out:输出数据 它使用一个8位移位寄存器(shift_reg)来存储数据,并且在时钟信号的上升沿触发。当reset为高电平时,移位寄存器清零。否则,它将使用一个特定的码多项式(scrambler_poly)对移位寄存器进行异或运算,并将结果输出到data_out端口。这个码多项式是8位二进制数11001001。 在每个时钟周期中,移位寄存器中的数据都会向左移动一个位置,同时将输入数据放在最右边的位置上。然后,使用码多项式对移位寄存器的不同位置进行异或运算,以产生输出数据。这将使原始数据变得更难以识别,并提高传输数据的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值