FPGA設(shè)計(jì)技巧_第1頁(yè)
FPGA設(shè)計(jì)技巧_第2頁(yè)
FPGA設(shè)計(jì)技巧_第3頁(yè)
FPGA設(shè)計(jì)技巧_第4頁(yè)
FPGA設(shè)計(jì)技巧_第5頁(yè)
已閱讀5頁(yè),還剩48頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、硬件描述語(yǔ)言和綜合工具的產(chǎn)生極大地提高了工程師的工作效率。但如果將設(shè)計(jì)看成是一個(gè)化學(xué)變化那么工具只是起到催化劑的作用我們所掌握的背景知識(shí)電路設(shè)計(jì)方法及有關(guān)技巧才是參加化學(xué)反應(yīng)的分子是起決定作用的因素。因此設(shè)計(jì)遇到困難時(shí)不能完全指望工具更不能怪罪工具只有我們才是決定設(shè)計(jì)成敗的關(guān)鍵9-21Synthesis 和 Optimization前者是把行為級(jí)的描述通過(guò)一定的算法轉(zhuǎn)化成門級(jí)的描述該過(guò)程與設(shè)計(jì)的工藝庫(kù)無(wú)關(guān)與用戶約束無(wú)關(guān)后者則是把已轉(zhuǎn)化的門級(jí)描述在用戶的約束下通過(guò)算法映射到相應(yīng)的工藝庫(kù)中的器件上。對(duì)ASIC 是映射到廠商的Gate 庫(kù)中,對(duì)FPGA 是映射到FPGA器件的單元結(jié)構(gòu)中目前綜合工具主

2、要有 DC( Design Compiler ),F(xiàn)C2 (FPGA Compiler II), Synplify,Leonardo Galileo 等綜合工具其中DC主要是用于ASIC的綜合工具FC2是DC在FPGA綜合方面的增強(qiáng)版Leonardo 是做FPGA 綜合工具的先驅(qū)Synplify (Synplicity公司出品) 是目前成長(zhǎng)最快的綜合工具都必須緊密結(jié)合各FPGA廠家的FPGA結(jié)構(gòu)優(yōu)選Synplify 或Leonardo 綜合工具到目前為止第三方的綜合工具都未能很好利用FPGA器件,如Virtex 系列的進(jìn)位鏈。綜合工具不管代碼風(fēng)格如何變,就是利用不上。因此無(wú)法得到更好的性能。但

3、若用Xilinx 的自己的綜合工具XST 則可綜合出來(lái)由于綜合工具無(wú)法利用器件提供的優(yōu)越性能,這要求在FPGA設(shè)計(jì)上若想得到更好的性能最好對(duì)一些設(shè)計(jì)采用一些Core。但這種基于FPGA器件特有工藝的代碼設(shè)計(jì)將降低設(shè)計(jì)代碼的重用性能,F(xiàn)PGA設(shè)計(jì)與ASIC設(shè)計(jì)的兼容性要求的代碼風(fēng)格1. 資源共享的應(yīng)用限制在同一個(gè)module里,這樣綜合工具才能最大限度地發(fā)揮其資源共享綜合作用2. 盡可能將Critical path上所有相關(guān)邏輯放在同一個(gè)module里,這樣綜合工具能夠發(fā)揮其最佳綜合效果3. Critical path所在的module與其它module分別綜合,對(duì)critial path采用速

4、度優(yōu)先的綜合策略,對(duì)其它module采用面積優(yōu)先的綜合策略4. 盡可能Register所有的Output,做到這一點(diǎn)對(duì)加約束比較方便,同時(shí)一條路徑上的組合邏輯不可能分散在各個(gè)module里。這對(duì)綜合非常有利可以比較方便地達(dá)到面積速度雙贏的目的5. 一個(gè)module的size不能太大,具體大小由各綜合工具而定6. 一個(gè)module盡量只有一個(gè)時(shí)鐘,或者整個(gè)設(shè)計(jì)只有一個(gè)時(shí)鐘Altera 的FPGA Xilinx 的FPGA或其他公司的FPGA ,一般的結(jié)構(gòu)都是由一些CLB 或類似稱為L(zhǎng)E 的宏單元組成。查找表LUT 時(shí)序單元如寄存器外加一些如進(jìn)位鏈等先進(jìn)的結(jié)構(gòu)我們往往有個(gè)誤區(qū),那就是提到Code

