国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

RS譯碼的高層次綜合實(shí)現(xiàn)

2018-09-10 17:26楊振學(xué)王歡
關(guān)鍵詞:結(jié)構(gòu)優(yōu)化

楊振學(xué) 王歡

摘要:采用高層次綜合技術(shù)實(shí)現(xiàn)RS譯碼電路,通過對(duì)RS譯碼C代碼結(jié)構(gòu)不同層次的優(yōu)化,包括循環(huán)展開、求余簡化、數(shù)據(jù)存儲(chǔ)優(yōu)化及算法結(jié)構(gòu)優(yōu)化等,探索了不同的結(jié)構(gòu)對(duì)于綜合后硬件電路性能和資源的影響。與傳統(tǒng)RTL設(shè)計(jì)相比,使用高層次綜合技術(shù)進(jìn)行RTL設(shè)計(jì)大大節(jié)省了設(shè)計(jì)時(shí)間,減少了硬件的設(shè)計(jì)難度,降低了整體電路的設(shè)計(jì)風(fēng)險(xiǎn)。

關(guān)鍵詞:RS譯碼;RTL設(shè)計(jì);高層次綜合;結(jié)構(gòu)優(yōu)化

中圖分類號(hào):TP336文獻(xiàn)標(biāo)志碼:A文章編號(hào):1008-1739(2018)12-54-4

Implementation of RS Decoding Algorithm Based on High-level Synthesis

YANG Zhenxue, WANG Huan(The 54th Research Institute of CETC, Shijiazhuang Hebei 050081, China)

0引言

近年來,隨著通信電路應(yīng)用的高速發(fā)展,通信系統(tǒng)對(duì)電路設(shè)計(jì)周期的要求越來越高。而通信系統(tǒng)中,通信IP的設(shè)計(jì)是關(guān)鍵。在通信IP的RTL設(shè)計(jì)時(shí),使用傳統(tǒng)方法設(shè)計(jì)的工程迭代周期長、代碼復(fù)用困難,這些弊端逐漸成為影響設(shè)計(jì)的重要因素。高層次綜合技術(shù)就在此時(shí)應(yīng)運(yùn)而生,可以實(shí)現(xiàn)直接從算法級(jí)的高級(jí)語言到RTL級(jí)的HDL語言的轉(zhuǎn)換,從而有效地縮短通信系統(tǒng)FPGA驗(yàn)證或IC設(shè)計(jì)的研發(fā)周期[1]。

高層次綜合技術(shù)在實(shí)現(xiàn)時(shí)首先要完成算法設(shè)計(jì),依據(jù)工程要求設(shè)計(jì)好約束,使用高級(jí)綜合工具就可以完成由C語言到RTL代碼的自動(dòng)轉(zhuǎn)換。使用高層次綜合技術(shù)進(jìn)行硬件設(shè)計(jì)減少了傳統(tǒng)手工編碼可能會(huì)引入的設(shè)計(jì)誤差,更重要的是在實(shí)現(xiàn)速度上要快很多,從而縮短通信系統(tǒng)整體的設(shè)計(jì)周期。綜合工具并不會(huì)對(duì)硬件實(shí)現(xiàn)的具體細(xì)節(jié)進(jìn)行約束,它探索不同的實(shí)現(xiàn)方案,并快速計(jì)算出不同微架構(gòu)對(duì)硬件實(shí)現(xiàn)結(jié)果的影響,這樣可以實(shí)現(xiàn)在較短時(shí)間內(nèi)對(duì)即將實(shí)現(xiàn)的硬件方案在性能、面積和功耗三者之間折中[2-4]。

1 RS譯碼原理

RS碼是一種性能優(yōu)良的線性分組碼,不僅可以糾正隨機(jī)錯(cuò)誤,還可以糾正突發(fā)錯(cuò)誤,特別是在中短碼長的情況下,其性能幾乎接近理論值。RS碼的編碼效率很高,適合實(shí)時(shí)性要求較高的信息傳輸場合,故在數(shù)字通信系統(tǒng)中使用廣泛,可以作為提高數(shù)據(jù)傳輸和數(shù)據(jù)存儲(chǔ)可靠性的重要手段[5]。隨著SoC技術(shù)的不斷發(fā)展,市場競爭愈發(fā)激烈,如何在更短的時(shí)間內(nèi)設(shè)計(jì)出更符合要求的產(chǎn)品成為研究重點(diǎn)。

