第八章_EDA設(shè)計(jì)優(yōu)化_第1頁
第八章_EDA設(shè)計(jì)優(yōu)化_第2頁
第八章_EDA設(shè)計(jì)優(yōu)化_第3頁
第八章_EDA設(shè)計(jì)優(yōu)化_第4頁
第八章_EDA設(shè)計(jì)優(yōu)化_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 z 近年來近年來VHDLVHDL設(shè)計(jì)方法正越來越廣泛地被采用。但是設(shè)計(jì)方法正越來越廣泛地被采用。但是VHDLVHDL設(shè)計(jì)是行為級(jí)的設(shè)計(jì)是行為級(jí)的設(shè)計(jì),所帶來的問題是設(shè)計(jì)者的設(shè)計(jì)思考與電路結(jié)構(gòu)相脫節(jié)。設(shè)計(jì)者主要是設(shè)計(jì),所帶來的問題是設(shè)計(jì)者的設(shè)計(jì)思考與電路結(jié)構(gòu)相脫節(jié)。設(shè)計(jì)者主要是根據(jù)根據(jù)VHDLVHDL的語法規(guī)則的語法規(guī)則 對(duì)系統(tǒng)目標(biāo)的邏輯行為進(jìn)行描述,然后通過綜合工具進(jìn)對(duì)系統(tǒng)目標(biāo)的邏輯行為進(jìn)行描述,然后通過綜合工具進(jìn)行電路結(jié)構(gòu)的綜合、編譯、優(yōu)化,通過仿真工具進(jìn)行邏輯功能仿真和系統(tǒng)時(shí)行電路結(jié)構(gòu)的綜合、編譯、優(yōu)化,通過仿真工具進(jìn)行邏輯功能仿真和系統(tǒng)時(shí)延的仿真。實(shí)際設(shè)計(jì)過程中,由于每個(gè)工程師對(duì)語言規(guī)

2、則、對(duì)電路行為的理延的仿真。實(shí)際設(shè)計(jì)過程中,由于每個(gè)工程師對(duì)語言規(guī)則、對(duì)電路行為的理解程度不同,每個(gè)人的編程風(fēng)格不同,往往同樣的系統(tǒng)功能,描述的方式是解程度不同,每個(gè)人的編程風(fēng)格不同,往往同樣的系統(tǒng)功能,描述的方式是不一樣的,綜合出來的電路結(jié)構(gòu)更是大相徑庭。因此,即使最后綜合出的電不一樣的,綜合出來的電路結(jié)構(gòu)更是大相徑庭。因此,即使最后綜合出的電路都能實(shí)現(xiàn)相同的邏輯功能,其電路的復(fù)雜程度和時(shí)延特性都會(huì)有很大的差路都能實(shí)現(xiàn)相同的邏輯功能,其電路的復(fù)雜程度和時(shí)延特性都會(huì)有很大的差別,甚至某些臃腫的電路還會(huì)產(chǎn)生難以預(yù)料的問題。從這個(gè)問題出發(fā),我們別,甚至某些臃腫的電路還會(huì)產(chǎn)生難以預(yù)料的問題。從這個(gè)問

3、題出發(fā),我們就很有必要深入討論在就很有必要深入討論在VHDLVHDL設(shè)計(jì)中如何簡化電路結(jié)構(gòu),優(yōu)化電路設(shè)計(jì)的問題。設(shè)計(jì)中如何簡化電路結(jié)構(gòu),優(yōu)化電路設(shè)計(jì)的問題。 z 用用VHDLVHDL進(jìn)行設(shè)計(jì),其最終綜合出的電路的復(fù)雜程度除取決于設(shè)計(jì)要求實(shí)進(jìn)行設(shè)計(jì),其最終綜合出的電路的復(fù)雜程度除取決于設(shè)計(jì)要求實(shí)現(xiàn)的功能的難度外,還受設(shè)計(jì)工程師對(duì)電路的描述方法和對(duì)設(shè)計(jì)的規(guī)劃水平現(xiàn)的功能的難度外,還受設(shè)計(jì)工程師對(duì)電路的描述方法和對(duì)設(shè)計(jì)的規(guī)劃水平的影響。最常見的使電路復(fù)雜化的原因之一是設(shè)計(jì)中存在許多本不必要的類的影響。最常見的使電路復(fù)雜化的原因之一是設(shè)計(jì)中存在許多本不必要的類似似LATCHLATCH的結(jié)構(gòu)。而且由于這

4、些結(jié)構(gòu)通常都由大量的觸發(fā)器組成,不僅使電路的結(jié)構(gòu)。而且由于這些結(jié)構(gòu)通常都由大量的觸發(fā)器組成,不僅使電路更復(fù)雜,工作速度降低,而且由于時(shí)序配合的原因而導(dǎo)致不可預(yù)料的結(jié)果。更復(fù)雜,工作速度降低,而且由于時(shí)序配合的原因而導(dǎo)致不可預(yù)料的結(jié)果。例如對(duì)于同一譯碼電路有不同例如對(duì)于同一譯碼電路有不同VHDLVHDL描述:描述:z : IF INDEX00000 THENz STEPSIZE0000111; z ELSIF INDEX00001 THENz STEPSIZE0001000; z ELSIF INDEX00010 THENz STEPSIZE0001001; z z ELSEz STEPSIZE

