TI中文支持网
TI专业的中文技术问题搜集分享网站

关于C6670 BCP中RM模块输入到MOD模块数据格式的相关问题

背景说明:1.使用的是TI提供的MCSDK数据包中的原始程序进行PDSCH信道的仿真;

                   2.对物理层进行每个步骤进行对比仿真,当前已经进行调制这个步骤的仿真;

                   3.对于CRC、ENC、RM三个模块无论是单独模块仿真,还是三个模块联合仿真,都能够找到对应的输出格式。

问题:一次性调用CRC\ENC\RM\MOD四个模块仿真输出数据格式与maltab软件仿真数据对不上,我对数据进行了如下实验:

         1.只对数据调用MOD模块进行调制步骤(这里不适用扰码功能,后面的也是一样,matlab仿真也一样),调制数据输出正确,能够对应相应格式;

        2一次性在BCP中调用CRC\ENC\RM\MOD(扰码功能disable)模块进行仿真,输出数据出错(我说的出错是指与maltab仿真结果不一致);

        3.首先调用一次BCP进行CRC\ENC\RM三个模块的仿真,获取RM输出数据,并以8bit长度进行保存;然后以该数据作为MOD模块输入,调用一次BCP进行MOD模块仿真(即第一个实验)。实验发现输出数据与matlab仿真结果一致。

因此,我推断是RM输出到PC中进行保存后输入到MOD模块的数据格式与RM模块直接输出到MOD模块的数据格式不一致造成的,所以我想问一下尊敬的TI工程师,这里的输入数据格式是否有所差异,或者是RM直接输入时需要添加某些类型的字段?希望您能帮我解答这个问题

       同时也希望您能够提供一些BCP各个模块的相关资料,谢谢!

        

cat cat:

回复 Adam Yao94020:

尊敬的TI工程师Adam Yao:

         1.MOD输出数据格式与maltab仿真数据格式不一样,而且数据大小、正负都不一样。

        2.BCP输出数据大小端这个的确是不一样的,因为前面仿真的时候已经发现,所以这个问题考虑过的,但是肯定不是这个答案。

        3.我是在simulator上面进行的。难道是仿真软件的问题?

cat cat:

回复 Adam Yao94020:

尊敬的TI工程师Adam Yao:

    我今天在EVM板上同样进行了CRC->ENC->RM->MOD的数据操作,发现MOD输出数据与在simulator上仿真输出数据一致,同样是错误的数据。所以我觉得还是RM直接输入到MOD的数据格式与RM输出到PC保存后再输入到MOD的数据格式不一样导致的,希望您能够帮我解决一下这个问题。如果有必要,我可以将代码传给您检测。

Adam Yao94020:

回复 cat cat:

  你好,MCDSK中的例子是TI测试通过的,不会存在RM输出和MOD输入之间格式的不匹配。

  你的测试的是TI的MCDSK程序,还是自己开发的程序呢。

  照你的描述,可能出现问题的地方就是RM输出的软比特字节顺序和MOD输入之间的软比特顺序,请参考sprugz1文档figure 4-39的图。如果你使用的是TI的MCSDK,输出肯定是正确的,我觉得你可以检查一下Matlab 调制输入的顺序是否跟协议的顺序一致。软比特的顺序一反的话,调制结果肯定就是不对的。

  还有一种方法去判断是不是这个问题,可以采用全0的软比特做输入,看这时候MOD输出的结果,跟你matlab输出的结果是否一致。

  

cat cat:

回复 Adam Yao94020:

尊敬的TI工程师Adam Yao:

       您好,我使用的是MCSDK中的例子,修改部分只是对PSDCH那个函数中的一些参数和输入数据进行了修改,比如输入bit数、G参数的大小、关闭扰码功能以及输入数据为全1。相信这么修改不会将实例的架构破坏。

      另外您说的使用全0的方式进行验证,这种方式我使用过的,在BCP中一次性调用CRC-ENC-RM-MOD,采用的QPSK调制、使用的是compress数据输出方式,输出的结果全为2,与matlab仿真输出是一样的。

     其实我也认为是RM输出bit顺序和MOD输入bit顺序这个地方没有弄清楚,但是RM输出到PC端的数据是满足TI提供的BCP User guide上的输出格式的,然后我将其再输入到MOD模块中,仿真数据与matlab仿真数据一样。反而是一次性调用RM、MOD等模块进行处理时无法与maltab仿真数据一致,这个我就有点不明白了?

    还有就是我MOD模块只使用了调制这个功能,我应该可以反推出RM模块输出的数据,明显反推出的RM输入到MOD模块的数据与以前保存的RM输出数据(一次性调用CRC、ENC、RM三个模块所产生的输出数据)是不一样的,明显是错的。

    希望您能帮我解决一下这个问题。

Adam Yao94020:

回复 cat cat:

  你好,全0的方式验证通过的话,说明BCP包头的配置都是正确的。我觉得还是endian这里转换的时候有问题。

  现在DSP运行在大端还是小端?还有TM table中的ENDIAN_IN, FORMAT_IN, ENDIAN_OUT, FORMAT_OUT各配置为多少?

cat cat:

回复 Adam Yao94020:

尊敬的TI工程师Adam Yao:

       您好,我使用的DSP的小端。我想应该是我在修改RM和MOD模块参数的时候出现了错误,因为昨天晚上我重新使用原始的MCSDK中的工程进行仿真,发现数据与matlab仿真数据一致。具体是什么地方出现了错误暂时还不知道,需要今天去对比程序。谢谢您帮我分析错误的原因。

       另外想问一下关于MOD的一点疑惑吧,我发现MOD模块输出有两种类型,soft mode和hard mode,我发现soft mode好像还涉及到一些信道的概念,即一些LTE协议中控制信息(CQI、RI什么的),我想问:是不是在实现LTE协议的时候最好使用soft mode呢?因为我觉得hard mode更像是一个调试模式,看一看输出数据是什么样的?

cat cat:

回复 Adam Yao94020:

尊敬的TI工程师Adam Yao:

       您好,我已经找到数据不正确的原因了,根本原因是在CRC数据分块的时候产生的。因为MCSDK数据包中的原始程序并没有将输入数据进行分块,然后输入到BCP的程序。因此,这部分需要自己修改。我在修改的时候将translation channel的判断语句少算了一种情况,即数据块小于6144的情况,导致系统最少也需要两个channel,然后就出现了错误。

      最后谢谢您的回复!!!

赞(0)
未经允许不得转载:TI中文支持网 » 关于C6670 BCP中RM模块输入到MOD模块数据格式的相关问题
分享到: 更多 (0)