在不同的系統(tǒng)中,對(duì)于RS碼的參數(shù)要求可能不同,這使得RS編譯碼器,尤其是設(shè)計(jì)較為復(fù)雜的譯碼器的復(fù)用比較困難[6]。但是在使用C、C++等高級(jí)語言進(jìn)行的算法級(jí)設(shè)計(jì)中修改參數(shù)會(huì)非常簡便,利用高層次綜合技術(shù)可以快速高效地實(shí)現(xiàn)RS譯碼器的硬件設(shè)計(jì)。在本設(shè)計(jì)中使用C語言完成算法設(shè)計(jì),然后使用Synopsis公司的高層次綜合工具SCC進(jìn)行綜合,最后實(shí)現(xiàn)硬件電路的設(shè)計(jì)。

2 RS譯碼電路實(shí)現(xiàn)

使用高層次綜合技術(shù)進(jìn)行RTL設(shè)計(jì)的流程圖如圖1所示。

從圖1可以看出,原來傳統(tǒng)流程中的微架構(gòu)設(shè)計(jì)、RTL代碼編寫以及時(shí)序優(yōu)化等幾個(gè)過程都被高級(jí)綜合技術(shù)取代了。使用高級(jí)綜合技術(shù)進(jìn)行設(shè)計(jì)的優(yōu)點(diǎn)是C代碼程序可以被高級(jí)綜合工具自動(dòng)分析,避免了系統(tǒng)工程師、邏輯工程師和驗(yàn)證工程師因?yàn)闇贤ㄉ系钠疃a(chǎn)生設(shè)計(jì)上的不足,并且可以縮短設(shè)計(jì)周期。

2.1 RS譯碼的C代碼優(yōu)化

高層次綜合工具可以自動(dòng)分析C代碼結(jié)構(gòu),并根據(jù)分析結(jié)果調(diào)用不同的硬件資源。本設(shè)計(jì)中使用SCC高級(jí)綜合工具。雖然綜合工具有很強(qiáng)的優(yōu)化能力,但是優(yōu)化結(jié)果還是依賴于設(shè)計(jì)者對(duì)于代碼的合理結(jié)構(gòu)設(shè)計(jì)和良好的代碼風(fēng)格。良好的代碼架構(gòu)設(shè)計(jì)會(huì)使綜合工具達(dá)到最優(yōu)的綜合輸出,而不好的代碼架構(gòu)設(shè)計(jì)會(huì)使綜合工具產(chǎn)生錯(cuò)誤的綜合輸出[7]。

軟件工程師在進(jìn)行算法設(shè)計(jì)時(shí)并不會(huì)對(duì)硬件結(jié)構(gòu)進(jìn)行考慮,例如數(shù)據(jù)的并行操作及流水線操作等,這樣的算法結(jié)構(gòu)直接進(jìn)行綜合可能不會(huì)得到性能最優(yōu)的硬件電路,所以在進(jìn)行綜合之前需要先對(duì)C代碼結(jié)構(gòu)進(jìn)行優(yōu)化。

2.1.1循環(huán)展開

RS譯碼算法中存在大量的循環(huán)操作,C程序是依次執(zhí)行,屬于順序結(jié)構(gòu)。而RTL語言程序是可以在同一時(shí)間執(zhí)行,屬于并行結(jié)構(gòu)。在綜合時(shí),為了提高數(shù)據(jù)的處理速度,可以選擇將能同時(shí)處理的計(jì)算進(jìn)行并行操作。循環(huán)展開的聲明設(shè)置為“#pragma unroll”。具體來說,循環(huán)展開允許在當(dāng)前迭代結(jié)束之前開始新的迭代計(jì)算。使用一個(gè)小代碼進(jìn)行具體說明,如圖2所示,圖2(a)是對(duì)C代碼進(jìn)行的具體約束,而圖2(b)則是對(duì)約束后的代碼結(jié)構(gòu)進(jìn)行的圖示說明。

但并不是所有的循環(huán)都適合添加循環(huán)展開約束,例如數(shù)據(jù)操作之間有依賴關(guān)系的,只能按照順序執(zhí)行,不能進(jìn)行循環(huán)展開操作。

2.1.2流水線設(shè)計(jì)

