<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > FPGA實(shí)戰(zhàn)開發(fā)技巧(13)

          FPGA實(shí)戰(zhàn)開發(fā)技巧(13)

          作者: 時(shí)間:2017-10-13 來源:網(wǎng)絡(luò) 收藏

          5.7 設(shè)計(jì)的IP和算法應(yīng)用

          基于IP的設(shè)計(jì)已成為目前設(shè)計(jì)的主流方法之一,本章首先給出IP的定義,然后以FFT 為例,介紹的應(yīng)用。

          本文引用地址:http://www.ex-cimer.com/article/201710/365624.htm

          5.7.1 綜述

          IP(Intelligent Property) 核是具有知識產(chǎn)權(quán)核的集成電路芯核總稱,是經(jīng)過反復(fù)驗(yàn)證過的、具有特定功能的宏模塊,與芯片制造工藝無關(guān),可以移植到不同的半導(dǎo)體工藝中。到了SOC 階段,IP核設(shè)計(jì)已成為ASIC電路設(shè)計(jì)公司和提供商的重要任務(wù),也是其實(shí)力體現(xiàn)。對于FPGA 開發(fā)軟件,其提供的IP核越豐富,用戶的設(shè)計(jì)就越方便,其市場占用率就越高。目前,IP核已經(jīng)變成系統(tǒng)設(shè)計(jì)的基本單元,并作為獨(dú)立設(shè)計(jì)成果被交換、轉(zhuǎn)讓和銷售。

          從IP核的提供方式上,通常將其分為軟核、硬核和固核這3類。從完成IP核所花費(fèi)的成本來講,硬核代價(jià)最大;從使用靈活性來講,軟核的可復(fù)用使用性最高。( 這部分內(nèi)容前面已經(jīng)闡述,這里再重申一下)

          軟核(Soft IP Core)

          軟核在EDA設(shè)計(jì)領(lǐng)域指的是綜合之前的寄存器傳輸級(RTL) 模型;具體在FPGA設(shè)計(jì)中指的是對電路的硬件語言描述,包括邏輯描述、網(wǎng)表和幫助文檔等。軟核只經(jīng)過功能仿真,需要經(jīng)過綜合以及布局布線才能使用。其優(yōu)點(diǎn)是靈活性高、可移植性強(qiáng),允許用戶自配置;缺點(diǎn)是對模塊的預(yù)測性較低,在后續(xù)設(shè)計(jì)中存在發(fā)生錯誤的可能性,有一定的設(shè)計(jì)風(fēng)險(xiǎn)。軟核是IP 核應(yīng)用最廣泛的形式。

          固核(Firm IP Core)

          固核在EDA設(shè)計(jì)領(lǐng)域指的是帶有平面規(guī)劃信息的網(wǎng)表;具體在FPGA設(shè)計(jì)中可以看做帶有布局規(guī)劃的軟核,通常以RTL 代碼和對應(yīng)具體工藝網(wǎng)表的混合形式提供。將RTL描述結(jié)合具體標(biāo)準(zhǔn)單元庫進(jìn)行綜合優(yōu)化設(shè)計(jì),形成門級網(wǎng)表,再通過布局布線工具即可使用。和軟核相比,固核的設(shè)計(jì)靈活性稍差,但在可靠性上有較大提高。目前,固核也是IP核的主流形式之一。

          硬核(Hard IP Core)

          硬核在EDA 設(shè)計(jì)領(lǐng)域指經(jīng)過驗(yàn)證的設(shè)計(jì)版圖;具體在FPGA 設(shè)計(jì)中指布局和工藝固定、經(jīng)過前端和后端驗(yàn)證的設(shè)計(jì),設(shè)計(jì)人員不能對其修改。不能修改的原因有兩個:首先是系統(tǒng)設(shè)計(jì)對各個模塊的時(shí)序要求很嚴(yán)格,不允許打亂已有的物理版圖;其次是保護(hù)知識產(chǎn)權(quán)的要求,不允許設(shè)計(jì)人員對其有任何改動。IP 硬核的不許修改特點(diǎn)使其復(fù)用有一定的困難,因此只能用于某些特定應(yīng)用,使用范圍較窄。

          IP Core生成器(Core Generator) 是Xilinx FPGA設(shè)計(jì)中的一個重要設(shè)計(jì)工具,提供了大量成熟的、高效的IP Core為用戶所用,涵蓋了汽車工業(yè)、基本單元、通信和網(wǎng)絡(luò)、數(shù)字信號處理、FPGA特點(diǎn)和設(shè)計(jì)、數(shù)學(xué)函數(shù)、記憶和存儲單元、標(biāo)準(zhǔn)總線接口等8 大類,從簡單的基本設(shè)計(jì)模塊到復(fù)雜的處理器一應(yīng)俱全。配合網(wǎng)站的IP中心使用,能夠大幅度減輕設(shè)計(jì)人員的工作量,提高設(shè)計(jì)可靠性。

          Core Generator最重要的配置文件的后綴是xco,既可以是輸出文件又可以是輸入文件,包含了當(dāng)前工程的屬性和IP Core的參數(shù)信息。

          5.7.2 FFT IP核應(yīng)用示例

          ISE提供了FFT/IFFT的IP Core,可以完成實(shí)數(shù)、復(fù)數(shù)信號的FFT以及IFFT運(yùn)算。FFT的IP Core提供三種結(jié)構(gòu),分別為:
          (1) 流水線,Streaming I/O結(jié)構(gòu):允許連續(xù)的數(shù)據(jù)處理;
          (2) 基4,Burst I/O結(jié)構(gòu):提供數(shù)據(jù)導(dǎo)入/導(dǎo)出階段和處理階段。此結(jié)構(gòu)擁有較小的結(jié)構(gòu),但轉(zhuǎn)換時(shí)間較長;
          (3) 基2,Burst I/O結(jié)構(gòu):使用最少的邏輯資源,同Radix-4相同,提供兩階段的過程。其配置界面有3頁,第一頁如圖5-57所示,主要用于配置實(shí)現(xiàn)結(jié)構(gòu);第二頁配置數(shù)據(jù)位寬以及數(shù)據(jù)處理操作;第三頁配置數(shù)據(jù)緩存空間。

          圖5-57 FFT IP core的用戶界面

          在實(shí)際硬件操作中,模塊的執(zhí)行速度是很重要的參數(shù),所以本文分析第一種結(jié)構(gòu),即流水線Streaming I/O結(jié)構(gòu),以進(jìn)行連續(xù)的數(shù)據(jù)處理。在進(jìn)行當(dāng)前幀的N點(diǎn)數(shù)據(jù)時(shí),可加載下一幀的N點(diǎn)數(shù)據(jù),同時(shí)輸出前一幀的N點(diǎn)數(shù)據(jù)。此結(jié)構(gòu)由多個基2的蝶形處理單元構(gòu)成,每個單元都有自己的存儲單元來存儲輸入和中間處理的數(shù)據(jù),其結(jié)構(gòu)如圖5-58所示。

          圖5-58 FFT模塊的流水線,Streaming I/O結(jié)構(gòu)

          FFT的計(jì)算單元具有豐富的控制信號,其詳細(xì)說明見下文。

          XN_RE、XN_IM :輸入操作數(shù),分別為實(shí)部和虛部,以2 的補(bǔ)碼輸入。在使用時(shí)應(yīng)當(dāng)確定其位寬。
          START :FFT開始信號,高有效。當(dāng)此信號變高時(shí),開始輸入數(shù)據(jù),隨后直接進(jìn)行FFT 轉(zhuǎn)換操作和數(shù)據(jù)輸出。一個START脈沖,允許對一幀進(jìn)行FFT 轉(zhuǎn)換。如果每N 個時(shí)鐘有一個START脈沖或者START始終為高,,則都可以連續(xù)進(jìn)行FFT。如果在最初的START前,還沒有NFFT_WE,F(xiàn)WD_INV_WE,SCALE_SCH_WE信號,則START變高后就使用這些信號的默認(rèn)值。由于此IP Core支持非連續(xù)的數(shù)據(jù)流,因此在任何時(shí)間輸入START,即可開始數(shù)據(jù)的加載。當(dāng)加載N個數(shù)據(jù)結(jié)束后,就開始FFT轉(zhuǎn)換運(yùn)算。
          UNLOAD :對于Burst I/O結(jié)構(gòu),此信號將開始輸出處理的結(jié)果。對于流水線結(jié)構(gòu)和比特逆序輸出的情況,此端口不是必要的。
          NFFT :此端口只對實(shí)時(shí)可配置應(yīng)用時(shí)有用。
          NFFT_WE :此端口是NFFT 端口的使能信號。
          FWD_INV :用以指示IP Core為FFT還是IFFT,其等于1時(shí)IP Core進(jìn)行FFT運(yùn)算,否則進(jìn)行IFFT 運(yùn)算。至于采用哪種轉(zhuǎn)換運(yùn)算是可以逐幀變化的。這一端口給FFT的使用提供了很大的方便。
          FWD_INV_WE :作為FWD_INV端口的使能信號。
          SCALE_SCH:(1) 在IP Core設(shè)計(jì)時(shí),如果選擇在計(jì)算過程中進(jìn)行中間數(shù)據(jù)的縮減,那么此信號才可起作用;(2) 輸入的位寬等于2*ceil(NFFT/2),其中NFFT = log2(point size)。(3) 流水線結(jié)構(gòu)中,將每個基2的蝶形處理單元視為一個階段,每個階段進(jìn)行一次數(shù)據(jù)的縮減,縮減的比例以此輸入中對應(yīng)階段的兩比特表示。(4) 每階段的兩比特?cái)?shù)可以是3,2,1或0 :它們表示了數(shù)據(jù)所需要移動的比特?cái)?shù)。
          SCALE_SCH_WE :作為SCALE_SCH的使能信號。
          SCLR :可選端口。
          Reset :重置信號端口。Reset=1時(shí),所有工作都停止且初始化。但內(nèi)部的幀緩存保留其內(nèi)容。
          CE :可選端口。
          CLK :輸入時(shí)鐘。
          XK_RE,XK_IM :輸出數(shù)據(jù)總線,以2 的補(bǔ)碼輸出。SCALE_SCH_WE有效時(shí),輸出位寬等于輸入;否則,輸出位寬= 輸入位寬+NFFT+1。
          XN_INDEX :位寬等于log2(point size),輸入數(shù)據(jù)的下標(biāo)。
          XK_INDEX :位寬等于log2(point size),輸出數(shù)據(jù)的下標(biāo)。
          RFD :數(shù)據(jù)有效信號,高有效,在加載數(shù)據(jù)時(shí)為高電平。
          BUSY :IP Core 工作狀態(tài)的指示信號,在計(jì)算FFT 轉(zhuǎn)換時(shí)為高電平。
          DV :數(shù)據(jù)有效指示信號,當(dāng)輸出端口存在有效數(shù)據(jù)時(shí)變高。
          EDONE :高有效。在DONE 信號變高的前一個時(shí)鐘變?yōu)楦唠娖健?br />DONE :高有效。在FFT 完成后變高,且只存在一個時(shí)鐘。在DONE 變高后,IP Core開始輸出計(jì)算結(jié)果。
          BLK_EXP :當(dāng)使用Burst I/O 結(jié)構(gòu)時(shí)可用,若選擇流水線,則此端口無效
          OVFLO :算法溢出指示。在數(shù)據(jù)輸出時(shí),如每幀有溢出,此信號變高。在每幀開始處,此信號重置。
          例5.7.1使用IP Core實(shí)例化一個16點(diǎn)、位寬為16位的FFT 模塊。
          IP Core 直接生成的乘法器的Verilog 模塊接口為:
          module fft16(sclr, fwd_inv_we, rfd, start, fwd_inv, dv, scale_sch_we, done, clk, busy, edone, scale_sch,xn_re, xk_im, xn_index, xk_re, xn_im, xk_index);
          input sclr , fwd_inv_we, start, fwd_inv, scale_sch_we, clk;
          input [3 : 0] scale_sch;
          input [15 : 0] xn_re;
          output rfd, dv, done, busy, edone;
          output [15 : 0] xk_im;
          output [3 : 0] xn_index;
          output [15 : 0] xk_re;
          input [15 : 0] xn_im;
          output [3 : 0] xk_index;
          ……
          endmodule
          在使用時(shí),直接調(diào)用mulTIply 模塊即可,如
          module fft16(sclr, fwd_inv_we, rfd, start, fwd_inv, dv, scale_sch_we, done, clk, busy,
          edone, scale_sch, xn_re, xk_im, xn_index, xk_re, xn_im, xk_index);
          input sclr , fwd_inv_we, start, fwd_inv, scale_sch_we, clk;
          input [3 : 0] scale_sch;
          input [15 : 0] xn_re;
          output rfd, dv, done, busy, edone;
          output [15 : 0] xk_im;
          output [3 : 0] xn_index;
          output [15 : 0] xk_re;
          input [15 : 0] xn_im;
          output [3 : 0] xk_index;
          fft fft1( // 調(diào)用FFT 的IPCore
          .sclr(sclr), .fwd_inv_we(fwd_inv_we), .rfd(rfd), .start(start), .fwd_inv(fwd_inv),
          .dv(dv), .scale_sch_we(scale_sch_we), .done(done), .clk(clk), .busy(busy),
          .edone(edone), .scale_sch(scale_sch), .xn_re(xn_re), .xk_im(xk_im),
          .xn_index(xn_index), .xk_re(xk_re), .xn_im(xn_im), .xk_index(xk_index));
          endmodule

          經(jīng)過仿真測試得到的功能波形圖如圖5-59所示:

          圖5-59 FFT的IP core仿真波形



          關(guān)鍵詞: FPGA 賽靈思 IP核

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();