999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

SystemC在Turbo碼實現和驗證中的應用

2009-05-12 03:14:34
現代電子技術 2009年5期

李 源

摘 要:在簡述SystemC的設計方法和流程的基礎上,針對SystemC在硬件芯片系統級設計和寄存器傳輸級設計的特點,以Turbo編碼器為對象和開發目的,研究了SystemC基于寄存器傳輸級設計的可實現性,利用SystemC的模塊化功能,通過分析Turbo編碼器的結構與信號流圖,進行建模仿真直到最后完成劃分硬件模塊與編程并在FPGA完成其實現與驗證,充分證明了SystemC完全適用于基于寄存器傳輸級設計的IC應用。此外,此設計將系統級設計與寄存器傳輸級設計的工作合二為一,大大節省了開發的流程時間。

關鍵詞:SystemC;Turbo;系統級設計;寄存器傳輸級;FPGA;測試平臺

中圖分類號:TP274文獻標識碼:B

文章編號:1004-373X(2009)05-163-04

Application and Verification of Turbo Codec with SystemC

LI Yuan

(Shanghai Jiaotong University,Shanghai,200030,China)

Abstract:The paper introduces methods and flows of IC design using SystemC firstly.And then researches and implements a Turbo encoder with RTL design using SystemC according its functionality of SLD and RTL capability.To prove the RTL capability of SystemC especially,the paper analyzes the structure and signal flows of Turbo encoder,simulats the Turbo modeling until finally completes the hardware design and implements it on a FPGA platform using a simulation testbench for verification.It saves more design times because it merges the SLD and RTL design to one step.

Keywords:SystemC;Turbo;system level design;RTL;FPGA;testbench

收稿日期:2008-09-16

0 引 言

在傳統硬件設計方法中,系統級設計(SLD)往往使用高級語言進行描述以實現各功能模塊的算法,而在寄存器傳輸級(RTL)使用硬件描述語言如VHDL和Verilog HDL進行描述。但隨著深亞微米時代的到來,集成電路規模越來越復雜,為了實現較高層次如系統級的軟件和硬件描述,較好地實現軟硬件的協同設計,業界推出了SystemC語言,但是SystemC的優點并不僅僅是針對于此,而且還表現在它使得系統級設計和RTL級設計均可能在同一平臺下完成。

本文主要針對SystemC可以像使用VHDL或者Verilog語言一樣進行RTL級和行為級的建模的特點,討論了基于SystemC RTL級設計的Turbo編碼器的實現和驗證,并在FPGA平

臺上進行其系統實現。

1 SystemC簡介

SystemC[1,2]是由開放性、非盈利性的SystemC聯盟組織(Open SystemC Initiative,OSCI)推出的一種系統級設計和驗證語言,SystemC是基于C++的建模平臺,其本質是在C++的基礎上添加了硬件擴展庫和仿真核,支持EDA設計中的各個抽象層次,如寄存器級、行為級、系統級的建模,能夠表達并發性、實時性、交互性等硬件模型的概念。

SystemC是完全免費并且開放的,它的源代碼可以使用任何標準C++編譯環境進行編譯,生成可執行文件。通過使用SystemC類庫,設計者可以根據不同的需求編寫目標系統的系統級(system level)、行為級(behavioral level)或RTL級的SystemC模型代碼。

SystemC中的模塊用關鍵字SC_MODULE來定義,其端口定義與Verilog類似。在SystemC中,進程是一個基本的執行單元,它被調用來仿真目標系統的行為。進程的行為是多樣化的,可以實現某個函數的功能,也可以在運行過程中被掛起,并且進程是并行執行的,一個進程中不能包含或直接調用其他進程。SystemC的進程主要有兩種,事件進程(SC_METHOD)和線程進程(SC_THREAD)。事件進程是惟一可以綜合的RTL進程,它的特點是當敏感表上有事件發生時,它就被調用,調用后立即返回。只有該類進程返回后,仿真系統的時間才有可能前進,因此該類進程不能被掛起(類似于Verilog中的always)。線程進程不是RTL級進程,它可以被掛起和重新激活,所以它的一個重要用途是用來描述驗證平臺(testbench) [3]。