5、Style 時(shí)往往忽略了對(duì)器件結(jié)構(gòu)的了解,即沿用了ASIC設(shè)計(jì)思路-減少邏輯的門級(jí)就是提高速度對(duì)對(duì)FPGAFPGA而言要想獲得較高速度和節(jié)省面積而言要想獲得較高速度和節(jié)省面積是以減少是以減少LUTLUT的個(gè)數(shù)為主要手段,減少邏輯級(jí)的個(gè)數(shù)為主要手段,減少邏輯級(jí)數(shù)不一定能提高速度和降低面積,有時(shí)反而會(huì)數(shù)不一定能提高速度和降低面積,有時(shí)反而會(huì)降低速度和增加面積降低速度和增加面積每個(gè)CLB含有4個(gè)相似的SliceMemory:VirtexII 的Block RAM資源比以往的增加很多,每個(gè)Block RAM 有18k bit .在整個(gè)VirtexII系列中Block RAM一般按兩列4列或6列的規(guī)律進(jìn)

6、行分布乘法器資源乘法器資源VirtexII 系列提供有專門的乘法器結(jié)構(gòu),18bits x 18bits VirtexII 的乘法器資源,分布圖與Block RAM 的分布圖一樣每個(gè)乘法器塊緊靠著B(niǎo)lock RAM 共用4個(gè) 開(kāi)關(guān)矩IOBIOB:存儲(chǔ)單元、I/Obuf、輸入延時(shí)線存儲(chǔ)單元包括輸入寄存,輸出寄存,三態(tài)輸出控制線的寄存,輸入輸出三態(tài)控制線也可以不經(jīng)過(guò)寄存直接通過(guò)I/O buf輸入輸出。IOB中提供5中I/O Buf 輸入buf (IBUF) 輸出buf (OBUF) 三態(tài)輸出buf( OBUFT)雙向buf( IOBUF) 全局時(shí)鐘輸入buf (IBUFG)時(shí)鐘有16個(gè)時(shí)鐘管腳DCM

7、最多可達(dá)12個(gè)DCM不管我們用LUT實(shí)現(xiàn)幾輸入的組合電路在實(shí)際實(shí)現(xiàn)時(shí)都會(huì)變成4輸入的組合電路對(duì)于在一個(gè)LUT內(nèi)可以實(shí)現(xiàn)的組合電路不管你怎么化簡(jiǎn)對(duì)LUT而言,毫無(wú)用處只要是在一個(gè)LUT內(nèi)實(shí)現(xiàn)的邏輯不管是幾輸入邏輯延時(shí)基本一樣如果想速度更快則應(yīng)當(dāng)努力減少路徑上如果想速度更快則應(yīng)當(dāng)努力減少路徑上LUTLUT的的個(gè)數(shù)而不是邏輯級(jí)數(shù)個(gè)數(shù)而不是邏輯級(jí)數(shù)如果想面積更小則應(yīng)當(dāng)努力減少如果想面積更小則應(yīng)當(dāng)努力減少LUTLUT的個(gè)數(shù)而的個(gè)數(shù)而不是邏輯門數(shù)不是邏輯門數(shù)在處理速度與面積問(wèn)題的一個(gè)原則是:向關(guān)鍵向關(guān)鍵路徑部分要時(shí)間向非關(guān)鍵路徑部分要面積路徑部分要時(shí)間向非關(guān)鍵路徑部分要面積1、 串行進(jìn)位與超前進(jìn)位例串行進(jìn)

8、位鏈C0 = (A0 and B0) or(A0 or B0) and Cin);C1 = (A1 and B1) or(A1 or B1) and C0);超前進(jìn)位鏈p0 = a0 or b0;g0 = a0 and b0;p1 = a1 or b1;g1 = a1 and b1;c0 = g0 or (p0 and cin);c1 = g1 or (p1 and g0) or(p1 and p0 and cin);第二種方法速度快但面積大第一種方法速度慢但面積小Virtex系列FPGA結(jié)構(gòu)中本身含有進(jìn)位鏈結(jié)構(gòu),從其實(shí)現(xiàn)結(jié)構(gòu)來(lái)看應(yīng)當(dāng)是第一種方式。由于進(jìn)位鏈?zhǔn)荈PGA的專有資源,因此其實(shí)現(xiàn)速度