在SCC綜合工具中定義了task ii,即在映射成硬件時(shí),函數(shù)連續(xù)調(diào)用的最短時(shí)間間隔。在對(duì)RS譯碼硬件結(jié)構(gòu)增加流水線設(shè)計(jì)時(shí),需要使用此命令進(jìn)行約束。在本次的RS譯碼設(shè)計(jì)中碼長為179,故將task ii約束為179。

在綜合時(shí)進(jìn)行多任務(wù)流水線處理時(shí),需要對(duì)配置寄存器和存儲(chǔ)器數(shù)組復(fù)制多個(gè)以備同時(shí)使用,否則多任務(wù)平臺(tái)對(duì)同一個(gè)寄存器或者存儲(chǔ)器進(jìn)行操作時(shí)不能做到任務(wù)流水線化。一般可以在C代碼中,對(duì)需要同時(shí)被多個(gè)任務(wù)使用的數(shù)組進(jìn)行“#pragma multi_buffer”命令來指定映射成多個(gè)存儲(chǔ)器。

2.2 C代碼優(yōu)化

2.2.1算法改進(jìn)

在對(duì)V1版本的硬件電路進(jìn)行分析時(shí),發(fā)現(xiàn)在C代碼中使用了大量的乘除法以及求余運(yùn)算操作,進(jìn)行硬件映射時(shí)會(huì)占用較大的資源,考慮到可以使用加減法代替以減少大量乘法器和除法器的使用。例如,計(jì)算伴隨式s[i]的過程中,使用的是迭代循環(huán)計(jì)算,由于s[i]的計(jì)算方式的關(guān)系,會(huì)大量使用乘法器以及除法器,在進(jìn)行并行操作過程中會(huì)造成大量資源的浪費(fèi),代碼實(shí)現(xiàn)的方式如圖3(a)所示。

在進(jìn)行綜合時(shí)添加約束時(shí)需要對(duì)進(jìn)行循環(huán)展開,生成的Verilog代碼結(jié)果是同時(shí)對(duì)s[1],s[2],……,s[16]一共16個(gè)元素展開并行計(jì)算。改進(jìn)方法是使用加法代替乘法運(yùn)算,這樣就可以消除占用很多資源的乘法器,而且加法器的實(shí)現(xiàn)要比乘法器容易,實(shí)現(xiàn)方案如圖3(b)所示。

2.2.2優(yōu)化數(shù)據(jù)存儲(chǔ)

在使用高級(jí)綜合工具SCC實(shí)現(xiàn)C代碼到RTL代碼自動(dòng)轉(zhuǎn)換過程中,對(duì)于二維數(shù)組映射成硬件時(shí),會(huì)將所有數(shù)據(jù)存儲(chǔ),并設(shè)置相應(yīng)的輸出端口,不會(huì)將其按行進(jìn)行拆解存儲(chǔ)。這對(duì)于數(shù)據(jù)較多的數(shù)組來說,會(huì)使用占用空間較大的寄存器,從而占用較多的硬件資源。為了達(dá)到一個(gè)在資源上更優(yōu)化的結(jié)果,如果將多維數(shù)組分割設(shè)計(jì)成多個(gè)子數(shù)組,就可以將每個(gè)數(shù)組的端口數(shù)減少,這樣的設(shè)計(jì)可以在綜合存儲(chǔ)器結(jié)構(gòu)時(shí)因減少端口降低硬件資源消耗。

在V1版本的C代碼基礎(chǔ)上對(duì)以上2個(gè)方面進(jìn)行改進(jìn),形成V2版本進(jìn)行綜合,也可以得到在性能上滿足要求的RTL代碼。

2.3結(jié)構(gòu)優(yōu)化

在V2版本的基礎(chǔ)上,為了尋求更少的資源調(diào)用及更優(yōu)化的結(jié)構(gòu),借用硬件設(shè)計(jì)思維對(duì)RS譯碼的C代碼進(jìn)行重新改寫。SCC軟件在進(jìn)行高級(jí)綜合時(shí),對(duì)C代碼結(jié)構(gòu)要求比較嚴(yán)格,不同的C代碼結(jié)構(gòu)會(huì)產(chǎn)生不同的綜合結(jié)果。在本設(shè)計(jì)中采用外置RAM塊結(jié)構(gòu),進(jìn)行數(shù)據(jù)存儲(chǔ)。

