在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3223|回复: 9

[求助] scrambler同步问题

[复制链接]
发表于 2017-1-13 16:26:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
最近做一个ADC的scrambler和descrambler,想问一下论坛里的哥哥姐姐,如何让这两个加扰解扰过程同步?电路的公式是1+x^14+x^15,电路按照protocol设计,但是行为级验证的时候会出现数据加扰解扰后跟着原来数据不一样。这个问题咋解?
发表于 2017-1-14 11:53:12 | 显示全部楼层
理论上应该是一样的,不然做加扰的,别人怎么解扰。代码发上来看看。楼下高手解答
 楼主| 发表于 2017-1-14 14:47:54 | 显示全部楼层
回复 2# zhqhzj

Ok 我把代码发上去
 楼主| 发表于 2017-1-14 14:49:40 | 显示全部楼层
module scrambler(
                                        clk,
                                        En,
                                        prescr_data,//prescramble data
                                        scr_data//scrambeled data
);
        input clk;
        input En;
        input [31:16] prescr_data;//D3116
        output reg [31:16] scr_data;//S31:S16
        reg [15:1] tmp_scr;//S15:S1
       
        //for tmp_scr register
        always@(posedge clk)begin
                if(En == 0)
                        tmp_scr <= 15'b000_0000_1111_1111;
                else begin
                        tmp_scr[15:1] <= scr_data[31:17];
       
                end        
       
        end
        always@(posedge clk)begin
                       
                scr_data[29:16] <= prescr_data[29:16] ^ ((tmp_scr[15:2] ^ tmp_scr[14:1]) & {14{En}});
                scr_data[31] <= prescr_data[31] ^ ((scr_data[17]  ^ scr_data[16] )& En);
                scr_data[30] <= prescr_data[30] ^ ((scr_data[16]  ^ tmp_scr[15]) & En );
                       
        end
                       
endmodule
 楼主| 发表于 2017-1-14 14:51:46 | 显示全部楼层
module descrambler(
                                        clk,
                                        En,
                                        predescr_data,
                                        descr_data
);
        input clk;
        input En;
        input [31:16] predescr_data;
        output reg [31:16] descr_data;
        reg [15:1] tmp_descr;
       
        //for tmp_descr register
        always@(posedge clk) begin
                        tmp_descr <= predescr_data[31:17];
        end
       
        //for descr_data register
        always@(posedge clk )begin
                 
                descr_data[31] <= predescr_data[31] ^ ((predescr_data[17] ^ predescr_data[16]) & En);
                descr_data[30] <= predescr_data[30] ^ ((predescr_data[16] ^ tmp_descr[15]) & En);
                descr_data[29:16] <= predescr_data[29:16] ^ ((tmp_descr[15:2] ^ tmp_descr[14:1]) & {14{En}});
               
        end        
       
endmodule
 楼主| 发表于 2017-1-14 14:53:33 | 显示全部楼层
4l、5l是scrambler 和descrambler的代码
 楼主| 发表于 2017-1-14 23:11:24 | 显示全部楼层
没人么?
发表于 2017-1-15 16:10:54 | 显示全部楼层
参考一下,GB 20600—2006,这个是dtmb调制的标准,里面讲了加扰。加扰的表达式和你一样,G( x )= 1+x^14 +x^15,不过是初始相位和你不一样,且标准中规定单bit输入,进行加扰,加扰之后,单bit输出的情况。

看你加扰的代码,第一个always块的寄存器tmp_scr,应该是你的存储加扰初始值经过加扰表达式之后的值,一旦en为高,相位改成输入了。不知道理解的对不。
发表于 2020-7-3 14:07:07 | 显示全部楼层
发表于 2020-7-4 23:33:52 | 显示全部楼层
扰码分帧同步和自同步,只有一个多项式,没有具体的示意图是不足以判断是属于哪种扰码方式的。如果是帧同步扰码,则要求加扰和解扰的LFSR初始值一致才行。自同步则没这个要求。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-25 12:48 , Processed in 0.020513 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表