版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 1 頁VHDL設(shè)計(jì)風(fēng)格和實(shí)現(xiàn)VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 2 頁內(nèi)容概述一、同步設(shè)計(jì)二、速度三、資源四、其他VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 3 頁一、同步設(shè)計(jì)VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 4 頁什么是同步設(shè)計(jì)?w 同步設(shè)計(jì):上游數(shù)據(jù)到下游邏輯單元的傳遞是通過時鐘來同步的。- 只要能滿足時延要求,就可以確保下游邏輯單元能正確采樣到上游數(shù)據(jù)。w 異步設(shè)計(jì):上游數(shù)據(jù)發(fā)生變化的時機(jī)是不確定的,甚至?xí)霈F(xiàn)中間態(tài)。- 下游邏輯對上游數(shù)據(jù)的采樣是不確定的,會發(fā)生數(shù)據(jù)傳遞的錯誤。VHDL
2、 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 5 頁為什么要做同步設(shè)計(jì) ?w兩年前我做的FPGA設(shè)計(jì),現(xiàn)在卻不能工作。FPGA本身有什么變化嗎?- 如果采用的是異步設(shè)計(jì),能否工作有很多無法控制的隨機(jī)因素。w我的設(shè)計(jì)原來可以工作,但將FPGA重新布線后,就不行了。怎么回事?- 異步設(shè)計(jì)也許在特定布線下能工作,但布線改變后就不行了。很危險(xiǎn)吧?w我的設(shè)計(jì)通過了時間仿真,但上板調(diào)試時不干活。時間仿真對不對?- 對于異步設(shè)計(jì),通過了時間仿真也不一定能正常工作。w要小心,時鐘信號可別產(chǎn)生毛刺啊。w要小心,異步復(fù)位可別有毛刺啊。w快速FPGA中的觸發(fā)器會對非常窄的毛刺信號作出反應(yīng)。- 異步設(shè)計(jì)中,設(shè)計(jì)者老要
3、想著去消除時鐘、異步復(fù)位信號以及鎖存器使能端的毛刺,但這一點(diǎn)在異步設(shè)計(jì)中很困難,甚至不可能。異步設(shè)計(jì)可能會產(chǎn)生以下問題:同步設(shè)計(jì)的一個簡單原則同步設(shè)計(jì)的一個簡單原則: 永遠(yuǎn)不要將組合邏輯產(chǎn)生永遠(yuǎn)不要將組合邏輯產(chǎn)生的信號用作時鐘、異步復(fù)位的信號用作時鐘、異步復(fù)位/置位。置位。VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 6 頁門產(chǎn)生的時鐘有問題w 此例中,計(jì)數(shù)終點(diǎn)信號會產(chǎn)生毛刺,使用該信號作時鐘會引起問題。- MSB布線更短,信號變化先到達(dá)與門。與門會“感知”到1111的中間態(tài)。由于與門為電平敏感,會輸出高電平的毛刺,從而引起寄存器的誤動作。布線更短此處會產(chǎn)生毛刺,并且與計(jì)數(shù)器的時鐘無關(guān)
4、MSB0111 1000 計(jì)數(shù)器的操作為:0111 1111 1000 因?yàn)镸SB更快計(jì)數(shù)器flopMSB此處的與門為電平敏感VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 7 頁相應(yīng)的VHDL代碼signal Counter: std_logic_vector(3 downto 0);signal TC:std_logic;signal flop:std_logic;process(Clk)beginif rising_edge(Clk) thenCounter = Counter + 1;end if;end process;TC = 1 when Counter=“1111” el
5、se 0;-TC為組合邏輯輸出process(TC)beginif rising_edge(TC) then-使用組合邏輯輸出作時鐘,是異步設(shè)計(jì),禁止!flop = end if;end process;VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 8 頁毛刺和同步設(shè)計(jì)u 組合邏輯的毛刺通??偸谴嬖冢y于甚至無法消除u 毛刺只有在異步設(shè)計(jì)中(連接到時鐘、異步復(fù)位、鎖存器的使能端)才存在問題u 在同步設(shè)計(jì)中,由于寄存器在時鐘沿才會動作,只要能滿足時延要求,就能確保采樣到穩(wěn)定正確的結(jié)果u 毛刺無法消除,但其造成的問題卻可以消除 采用同步設(shè)計(jì)并達(dá)到時延要求VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000
6、年6月10日 第 9 頁安全同步化異步輸入一例去抖動邏輯DQR異步輸入系統(tǒng)時鐘同步輸入設(shè)備外圍DQDQ延遲一個周期后才復(fù)位,確保D端輸入脈沖至少有一個周期的寬度,沒有中間態(tài)異步輸入的信號變化時機(jī)和寬度不確定,有抖動(毛刺),不能直接被同步系統(tǒng)正確采樣該邏輯確保能正確得到異步輸入的上升沿。一個時鐘周期內(nèi)的多次電平變化被認(rèn)為是抖動(毛刺),最后只得到一個上升沿。VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 10 頁相應(yīng)的VHDL代碼signal AsynInput:std_logic;signal InputReg:std_logic;signal Delay:std_logic;sign
7、al SynInput:std_logic;process(SynInput, AsynInput)beginif SynInput=1 then-此置位為寄存器信號,為同步設(shè)計(jì),可行InputReg = 0;if rising_edge(AsynInput) thenInputReg = 1;end if;end process;process(Clk) beginif rising_edge(Clk) thenDelay = InputReg;SynInput = Delay;end if;VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 11 頁DQ3Async RINPUTCLOC
8、KCounterQ2Q1Q0DQ同步設(shè)計(jì)方法中TC的生成和使用對照前面異步設(shè)計(jì)中TC生成和使用的例子TCVHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 12 頁相應(yīng)的VHDL代碼signal Counter: std_logic_vector(3 downto 0);signal TC:std_logic;signal flop:std_logic;process(TC, Clk)beginif TC=1 then-此復(fù)位為寄存器信號,為同步設(shè)計(jì),可行Counter = “0000”;TC = -;elsif rising_edge(Clk) thenCounter = Counter
9、+ 1;if Counter=“1110” then-注意和異步設(shè)計(jì)中TC信號的比較-此處TC為寄存器輸出TC = 1;elseTC = 0;end if;end if;end process;VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 13 頁同步設(shè)計(jì)的更多例子(可行)DQ1DTCCounterINPUTCLOCKCounterQ0INPUTCLOCKDCEQRSDATAVHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 14 頁相應(yīng)的VHDL代碼例2signal Counter: std_logic_vector(3 downto 0);signal TC: std_logic
10、;signal s: std_logic;process(Clk)begin if rising_edge(Clk) then if INPUT=1 then Counter = Counter + 1; end if; if TC=1 then -TC 用在寄存器的CE端,為同步設(shè)計(jì),可行 s = DATA;end if; end if;end process;TC = 1 when Counter=“1111” else 0;-TC為組合邏輯輸出例1signal Counter: std_logic_vector(1 downto 0);process(Clk)begin if risin
11、g_edge(Clk) then if INPUT=1 and Counter/=“11” then Counter = Counter + 1; end if; -組合邏輯用在寄存器的D端, -為同步設(shè)計(jì),可行 end if;end process;VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 15 頁異步設(shè)計(jì)的更多例子(禁止)DQ1Async RDTCCounter這些例子有什么問題 ?INPUTCLOCKCounterQ0INPUTCLOCKDCEQRSDATAVHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 16 頁相應(yīng)的VHDL代碼例2signal Counter: st
12、d_logic_vector(3 downto 0);signal TC: std_logic;signal s: std_logic;process(Clk)begin if rising_edge(Clk) then if INPUT=1 then Counter = Counter + 1; end if;end if;end process;TC = 1 when Counter=“1111” else 0;-TC為組合邏輯輸出process(TC)begin if rising_edge(TC)=1 then -TC 用作寄存器的時鐘,為異步設(shè)計(jì),禁止! s = DATA; end
13、if;end process;例1signal Counter: std_logic_vector(1 downto 0);process(Counter, Clk)begin if Counter=“11” then -組合邏輯用作寄存器的異步復(fù)位, -為異步設(shè)計(jì),禁止! Counter = “00”; elsif rising_edge(Clk) then if INPUT=1 then Counter = Counter + 1; end if;end if;end process;VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 17 頁二、速度VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000
14、年6月10日 第 18 頁中間態(tài)、時延和速度w當(dāng)寄存器間數(shù)據(jù)傳遞的時延超過一個時鐘周期,下游寄存器不能在下一個時鐘周期采樣到本時鐘周期給出的上游數(shù)據(jù),出現(xiàn)錯誤。w當(dāng)時鐘來臨時,寄存器輸入發(fā)生變化,會采樣到中間態(tài)。- 建立時間不能被滿足,就會采樣到中間態(tài),最后的采樣結(jié)果不確定。w避免采樣不到和采樣到中間態(tài)的方法是滿足時延要求w系統(tǒng)中的最大時延決定了系統(tǒng)的速度,也決定了系統(tǒng)能正常工作的最大時鐘頻率。DCLKQCLKDQ當(dāng)建立時間不夠時,會采樣到中間態(tài),最后的采樣結(jié)果不確定。建立時間DCLKQDCLKQVHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 19 頁時延中包括時鐘歪斜(Skew)w 下
15、面邏輯中,數(shù)據(jù)時延很小(最大3.6ns),如果時鐘歪斜較小,該邏輯可以跑200MHz以上。w 由于存在時鐘歪斜,F(xiàn)lop B到Flop C的實(shí)際時延為3.3+12.1-3.6=11.8ns,在100MHz下就不能工作。w 計(jì)算速度時要考慮時鐘歪斜的影響。w 使用全局驅(qū)動,可以減少時鐘歪斜。DQINPUTCLOCKDQDQFlop C12.13.63.33.63.13.0Flop BFlop AVHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 20 頁時延級數(shù)怎么算?w FPGA的時延通常 布線占50%,邏輯占50%w 不要忘記了時鐘到輸出的時間 (tco,輸出時間)和時鐘到建立的時間 (t
16、su,建立時間)- 邏輯時延級數(shù)總會包括這兩級。w 還需要檢查I/O的速度。DCEQRPDCEQRPVHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 21 頁XCV100-4的例子w 3級邏輯的速度有多快?w 布線時延大致可估算為與邏輯時延相等 下面Slice的時延是Tilo,從F,G經(jīng)過LUT輸出的時延DCEQDCEQ Tcko+布線布線 +Tilo+布線布線 +Tilo + 布線布線 + Tilo +布線布線 + Tdick 1.372+1.057+0.738+1.057+0.738+1.057+0.738+1.405+ 0.765= 8.927ns 或者或者 110MHz VHDL
17、設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 22 頁速度估計(jì)w用邏輯時延作為網(wǎng)絡(luò)時延的估計(jì)用邏輯時延作為網(wǎng)絡(luò)時延的估計(jì)w已知系統(tǒng)的時鐘頻率,可以估計(jì)允許的邏輯深度已知系統(tǒng)的時鐘頻率,可以估計(jì)允許的邏輯深度和功能需求相對照,修改設(shè)計(jì)以滿足性能需要。w在在50 MHz下使用下使用XCV100-4的例子的例子:時鐘周期20 ns一級布線時延- 5 ns (Tcko + Tnet + Tick) Tcko+Tick=2.871ns允許增加時延=15 ns每增加一級的時延/ 1.52 ns (Tilo + Tnet) Tilo=0.738ns允許增加的級數(shù)=710 SlicesTckoTnetTiloT
18、netTiloTnetTickSliceSliceSliceSlice注意此Slice中使用了LUT,所以建立時間是Tick而不是Tdick,這種映射結(jié)果減少了一級布線時延VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 23 頁對高扇出的網(wǎng)絡(luò)使用全局驅(qū)動w 設(shè)計(jì)中,有高扇出的時鐘使能、IOB三態(tài)以及其他信號嗎?w 使用剩余的BUFG來驅(qū)動它們,以達(dá)到更小的歪斜和更高的性能w 使用BUFG,時鐘和CE輸入的歪斜可以小于1nsw 使用BUFG的方法,實(shí)例化BUFG,將相應(yīng)信號連接上去DCEQRPCE or OE or RSTINPUTCLOCKBUFGVHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6
19、月10日 第 24 頁使用全局復(fù)位有助于提高速度w所有的觸發(fā)器在上電時通過全局置位/復(fù)位(GSR)網(wǎng)絡(luò)進(jìn)行初始化w你可以通過實(shí)例化( instantiating )STARTUP 元件( primitive)訪問GSR網(wǎng)絡(luò)。斷言(assert)GSR進(jìn)行全局置位/復(fù)位GSR自動連接到所有CLB的觸發(fā)器,使用專用的布線資源。使用GSR,可以節(jié)約通用布線資源,減小布線時延,提高系統(tǒng)速度不要連接不要連接GSR到觸發(fā)器的復(fù)位、置位輸入端w任何信號(如內(nèi)部信號、外部輸入等)都可以連接到GSR,但該信號必須在設(shè)計(jì)中定義。w盡可能使用全局復(fù)位限制使用非全局復(fù)位的異步復(fù)位的觸發(fā)器數(shù)量非全局復(fù)位會使用額外的布線
20、資源GR/GSRGTSCLKQ1Q2Q3DoneInSTARTUPQ4VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 25 頁VHDL代碼中的復(fù)位u在下面的VHDL中,應(yīng)該在Rst中對寄存器賦值,否則Rst信號會被綜合成寄存器的CE端的一個輸入。- 浪費(fèi)布線資源、增加邏輯級數(shù),降低系統(tǒng)速度u 即使不關(guān)心寄存器的復(fù)位狀態(tài),也應(yīng)該對其賦初值,可以賦初值為“-”,即“Donnt care”。這樣,寄存器的復(fù)位端不會被使用,節(jié)約布線資源Process(Rst,Clk)begin if Rst=1 then DataValid = 0; Data(31 downto 0) -); -這個語句一定要
21、寫,否則Rst信號會被綜合成寄存器 -Data到DataCE端的一個輸入 elsif rising_edge(Clk) then DataValid = f(x); Data = g(y);-f(x),g(x)表示組合邏輯 end if;end process;小技巧: 對于邏輯向量std_logic_vector的賦值,可以使用“()”來表示。如:signal ptr: std_logic_vector(14 downto 0);ptr = 000 & x000; 可以寫成 ptr 0);ptr(12 downto 7) = - 可以寫成 ptr(12 downto 7) -);pt
22、r = -00 & x000; 可以寫成 ptr -, others=0);VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 26 頁采用流水線邏輯來提高速度w FPGA觸發(fā)器資源豐富w 增加流水線邏輯級數(shù),可提高系統(tǒng)速度DCEQRPDCEQRPDCEQRPDCEQRPDCEQRP25MHz50MHzVHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 27 頁4-5輸入的邏輯函數(shù)對速度和密度最有利w Xilinx FPGA由四輸入查找表(LUT)組成。w 一個查找表能實(shí)現(xiàn)其輸入形成的任何邏輯函數(shù) 相當(dāng)于編址ROM,將輸入作為地址,查找出函數(shù)結(jié)果。w LUT能實(shí)現(xiàn)的函數(shù)只受輸入數(shù)目
23、限制,不受函數(shù)復(fù)雜度限制w 一個Slice中可用兩個LUT和選擇器實(shí)現(xiàn)5輸入的任何邏輯。 減少函數(shù)輸入(扇入)來適合Slice,可以提高邏輯密度和速度。w 取反不耗費(fèi)資源(free)。CLB Lookup TableVHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 28 頁狀態(tài)機(jī)的三種類型編碼與速度w二進(jìn)制: 狀態(tài)序列如同計(jì)數(shù)器序列,S1 = 001, S2=010, S3=011, S4=100, etcw枚舉: 狀態(tài)有指定的值, S1=100, S2=110, S3=101, S4 = 111, etcwOne Hot(單熱): 每個狀態(tài)只有一個寄存器有效,S1=00000001, S
24、2=00000010, S3=00000100, etcw在狀態(tài)機(jī)從當(dāng)前狀態(tài)跳到下一狀態(tài)時,二進(jìn)制和枚舉類型有大量的反饋輸入。這對CPLD(如XC9500)來說是比較合適的。w在FPGA中, 使用二進(jìn)制和枚舉類型可能會占用較少資源但肯定比one-hot 編碼慢。- One Hot每個狀態(tài)只需提供一位反饋輸入VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 29 頁狀態(tài)機(jī)的速度w 對于較大的狀態(tài)機(jī),使用One Hot編碼w 二進(jìn)制或者枚舉編碼,對于較小的狀態(tài)機(jī)合適。w記住四輸入查找表!狀態(tài)機(jī)可能會有很多的扇入,和大量的反饋,對速度不利w 使用One Hot, 并限制輸入狀態(tài)數(shù),使輸入限制到4
25、-5,可以達(dá)到最高的速度。Input 1Input 3State 4State 6State 191 LUTVHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 30 頁DQfn1DQfn1DQfn1對高扇出網(wǎng)絡(luò),通過復(fù)制寄存器來提高速度w 高扇出網(wǎng)絡(luò)(16個負(fù)載)難于布線,而且較慢w 考慮在示意圖或VHDL中復(fù)制資源來改進(jìn)布線和速度w Foundation工具不會自動完成這種功能w 將復(fù)制寄存器命名為 _a, _b, _c, 不要不要用1,2,3. 這樣,F(xiàn)oundation映射(map)時會更有效.VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 31 頁計(jì)數(shù)終點(diǎn)信號提前譯碼以提高速度
26、w 對大的計(jì)數(shù)器而言,譯碼產(chǎn)生計(jì)數(shù)終點(diǎn)信號需要邏輯級數(shù)較多- 提前一個時鐘周期譯碼計(jì)數(shù)終點(diǎn)信號,寄存后使用,可以提高速度,并保持時序關(guān)系不變。LDQ0Q1Q2Q3COD0D1D2D3CECDQCECDATA0DATA1DATA2DATA3ENABLECLOCKVHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 32 頁復(fù)制組合邏輯以提高速度w 如果Logic Replication選項(xiàng)被選中,F(xiàn)oundation會自動復(fù)制組合邏輯 速度/面積的交易w 通過復(fù)制組合邏輯,將邏輯合并入一個Slice中,減少了邏輯級數(shù)w 你的邏輯表達(dá)會影響映射結(jié)果。 扇出大于1的網(wǎng)絡(luò)可能在Slice之外。 留意速
27、度關(guān)鍵路徑的映射結(jié)果O1I1O1I1N1N1 必須輸出到兩個地方,所以O(shè)1需要兩級邏輯復(fù)制第一個門,使得邏輯可以合并入一級邏輯中N1AN1BVHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 33 頁速度關(guān)鍵輸入應(yīng)在邏輯最后一級提供w 關(guān)鍵輸入應(yīng)該在邏輯最后一級提供 關(guān)鍵輸入為芯片、Slice、或者LUT提供的時延最大的輸入 在示意圖中,將關(guān)鍵輸入連接在邏輯最后一級 在VHDL中,將關(guān)鍵輸入放在ifelsif鏈的第一級CLBCLBIN (Critical)FHI0 (Critical)OUTVHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 34 頁使用進(jìn)位邏輯提高速度和密度密度w 使用S
28、lice中的進(jìn)位邏輯可提高算術(shù)運(yùn)算速度 XCV100-4的例子的例子(具體數(shù)據(jù)有待驗(yàn)證)具體數(shù)據(jù)有待驗(yàn)證) 16-bit 加法器(不使用進(jìn)位)10 Slices & 38Mhz 16-bit 加法器(使用進(jìn)位) 8 Slices & 63Mhz 32-bit 加法器(不使用進(jìn)位)21 Slices & 27Mhz 32-bit 加法器(使用進(jìn)位)17 Slices & 44Mhzw 通過進(jìn)位的串行實(shí)現(xiàn)可以提高密度 每個Slice可以實(shí)現(xiàn)2位 進(jìn)位鏈; 例如:XCV100 有30 x20 CLB, 一條進(jìn)位鏈最多可以實(shí)現(xiàn)40位的加法器,一個48位加法器需要兩條鏈w
29、 使用庫中基于進(jìn)位的宏(RPM) 或者LogiBLOXw 許多庫中的算術(shù)函數(shù)是RPM ADDx 加法器, ADSUx 加法/減法器, CCx 計(jì)數(shù)器 COMPMCx magnitude 比較器w RPM 指相對定位宏 通過RLOC屬性指定布局相對位置。 進(jìn)位邏輯的相對布局需要使用垂直進(jìn)位邏輯連接VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 35 頁了解進(jìn)位鏈流向w XC4000E/L和Spartan/XL進(jìn)位鏈流向?yàn)樯舷聝蓚€方向w XC4000EX/XL/XV和Virtex器件的進(jìn)位鏈流向只能向上XC4000ESpartan/XLXC4000EX/XL/XVVirtexLSBMSBVH
30、DL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 36 頁編碼:只有在必要時才使用二進(jìn)制序列w可以生成各種需要的序列,而不僅限于二進(jìn)制w使用預(yù)縮放(prescale)技術(shù)來提高速度低位(LSBs)翻轉(zhuǎn)很快參見Application Notes XAPP001 and XAPP014w如果要譯碼輸出,使用格林(Gray)碼計(jì)數(shù)器每次只翻轉(zhuǎn)一位,可以避免譯碼產(chǎn)生毛刺w如果只需要計(jì)數(shù)終點(diǎn),考慮使用線性反饋移位寄存器(LFSR)提高速度。生成序列可以覆蓋的地址空間為2n-1,全0不包含在序列中。n取不同值時,用來生成反饋位的兩位不同,參見相關(guān)資料在可以采用任意規(guī)則序列的情況下,也可以使用LFSR (比
31、如, FIFO) 進(jìn)位較慢的進(jìn)位較慢的大計(jì)數(shù)器大計(jì)數(shù)器TCCE快速的快速的小小計(jì)數(shù)器計(jì)數(shù)器 10-bit SRQ0Q9Q6VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 37 頁使用預(yù)縮放(Pre-scale)提高計(jì)數(shù)器速度w 計(jì)數(shù)器的速度由從LSB到MSB的進(jìn)位延遲決定w 預(yù)縮放技術(shù)對較大的計(jì)數(shù)器特別有益- 低位翻轉(zhuǎn)很快,用低位的TC作為高位的CE,可以降低高位的時鐘頻率- 使用TimeSpecs進(jìn)行約束w 預(yù)縮放技術(shù)限制了載入時間,故計(jì)數(shù)器不可加載w 參考XAPP014快速的快速的小計(jì)數(shù)器小計(jì)數(shù)器進(jìn)位較慢的進(jìn)位較慢的大計(jì)數(shù)器大計(jì)數(shù)器TCCEVHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月1
32、0日 第 38 頁I/O 速度:FPGA的建立時間 TsuwFPGA的輸入輸出也有時延要求。w滿足時延要求的FPGA建立時間由: 全局時鐘時延Tbufg 、板上時延Tbrd和上游器件的輸出時間Tco(up)決定。wFPGA建立時間(Tsu)的計(jì)算公式:Tsu-fpga = Tcyc -Tco(up)- Tbrd + Tbufgw可以使用“OFFSET IN”對Tsu進(jìn)行約束DCEQ上游器件上游器件DCEQXCV400 FPGAClock (Tcyc)Tco(up)TbrdTbufgTsuVHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 39 頁I/O速度:FPGA的輸出時間Tcow FPG
33、A輸出時間的計(jì)算公式:Tco = Tcyc - Tsu(down) - Tbrd - Tbufgw 使用“OFFSET OUT”對Tco進(jìn)行約束DCEQXCV400 FPGADCEQ下游器件下游器件Clock (Tcyc)TcoTbrdTbufgTsu(down)VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 40 頁OPADOBUFFAST使用快歪斜率提高輸出速度w 歪斜率控制輸出速度w 缺省使用“slow”歪斜率,以降低噪音w 當(dāng)速度重要時,使用“fast”歪斜率 FAST是輸出邏輯元件(primitive)的一個參數(shù) 可以通過加入FAST約束實(shí)現(xiàn)。VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 200
34、0年6月10日 第 41 頁使用I/O寄存器提高輸入和輸出速度w使用IOB中的I/O寄存器,可以提高輸入和輸出速度- 輸入或輸出可以去除從內(nèi)部布線的時延,IOB中的時延也更小- 還可以節(jié)約寄存器資源w實(shí)現(xiàn)選項(xiàng)中,選擇“Pack I/O Registers/Latches into IOBs for Inputs and Outputs”- 輸入若未寄存,直接扇入到組合邏輯,則不能map到IO寄存器中- 輸出若為組合邏輯輸出,或者需要反饋為輸入,則不能map到IO寄存器中DCEQDCEQI/O padFrom: FPGAInto: FPGAOFFIFFOutput ClockInput Cloc
35、kVHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 42 頁使用I/O寄存器的例子(FPGA-FPGA)DCEQ發(fā)送器發(fā)送器(XCV100-4 FPGA)DCEQ接收器接收器(XCV100-4 FPGA)使用IOB中寄存器的時延Tiockp + PCB網(wǎng)絡(luò)時延 + Tiopick5.649 1.962=7.611不使用IOB中寄存器的時延(Tcko + Tnet +Tioop) + PCB網(wǎng)絡(luò)時延 + (Tiopi + Tnet + Tdick) (1.372 +0.756+5.652)(0.989+ 1.930+0.728)7.7803.647 =11.427VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn),
36、2000年6月10日 第 43 頁輸入速度:可編程的輸入時延w FPGA的輸入通道上有一個可編程的時延w 可以用來在建立時間和保持時間之間達(dá)到妥協(xié)。w 可選擇全部、部分或無時延w 缺省為全時延,以使保持時間的需求為0w 可在UCF中進(jìn)行控制。DCEQXC4000 FPGA輸入時延輸入時延BUFGXC4036XL-1的例子的例子:時延情況時延情況 建立時間建立時間保持時間保持時間全時延全時延: Tsu = 5.8nsTh = 0 ns部分時延部分時延: Tsu = 4.8nsTh = 1 ns無時延無時延: Tsu = 0.9nsTh = 4.1nsVHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10
37、日 第 44 頁I/O速度的其他提示w XC4000-13,36,62XL是turbo boosted。w 使用BUFG,可提高pin to pin時延VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 45 頁三、資源VHDL 設(shè)計(jì)風(fēng)格和實(shí)現(xiàn), 2000年6月10日 第 46 頁w資源使用量是指FPGA使用了的百分率w在宏、庫、以及XAPP application notes中找到可比較的函數(shù)來估計(jì)資源使用量或者,使用別的設(shè)計(jì)來估計(jì)器件使用率w快速實(shí)現(xiàn),然后查看MAP報(bào)告選擇“Implementation/ View Report Files/ Map report”Slices, IOB
38、s, Block RAMs, 以及其他部件分別列出,并給出使用百分率。最后給出相當(dāng)于ASIC的門數(shù)資源估計(jì)Design Summary- Number of errors: 0 Number of warnings: 644 Number of Slices: 1,147 out of 1,200 95% Slice Flip Flops: 735 4 input LUTs: 1,046 (1 used as a route-thru) Dual Port RAMs: 312 Number of Slices containing unrelated logic: 0 out of 1,147 0% Number of bonded IOBs:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度電動車電瓶租賃與節(jié)能減排服務(wù)合同
- 施工現(xiàn)場施工防化學(xué)泄漏威脅制度
- 情緒管理在校園心理輔導(dǎo)中的實(shí)踐
- DB35T 2233-2024桂花無性繁殖技術(shù)規(guī)程
- 專業(yè)墊資抵押合同范本
- 中外合資企業(yè)合同
- 個人大額度借款合同細(xì)則
- 買賣合同爭議仲裁協(xié)議書模板
- 人事檔案委托保管合同
- 上海市某餐飲管理有限公司勞動合同
- 汽油安全技術(shù)說明書(MSDS)
- 政府機(jī)關(guān)法律服務(wù)投標(biāo)方案
- 中國直銷發(fā)展四個階段解析
- 2024屆浙江省寧波市鎮(zhèn)海區(qū)鎮(zhèn)海中學(xué)高一物理第一學(xué)期期末質(zhì)量檢測試題含解析
- 部編版語文四年級下冊 教材解讀
- 《學(xué)會積極歸因》教學(xué)設(shè)計(jì)
- 《一次函數(shù)與方程、不等式》說課稿
- 動火作業(yè)安全管理要求及控制措施
- 詩豪劉禹錫一生部編教材PPT
- 中國營養(yǎng)師培訓(xùn)教材1
- 《民航服務(wù)溝通技巧》教案第13課內(nèi)部溝通基礎(chǔ)知識
評論
0/150
提交評論