2 Turbo編碼器的SystemC實現與仿真

2.1 Turbo編碼器簡述

Turbo碼編碼器[4-5]是由兩個反饋的系統卷積碼編碼器通過一個隨機交織器并行連接而成,編碼后的校驗位經過刪余陣,從而產生不同碼率的碼字。由于Turbo碼能得到較大的編碼增益,因此許多低信噪比通信系統中都選擇了Turbo作為信道編碼。

本文中實現的Turbo碼為3GPP中專用信道使用的編碼格式,碼率為1/3,其生成矩陣如下所示:

G(D)=1,1+D+D31+D2+D3

對于碼率為1/3的Turbo碼,不存在刪余部分。其編碼器結構圖如圖1所示。

圖1 3GPP八狀態Turbo碼編碼器結構

2.2 Turbo編碼器的SystemC實現

首先對系統可以進行模塊劃分,整個編碼器是一個大模塊,其中包含一個交織子模塊,兩個結構完全相同的分量碼編碼子模塊RSC,以及一個事件進程來完成最后編碼的輸出,它們之間采用同步時鐘進行時序同步。為了簡化起見,這里交織器就只采用隨機交織方式完成。

為完成整個Turbo碼編碼系統的驗證和仿真,還必須有激勵模塊和顯示輸出模塊,以達到驗證和觀察系統實現的正確性。整個系統的SystemC實現及測試方法模塊說明如圖2所示。

圖2 SystemC系統實現測試模塊說明圖

其中主模塊內部系統信號流圖如圖3所示。通過圖3可以清楚地看到各個子模塊和事件進程的輸入輸出信號關系,以達到更加清晰的實現目的。

圖3 TurboEncMain模塊系統信號流圖

為了完成對Turbo碼實現的系統驗證以及最接近硬件邏輯的RTL級驗證,必須在使用SystemC時注意要編寫完全可綜合風格的代碼,所以代碼的實現必須嚴格按圖1的編碼結構來進行。其中核心的RSC模塊類封裝參考如下:

SC_MODULE(RSC)

{

sc_in<bool>clk;

sc_in<bool>Xin;

sc_out<bool> Yout;

sc_signal<bool>d1,d2,d3;

SC_CTOR(RSC)

{

SC_METHOD(entry);

dont_initialize();

sensitive_pos(clk);

d1 = 0;

d2 = 0;

d3 = 0;

}

void entry();

};

2.3 SystemC驗證仿真

為了對設計進行驗證,Stimulus模塊完成Testbench的輸入和仿真過程的控制功能,Display模塊完成打印和輸出Trace及log(VCD文件)的功能。為了簡便起見,設計的輸入幀長為100 b,其Testbench的設計及理論輸出如下:

輸入Input序列為:0xACBC,0xD211,0x4CAE,0x1577,0xC6DB, 0xF4C9,0x0;

交織后輸入的Input_de序列為:0xBD85,0x078C,0x1D2A,0xBB80,0xEEEE,0xF973,0xA;

理論上此結構Turbo編碼輸出result(以3 b為一個碼元輸出共300 b)如下序列:

0x7,0x3,0x4,0x1,0x5,0x6,0x2,0x1,0x5,0x0,0x7,0x6,0x7,0x6,0x0,0x2,0x6,0x6,0x3,0x4,0x1,0x2,0x5,0x1,0x2,0x2,0x2,0x7,0x3,0x1,0x3,0x5,0x1,0x4,0x0,0x0,0x4,0x4,0x2,0x4,0x4,0x0,0x4,0x1,0x7,0x7,0x7,0x0,0x3,0x1,0x2,0x5,0x1,0x5,0x0,0x7,0x1,0x5,0x5,0x5,0x0,0x4,0x7,0x4,0x4,0x5,0x0,0x3,0x3,0x4,0x4,0x1,0x4,0x6,0x3,0x6,0x7,0x2,0x5,0x7,0x7,0x5,0x6,0x5,0x2,0x7,0x2,0x1,0x4,0x6,0x2,0x0,0x4,0x1,0x0,0x5,0x3,0x7,0x2,0x6。

本設計Testbench的輸出VCD波形用Wave VCD Viewer顯示,如圖4所示。實際上使用了多組Testbench對設計進行驗證,最終的輸出均表明本設計符合理論要求。