5、0000000; z END IF;z :STEPSIZE0000111 WHENINDEX00000 ELSEz 0001000 WHEN INDEX00001ELSEz 0001001WHEN INDEX00010 ELSEz z 0000000; z 以上兩段程序描述了同一個(gè)譯碼電路。第二段程序由于以上兩段程序描述了同一個(gè)譯碼電路。第二段程序由于WHEN.ELSE的語的語句不能生成鎖存器的結(jié)構(gòu)且句不能生成鎖存器的結(jié)構(gòu)且ELSE后一定要有結(jié)果,所以不會(huì)有問題,而第一后一定要有結(jié)果,所以不會(huì)有問題,而第一個(gè)程序如果不加個(gè)程序如果不加ELSESTEPSIZE“0000000”這句,則會(huì)生成一個(gè)

6、含有這句,則會(huì)生成一個(gè)含有位寄存器的結(jié)構(gòu),雖然都能實(shí)現(xiàn)相同的譯碼功能。但是電路復(fù)雜度會(huì)大增。位寄存器的結(jié)構(gòu),雖然都能實(shí)現(xiàn)相同的譯碼功能。但是電路復(fù)雜度會(huì)大增。而由于每個(gè)工程師的寫作習(xí)慣不同,有的喜歡用而由于每個(gè)工程師的寫作習(xí)慣不同,有的喜歡用IF.ELSE的語句,有的喜歡的語句,有的喜歡用用WHEN.ELSE的方式,而用的方式,而用IF.ELSE時(shí),如稍不注意,在描述不需要寄時(shí),如稍不注意,在描述不需要寄存器的電路時(shí)沒加存器的電路時(shí)沒加ELSE,則會(huì)引起電路不必要的開銷。所以在,則會(huì)引起電路不必要的開銷。所以在VHDL設(shè)計(jì)中設(shè)計(jì)中要慎用要慎用IF.ELSE這類能描述自身值代入的語句。這類能描述

7、自身值代入的語句。 z If 和case語句是VHDL里邊兩個(gè)非常重要的語句,如何用好她們來描述邏輯電路和時(shí)序電路是學(xué)會(huì)VHDL編程重要的一步。if 和 case語句有一定的相關(guān)性,也有一定的區(qū)別。相同的地方是他們可以實(shí)現(xiàn)幾乎一樣的功能。下面主要介紹一下她們之間的區(qū)別。 If 語句每個(gè)分支之間是有優(yōu)先級(jí)的,綜合得到的電路是類似級(jí)聯(lián)的結(jié)構(gòu)。Case語句每個(gè)分支是平等的,綜合得到的電路則是一個(gè)多路選擇器。因此,多個(gè)if elseif語句綜合得到的邏輯電路延時(shí)往往比case語句要大。一些初學(xué)者在一開始往往喜歡用if elsif語句,因?yàn)檫@種語法表達(dá)起來更加直接,但是在運(yùn)行速度比較關(guān)鍵的項(xiàng)目中,使用c

8、ase語句的效果會(huì)更好。z 順序語句順序語句“if_then_else_endif_then_else_end if” if”是放在由是放在由“ “ process_endprocess_end process” process”引導(dǎo)的語引導(dǎo)的語句中的。在句中的。在VHDLVHDL中,所有合法的順序語句必須放在進(jìn)程語句中。這里的順序是從仿真中,所有合法的順序語句必須放在進(jìn)程語句中。這里的順序是從仿真軟件的運(yùn)行和順應(yīng)軟件的運(yùn)行和順應(yīng)VHDLVHDL語法的編程邏輯思路而言的,其相應(yīng)的硬件邏輯工作方式未必語法的編程邏輯思路而言的,其相應(yīng)的硬件邏輯工作方式未必如此。應(yīng)該注意區(qū)分如此。應(yīng)該注意區(qū)分VHD

9、LVHDL語言的軟件行為與描述綜合后的硬件行為的差異。語言的軟件行為與描述綜合后的硬件行為的差異。z 同樣是同樣是a = ba = b的賦值語句,會(huì)形成什么電路,起關(guān)鍵作用的是敏感信號(hào)。的賦值語句,會(huì)形成什么電路,起關(guān)鍵作用的是敏感信號(hào)。z a) a) 如果如果a = ba = b是在進(jìn)程之外,那么隱含的敏感信號(hào)就是是在進(jìn)程之外,那么隱含的敏感信號(hào)就是b b,那么,這個(gè)賦值語句就形,那么,這個(gè)賦值語句就形成一條連線。成一條連線。z b) b) 如果是在一個(gè)同步進(jìn)程中,如如果是在一個(gè)同步進(jìn)程中,如if (rising_edge(CLKif (rising_edge(CLK) then a = b

10、) then a = b,這時(shí)候,就,這時(shí)候,就會(huì)形成一個(gè)觸發(fā)器,因?yàn)槊舾行盘?hào)是時(shí)鐘邊沿。會(huì)形成一個(gè)觸發(fā)器,因?yàn)槊舾行盘?hào)是時(shí)鐘邊沿。z c) c) 如果敏感信號(hào)是一個(gè)電平信號(hào),那么會(huì)形成一個(gè)鎖存器。如一個(gè)不完整的如果敏感信號(hào)是一個(gè)電平信號(hào),那么會(huì)形成一個(gè)鎖存器。如一個(gè)不完整的ifif條件:條件:if (condif (cond = 1) then a = b; = 1) then a = b;z 幾個(gè)簡化和優(yōu)化電路設(shè)計(jì)值得注意的方面:幾個(gè)簡化和優(yōu)化電路設(shè)計(jì)值得注意的方面:z ()在用()在用VHDLVHDL進(jìn)行設(shè)計(jì)中要注意避免不必要的寄存器描述。進(jìn)行設(shè)計(jì)中要注意避免不必要的寄存器描述。z ()