以(179,163)的RS譯碼為例,具體實(shí)現(xiàn)流程如圖4所示。以接收到某一次的譯碼數(shù)組為例,由于RS碼組的碼長為179,故在第一個(gè)碼長周期時(shí)將數(shù)據(jù)存放在第1個(gè)RAM中;在第2個(gè)碼長周期中(=1~179),將第1組碼取出并計(jì)算其伴隨式Si,同時(shí)將接收到的第2組RS碼存放到第2塊RAM中;在第3個(gè)碼長周期中,第1組RS碼根據(jù)在上一個(gè)周期計(jì)算出的伴隨式來計(jì)算錯(cuò)誤位置多項(xiàng)式da,而第2組RS碼可以計(jì)算其伴隨式Si,同時(shí)將接收到的第3組RS碼存放在第3塊RAM中;在第4個(gè)碼長周期中,第1組RS碼可以計(jì)算出錯(cuò)誤位置以及錯(cuò)誤值,然后在經(jīng)過糾錯(cuò)后直接輸出,而第2組碼進(jìn)行錯(cuò)誤位置多項(xiàng)式的計(jì)算,第3組碼進(jìn)行伴隨式的計(jì)算,同時(shí)將接收到的第4組碼存放在第4塊RAM中;由于第1組RS碼已成功譯碼,所以當(dāng)接收到第5組RS碼時(shí)可以存放在第1塊RAM中,再重復(fù)以上步驟,則圖4中數(shù)據(jù)組接收順序?yàn)椋?3)(-2)(-1)(1)(2)(3)(4)。

2.4優(yōu)化結(jié)果對(duì)比

對(duì)3種不同層次的優(yōu)化結(jié)構(gòu)在軟件Synphony C Compiler下分別進(jìn)行綜合。頻率約束都設(shè)置為200 MHz。SCC的綜合過程可以分為2個(gè)互補(bǔ)的部分:build和仿真驗(yàn)證。在RS的build階段,會(huì)將C代碼通過一些中間轉(zhuǎn)換(Preprocess、Schedule、Synthesize)最后生成RTL代碼,而每一個(gè)中間轉(zhuǎn)換過程都會(huì)有相應(yīng)的仿真,這是為了驗(yàn)證每一個(gè)中間轉(zhuǎn)換過程的正確性。任何一個(gè)中間階段的失敗都需要返回修改或者調(diào)整C代碼[8]。SCC綜合完成之后,除生成了可用的RS的RTL代碼之外,還有一些資源使用情況評(píng)估報(bào)告,代碼性能評(píng)估情況報(bào)告,以及供一些下游工具(仿真工具和綜合工具)使用的腳本。通過這些報(bào)告以及SCC工具提供的各種架構(gòu)分析可以及時(shí)了解RTL代碼的性能,通過預(yù)先指定的工藝庫可以進(jìn)行ASIC下的資源使用評(píng)估。

對(duì)比3個(gè)版本的綜合結(jié)果,首先都實(shí)現(xiàn)了硬件功能需求,能夠完成RS譯碼功能,能糾正最多8個(gè)錯(cuò)誤數(shù)據(jù)。通過對(duì)V1版本中運(yùn)算單元以及數(shù)據(jù)存儲(chǔ)方式優(yōu)化后得到的V2版本,根據(jù)SCC工具給出的評(píng)估報(bào)告可以知道,資源的調(diào)用上減少到原來的1/3。而V3版本的C代碼結(jié)構(gòu)借用了硬件設(shè)計(jì)的思路,將每個(gè)模塊之間的具有依賴關(guān)系的數(shù)據(jù)采用外置RAM數(shù)據(jù)存儲(chǔ),取代原先寄存器存儲(chǔ)的方式,不僅在硬件結(jié)構(gòu)上進(jìn)行了優(yōu)化,資源的使用也進(jìn)一步減少。SCC工具綜合后在report_summary.txt文檔給出了使用TSMC65gp工藝時(shí)3個(gè)版本資源的使用預(yù)估情況,如表1所示。

3結(jié)束語

通過對(duì)3種版本的優(yōu)化方式進(jìn)行比較,發(fā)現(xiàn)在進(jìn)行高層次綜合時(shí),對(duì)C代碼的優(yōu)化過程是必不可少的,而C代碼結(jié)構(gòu)越優(yōu)化,生成的硬件電路也就越理想。經(jīng)過循環(huán)展開、求余簡化、數(shù)據(jù)存儲(chǔ)優(yōu)化以及結(jié)構(gòu)修改,探索了不同層次的C代碼優(yōu)化對(duì)生成硬件電路的性能和資源的影響。結(jié)果表明,在算法性能滿足要求的情況下,利用高層次綜合技術(shù)可以極大地降低設(shè)計(jì)復(fù)雜度,充分探索不同設(shè)計(jì)結(jié)構(gòu)和約束對(duì)設(shè)計(jì)結(jié)果的影響,快速選擇出一種較優(yōu)的設(shè)計(jì)方案。

