亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        SystemC在Turbo碼實現(xiàn)和驗證中的應(yīng)用

        2009-05-12 03:14:34
        現(xiàn)代電子技術(shù) 2009年5期

        李 源

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

        關(guān)鍵詞:SystemC;Turbo;系統(tǒng)級設(shè)計;寄存器傳輸級;FPGA;測試平臺

        中圖分類號:TP274文獻(xiàn)標(biāo)識碼: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 引 言

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

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

        臺上進(jìn)行其系統(tǒng)實現(xiàn)。

        1 SystemC簡介

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

        SystemC是完全免費并且開放的,它的源代碼可以使用任何標(biāo)準(zhǔn)C++編譯環(huán)境進(jìn)行編譯,生成可執(zhí)行文件。通過使用SystemC類庫,設(shè)計者可以根據(jù)不同的需求編寫目標(biāo)系統(tǒng)的系統(tǒng)級(system level)、行為級(behavioral level)或RTL級的SystemC模型代碼。

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

        2 Turbo編碼器的SystemC實現(xiàn)與仿真

        2.1 Turbo編碼器簡述

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

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

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

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

        圖1 3GPP八狀態(tài)Turbo碼編碼器結(jié)構(gòu)

        2.2 Turbo編碼器的SystemC實現(xiàn)

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

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

        圖2 SystemC系統(tǒng)實現(xiàn)測試模塊說明圖

        其中主模塊內(nèi)部系統(tǒng)信號流圖如圖3所示。通過圖3可以清楚地看到各個子模塊和事件進(jìn)程的輸入輸出信號關(guān)系,以達(dá)到更加清晰的實現(xiàn)目的。

        圖3 TurboEncMain模塊系統(tǒng)信號流圖

        為了完成對Turbo碼實現(xiàn)的系統(tǒng)驗證以及最接近硬件邏輯的RTL級驗證,必須在使用SystemC時注意要編寫完全可綜合風(fēng)格的代碼,所以代碼的實現(xiàn)必須嚴(yán)格按圖1的編碼結(jié)構(gòu)來進(jìn)行。其中核心的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驗證仿真

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

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

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

        理論上此結(jié)構(gòu)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。

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

        圖4 設(shè)計仿真輸出波形

        3 FPGA實現(xiàn)與驗證

        3.1 FPGA系統(tǒng)實現(xiàn)

        經(jīng)過上面的仿真設(shè)計,驗證了RTL模型的結(jié)構(gòu),就可以進(jìn)行后面的ASIC設(shè)計或FPGA硬件驗證。在一般的IC設(shè)計流程中,為了提高ASIC流片的成功率,有必要使用FPGA硬件電路進(jìn)行邏輯仿真。

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

        圖5 硬件邏輯實現(xiàn)Turbo編碼器框圖

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

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

        圖6 輸入緩存模塊框圖

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

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

        圖7 輸出緩存模塊框圖

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

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

        3.2 FPGA邏輯驗證

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

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

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

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

        4 結(jié) 語

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

        可以看出,SystemC強(qiáng)大的系統(tǒng)級設(shè)計能力以及同時具有RTL級和行為級設(shè)計的能力為未來復(fù)雜的IC設(shè)計提供了更為廣闊的空間。雖然如何采用SystemC進(jìn)行設(shè)計,目前還沒有一個完全的設(shè)計規(guī)范流程,但是相信隨著進(jìn)一步的深入研究,基于SystemC的設(shè)計方法必將成為IC設(shè)計領(lǐng)域的最佳主流標(biāo)準(zhǔn)之一。

        參考文獻(xiàn)

        [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]王新梅,肖國鎮(zhèn).糾錯碼——原理與方法(修訂版)[M].西安:西安電子科技大學(xué)出版社,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設(shè)計[M].北京:電子工業(yè)出版社,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系統(tǒng)高級工程師。主要研究方向為系統(tǒng)設(shè)計與實現(xiàn),多媒體與信源信道編解碼處理。

        青青河边草免费在线看的视频 | 天天狠天天透天干天天| 国产综合精品| 欧美乱人伦人妻中文字幕| 射精专区一区二区朝鲜| 国精品人妻无码一区二区三区性色| 成年女人色毛片| 亚洲精品成人专区在线观看| 中文在线а√天堂官网| 国产午夜无码视频免费网站| 久久人妻公开中文字幕| 国产成人精品三级在线影院| 北岛玲精品一区二区三区| 久久久久久国产福利网站| 538亚洲欧美国产日韩在线精品 | 国产精品无码久久久久免费AV | 久久无码专区国产精品| 免费a级毛片18禁网站app| 青青草国产精品一区二区| 亚洲色欲久久久综合网| 日韩人妻无码一区二区三区| 国产一女三男3p免费视频| 3d动漫精品一区二区三区| 全免费a级毛片| av中文字幕不卡无码| 国产精品久久久久尤物| 香蕉国产人午夜视频在线观看| 久久免费视亚洲无码视频| 日本加勒比东京热日韩| 亚洲中文字幕久久精品蜜桃 | 欧美喷潮系列在线观看| 91av视频在线| 自慰高潮网站在线观看| 人妖与人妖免费黄色片| 亚洲综合av一区在线| 高潮av一区二区三区| av在线一区二区精品| 高清不卡日本v二区在线| 久久伊人亚洲精品视频| 精品人妻va一区二区三区| 国产丝袜美腿精品91在线看|