发明内容
有鉴于此,本发明的主要目的在于提供一种Turbo译码结果的输出方法及装置,能够低成本、高效率地实现Turbo译码结果的输出。
为达到上述目的,本发明的技术方案是这样实现的:
一种Turbo译码结果的输出方法,所述方法包括:
将以码块CB为单位存储的Turbo译码结果读取到并行移位寄存器中;
根据所述CB的相关信息,选择并行移位寄存器的抽头位置,进行数据拼接;
控制拼接结果的输出。
其中,所述将以CB为单位存储的Turbo译码结果读取到并行移位寄存器中为:
读取所述CB的第一个Word,输入到所述并行移位寄存器的第一级寄存器中;其中,所述Word的宽度w是8、16或32;
读取所述CB的下一个Word,输入到所述并行移位寄存器的第一级寄存器中,同时,将原存储在第一级寄存器中的数据并行移位到所述并行移位寄存器的第二级寄存器中。
其中,所述根据所述CB的相关信息,选择并行移位寄存器的抽头位置为:
当所述CB为Turbo译码结果的第一个CB时,则选择并行移位寄存器的抽头位置为并行移位寄存器的第二级寄存器的bit n~bit(w-1)和第一级寄存器的bit 0~bit(n-1);其中,n为所述CB的哑元个数;
当所述CB不为Turbo译码结果的第一个CB时,则根据所述CB的CB索引以及CB大小,得到上一个CB还未输出的有效数据的位数m,选择并行移位寄存器的抽头位置为第二级寄存器的bit(w-m)~bit(w-1)和第一级寄存器的bit0~bit(w-m-1)。
其中,所述进行数据拼接为:拼接得到的w bit数据从低比特位到高比特位依次为第二级寄存器的bit n~bit(w-1)和第一级寄存器的bit 0~bit(n-1)存储的数据;或,
拼接得到的w bit数据从低比特位到高比特位依次为第二级寄存器的bit(w-m)~bit(w-1)和第一级寄存器的bit 0~bit(w-m-1)存储的数据。
进一步地,所述方法还包括:
判断拼接得到的数据中有效数据的位数是否为w;
若所述有效数据的位数不为w,则进一步判断当前处理的CB是否为Turbo译码结果的最后一个CB。
其中,所述控制拼接结果的输出为:
若所述拼接得到的数据中有效数据的位数为w时,将所述拼接结果输出至外部缓存;
若所述拼接得到的数据中有效数据的位数不为w,且当前处理的CB是最后一个CB时,在所述有效数据后面补0或1,凑足w bit后输出至外部缓存;
若所述拼接得到的数据中有效数据的位数不为w,且当前处理的CB不是最后一个CB时,将所述拼接得到的数据进行搬移,将所述有效数据右移至最右端,并回写入并行移位寄存器的第一级寄存器,然后读取下一个CB的第一个Word。
一种Turbo译码结果的输出装置,所述装置包括:输入选择模块、并行移位寄存器、数据拼接控制模块、输出选择模块;其中,
输入选择模块,用于将以CB为单位存储的Turbo译码结果读取到所述并行移位寄存器中;
数据拼接控制模块,用于根据所述CB的相关信息,选择所述并行移位寄存器的抽头位置,进行数据拼接;
输出选择模块,用于控制拼接结果的输出。
进一步地,所述输入选择模块,具体用于读取所述CB的第一个Word,输入到所述并行移位寄存器的第一级寄存器中;读取所述CB的下一个Word,输入到所述第一级寄存器中,同时,将原存储在所述第一级寄存器中的数据并行移位到所述并行移位寄存器的第二级寄存器中;其中,所述Word的宽度w是8、16或32。
进一步地,所述数据拼接控制模块,具体用于当所述CB为Turbo译码结果的第一个CB时,则选择并行移位寄存器的抽头位置为并行移位寄存器的第二级寄存器的bit n~bit(w-1)和第一级寄存器的bit0~bit(n-1);其中,n为所述CB的哑元个数;当所述CB不为Turbo译码结果的第一个CB时,则根据所述CB的CB索引以及CB大小,得到上一个CB还未输出的有效数据的位数m,选择并行移位寄存器的抽头位置为第二级寄存器的bit(w-m)~bit(w-1)和第一级寄存器的bit0~bit(w-m-1)。
进一步地,所述数据拼接控制模块拼接得到的w bit数据从低比特位到高比特位依次为第二级寄存器的bit n~bit(w-1)和第一级寄存器的bit 0~bit(n-1)存储的数据;或依次为第二级寄存器的bit(w-m)~bit(w-1)和第一级寄存器的bit 0~bit(w-m-1)存储的数据。
进一步地,所述数据拼接控制模块,还用于判断拼接得到的数据中有效数据的位数是否为w;若所述有效数据的位数不为w,则进一步判断当前处理的CB是否为Turbo译码结果的最后一个CB。
进一步地,所述输出选择模块,具体用于若所述拼接得到的数据中有效数据的位数为w时,将所述拼接结果输出至外部缓存;若所述拼接得到的数据中有效数据的位数不为w,且当前处理的CB是最后一个CB时,在所述有效数据后面补0或1,凑足w bit后输出至外部缓存;若所述拼接得到的数据中有效数据的位数不为w,且当前处理的CB不是最后一个CB时,将所述拼接得到的数据进行搬移,将所述有效数据右移至最右端,并回写入并行移位寄存器的第一级寄存器,然后读取下一个CB的第一个Word。
本发明提供的一种Turbo译码结果的输出方法及装置,通过并行移位寄存器和数据拼接控制模块实现对Turbo译码结果的并行处理,如此,能够低成本、高效率地实现Turbo译码结果的输出,具有存储开销低、处理时延小和处理简单等特点,进而能提高系统处理能力,利于成本的降低。
具体实施方式
本发明的基本思想为:将以码块CB为单位存储的Turbo译码结果读取到并行移位寄存器中;根据所述CB的相关信息,选择并行移位寄存器的抽头位置,进行数据拼接;控制拼接结果的输出;其中,所述CB的相关信息可以为所述CB的哑元个数、CB索引、CB大小中的一种或多种。
为使本发明的目的、技术方案和优点更加清楚明白,以下举实施例并参照附图,对本发明进一步详细说明。
图1示出了本发明Turbo译码结果的输出方法的实现流程,如图1所示,所述方法包括下述步骤:
步骤101,将以CB为单位进行存储的Turbo译码结果读取到并行移位寄存器中;
本步骤中,所述的并行移位寄存器可以为8bit、16bit、32bit的并行移位寄存器;具体地,从存储有所述Turbo译码结果的内部缓存中读取该Turbo译码结果的一个CB的第一个Word,输入到该并行移位寄存器的第一级寄存器中,然后再读取下一个Word,输入到并行移位寄存器的第一级寄存器中,原存储在第一级寄存器中的数据并行移位到第二级寄存器中;其中,所述Word的宽度w也可以为8、16或32,分别记为Word8、Word16或Word32;
步骤102,根据上述CB的相关信息,选择并行移位寄存器的抽头位置,进行数据拼接;
具体地,本步骤中,可以根据所述CB的哑元个数、CB索引、CB大小等参数的一种或多种,进行抽头位置的选择;当所述CB为Turbo译码结果的第一个CB时,则选择并行移位寄存器的抽头位置为并行移位寄存器的第二级寄存器的bit n~bit(w-1)和第一级寄存器的bit0~bit(n-1);其中,n为哑元个数;
当所述CB不为Turbo译码结果的第一个CB时,则根据CB索引以及CB大小,得到上一个CB还未输出的有效数据的位数m,选择并行移位寄存器的抽头位置为第二级寄存器的bit(w-m)~bit(w-1)和第一级寄存器的bit0~bit(w-m-1);其中:拼接得到的w bit数据从低比特位到高比特位依次为第二级寄存器的bit n~bit(w-1)和第一级寄存器的bit 0~bit(n-1)存储的数据;或,依次为第二级寄存器的bit(w-m)~bit(w-1)和第一级寄存器的bit 0~bit(w-m-1)存储的数据。
具体地,当w为8时,当CB为该Turbo译码结果的第一个CB时,可能会需要填充哑元,来保证该Turbo译码结果的每一个CB的长度相同;例如,当第一个CB的哑元个数为2时,且当并行移位寄存器的第二级寄存器已输入该CB的第一个8bit数据,第一级寄存器已输入该CB的第二个8bit数据时,第二级寄存器的前两位bit存储的数据为上述填充的哑元,不是Turbo译码结果的有效数据,因此,需要选择的并行移位寄存器的抽头位置为第二级寄存器的后六位bit的抽头和第一级寄存器前两位bit的抽头,拼接得到一个8bit的数据。
步骤103,控制拼接结果的输出;
这里,将上述拼接得到的w bit数据输出至外部缓存等,然后重复上述步骤,直至取完一个CB的最后一组数据,由于CB的大小不一定是w的整数倍,故最后一组数据中还可能包含有无效数据;
具体地,本步骤还包括:判断拼接得到的数据中有效数据的位数是否为w;若所述有效数据的位数不为w,则进一步判断当前处理的CB是否为Turbo译码结果的最后一个CB;
相应地,若所述拼接得到的数据中有效数据的位数为w时,将所述拼接结果输出至外部缓存;
若所述拼接得到的数据中有效数据的位数不为w,且当前处理的CB是最后一个CB时,可以在所述有效数据后面补0或1,凑足w bit后输出至外部缓存等;
若所述拼接得到的数据中有效数据的位数不为w,且当前处理的CB不是最后一个CB时,将所述拼接得到的数据进行搬移,将所述有效数据右移至最右端,并回写入并行移位寄存器的第一级寄存器,然后读取下一个CB的第一个Word;具体地,回写至第一级寄存器后,此时,步骤102拼接得到的w bit数据均为无效数据,舍弃即可,然后重复步骤101,读取下一个CB的第一个Word。
图2示出了本发明Turbo译码结果的输出方法一具体实施例中Turbo译码结果的内部缓存格式和期望的外部缓存格式,为了方便描述,假定3GPP中CB的最大长度为64bit,并假定当前处理的TB的长度为154bit,假定DSP/CPU系统采用Word宽度w为8,即采用Word8。根据CB分隔算法,划分得到的CB总数为3,每个CB的长度为52bit,填充的哑元为2bit,在上述条件下,Turbo译码完毕后,三个CB的内部缓存格式如图2中箭头左边所示,该Turbo译码结果期望的外部缓存格式如图2中箭头右边所示;图2中箭头左边所示的三个矩形框依次为第一个CB、第二个CB、第三个CB的硬判决结果;其中,第一个CB的硬判决结果中,第一个8bit数据的前两位为填充的哑元,每个CB的最后四位为补齐的无效数据;箭头右边所示的期望的外部缓存格式为左边CB去除无效数据后的拼接结果。
图3为对图2所示的Turbo译码结果的输出方法的具体实施例的实现流程,本实施例中,Word的宽度w为8;如图3所示,所述实施例包括下述步骤:
步骤301,读取第一个CB的第一个Word,存入并行移位寄存器的第一级寄存器中;
具体地,如图4所示,读取第一个CB的第一个8bit数据存入并行移位寄存器的第一级寄存器,此时,该并行移位寄存器的第二级寄存器还未存入数据。
步骤302,读取该CB的第二个Word,存入该并行移位寄存器的第一级寄存器中,此时,原第一级寄存器中缓存的数据移位到第二级寄存器中;
具体地,如图5所示,读取第一个CB的第二个8bit数据,输入到并行移位寄存器的第一级寄存器中,原存储在第一级寄存器中的数据并行移位到第二级寄存器中。
步骤303,根据该CB的相关信息,如哑元个数、CB索引、CB大小等参数选择第一级寄存器和第二级寄存器的抽头位置,进行数据拼接;
具体地,参照图5,由于第二级寄存器的bit0、bit1位置中的数据为填充的哑元,故选择的抽头位置为第二级寄存器的bit2~bit 7和第一级寄存器的bit0~bit 1,来进行数据拼接。
步骤304,将拼接得到的8bit数据输出至外部缓存等;
具体地,此处,拼接后输出的数据从低比特位到高比特位依次为第二级寄存器的bit2~bit 7,然后为第一级寄存器的bit0~bit 1。
步骤305,读取该CB的下一个Word,存入该并行移位寄存器的第一级寄存器中,此时,原第一级寄存器中缓存的数据移位到第二级寄存器中,并判断本步骤中根据抽头位置拼接得到的Word中有效数据的位数是否为8,若是,执行步骤304,若不是,则执行步骤306;
具体地,第一个CB的最后一个Word中有效数据的位数为4,不足8位,参见图6,当上述最后一个Word输入到第一级寄存器中,此时拼接得到的Word中有效数据的位数仍为8,故执行步骤304,将拼接得到的8bit数据输出至外部缓存,然后重复执行该步骤;
应当注意,此时暂不进行Turbo译码结果的下一个Word的读取,而是将一个随机的8bit数据存入第一级寄存器,同时将原第一级寄存器中数据并行移位至第二级寄存器,具体可参照图7,此时拼接得到的8bit数据中含有2bit的有效数据,故执行步骤306。
步骤306,判断当前处理的CB是否为Turbo译码结果的最后一个CB,若是,则执行步骤304,具体可以在不足8位的有效数据后面补0或1,凑足8bit后输出至外部缓存;若否,则执行步骤307;
具体地,参照图7,当前处理的CB并不是Turbo译码结果的最后一个CB,故执行步骤307.
步骤307,将拼接得到的8bit数据中的有效数据右移至右端,回写入第一级寄存器,原第一级寄存器中缓存的数据移位到第二级寄存器中;
具体地,参见图7,将步骤305拼接得到的8bit数据中的有效数据进行搬移,右移至最右端,利用随机数据补全到8bit后,回写入第一级寄存器。
步骤308,读取下一个CB的第一个Word,存入第一级寄存器,原第一级寄存器中含有有效数据的8bit数据移位到第二级寄存器中,然后执行步骤303,重新确定抽头位置,进行数据拼接;
具体地,参见图8,当第二个CB的第一个Word存入第一级寄存器后,此时第二级寄存器中bit6~bit7的位置为第一个CB剩余未输出的2个有效数据,因此此时,确定的抽头位置为第二级寄存器的bit6~7和第一级寄存器的bit0~5,然后重复上述步骤,直至得到如图2箭头右边所示的期望的外部缓存格式的Turbo译码结果。
图9示出了使用本发明的Turbo译码结果输出装置的系统结构示意,如图9所示,所述输出装置可以内置于ASIC/FPGA的Turbo译码处理单元中,其从内部缓存读取Turbo译码结果,通过输出装置处理后,输出给外部存储,然后提供给CPU/DSP使用。
图10示出了本发明的Turbo译码结果输出装置的结构示意,如图10所示,所述输出装置包括输入选择模块、并行移位寄存器、数据拼接控制模块、输出选择模块;其中,输入选择模块,用于将以CB为单位存储的Turbo译码结果读取到所述并行移位寄存器中;数据拼接控制模块,用于根据所述CB的相关信息,选择所述并行移位寄存器的抽头位置,进行数据拼接;输出选择模块,用于控制拼接结果的输出。
进一步地,所述并行移位寄存器包括第一级寄存器和第二级寄存器。
进一步地,所述输入选择模块,具体用于读取所述CB的第一个Word,输入到所述并行移位寄存器的第一级寄存器中;读取所述CB的下一个Word,输入到所述第一级寄存器中,同时,将原存储在所述第一级寄存器中的数据并行移位到所述并行移位寄存器的第二级寄存器中;其中,所述Word的宽度w是8、16或32,分别记为Word8、Word16或Word32。
进一步地,所述数据拼接控制模块,具体用于当所述CB为Turbo译码结果的第一个CB时,则选择并行移位寄存器的抽头位置为并行移位寄存器的第二级寄存器的bit n~bit(w-1)和第一级寄存器的bit0~bit(n-1);其中,n为所述CB的哑元个数;当所述CB不为Turbo译码结果的第一个CB时,则根据所述CB的CB索引以及CB大小,得到上一个CB还未输出的有效数据的位数m,选择并行移位寄存器的抽头位置为第二级寄存器的bit(w-m)~bit(w-1)和第一级寄存器的bit0~bit(w-m-1)。
其中,所述数据拼接控制模块拼接得到的w bit数据从低比特位到高比特位依次为第二级寄存器的bit n~bit(w-1)和第一级寄存器的bit0~bit(n-1)存储的数据;或依次为第二级寄存器的bit(w-m)~bit(w-1)和第一级寄存器的bit0~bit(w-m-1)存储的数据。
进一步地,所述数据拼接控制模块,还用于判断拼接得到的数据中有效数据的位数是否为w;若所述有效数据的位数不为w,则进一步判断当前处理的CB是否为Turbo译码结果的最后一个CB。
进一步地,所述输出选择模块,具体用于若所述拼接得到的数据中有效数据的位数为w时,将所述拼接结果输出至外部缓存;若所述拼接得到的数据中有效数据的位数不为w,且当前处理的CB是最后一个CB时,在所述有效数据后面补0或1,凑足w bit后输出至外部缓存;若所述拼接得到的数据中有效数据的位数不为w,且当前处理的CB不是最后一个CB时,将所述拼接得到的数据进行搬移,将所述有效数据右移至最右端,并回写入并行移位寄存器的第一级寄存器,然后读取下一个CB的第一个Word。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。