11、在編寫程序前要先對(duì)整個(gè)設(shè)計(jì)進(jìn)行較深入的了解()在編寫程序前要先對(duì)整個(gè)設(shè)計(jì)進(jìn)行較深入的了解 科學(xué)的劃分設(shè)計(jì),多設(shè)想幾科學(xué)的劃分設(shè)計(jì),多設(shè)想幾種方案種方案 再進(jìn)行比較再進(jìn)行比較 用多個(gè)較少位數(shù)的單元取代較多位數(shù)的單元。用多個(gè)較少位數(shù)的單元取代較多位數(shù)的單元。z ()在延時(shí)要求不高的情況下,可提取邏輯電路公因子()在延時(shí)要求不高的情況下,可提取邏輯電路公因子 把它分解成含有中間變量把它分解成含有中間變量的多級(jí)電路。的多級(jí)電路。8.1 8.1 面積優(yōu)化面積優(yōu)化 EDA的設(shè)計(jì)是硬件系統(tǒng)的設(shè)計(jì),硬件資源及所謂的面積是的設(shè)計(jì)是硬件系統(tǒng)的設(shè)計(jì),硬件資源及所謂的面積是一定的,資源及面積優(yōu)化是一個(gè)重要指標(biāo),一定的

12、,資源及面積優(yōu)化是一個(gè)重要指標(biāo),面積優(yōu)化的方法有面積優(yōu)化的方法有資源共享、邏輯優(yōu)化和串行化三種方法資源共享、邏輯優(yōu)化和串行化三種方法FPGA/CPLD資源的優(yōu)化具有實(shí)用意義:(1 1)通過優(yōu)化,可以使用規(guī)模更小的可編程邏輯芯片,從而降低系統(tǒng)成本。)通過優(yōu)化,可以使用規(guī)模更小的可編程邏輯芯片,從而降低系統(tǒng)成本。(2 2)對(duì)于許多可編程邏輯器件(例如某些公司的)對(duì)于許多可編程邏輯器件(例如某些公司的CPLDCPLD器件),由于布線資器件),由于布線資源有限,耗用資源過多而嚴(yán)重影響電路性能。源有限,耗用資源過多而嚴(yán)重影響電路性能。(3 3)為以后的技術(shù)升級(jí),留下更多的可編程資源,方便添加產(chǎn)品的功能。

13、)為以后的技術(shù)升級(jí),留下更多的可編程資源,方便添加產(chǎn)品的功能。(4 4)對(duì)于多數(shù)可編程邏輯器件,資源耗用太多會(huì)使器件功耗顯著上升。)對(duì)于多數(shù)可編程邏輯器件,資源耗用太多會(huì)使器件功耗顯著上升。z 資源共享的主要思想是,通過數(shù)據(jù)緩沖或多路選擇的方法來共享數(shù)據(jù)通道中占用資源較多的模塊(如乘法器、多位加法器等算術(shù)模塊)。通過共享有時(shí)可以較好的提高資源利用率,達(dá)到優(yōu)化的目的。 8.1.1 8.1.1 資源共享資源共享8.1.1 資源共享資源共享【例【例8-1】LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;

