ReedSolomon編解碼器的可編程邏輯實(shí)現(xiàn)編譯器
摘要:
本文引用地址:http://2s4d.com/article/244666.htm本文闡述了專為可編程邏輯優(yōu)化的Reed Solomon編譯碼器的使用及其結(jié)果。詳細(xì)地描述了幾種不同編譯碼器的設(shè)計(jì),并分析了它們資源需求和編譯碼性能。
1.簡(jiǎn)介
本文所述的Reed Solomon編譯碼器編譯器能夠產(chǎn)生多種代碼形式的Reed Solomon的宏編碼器和譯碼器,這些代碼形式在參數(shù)部分詳細(xì)說明,一旦確定了代碼,可以對(duì)頂層HDL代碼以Altera 10K器件進(jìn)行編譯。通常,編碼器編譯包括裝配和布線不超過一分鐘,而譯碼器編譯也只要五分鐘。這個(gè)應(yīng)用程序也能夠產(chǎn)生測(cè)試代碼,可以驗(yàn)證所生成內(nèi)核的功能。
有三種Reed Solomon 編譯碼器的宏單元,一個(gè)是編碼器,另兩個(gè)是譯碼器它們是為不同規(guī)模/性能要求而優(yōu)化的。性能較低的譯碼器,也依據(jù)分立譯碼器,接收一個(gè)碼字,計(jì)算差錯(cuò)位置和值,寫回糾正后的碼字。性能較高的譯碼器,或流譯碼器,連續(xù)讀取和寫回碼字。流譯碼器或多或少地多使用一些邏輯,但需要更多的存儲(chǔ)空間,由于譯碼模塊之間進(jìn)行流水線作業(yè)因此性能有很大程度的改善。
2.參數(shù)
以下參數(shù)定義了Reed Solomon碼字。
A.每個(gè)碼字的符號(hào)總數(shù)
每個(gè)碼字有多達(dá)2m-1個(gè)符號(hào),也就是N。對(duì)Reed Solomon編譯器,N必須大于3,受最小的R+1限制。
B.校驗(yàn)符號(hào)數(shù)目
編譯器支持4到40個(gè)校驗(yàn)符號(hào),或者R,受最大N-1校驗(yàn)符號(hào)限制。
C.每個(gè)符號(hào)的位數(shù)
雖然Reed Solomon碼字可以為每個(gè)符號(hào)定義任意位數(shù)m,但編譯器的有效范圍從4到8比特。
D.不可約域多項(xiàng)式
域多項(xiàng)式,或域(field),指定了有限域中元素的級(jí)數(shù)。域的大于由m給定,每個(gè)域大小僅受限于有效域多項(xiàng)式數(shù)目。域多項(xiàng)式通常由系統(tǒng)規(guī)范確定,但是對(duì)于給定的m,編譯器能夠使用任何有效的域多項(xiàng)式。另外FIELD.EXE應(yīng)用程序可以根據(jù)任意m計(jì)算所有有效的域。
E.生成多項(xiàng)式的第一個(gè)根
域多項(xiàng)式描述的符號(hào)內(nèi)各位之間的關(guān)系,而生成多項(xiàng)式則描述了符號(hào)之間的關(guān)系。生成多項(xiàng)式在編碼期間生成校驗(yàn)符號(hào)。編譯器支持0到2m-1-R之間的genstart。
3.設(shè)計(jì)流程
使用第二節(jié)中描述的參數(shù),DOS應(yīng)用程序?qū)⑸捎糜贖DL結(jié)構(gòu)框架設(shè)計(jì)的插件。用于生成編碼器的應(yīng)用程序是ENCRSV3,生成譯碼器的應(yīng)用程序是DECRSV3??梢园吹诙?jié)所列的參數(shù)順序調(diào)用這兩個(gè)應(yīng)用程序。應(yīng)用程序會(huì)檢驗(yàn)并確認(rèn)參數(shù)處于有效范圍內(nèi),確認(rèn)這些參數(shù)組合能夠生成有效的RS碼。應(yīng)用程序還可以為這個(gè)RS編譯碼產(chǎn)生測(cè)試代碼,馬上就可以進(jìn)行功能測(cè)試了。
程序運(yùn)行之后,就能夠以獨(dú)立的設(shè)計(jì)或作為更大系統(tǒng)設(shè)計(jì)的一部分編譯所需功能的頂層HDL。
4.資源要求
所需資源的數(shù)量主要取決于m和R。每個(gè)碼字的符號(hào)數(shù)目不會(huì)影響譯碼器所需邏輯,因?yàn)榻邮盏姆?hào)存儲(chǔ)在Altera 10K器件的嵌入存儲(chǔ)塊中。
編碼器需要很少的邏輯單元,而不需要存儲(chǔ)塊。編碼器的規(guī)模隨m和R線性變化。圖1為當(dāng)m=8時(shí),編碼器規(guī)模和R的關(guān)系。
雖然對(duì)給定的m的R,分立和流式譯碼器之間有大略的線性關(guān)系,但它們的規(guī)模隨m和R呈幾何增長(zhǎng)。除了邏輯之外,分立譯碼器需要兩個(gè)嵌入存儲(chǔ)塊,而流式譯碼器需要五個(gè)存儲(chǔ)塊。若生成多項(xiàng)式的第一個(gè)根大于零,那么需要更多的存儲(chǔ)塊。圖2為m=8時(shí),譯碼器規(guī)模和R的關(guān)系。
5.計(jì)算系統(tǒng)性能
編碼器的性能取決于m和R,以及器件的布線和裝配。通常絕大部分的參數(shù)組合都可以實(shí)現(xiàn)40MHz系統(tǒng)時(shí)鐘速度,這說明編碼器的性能一般高于譯碼器。當(dāng)編碼每個(gè)時(shí)期你生一個(gè)符號(hào),吞吐速率和系統(tǒng)時(shí)鐘速率一樣。
譯碼器的系統(tǒng)性能取決于系統(tǒng)時(shí)鐘速率以及所選的RS碼字。處理一個(gè)碼字所需的最小和最大時(shí)鐘速率,取決于N和R。如果接收碼字的差錯(cuò)小于最大差錯(cuò)數(shù)目t,譯碼所需的時(shí)鐘周期小于最大周期數(shù)。若接收的碼字多于t個(gè)差錯(cuò),那么最大時(shí)鐘周期后,譯碼器輸出接收的碼字,并把DECFAIL標(biāo)志置位。
分立和流式譯碼器均有規(guī)模/性能(size/performance)權(quán)衡參數(shù)speed,它可以設(shè)置為single或double。實(shí)現(xiàn)double(加倍)內(nèi)部處理單元無需很多的額處邏輯,不多于2m2個(gè)邏輯單元。速度參數(shù)也會(huì)提高分立譯碼器的性能,但可能會(huì)影響流譯碼器的吞吐量。
當(dāng)N為碼字的最大允許值(2m-1)時(shí),譯碼器的吞吐量最大。
A.分立譯碼器
當(dāng)speed為single時(shí),分立譯碼器的最大延如下,其中包括讀取接收的碼字和寫回糾正后的碼字。
3N+3R 2 (1)
對(duì)于較大的R值,那么延遲主要決定于第二項(xiàng)。
當(dāng)speed是double時(shí),分立譯碼器的最大延遲為:
3N+1.7R 2 (2)
對(duì)于R小于14,譯碼可能需要額外延遲40個(gè)周期。若R值更大,延遲可能稍微短一些。
圖3為不同參數(shù)N,R以及speed對(duì)分立譯碼器吞吐量的影響。對(duì)于較小的R,N和speed譯碼器的性能沒有多大影響。
隨著R的增加,N對(duì)系統(tǒng)吞吐量變得非常重要。這是因?yàn)橄到y(tǒng)吞吐量是測(cè)算單位時(shí)間內(nèi)符號(hào)的數(shù)目,隨著R增加,N對(duì)延遲的影響微不足道。
對(duì)于較大的R,譯碼器的吞吐量和N成正比。隨著R的增加,speed參數(shù)的影響簡(jiǎn)單地由上述(1)和(2)式?jīng)Q定。當(dāng)speed設(shè)置為double時(shí),性能提升50%。
B.流式譯碼器
當(dāng)speed是single時(shí),流式譯碼器每個(gè)碼字的最大延遲為:
max{(N+R),(3R2)} (3)
當(dāng)speed是double時(shí),流式譯碼器每個(gè)碼字的最大延遲為:
max{(N+R),(1.7R2)} (4)
此外,和分立譯碼器一樣,延遲隨R變化很?。ㄗ疃?0個(gè)周期)。
圖4說明了不面N和R對(duì)性能的影響。R越大,增加N或者把speed參數(shù)設(shè)置為double的影響越大。
對(duì)特定的m,系統(tǒng)時(shí)鐘頻率保持相對(duì)穩(wěn)定,隨m只有輕微變化。
6.結(jié)論
高性能的Reed Solomon 編碼器和譯碼器可以采用完全參數(shù)化的工具方便地進(jìn)行設(shè)計(jì)。這些Reed Solomon核能綜合到可編程邏輯中,可以生成和標(biāo)準(zhǔn)器件(ASSP)面樣級(jí)數(shù),或性能更優(yōu)的編譯碼器。
在綜合之前要給定RS的參數(shù),估計(jì)核的大小和性能。
評(píng)論