由于高級(jí)綜合技術(shù)發(fā)展時(shí)間較短,還有一些地方不是特別的完善。在綜合過程中,需要根據(jù)硬件的需求來對(duì)C代碼結(jié)構(gòu)描述進(jìn)行優(yōu)化,以得到較優(yōu)的硬件電路。但是使用高層次綜合技術(shù)生成Verilog代碼的方式與傳統(tǒng)的編寫方式相比,在功能滿足需求的情況下,不僅使設(shè)計(jì)周期縮短,還可以提前對(duì)設(shè)計(jì)風(fēng)險(xiǎn)進(jìn)行評(píng)估,根據(jù)通信系統(tǒng)目標(biāo)需求提早對(duì)代碼進(jìn)行修改,降低設(shè)計(jì)后期出現(xiàn)問題的概率。

參考文獻(xiàn)

[1]游余新.利用Mentor高層次綜合技術(shù)(Catapult Synthesis)快速實(shí)現(xiàn)復(fù)雜DSP算法[J].中國集成電路,2007(5):35-41.

[2]孟祥剛,陳瑤,高騰,等.FFT算法硬件模塊的高層次綜合實(shí)現(xiàn)與優(yōu)化[J].微電子學(xué),2017,47(2):217-221.

[3]張望,賈佳,孟淵,等.基于高層次綜合的AES算法研究與設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2017,37(5):1341-1346.

[4]李東海,楊小軍,楊云,等.多項(xiàng)式數(shù)據(jù)通路的高層次綜合方法[J].北京郵電大學(xué)學(xué)報(bào),2017,40(1):130-136.

[5]胡玉樂.RS譯碼加速器的實(shí)現(xiàn)[D].北京:北京郵電大學(xué), 2011.

[6]胡智寬.基于RS編譯碼的數(shù)字通信電路FPGA設(shè)計(jì)研究[D].北京:北京理工大學(xué),2015.

[7]李璐.基于C/C++的高層次綜合應(yīng)用研究[D].南京:東南大學(xué),2009.

[8]王歡,李斌,張磊.基于高級(jí)綜合技術(shù)的RS算法實(shí)現(xiàn)[J].中國集成電路,2016,25(11):46-49.

猜你喜歡
結(jié)構(gòu)優(yōu)化
優(yōu)化張家界旅游業(yè)“六要素”結(jié)構(gòu)對(duì)策研究
精益管理理念下的人才隊(duì)伍結(jié)構(gòu)優(yōu)化實(shí)證研究
基于溫升試驗(yàn)的10kV開關(guān)柜結(jié)構(gòu)優(yōu)化設(shè)計(jì)
改進(jìn)的多目標(biāo)快速群搜索算法的應(yīng)用
某不銹鋼車水箱安裝框架強(qiáng)度分析與結(jié)構(gòu)優(yōu)化
景觀美感視野下旅游目的地空間分形與結(jié)構(gòu)優(yōu)化芻議
基于Hyperworks Inspire的結(jié)構(gòu)拓?fù)鋬?yōu)化設(shè)計(jì)
中韓貿(mào)易結(jié)構(gòu)優(yōu)化策略探析
醫(yī)療保險(xiǎn)制度的經(jīng)濟(jì)社會(huì)效應(yīng)和結(jié)構(gòu)優(yōu)化探究
服務(wù)貿(mào)易結(jié)構(gòu)優(yōu)化路徑研究
万州区| 蚌埠市| 江油市| 新晃| 聂荣县| 蒲城县| 合川市| 漳平市| 油尖旺区| 漳浦县| 孟连| 怀宁县| 英德市| 五家渠市| 新安县| 息烽县| 巴楚县| 达尔| 普兰县| 措美县| 安顺市| 中江县| 保康县| 铁力市| 高陵县| 余姚市| 大荔县| 缙云县| 斗六市| 仙居县| 福贡县| 怀远县| 太白县| 逊克县| 竹山县| 奎屯市| 抚松县| 金山区| 乌拉特中旗| 永城市| 武冈市|