14、USE ieee.std_logic_arith.all;ENTITY multmux IS PORT (A0, A1,B : IN std_logic_vector(3 downto 0); sel : IN std_logic; Result : OUT std_logic_vector(7 downto 0);END multmux;ARCHITECTURE rtl OF multmux ISBEGIN process(A0,A1,B,sel) begin if(sel = 0) then Result = A0 * B; else Result = A1 * B; end if; en

15、d process;END rtl;乘法乘法選01A0BA1BResultSel圖圖8-1 先乘后選先乘后選擇的設(shè)計(jì)方法擇的設(shè)計(jì)方法RTL結(jié)構(gòu)結(jié)構(gòu)選01乘A0SelA1ResultB圖圖8-2 先選擇后先選擇后乘設(shè)計(jì)方法乘設(shè)計(jì)方法RTL結(jié)構(gòu)結(jié)構(gòu)并不是所有情況下都能通過資源共享實(shí)現(xiàn)資源優(yōu)化,下面的例并不是所有情況下都能通過資源共享實(shí)現(xiàn)資源優(yōu)化,下面的例子就實(shí)現(xiàn)不了資源優(yōu)化子就實(shí)現(xiàn)不了資源優(yōu)化【例【例8-2】ARCHITECTURE rtl OF muxmult IS signal temp : std_logic_vector(3 downto 0);BEGIN process(A0,A1,B,

16、sel) begin if(sel = 0) then temp = A0; else temp = A1; end if; result = temp * B; end process;END rtl;選01ABSR選01ABSR選01ABSR圖圖8-3 資源共資源共享反例享反例8.1.2 邏輯優(yōu)化邏輯優(yōu)化【例【例8-3】LIBRARY ieee;USE ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;ENTITY mult1 IS PORT(clk : in std_l

17、ogic; ma : In std_logic_vector(11 downto 0); mc : out std_logic_vector(23 downto 0);END mult1;ARCHITECTURE rtl OF mult1 IS signal ta,tb : std_logic_vector(11 downto 0);BEGINprocess(clk) begin if(clkevent and clk = 1) then ta = ma; tb = 100110111001; mc = ta * tb; end if;end process;END rtl;在此構(gòu)建了一個(gè)兩輸

18、入的乘法器:mc = ta * tb; 其中一個(gè)端口tb是常數(shù),適配在EPF10K20中,用LC167個(gè)。對(duì)其進(jìn)行邏輯優(yōu)化,采用常數(shù)乘法器,在相同條件下綜合,用LC93個(gè)【例【例8-4】LIBRARY ieee;USE ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;ENTITY mult2 IS PORT(clk : in std_logic; ma : In std_logic_vector(11 downto 0); mc : out std_logic_vector

19、(23 downto 0);END mult2;ARCHITECTURE rtl OF mult2 IS signal ta : std_logic_vector(11 downto 0); constant tb : std_logic_vector(11 downto 0) := 100110111001;BEGINprocess(clk) begin if(clkevent and clk = 1) then ta=ma; mc=ta * tb; end if;end process;END rtl;邏輯電路的輸入項(xiàng)太多以致占用過多的面積也是使電路復(fù)雜化的一個(gè)原因。下面舉一個(gè)具體例子加以

20、說明: z 簡單說明:三輸人表決電路是指當(dāng)三個(gè)輸入項(xiàng)中至少有兩個(gè)收入項(xiàng)為1,輸出為0。本例中A,B,C為三個(gè)輸人端,T為輸出端。z 例程3:library ieeez use ieee std 1164 alz entity biaojue isz port(A,B,C: in bit);z T: out bit);z end biaojue;z architecture biaojuel of biaojue isz beginz process (a,b,c)z beginz variable templ,tempt , tempi : bitz templ=A and C ;z temp

21、2=B and C;z temp3=A and B and (not c);z T=temp1 or temp2 or temp3;z end processz end biaojue;z 例程4:library ieeez use ieee std 1164 allz entity biaojue isz port( A,B,C: in bit);z T: out bit);z end biaojue;z architecture biaojue2 of biaojue isz beginz process (a, b , c )z beginz variable templ,temp2,

22、temp3 : bitz templ=A and( B or C );z tempt=C and(AorB);z T=templ or temp2;z end processz end biaojue2;z我們比較一下這兩個(gè)圖及其VH DL描述,圖4是三級(jí)的邏輯門,每個(gè)輸入信號(hào)只與一個(gè)邏輯門相連。圖3是二級(jí)邏輯門,每個(gè)輸人信號(hào)不至于一個(gè)邏輯門相連,由于級(jí)數(shù)多,延時(shí)必然增加,因此圖4的速度比圖3慢一些。但是經(jīng)過可以分析得到,由于圖3的輸人項(xiàng)比圖4多,所占用的面積也必然比圖4大。實(shí)質(zhì)上,圖4是通過從圖3中提取公因數(shù)而得來的,(這也可以從VHDL描述中看出來)這就是把附加項(xiàng)的中間項(xiàng)加到結(jié)構(gòu)描述中去的

23、一種過程,它的結(jié)果必然是輸人到輸出的邏輯數(shù)增加,通過犧牲速度,換來電路占用面積減少。 8.1.3 8.1.3 串行化串行化 串行化是指把原來耗用資源巨大、單時(shí)鐘周期內(nèi)完成串行化是指把原來耗用資源巨大、單時(shí)鐘周期內(nèi)完成的并行執(zhí)行的邏輯塊分割開來,提取相同的邏輯模塊(一的并行執(zhí)行的邏輯塊分割開來,提取相同的邏輯模塊(一般為組合邏輯塊),在時(shí)間上復(fù)用該邏輯塊,用多個(gè)時(shí)鐘般為組合邏輯塊),在時(shí)間上復(fù)用該邏輯塊,用多個(gè)時(shí)鐘完成相同的功能,代價(jià)是速度降低。比如完成相同的功能,代價(jià)是速度降低。比如CPU總是在時(shí)總是在時(shí)間上反復(fù)使用間上反復(fù)使用ALU來完成復(fù)雜的操作。來完成復(fù)雜的操作。 設(shè)計(jì)一個(gè)乘法器,位寬為

24、16位,對(duì)8個(gè)16位數(shù)據(jù)進(jìn)行乘法和加法運(yùn)算,即youtyout = = a a0 0 b b0 0 + + a a1 1 b b1 1 + + a a2 2 b b2 2 + + a a3 3 b b3 3【例【例8-5】LIBRARY ieee;USE ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;ENTITY pmultadd IS PORT(clk : in std_logic; a0,a1,a2,a3 : in std_logic_vector(7 downto

25、0); b0,b1,b2,b3 : in std_logic_vector(7 downto 0); yout : out std_logic_vector(15 downto 0);END pmultadd;ARCHITECTURE p_arch OF pmultadd ISBEGINprocess(clk) begin if(clkevent and clk = 1) then yout = (a0*b0)+(a1*b1)+(a2*b2)+(a3*b3); end if;end process; END p_arch;15:0Q15:01:16D15:0+15:015:01:1615:01

26、5:0*7:015:07:0*7:015:07:0*7:015:07:0*7:015:07:0yout15:015:0b37:07:0b27:07:0b17:07:0b07:07:0a37:07:0a27:07:0a17:07:0a07:07:0clk圖圖8-4 并行乘法并行乘法RTL結(jié)構(gòu)結(jié)構(gòu)用了用了4個(gè)乘法器和一個(gè)個(gè)乘法器和一個(gè)4輸入輸入16位加法器,位加法器,適配后,用576個(gè)LC,串行化后【例【例8-6】LIBRARY ieee;USE ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_a

27、rith.all;ENTITY smultadd IS PORT(clk, start : in std_logic; a0,a1,a2,a3 : In std_logic_vector(7 downto 0); b0,b1,b2,b3 : In std_logic_vector(7 downto 0); yout : out std_logic_vector(15 downto 0);END smultadd;ARCHITECTURE s_arch OF smultadd IS signal cnt : std_logic_vector(2 downto 0); signal tmpa,tm

28、pb : std_logic_vector(7 downto 0); signal tmp, ytmp : std_logic_vector(15 downto 0); BEGINtmpa = a0 when cnt = 000 else a1 when cnt = 001 else a2 when cnt = 010 else a3 when cnt = 011 else a0;接下頁接下頁tmpb = b0 when cnt = 000 else b1 when cnt = 001 else b2 when cnt = 010 else b3 when cnt = 011 else b0;

29、tmp = tmpa * tmpb;process(clk) begin if(clkevent and clk = 1) then if(start = 1) then cnt = 000; ytmp 0); elsif (cnt “100 ) then cnt = cnt + 1; ytmp = ytmp + tmp; elsif (cnt = “100 ) then yout = ytmp; end if; end if;end process;END s_arch;1 5 :0 Q 1 5 :0 1 :1 6 D 1 5 :0 RE+1 5 :0 1 :1 6 1 5 :0 *7 :0

30、 1 5 :0 7 :0 2 :0 Q 2 :0 2 :0 D 2 :0 edededed7 :0 7 :0 7 :0 7 :0 7 :0 edededed7 :0 7 :0 7 :0 7 :0 7 :0 010 :2 2 :0 0 0 01 5 :0 Q 1 5 :0 1 5 :0 D 1 5 :0 E+2 :0 0 :2 2 0 1 0 1 2 1 0 0 1 0 1 yo u t1 5 :0 1 5 :0 b 3 7 :0 7 :0 b 2 7 :0 7 :0 b 1 7 :0 7 :0 b 0 7 :0 7 :0 a 3 7 :0 7 :0 a 2 7 :0 7 :0 a 1 7 :0

31、 7 :0 a 0 7 :0 7 :0 s ta rtclk串行化結(jié)構(gòu)串行化結(jié)構(gòu) 電路邏輯復(fù)雜了,時(shí)種周期多了,但是資源使用少了,只用電路邏輯復(fù)雜了,時(shí)種周期多了,但是資源使用少了,只用203個(gè)個(gè)LC8.2 8.2 速度優(yōu)化速度優(yōu)化z 對(duì)大多數(shù)設(shè)計(jì)來說,經(jīng)常情況下是追求速度,影響速度的因素多,如對(duì)大多數(shù)設(shè)計(jì)來說,經(jīng)常情況下是追求速度,影響速度的因素多,如FPGAFPGA的結(jié)構(gòu)特性、的結(jié)構(gòu)特性、HDLHDL綜合器性能、系統(tǒng)電路結(jié)構(gòu)、綜合器性能、系統(tǒng)電路結(jié)構(gòu)、PCBPCB制版情況、制版情況、VHDLVHDL程程序表達(dá)不當(dāng)?shù)?。序表達(dá)不當(dāng)?shù)取?這里討論電路結(jié)構(gòu)方面的速度優(yōu)化。這里討論電路結(jié)構(gòu)方面的速度