圖4 設計仿真輸出波形

3 FPGA實現與驗證

3.1 FPGA系統實現

經過上面的仿真設計,驗證了RTL模型的結構,就可以進行后面的ASIC設計或FPGA硬件驗證。在一般的IC設計流程中,為了提高ASIC流片的成功率,有必要使用FPGA硬件電路進行邏輯仿真。

在FPGA實現中,設計的Turbo編碼器是整個物理信道數據編碼上行鏈路的一個部分[6],支持3G標準中最高5 114 b的輸入序列幀長,實現對3G專用信道的1/3冗余編碼,它將與Turbo解碼器和信道模擬模塊組成一個測試環路,完成對整個Turbo Codec的IP驗證。編碼器由4個主要部分組成,其框圖如圖5所示。

圖5 硬件邏輯實現Turbo編碼器框圖

各個部分的功能描述如下:

(1) 編碼器輸入緩存模塊(enc_ibuf),實現兩路輸入存放緩存以及乒乓緩存機制,內部框圖如圖6所示。

圖6 輸入緩存模塊框圖

(2) 編碼器移位RSC模塊(enc_shft),即上面SystemC實現的模塊,完成移位輸出編碼后結果的功能。

(3) 編碼器輸出緩存模塊(enc_obuf),存放輸出數據和歸零位比特,并完成3 b并串轉換輸出,內部框圖如圖7所示。

圖7 輸出緩存模塊框圖

(4) 編碼器控制模塊(enc_ctrl),完成整個編碼器內部模塊時序的控制,如輸入/輸出模塊的尋址讀寫、移位、尾比特歸零等等操作,其主要時序控制流程圖如圖8所示。

圖8 編碼器控制模塊控制時序流程圖

3.2 FPGA邏輯驗證

選用Xilinx的Virtex-E系列[7,8]的FPGA XCV600E對本設計進行驗證。軟件平臺主要使用的是Xilinx集成開發環境ISE Foundation。其中第三方工具使用了綜合工具FPGA CompilerⅡ,布局布線工具選用的是ISE中的Webpack suite。

使用支持SystemC的綜合工具SCC(SystemC Compiler)完成綜合。SCC將SystemC描述的RTL級電路通過其綜合生成相應的Verilog文件,實現后續流程與傳統設計語言設計的FPGA流程的無縫銜接。

在ISE平臺調用FCII對綜合生成的Verilog文件與其他模塊的Verilog代碼約束時鐘、引腳信息等,進行邏輯綜合和優化,得到EDIF格式網表并經Webpack完成布局布線取得sdf文件和.bit二進制配置文件。最后將.bit文件下載至開發板上的XCV600E器件中,上電加載后板子跑起來可以得到邏輯輸出。

從對XCV600E中消耗的邏輯資源分析可以看到,編碼器所占的等效門為21 578個門。調試后將shft_s1_dat,shft_p1_dat,shft_p2_dat等信號從XCV600E的管腳引出,經邏輯分析儀采集這些管腳的輸出數據與Testbench理論輸出進行對比分析,最后得出結論,本設計編碼器的輸出完全符合設計要求。

4 結 語

在越來越復雜的大規模集成電路設計中,如何保證設計的成功性和時效性,引起了越來越多的設計人員的重視,SystemC的提出并引起廣泛關注的原因也就顯而易見。現以Turbo碼的編碼系統為例研究了SystemC在實際系統仿真和驗證中的應用,以及基于RTL級實現并能完成綜合的SystemC設計方法,這個系統只是整個編解碼系統的一部分,其解碼部分更加復雜,但其核心算法部分同樣可以用相同的方法完成其仿真、驗證和實現。在整個設計過程中,測試平臺一直沒有改變,從而保證了驗證工作的連貫性和高效率。

可以看出,SystemC強大的系統級設計能力以及同時具有RTL級和行為級設計的能力為未來復雜的IC設計提供了更為廣闊的空間。雖然如何采用SystemC進行設計,目前還沒有一個完全的設計規范流程,但是相信隨著進一步的深入研究,基于SystemC的設計方法必將成為IC設計領域的最佳主流標準之一。

