一種用于Turbo碼和LDPC碼譯碼器的地址生成器的制造方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及專用指令集處理器
技術(shù)領(lǐng)域:
,具體的說(shuō),涉及一種用于Turbo碼和LDPC碼譯碼器的地址生成器?!?br>背景技術(shù):
】[0002]Turbo碼是一種具有較強(qiáng)糾錯(cuò)性能的糾錯(cuò)碼,廣泛應(yīng)用于無(wú)線通信中。相關(guān)的標(biāo)準(zhǔn)包括全球移動(dòng)通信系統(tǒng)(UMTS)[1]、長(zhǎng)期演進(jìn)(LTE)[2]、全球微波互聯(lián)接入(WiMAX)[3][0003]LDPC碼是無(wú)線通信中廣泛應(yīng)用的一種糾錯(cuò)碼。相關(guān)的標(biāo)準(zhǔn)包括全球微波互聯(lián)接入(WiMAX)[3]、無(wú)線局域網(wǎng)(WIFI)[4]。[0004]在目前已有的地址生成器中,主要是針對(duì)Turbo碼地址生成器的ASIC設(shè)計(jì)【5】,無(wú)法通過(guò)指令對(duì)譯碼過(guò)程進(jìn)行控制,且在靈活性方面比較受限。而且現(xiàn)有技術(shù)中一般都是采用專用電路來(lái)實(shí)現(xiàn)地址生成?!?br/>發(fā)明內(nèi)容】[0005]本發(fā)明的目的在于提供一種用于Turbo碼和LDPC碼譯碼器的地址生成器,該生成器能夠支持多種主流無(wú)線通信標(biāo)準(zhǔn)中的Turbo碼和LDPC碼譯碼過(guò)程中的實(shí)時(shí)地址生成,并且能夠支持未定義標(biāo)準(zhǔn)中的Turbo碼和LDPC碼譯碼過(guò)程中的地址生成。[0006]本發(fā)明提供一種用于Turbo碼和LDPC碼譯碼器的地址生成器,其采用混合式結(jié)構(gòu),包括指令存儲(chǔ)器、取指令模塊、預(yù)譯碼模塊、取操作數(shù)數(shù)模塊、多模式地址計(jì)算數(shù)據(jù)通路、通用寄存器、地址寄存器、LTE專用寄存器、配置寄存器和遞交模塊;其中:所述多模式地址計(jì)算數(shù)據(jù)通路包括查找表一乘法模塊、除法模塊、加比選模塊、取模模塊、數(shù)據(jù)存儲(chǔ)器和加比選1模塊,它們由配置寄存器進(jìn)行配置,在不同的配置條件下這些計(jì)算數(shù)據(jù)通路形成不同的連接關(guān)系,從而完成不同的地址計(jì)算功能;多模式地址計(jì)算數(shù)據(jù)通路的連接具體為:查找表一乘法模塊的數(shù)據(jù)和指令被發(fā)送到除法模塊、加比選模塊和取模模塊,除法模塊的數(shù)據(jù)和指令被發(fā)送到加比選模塊和遞交模塊,加比選模塊的數(shù)據(jù)和指令被發(fā)送到取模模塊、除法模塊和遞交模塊,取模模塊的數(shù)據(jù)被發(fā)送到加比選模塊、遞交模塊、預(yù)譯碼模塊、通用寄存器、地址寄存器和取操作數(shù)模塊,數(shù)據(jù)存儲(chǔ)器模塊的數(shù)據(jù)被發(fā)送到查找表一乘法模塊、取模模塊、加比選模塊和遞交模塊,加比選1模塊的輸出發(fā)送到通用寄存器、LTE專用地址寄存器、地址寄存器、除法模塊和取操作數(shù)模塊;[0007]所述地址生成器中,取指令模塊從指令存儲(chǔ)器中獲取指令,并將指令發(fā)送給預(yù)譯碼模塊;預(yù)譯碼模塊對(duì)指令進(jìn)行預(yù)譯碼,檢測(cè)跳轉(zhuǎn)之類(lèi)的指令,并將其他指令發(fā)送給取操作數(shù)模塊;取操作數(shù)模塊根據(jù)指令從通用寄存器和地址寄存器中獲取操作數(shù),并根據(jù)配置寄存器中的內(nèi)容將所獲取的操作數(shù)以及指令發(fā)往查找表一乘法模塊、地址寄存器以及數(shù)據(jù)存儲(chǔ)器;所述遞交模塊和指令存儲(chǔ)器、取指令模塊、預(yù)譯碼模塊、取操作數(shù)模塊以及多模式地址計(jì)算數(shù)據(jù)通路相連。[0008]本發(fā)明中,指令存儲(chǔ)器中存有同步指令SYNC和ADRGEN_SYNC,通過(guò)這兩條指令可以保證在Turbo和LDPC的譯碼過(guò)程中的數(shù)據(jù)一致性。[0009]本發(fā)明的有益效果在于:本發(fā)明采用同一套硬件完成多種標(biāo)準(zhǔn)中Turbo碼和LDPC譯碼器的地址生成;本發(fā)明采用指令集架構(gòu)實(shí)現(xiàn)地址生成,具有比較高的靈活性;本發(fā)明可以工作在多種模式,為不同的標(biāo)準(zhǔn)實(shí)時(shí)生成Turbo譯碼的地址和LDPC譯碼的地址?!靖綀D說(shuō)明】[0010]圖1是多模式的Turbo碼和LDPC碼譯碼器的整體架構(gòu)圖。[0011]圖2是單核專用處理器的結(jié)構(gòu)圖。[0012]圖3是地址生成器的結(jié)構(gòu)圖。[0013]圖4是地址生成器在UMTS模式下的流水線示意圖。[0014]圖5是地址生成器在UMTS模式下交織地址非法時(shí)的修正圖。[0015]圖6是地址生成器在LTE模式下的流水線示意圖。[0016]圖7是地址生成器在WiMAX的Turbo模式下的流水線示意圖。[0017]圖8是地址生成器在QC-LDPC模式下的流水線示意圖。[0018]圖9是QC-LDPC第一種讀模式中數(shù)據(jù)存儲(chǔ)示意圖和子矩陣示意圖。[0019]圖10是QC-LDPC第二種讀模式中數(shù)據(jù)存儲(chǔ)示意圖和子矩陣示意圖。[0020]圖11是未定義標(biāo)準(zhǔn)模式下的流水線示意圖?!揪唧w實(shí)施方式】[0021]下面結(jié)合附圖詳細(xì)闡述本發(fā)明技術(shù)方案。[0022]本發(fā)明所提出的地址生成器用于多模式的Turbo碼和LDPC碼譯碼器中,圖1是多模式的Turbo碼和LDPC碼譯碼器的整體架構(gòu)圖。該譯碼器能夠用Turbo碼和LDPC碼的糾錯(cuò)譯碼。輸入接口負(fù)責(zé)各種數(shù)據(jù)輸入,包括控制處理器和專用處理器的指令/數(shù)據(jù)存儲(chǔ)器的初始化,信道信息存儲(chǔ)單元中信道LLR的輸入,各種糾錯(cuò)碼信息的輸入??刂铺幚砥魇且粋€(gè)自定義指令集的RISC處理器,負(fù)責(zé)監(jiān)控整個(gè)譯碼過(guò)程、計(jì)算配置信息、配置專用處理器等。信道信息存儲(chǔ)單元用于存儲(chǔ)信道LLR和LE。片上網(wǎng)絡(luò)模塊負(fù)責(zé)專用處理器和信道信息存儲(chǔ)器以及專用處理器和專用處理器之間的數(shù)據(jù)傳輸。專用處理器負(fù)責(zé)處理具體的地址和算法運(yùn)算,一共有P個(gè)并行的專用處理器。校驗(yàn)處理器對(duì)譯碼的硬判決結(jié)果進(jìn)行校驗(yàn),判斷譯碼是否可以結(jié)束,并輸出譯碼結(jié)果。[0023]圖2是單核專用處理器的結(jié)構(gòu)圖。圖中的地址生成器負(fù)責(zé)讀寫(xiě)地址的生成,讀地址被送入網(wǎng)絡(luò)接口模塊,寫(xiě)地址則送入寫(xiě)出模塊中;MAP處理器從互連網(wǎng)絡(luò)中獲得數(shù)據(jù)(信道LLR和LE),進(jìn)行Turbo和LDPC碼的MAP算法計(jì)算,并將計(jì)算得到的LE發(fā)送給寫(xiě)出模塊;寫(xiě)出模塊緩存從地址生成器來(lái)的寫(xiě)地址,當(dāng)MAP處理器計(jì)算完LE之后,寫(xiě)成模塊將該LE的值和緩存的地址一同發(fā)送給網(wǎng)絡(luò)接口模塊;網(wǎng)絡(luò)接口模塊負(fù)責(zé)將地址和數(shù)據(jù)打包成片上網(wǎng)絡(luò)中的數(shù)據(jù)格式,如果片上網(wǎng)絡(luò)指示要對(duì)當(dāng)前的專用處理器進(jìn)行流控制(流控制信號(hào)為高),那么網(wǎng)絡(luò)接口模塊就進(jìn)入等待狀態(tài),并通知數(shù)據(jù)源(地址生成器或?qū)懗瞿K)暫停,否則網(wǎng)絡(luò)接口模塊就將打好的包發(fā)射到互連網(wǎng)絡(luò)中;狀態(tài)度量存儲(chǔ)器模塊用于存儲(chǔ)Turbo/LDPC譯碼過(guò)程中的狀態(tài)度量、信道LLR和LE,采用LIFO(LastInFirstOut)的結(jié)構(gòu),并且包含了對(duì)Turbo碼狀態(tài)度量的壓縮和解壓縮電路。地址生成器在LDPC的工作模式下通過(guò)消息隊(duì)列會(huì)發(fā)送消息給MAP處理器,為MAP處理器的譯碼提供動(dòng)態(tài)信息。[0024]圖3是地址生成器的電路結(jié)構(gòu)圖。地址生成器采用混合式結(jié)構(gòu),包括指令存儲(chǔ)器、取指令模塊、預(yù)譯碼模塊、取操作數(shù)模塊、多模式地址計(jì)算數(shù)據(jù)通路、通用寄存器、地址寄存器、LTE專用寄存器、配置寄存器和遞交模塊等。其中:[0025]指令存儲(chǔ)器,由輸入接口進(jìn)行初始化,位寬為18位。在一般情況下,Turbo譯碼所需的指令大約為40條,LDPC譯碼所需的指令約為15條??紤]到對(duì)于比較復(fù)雜譯碼情況的支持,本文將指令Memory的深度設(shè)置為128。[0026]取指令模塊,每周期取出兩條連續(xù)的指令,并在該模塊中對(duì)控制類(lèi)指令進(jìn)行識(shí)別和條件判斷,并執(zhí)行控制指令。由于跳轉(zhuǎn)都是在該模塊中完成,而且每周期取出兩條指令,從而保證了REPEAT指令不會(huì)對(duì)流水線造成任何"氣泡"。對(duì)于其他的跳轉(zhuǎn)指令,當(dāng)跳轉(zhuǎn)條件滿足時(shí),跳轉(zhuǎn)所付出的代價(jià)僅為1個(gè)周期,而當(dāng)跳轉(zhuǎn)條件不滿足時(shí),下一條合法指令將會(huì)被直接送入下一級(jí)流水線,不會(huì)造成任何的流水線停頓,保證了指令可以被高效執(zhí)行。[0027]預(yù)譯碼模塊對(duì)指令進(jìn)行初步譯碼,取出指令可尋址的配置寄存器中的值。[0028]取操作數(shù)模塊對(duì)指令進(jìn)行二次譯碼,為下一級(jí)流水線準(zhǔn)備操作數(shù)。[0029]多模式地址計(jì)算數(shù)據(jù)通路包括查找表和乘法模塊、除法模塊、加比選模塊、取模模塊、數(shù)據(jù)存儲(chǔ)器模塊、加比選1模塊,它們由配置寄存器進(jìn)行配置,在不同的配置條件下這些計(jì)算數(shù)據(jù)通路會(huì)形成不同的連接關(guān)系,從而可以完成不同的地址計(jì)算功能;多模式地址計(jì)算數(shù)據(jù)通路的連接具體為:查找表和乘法模塊的數(shù)據(jù)和指令將被發(fā)送到除法模塊、加比選模塊和取模模塊,除法模塊的數(shù)據(jù)和指令將被發(fā)送到加比選模塊和遞交模塊,加比選模塊的數(shù)據(jù)和指令將被發(fā)送到取模模塊、除法模塊和遞交模塊,取模模塊的數(shù)據(jù)將被發(fā)送到加比選模塊、遞交模塊、預(yù)譯碼模塊、通用寄存器、地址寄存器和取操作數(shù)模塊,數(shù)據(jù)存儲(chǔ)器模塊的數(shù)據(jù)將被發(fā)送到查找表一乘法模塊、取模模塊、加比選模塊和遞交模塊,加比選1模塊的輸出發(fā)送到通用寄存器、LTE專用地址寄存器、地址寄存器、除法模塊和取操作數(shù)模塊。[0030]其中:[0031]查找表一乘法模塊中包含了一個(gè)小型的查找表(LUT,lookuptable)以及一個(gè)乘加單元陣列。查找表一乘法模塊中的乘加單元一共有6個(gè),每個(gè)乘加單元的輸入位寬為13比特,輸出位寬為16比特,加法也可以執(zhí)行減法操作。查找表是一個(gè)深度為20、寬度為7比特的小型寄存器堆,提供UMTS算法中的查找表操作。[0032]除法模塊是一個(gè)由乘法器組成的除法器陣列,在交織地址的計(jì)算中經(jīng)常涉及到除法和取模操作,而這些除法或取模的除數(shù)一般變化比較小,可以通過(guò)用被除數(shù)乘以除數(shù)的倒數(shù)來(lái)求取。除法模塊模塊中一共有6個(gè)這樣的除法器,每個(gè)除法器的輸入和輸出的位寬都為15比特。[0033]加比選模塊和加比選1模塊都是加比選(Add-Compare-Select)單元陣列。[0034]數(shù)據(jù)存儲(chǔ)器用于存儲(chǔ)各類(lèi)數(shù)據(jù),包括地址和配當(dāng)前第1頁(yè)1 2