32、優(yōu)化。z 流水線流水線 技術(shù)是一種將每條指令分解為多步,并讓各步操作重疊,從技術(shù)是一種將每條指令分解為多步,并讓各步操作重疊,從而實(shí)現(xiàn)幾條指令并行處理的技術(shù)。而實(shí)現(xiàn)幾條指令并行處理的技術(shù)。程序中的指令仍是一條條順序執(zhí)行,但程序中的指令仍是一條條順序執(zhí)行,但可以預(yù)先取若干條指令,并在當(dāng)前指令尚未執(zhí)行完時(shí),提前啟動(dòng)后續(xù)指令可以預(yù)先取若干條指令,并在當(dāng)前指令尚未執(zhí)行完時(shí),提前啟動(dòng)后續(xù)指令的另一些操作步驟。這樣顯然可加速一段程序的運(yùn)行過程。的另一些操作步驟。這樣顯然可加速一段程序的運(yùn)行過程。 市場上推出的各種不同的市場上推出的各種不同的1 1 6 6位位/ / 3 3 2 2位微處理器基本上都采用了流

33、水線技位微處理器基本上都采用了流水線技術(shù)。如術(shù)。如8 8 0 0 4 4 8 8 6 6和和P P e e n n t t i i u u m m均使用了均使用了6 6步流水線結(jié)構(gòu),流水線的步流水線結(jié)構(gòu),流水線的6 6步為:步為: ( ( 1 1 ) ) 取指令。取指令。C C P P U U從高速緩存或內(nèi)存中取一條指令。從高速緩存或內(nèi)存中取一條指令。 ( ( 2 2 ) ) 指令譯碼。分析指令性質(zhì)。指令譯碼。分析指令性質(zhì)。 ( ( 3 3 ) ) 地址生成。很多指令要訪問存儲(chǔ)器中的操作數(shù),操作數(shù)的地址也許地址生成。很多指令要訪問存儲(chǔ)器中的操作數(shù),操作數(shù)的地址也許在指令字中,也許要經(jīng)過某些運(yùn)算