9、比一般的串行進(jìn)位快多了使用圓括號(hào)處理多個(gè)加法器Z = A + B + C + D;Z = (A + B) + (C + D);IFIF語(yǔ)句和語(yǔ)句和CaseCase語(yǔ)句,速度與面積的關(guān)系語(yǔ)句,速度與面積的關(guān)系IF語(yǔ)句指定了一個(gè)優(yōu)先級(jí)編碼邏輯而Case語(yǔ)句生成的邏輯是并行的Case結(jié)構(gòu)速度較快但占用面積較大IF-Else結(jié)構(gòu)速度較慢但占用的面積小用IF-Then-Else完成8選1多路選擇器MUX6to1:process(sel,in)beginif(sel= 000) thenout = in(0);elseif(sel = 001) thenout = in(1);elseif(sel = 0

10、10) thenout = in(2);elseif(sel = 011) thenout = in(3);elseif(sel = 100) thenout = in(4);elseout Z Z Z Z Z Z Z Z = J;end case;end process;減少關(guān)鍵路徑的邏輯級(jí)數(shù)減少關(guān)鍵路徑的邏輯級(jí)數(shù)if (clkevent and clk =1) thenif (non_critical=1 and critical=1) thenout1 = in1;elseout1 = in2;end if;end if;signal out_temp : std_logic;proce

11、ss (non_critical, in1, in2)if (non_critical=1) thenout_temp = in1;elseout_temp = in2;end if;end process;process(clk)if (clkevent and clk =1) thenif (critical=1) thenout1 = out_temp;elseout1 = in2;end if;end if;end process;調(diào)整if語(yǔ)句中條件的先后次序例如If 條件1 thenDo action1Else if 條件2 thenDo action2Else if 條件3 the

12、nDo action3If 條件3 thenDo action3Else if 條件1 thenDo action1Else if 條件2 thenDo action2合并合并ifif語(yǔ)句提高設(shè)計(jì)速度語(yǔ)句提高設(shè)計(jì)速度If 條件1 then信號(hào)置1Else if 條件2 then信號(hào)置0Else if 條件3 then信號(hào)置1Else if 條件4 then信號(hào)置0If 條件1 or 條件3 then信號(hào)置1Else if 條件2 or 條件4 then信號(hào)置0沒(méi)有利用資源共享時(shí)用了2個(gè)加法器實(shí)現(xiàn)if (select = 1) thensum=A +B;elsesum=C +D;end if;只

13、用2個(gè)選擇器和1個(gè)加法器實(shí)現(xiàn)減少了資源占用if (sel =1) thentemp1 =A;temp2 =B;elsetemp1 =C;temp2 =D;end if;sum = temp1 + temp2;子表達(dá)式共享temp = a + b;x = temp;y = =2. 子表達(dá)式具有相同position例如sum1 = A + B + C;sum2 = D + A +B;sum3 = E + (A +B);則sum1和sum3 可共享(A +B),但與sum2不共享原因是表達(dá)式的計(jì)算是從左到右3. 必須在同一block process 中并且是在同一條件下控制如下if (cond1 =

14、 .) thenS1 = A +B ;elseif (cond2 .) thenS2 = E + F ;elseS3 = G+ H ;end if ;end if ;則 S2 和S3可共享一個(gè)加法器,但與S1不可共享。流水線流水線對(duì)經(jīng)過(guò)多級(jí)邏輯的長(zhǎng)數(shù)據(jù)通路進(jìn)行重新構(gòu)造,把原來(lái)必須在一個(gè)時(shí)鐘周期內(nèi)完成的操作分成多個(gè)周期完成。process(clk, a, b, c) beginif(clkevent and clk = 1) thena_temp = a;b_temp = b;c_temp = c;end if;end process;Process(clk, a_temp, b_temp, c

15、_temp)beginif(clkevent and clk = 1) thenout = (a_temp * b_temp) + c_temp;end if;end process;采用流水線后的電路process(clk, a, b, c) beginif(clkevent and clk = 1) thena_temp = a;b_temp = b;c_temp1 = c;end if;end process;process(clk, a_temp, b_temp, c_temp1)begin盡量把組合邏輯和時(shí)序邏輯分開(kāi)if(clkevent and clk = 1) thenmult_temp = a_temp * b_tempc_temp2 = c_temp1;end if;end process;process(clk, mult_temp, c_temp2)beginif(clkevent and clk = 1) thenout = mult_temp + c_temp2;end if;end process;輸入和輸出盡量寄存器化組合邏輯和時(shí)序邏輯分離組合邏輯和時(shí)序邏輯分離包含寄存器的同步存儲(chǔ)電路和異步組合邏輯應(yīng)分別在獨(dú)立的進(jìn)程中完成組合邏輯中關(guān)聯(lián)性強(qiáng)的信號(hào)應(yīng)放在一個(gè)進(jìn)程中這樣在綜合后面積和速度指標(biāo)較高例、組合邏輯在寄存器之后例、

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論