參考文獻

[1]Synopsys Inc.SystemC Version 2.0 User′s Guide[EB/OL].http://www.systemC.org.

[2]Synopsys Inc.Functional Specification for SystemC 2.0.http://www.systemc.org.

[3]Leena Singh,Leonard Drucker,Neyaz Khan.Advanced Verification Techniques-A SystemC Based Approach for Successful Tapeout[M].Kluwer Academic Publishers,2004.

[4]王新梅,肖國鎮.糾錯碼——原理與方法(修訂版)[M].西安:西安電子科技大學出版社,2001.

[5]Berrou C,Glavieuxa.Near Optimum Error Correcting Coding and Decoding:Turbo Codes [J].IEEE Trans.on Communications,1998,48(2):24-31.

[6]John G,Proakis.Digital Communications.Third Edition.McGraw-Hill,1995.

[7]Xilinx Inc.Virtex-E FPGA User′s Guide[EB/OL].http://www.xilinx.com.

[8]田耘,徐文波,張延偉.無線通信FPGA設計[M].北京:電子工業出版社,2008.

[9]IEEE Computer Society.IEEE Standard SystemC Language Reference Manual[Z].2006.

[10]Bhasker J.A SystemC Primer[M].Star Galaxy Publishing,2002.

作者簡介 李 源 男,碩士研究生,任Marvell公司DSP系統高級工程師。主要研究方向為系統設計與實現,多媒體與信源信道編解碼處理。

主站蜘蛛池模板: 五月激情综合网| 伊人久久婷婷五月综合97色| 国产极品嫩模在线观看91| 国产精品久久久久无码网站| 欧美亚洲香蕉| 中文字幕在线免费看| 老司国产精品视频91| 欧美日本在线| 精品一区二区三区视频免费观看| 日本成人精品视频| 久久黄色一级视频| 九九线精品视频在线观看| 国产欧美综合在线观看第七页| jizz在线观看| 亚洲免费播放| 重口调教一区二区视频| 一本无码在线观看| 亚洲熟女偷拍| 久久semm亚洲国产| 国产福利免费在线观看| 九色视频线上播放| 全部免费毛片免费播放| 为你提供最新久久精品久久综合| 99久久亚洲精品影院| AV在线天堂进入| 好久久免费视频高清| 亚洲一区二区三区在线视频| 日韩欧美国产综合| 国产sm重味一区二区三区| 欧美亚洲国产视频| 国产成人午夜福利免费无码r| 四虎亚洲国产成人久久精品| 亚洲色婷婷一区二区| 久久综合亚洲色一区二区三区| av无码一区二区三区在线| 亚洲人成亚洲精品| 久996视频精品免费观看| 中文字幕永久在线观看| 88av在线看| 国产精品亚洲欧美日韩久久| 99热免费在线| 无码福利日韩神码福利片| 综合天天色| 久久这里只有精品66| 国产精品三级专区| 亚洲丝袜第一页| 亚洲无码免费黄色网址| 99精品高清在线播放| 免费99精品国产自在现线| 亚洲天堂网2014| 国产一级二级在线观看| 熟女视频91| 日韩中文字幕亚洲无线码| 久久亚洲欧美综合| 亚洲aaa视频| 国产JIZzJIzz视频全部免费| 亚洲欧美另类视频| 国产精品久久久久无码网站| 亚洲乱码在线视频| 国产成人免费手机在线观看视频| 伊人久久大线影院首页| 日韩A∨精品日韩精品无码| 国产成人精品综合| 国精品91人妻无码一区二区三区| 成人午夜久久| 波多野结衣AV无码久久一区| www.youjizz.com久久| 黑人巨大精品欧美一区二区区| 免费看一级毛片波多结衣| 麻豆精品视频在线原创| 色成人综合| 亚洲国产成人久久精品软件 | 久久精品无码一区二区日韩免费| 456亚洲人成高清在线| 日本不卡视频在线| 国产在线精品美女观看| 免费国产高清精品一区在线| 国产尤物jk自慰制服喷水| 丁香综合在线| 国产国语一级毛片在线视频| 久久综合九色综合97婷婷| 伊大人香蕉久久网欧美|