34、得到。在指令字中,也許要經(jīng)過某些運(yùn)算得到。 ( ( 4 4 ) ) 取操作數(shù)。當(dāng)指令需要操作數(shù)時(shí),就需再訪問存儲(chǔ)器,對(duì)操作數(shù)尋取操作數(shù)。當(dāng)指令需要操作數(shù)時(shí),就需再訪問存儲(chǔ)器,對(duì)操作數(shù)尋址并讀出。址并讀出。 ( ( 5 5 ) ) 執(zhí)行指令。由執(zhí)行指令。由A A L L U U執(zhí)行指令規(guī)定的操作。執(zhí)行指令規(guī)定的操作。 ( ( 6 6 ) ) 存儲(chǔ)或存儲(chǔ)或 寫回寫回 結(jié)果。最后運(yùn)算結(jié)果存放至某一內(nèi)存單元或?qū)懟乩奂咏Y(jié)果。最后運(yùn)算結(jié)果存放至某一內(nèi)存單元或?qū)懟乩奂悠髌鰽 A。 z 流水線技術(shù)是通過增加計(jì)算機(jī)硬件來實(shí)現(xiàn)的。例如要能預(yù)流水線技術(shù)是通過增加計(jì)算機(jī)硬件來實(shí)現(xiàn)的。例如要能預(yù)取指令,就需要增加取指令

35、的硬件電路,并把取來的指令取指令,就需要增加取指令的硬件電路,并把取來的指令存放到指令隊(duì)列緩存器中,使存放到指令隊(duì)列緩存器中,使CPCP U U能同時(shí)進(jìn)行取指令和分能同時(shí)進(jìn)行取指令和分析、執(zhí)行指令的操作。因此,在析、執(zhí)行指令的操作。因此,在1 1 6 6位位/3/3 2 2位微處理器中位微處理器中一般含有兩個(gè)算術(shù)邏輯單元一般含有兩個(gè)算術(shù)邏輯單元A A L L U U,一個(gè)主,一個(gè)主A A L L U U用于執(zhí)行用于執(zhí)行指令,另一個(gè)指令,另一個(gè)A A L L U U專用于地址生成,這樣才可使地址計(jì)專用于地址生成,這樣才可使地址計(jì)算與其它操作重疊進(jìn)行。算與其它操作重疊進(jìn)行。z 加如流水線技術(shù)并不會(huì)

36、減少原設(shè)計(jì)的總延時(shí),但卻可以提加如流水線技術(shù)并不會(huì)減少原設(shè)計(jì)的總延時(shí),但卻可以提高總提的運(yùn)行速度。高總提的運(yùn)行速度。 8.2.1 流水線設(shè)計(jì)流水線設(shè)計(jì)顯然該設(shè)計(jì)從輸入到輸出需經(jīng)過的時(shí)間至少為顯然該設(shè)計(jì)從輸入到輸出需經(jīng)過的時(shí)間至少為TaTa,就是說,時(shí)鐘,就是說,時(shí)鐘信號(hào)信號(hào)clkclk周期不能小于周期不能小于TaTa。其最高頻率為:。其最高頻率為:1/ Ta1/ Ta10.2.1 流水線設(shè)計(jì)流水線設(shè)計(jì)圖圖8-7使用流水線使用流水線其最高頻率為:其最高頻率為:圖圖8-8 流水線工作圖示流水線工作圖示【例【例8-7】 未使用流水線未使用流水線LIBRARY ieee;USE ieee.std_lo

37、gic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;ENTITY adder4 IS PORT(clk : in std_logic; a0,a1,a2,a3 : in std_logic_vector(7 downto 0); yout : out std_logic_vector(9 downto 0);END adder4; 接下頁接下頁ARCHITECTURE normal_arch OF adder4 IS signal t0,t1,t2,t3 : std_logic_vector(7 d

38、ownto 0); signal addtmp0,addtmp1 : std_logic_vector(8 downto 0);BEGINprocess(clk) begin if(clkevent and clk=1) then t0 = a0; t1 = a1; t2 = a2; t3 = a3; end if;end process;addtmp0 = 0&t0 + t1;addtmp1 = 0&t2 + t3;process(clk) begin if(clkevent and clk = 1) then yout = 0&addtmp0 + addtmp1; end if;end p

39、rocess; END normal_arch;【例【例8-8】使用流水線使用流水線LIBRARY ieee;USE ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;ENTITY pipeadd IS PORT(clk : in std_logic; a0,a1,a2,a3 : in std_logic_vector(7 downto 0); yout : out std_logic_vector(9 downto 0);END pipeadd;ARCHITECTURE p

40、ipelining_arch OF pipeadd IS signal t0,t1,t2,t3 : std_logic_vector(7 downto 0); signal addtmp0,addtmp1 : std_logic_vector(8 downto 0);BEGINprocess(clk) begin if(clkevent and clk=1) then t0 = a0; t1 = a1; t2 = a2; t3 = a3; end if;end process;process(clk) begin if(clkevent and clk = 1) then addtmp0 =

41、0&t0 + t1; addtmp1 = 0&t2 + t3; yout = 0&addtmp0 + addtmp1; end if;end process;END pipelining_arch;8.2.2 寄存器配平寄存器配平如果其中的兩個(gè)組合邏輯塊的延時(shí)差別過大,如如果其中的兩個(gè)組合邏輯塊的延時(shí)差別過大,如T T1 1大于大于T T2 2,于是其總體的工,于是其總體的工作頻率作頻率FmaxFmax取決于取決于T T1 1,即最大的延時(shí)模塊,從而導(dǎo)致設(shè)計(jì)的整體性能受到限制。,即最大的延時(shí)模塊,從而導(dǎo)致設(shè)計(jì)的整體性能受到限制。8.2.2 寄存器配平寄存器配平設(shè)計(jì)的設(shè)計(jì)的FmaxFmax將由將

42、由t t1 1決定,由于決定,由于t t11T T1 1,顯然設(shè)計(jì)的速度得到,顯然設(shè)計(jì)的速度得到了提高。了提高。8.2.3 關(guān)鍵路徑法關(guān)鍵路徑法 關(guān)鍵路徑是指從輸入到輸出延時(shí)最長的路徑,從輸入到輸出的延時(shí)取關(guān)鍵路徑是指從輸入到輸出延時(shí)最長的路徑,從輸入到輸出的延時(shí)取決于最長路徑,與其它延時(shí)小的的路徑無關(guān),減小該延時(shí)可以減少總延時(shí)。決于最長路徑,與其它延時(shí)小的的路徑無關(guān),減小該延時(shí)可以減少總延時(shí)。 在優(yōu)化設(shè)計(jì)過程中關(guān)鍵路徑法可以反復(fù)使用,直到不能減少關(guān)鍵路徑的延時(shí)為止。z EDA工具中的綜合器及設(shè)計(jì)分析器通常都提供關(guān)鍵路徑的信息以便設(shè)計(jì)者改進(jìn)設(shè)計(jì),提高速度。z Quartus 中的時(shí)序分析器可以

43、幫助找到延時(shí)最大的關(guān)鍵路徑。z 對(duì)一個(gè)結(jié)構(gòu)已定的設(shè)計(jì)進(jìn)行速度優(yōu)化,關(guān)鍵路徑法是首選的方法,它可以與其它優(yōu)化設(shè)計(jì)技巧配合使用。練習(xí)z 1、利用資源共享對(duì)下面程序進(jìn)行優(yōu)化。、利用資源共享對(duì)下面程序進(jìn)行優(yōu)化。z LIBRARY ieee;z USE ieee.std_logic_1164.all;z USE ieee.std_logic_unsigned.all;z USE ieee.std_logic_arith.all;z ENTITY multmux ISz PORT (A,B,C,D : IN std_logic_vector(7 downto 0);z sel : IN std_logic

44、;z Result : OUT std_logic_vector(7 downto 0);z END multmux;z ARCHITECTURE rtl OF multmux ISz BEGINz process(A,B,C,D ,sel)z beginz if(sel = 0) then Result = A + B;z else Result = C + D;z end if; z end process;z END rtl;z 2、通過邏輯優(yōu)化對(duì)圖示結(jié)構(gòu)進(jìn)行改進(jìn),給出改進(jìn)后的結(jié)構(gòu)圖和VHDL程序。z a3.0z b3.0z a7.4z b7.4z c15.0z a11.8z b11.8

45、z a15.12z b15.124位相關(guān)器4位相關(guān)器4位相關(guān)器4位相關(guān)器+z 3、 已知4節(jié)直接型FIR濾波器節(jié)的數(shù)學(xué)表達(dá)式如下:z y(n)=x(n)h(0)+x(n-1)h(1)+x(n-2)h(2)+x(n-3)h(3)z X(n)與x(n-m),m=0,1,2,3是延遲關(guān)系,m 表示延遲的CLK數(shù)。X(n)與h(m)的位寬為8為,y(n)為10位,其中h(m)在例化后為常數(shù)。設(shè)模塊的輸入為X(n)、CLK,輸出為y(n),實(shí)現(xiàn)該邏輯。z 4、在h(m)固定的情況下,采用流水線技術(shù)對(duì)上面的濾波器進(jìn)行速度優(yōu)化。z 5、為了減少資源使用,對(duì)3、4題的設(shè)計(jì)進(jìn)行面積優(yōu)化。z 6、若對(duì)速度要求不高

46、,但目標(biāo)芯片的容量較小,對(duì)第3題的FIR濾波器用串行化的方式實(shí)現(xiàn)。z 7、設(shè)計(jì)一個(gè)連續(xù)乘法器,輸入為a0、a1、a2、a3,位寬各為8位,輸出為32位,完成rout= a0*a1*a2*a3,試實(shí)現(xiàn)之。z 8、對(duì)上題進(jìn)行優(yōu)化,判斷以下實(shí)現(xiàn)方法,哪種方法更好?z rout= (a0*a1)*a2)*a3z rout= (a0*a1)*(a2*a3)z 9、為提高速度,對(duì)上題第1種方法加入流水線技術(shù)實(shí)現(xiàn)8.3 使用使用MAX+plusII優(yōu)化設(shè)計(jì)優(yōu)化設(shè)計(jì)8.3.1 全局邏輯綜合選項(xiàng)全局邏輯綜合選項(xiàng)8.3.1 全局邏輯綜合選項(xiàng)全局邏輯綜合選項(xiàng)1. 1. 普通類型(普通類型(NormalNormal)

47、2. 2. 快速類型(快速類型(FastFast)3. 3. 所見即所得類型(所見即所得類型(WYSIWYGWYSIWYG)8.3.1 全局邏輯綜合選項(xiàng)全局邏輯綜合選項(xiàng)MAX+plusII中對(duì)應(yīng)于綜合類型各設(shè)有中對(duì)應(yīng)于綜合類型各設(shè)有4種器件系列(種器件系列(Device Family):):(1)MAX5000系列。系列。(2)MAX3000/MAX7000/MAX9000系列。系列。(3)CLASSIC系列。系列。(4)FLEX/ACEX系列。系列。8.3.2 時(shí)間需求選項(xiàng)時(shí)間需求選項(xiàng)建立時(shí)間Tsu輸出時(shí)間Tco時(shí)鐘最大頻率Fmax保持時(shí)間Thold恢復(fù)時(shí)間Tov寄存器的時(shí)序參數(shù)寄存器的時(shí)序

48、參數(shù)組合電路的路徑延時(shí)組合電路的路徑延時(shí)TsuTcoFmax圖圖8-14 部分寄存器時(shí)序參數(shù)部分寄存器時(shí)序參數(shù)TsuTholdTcoFmax圖圖8-15 部分寄部分寄存器參數(shù)時(shí)序存器參數(shù)時(shí)序圖圖圖圖8-16 時(shí)間需求設(shè)定時(shí)間需求設(shè)定圖圖8-17 建立保持時(shí)間分析器建立保持時(shí)間分析器8.3.3 打包(打包(Clique)圖圖8-18 打包打包Clique設(shè)計(jì)示例設(shè)計(jì)示例圖圖8-19 圖圖8-18設(shè)計(jì)適配后的設(shè)計(jì)適配后的Floorplan圖圖8-20 使用使用Clique圖圖8-21 Clique對(duì)話框?qū)υ捒?.3.3 打包(打包(Clique)圖圖8-22 Clique后的后的Floorplan

49、8.3.3 打包(打包(Clique)8.3.3 打包(打包(Clique)CliqueClique的注意事項(xiàng):的注意事項(xiàng):僅僅對(duì)關(guān)聯(lián)的邏輯進(jìn)行僅僅對(duì)關(guān)聯(lián)的邏輯進(jìn)行CliqueClique(打包到同一組)。(打包到同一組)。對(duì)速度有更高要求的模塊使用打包,那些模塊往往處于關(guān)對(duì)速度有更高要求的模塊使用打包,那些模塊往往處于關(guān)鍵路徑,改善它們的速度會(huì)提高系統(tǒng)的整體速度。鍵路徑,改善它們的速度會(huì)提高系統(tǒng)的整體速度。CliqueClique使用于層次化設(shè)計(jì)中,將大的、慢速的邏輯塊分成使用于層次化設(shè)計(jì)中,將大的、慢速的邏輯塊分成小模塊,便合理使用小模塊,便合理使用CliqueClique。對(duì)整個(gè)設(shè)計(jì)應(yīng)用

50、打包(同一組)等于沒有應(yīng)用,打包是一對(duì)整個(gè)設(shè)計(jì)應(yīng)用打包(同一組)等于沒有應(yīng)用,打包是一種局部的布局規(guī)劃,適用于設(shè)計(jì)中的某些模塊。種局部的布局規(guī)劃,適用于設(shè)計(jì)中的某些模塊。8.3.4 局部邏輯綜合選項(xiàng)局部邏輯綜合選項(xiàng)圖圖8-23 使用局部邏輯選項(xiàng)使用局部邏輯選項(xiàng)8.3.4 局部邏輯綜合選項(xiàng)局部邏輯綜合選項(xiàng)圖圖8-25 分立邏輯選項(xiàng)分立邏輯選項(xiàng)8.3.4 局部邏輯綜合選項(xiàng)局部邏輯綜合選項(xiàng)圖圖8-26 清除工程選項(xiàng)設(shè)置清除工程選項(xiàng)設(shè)置8.3.5 Probe的使用的使用圖8-27是一個(gè)簡單的設(shè)計(jì)(圖形方式),假如需要觀察節(jié)點(diǎn)1(Q端)的波形。圖圖8-27 未加未加Probe的設(shè)計(jì)的設(shè)計(jì)8.3.5 Probe的使用的使用圖圖8-28 右鍵菜單右鍵菜單8.3.5 Probe的使用的使用圖圖8-29 加入探針后加入探針后8.3.5 Probe的使用的使用圖圖8-30 probe的仿真波形的仿真波形Probe 使用使用技巧技巧(1 1)對(duì))對(duì)d

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論