![FPGACPLD數(shù)字電路設(shè)計(jì)經(jīng)驗(yàn)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/15/c29d1c03-847e-4390-b775-2ccedefbbea8/c29d1c03-847e-4390-b775-2ccedefbbea81.gif)
![FPGACPLD數(shù)字電路設(shè)計(jì)經(jīng)驗(yàn)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/15/c29d1c03-847e-4390-b775-2ccedefbbea8/c29d1c03-847e-4390-b775-2ccedefbbea82.gif)
![FPGACPLD數(shù)字電路設(shè)計(jì)經(jīng)驗(yàn)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/15/c29d1c03-847e-4390-b775-2ccedefbbea8/c29d1c03-847e-4390-b775-2ccedefbbea83.gif)
![FPGACPLD數(shù)字電路設(shè)計(jì)經(jīng)驗(yàn)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/15/c29d1c03-847e-4390-b775-2ccedefbbea8/c29d1c03-847e-4390-b775-2ccedefbbea84.gif)
![FPGACPLD數(shù)字電路設(shè)計(jì)經(jīng)驗(yàn)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/15/c29d1c03-847e-4390-b775-2ccedefbbea8/c29d1c03-847e-4390-b775-2ccedefbbea85.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、.FPGA/CPLD數(shù)字電路設(shè)計(jì)經(jīng)驗(yàn)分享摘要:在數(shù)字電路的設(shè)計(jì)中,時(shí)序設(shè)計(jì)是一個(gè)系統(tǒng)性能的主要標(biāo)志,在高層次設(shè)計(jì)方法中,對(duì)時(shí)序控制的抽象度也相應(yīng)提高,因此在設(shè)計(jì)中較難把握,但在理解RTL電路時(shí)序模型的基礎(chǔ)上,采用合理的設(shè)計(jì)方法在設(shè)計(jì)復(fù)雜數(shù)字系統(tǒng)是行之有效的,通過許多設(shè)計(jì)實(shí)例證明采用這種方式可以使電路的后仿真通過率大大提高,并且系統(tǒng)的工作頻率可以達(dá)到一個(gè)較高水平。關(guān)鍵詞:FPGA 數(shù)字電路 時(shí)序 時(shí)延路徑 建立時(shí)間 保持時(shí)間1 數(shù)字電路設(shè)計(jì)中的幾個(gè)基本概念:1.1 建立時(shí)間和保持時(shí)間:建立時(shí)間(setup time)是指在觸發(fā)器的時(shí)鐘信號(hào)上升沿到來以前,數(shù)據(jù)穩(wěn)定不變的時(shí)間,如果建立時(shí)間不夠,數(shù)據(jù)
2、將不能在這個(gè)時(shí)鐘上升沿被打入觸發(fā)器;保持時(shí)間(hold time)是指在觸發(fā)器的時(shí)鐘信號(hào)上升沿到來以后,數(shù)據(jù)穩(wěn)定不變的時(shí)間, 如果保持時(shí)間不夠,數(shù)據(jù)同樣不能被打入觸發(fā)器。 如圖1 。 數(shù)據(jù)穩(wěn)定傳輸必須滿足建立和保持時(shí)間的要求,當(dāng)然在一些情況下,建立時(shí)間和保持時(shí)間的值可以為零。 PLD/FPGA開發(fā)軟件可以自動(dòng)計(jì)算兩個(gè)相關(guān)輸入的建立和保持時(shí)間(如圖2)圖1 建立時(shí)間和保持時(shí)間關(guān)系圖注:l 在考慮建立保持時(shí)間時(shí),應(yīng)該考慮時(shí)鐘樹向后偏斜的情況,在考慮建立時(shí)間時(shí)應(yīng)該考慮時(shí)鐘樹向前偏斜的情況。在進(jìn)行后仿真時(shí),最大延遲用來檢查建立時(shí)間,最小延時(shí)用來檢查保持時(shí)間。l 建立時(shí)間的約束和時(shí)鐘周期有關(guān),當(dāng)系統(tǒng)在高
3、頻時(shí)鐘下無法工作時(shí),降低時(shí)鐘頻率就可以使系統(tǒng)完成工作。保持時(shí)間是一個(gè)和時(shí)鐘周期無關(guān)的參數(shù),如果設(shè)計(jì)不合理,使得布局布線工具無法布出高質(zhì)量的時(shí)鐘樹,那么無論如何調(diào)整時(shí)鐘頻率也無法達(dá)到要求,只有對(duì)所設(shè)計(jì)系統(tǒng)作較大改動(dòng)才有可能正常工作,導(dǎo)致設(shè)計(jì)效率大大降低。因此合理的設(shè)計(jì)系統(tǒng)的時(shí)序是提高設(shè)計(jì)質(zhì)量的關(guān)鍵。在可編程器件中,時(shí)鐘樹的偏斜幾乎可以不考慮,因此保持時(shí)間通常都是滿足的。1.2 FPGA中的競爭和冒險(xiǎn)現(xiàn)象信號(hào)在FPGA器件內(nèi)部通過連線和邏輯單元時(shí),都有一定的延時(shí)。延時(shí)的大小與連線的長短和邏輯單元的數(shù)目有關(guān),同時(shí)還受器件的制造工藝、工作電壓、溫度等條件的影響。信號(hào)的高低電平轉(zhuǎn)換也需要一定的過渡時(shí)間。
4、由于存在這兩方面因素,多路信號(hào)的電平值發(fā)生變化時(shí),在信號(hào)變化的瞬間,組合邏輯的輸出有先后順序,并不是同時(shí)變化,往往會(huì)出現(xiàn)一些不正確的尖峰信號(hào),這些尖峰信號(hào)稱為毛刺。如果一個(gè)組合邏輯電路中有毛刺出現(xiàn),就說明該電路存在冒險(xiǎn)。(與分立元件不同,由于PLD內(nèi)部不存在寄生電容電感,這些毛刺將被完整的保留并向下一級(jí)傳遞,因此毛刺現(xiàn)象在PLD、FPGA設(shè)計(jì)中尤為突出)圖2是一個(gè)邏輯冒險(xiǎn)的例子,從圖3的仿真波形可以看出,A、B、C、D四個(gè)輸入信號(hào)經(jīng)過布線延時(shí)以后,高低電平變換不是同時(shí)發(fā)生的,這導(dǎo)致輸出信號(hào)OUT出現(xiàn)了毛刺。(我們無法保證所有連線的長度一致,所以即使四個(gè)輸入信號(hào)在輸入端同時(shí)變化,但經(jīng)過PLD內(nèi)部
5、的走線,到達(dá)或門的時(shí)間也是不一樣的,毛刺必然產(chǎn)生)??梢愿爬ǖ闹v,只要輸入信號(hào)同時(shí)變化,(經(jīng)過內(nèi)部走線)組合邏輯必將產(chǎn)生毛刺。 將它們的輸出直接連接到時(shí)鐘輸入端、清零或置位端口的設(shè)計(jì)方法是錯(cuò)誤的,這可能會(huì)導(dǎo)致嚴(yán)重的后果。 所以我們必須檢查設(shè)計(jì)中所有時(shí)鐘、清零和置位等對(duì)毛刺敏感的輸入端口,確保輸入不會(huì)含有任何毛刺圖2 存在邏輯冒險(xiǎn)的電路示例圖3 圖2所示電路的仿真波形冒險(xiǎn)往往會(huì)影響到邏輯電路的穩(wěn)定性。時(shí)鐘端口、清零和置位端口對(duì)毛刺信號(hào)十分敏感,任何一點(diǎn)毛刺都可能會(huì)使系統(tǒng)出錯(cuò),因此判斷邏輯電路中是否存在冒險(xiǎn)以及如何避免冒險(xiǎn)是設(shè)計(jì)人員必須要考慮的問題。如何處理毛刺我們可以通過改變?cè)O(shè)計(jì),破壞毛刺產(chǎn)生的
6、條件,來減少毛刺的發(fā)生。例如,在數(shù)字電路設(shè)計(jì)中,常常采用格雷碼計(jì)數(shù)器取代普通的二進(jìn)制計(jì)數(shù)器,這是因?yàn)楦窭状a計(jì)數(shù)器的輸出每次只有一位跳變,消除了競爭冒險(xiǎn)的發(fā)生條件,避免了毛刺的產(chǎn)生。毛刺并不是對(duì)所有的輸入都有危害,例如D觸發(fā)器的D輸入端,只要毛刺不出現(xiàn)在時(shí)鐘的上升沿并且滿足數(shù)據(jù)的建立和保持時(shí)間,就不會(huì)對(duì)系統(tǒng)造成危害,我們可以說D觸發(fā)器的D輸入端對(duì)毛刺不敏感。 根據(jù)這個(gè)特性,我們應(yīng)當(dāng)在系統(tǒng)中盡可能采用同步電路,這是因?yàn)橥诫娐沸盘?hào)的變化都發(fā)生在時(shí)鐘沿,只要毛刺不出現(xiàn)在時(shí)鐘的沿口并且不滿足數(shù)據(jù)的建立和保持時(shí)間,就不會(huì)對(duì)系統(tǒng)造成危害。 (由于毛刺很短,多為幾納秒,基本上都不可能滿足數(shù)據(jù)的建立和保持時(shí)間
7、)去除毛刺的一種常見的方法是利用D觸發(fā)器的D輸入端對(duì)毛刺信號(hào)不敏感的特點(diǎn),在輸出信號(hào)的保持時(shí)間內(nèi),用觸發(fā)器讀取組合邏輯的輸出信號(hào),這種方法類似于將異步電路轉(zhuǎn)化為同步電路。 圖4給出了這種方法的示范電路,圖5是仿真波形。圖4 消除毛刺信號(hào)方法之二圖5 圖4所示電路的仿真波形如前所述,優(yōu)秀的設(shè)計(jì)方案,如采用格雷碼計(jì)數(shù)器,同步電路等,可以大大減少毛刺,但它并不能完全消除毛刺。 毛刺并不是對(duì)所有輸入都有危害,例如D觸發(fā)器的D輸入端,只要毛刺不出現(xiàn)在時(shí)鐘的上升沿并且滿足數(shù)據(jù)的建立和保持時(shí)間,就不會(huì)對(duì)系統(tǒng)造成危害。因此我們可以說D觸發(fā)器的D輸入端對(duì)毛刺不敏感。但對(duì)于D觸發(fā)器的時(shí)鐘端,置位端,清零端,則都是
8、對(duì)毛刺敏感的輸入端,任何一點(diǎn)毛刺就會(huì)使系統(tǒng)出錯(cuò),但只要認(rèn)真處理,我們可以把危害降到最低直至消除。下面我們就對(duì)幾種具體的信號(hào)進(jìn)行探討。1.3 清除和置位信號(hào)在FPGA的設(shè)計(jì)中,全局的清零和置位信號(hào)必須經(jīng)過全局的清零和置位管腳輸入,因?yàn)樗麄円矊儆谌值馁Y源,其扇出能力大,而且在FPGA內(nèi)部是直接連接到所有的觸發(fā)器的置位和清零端的,這樣的做法會(huì)使芯片的工作可靠、性能穩(wěn)定,而使用普通的IO腳則不能保證該性能。在FPGA的設(shè)計(jì)中,除了從外部管腳引入的全局清除和置位信號(hào)外在FPGA內(nèi)部邏輯的處理中也經(jīng)常需要產(chǎn)生一些內(nèi)部的清除或置位信號(hào)。清除和置位信號(hào)要求象對(duì)待時(shí)鐘那樣小心地考慮它們,因?yàn)檫@些信號(hào)對(duì)毛刺也是
9、非常敏感的。在同步電路設(shè)計(jì)中,有時(shí)候可以用同步置位的辦法來替代異步清0。在用硬件描述語言的設(shè)計(jì)中可以用如下的方式來描述:異步清0的描述方法:process(rst,clk)begin if rst=1 then count0);elsif clkevent and clk=1 then count=count+1;end if;end process;同步清0的描述方法:processbegin wait until clkevent and clk=1;if rst=1 then count0);else count=count+1;end if;end process;圖6 異步清0、置位
10、邏輯圖圖7 同步清0、置位關(guān)系圖1.4 觸發(fā)器和鎖存器:我們知道,觸發(fā)器是在時(shí)鐘的沿進(jìn)行數(shù)據(jù)的鎖存的,而鎖存器是用電平使能來鎖存數(shù)據(jù)的。所以觸發(fā)器的Q輸出端在每一個(gè)時(shí)鐘沿都會(huì)被更新,而鎖存器只能在使能電平有效器件才會(huì)被更新。在FPGA設(shè)計(jì)中建議如果不是必須那么應(yīng)該盡量使用觸發(fā)器而不是鎖存器。 那么在使用硬件描述語言進(jìn)行電路設(shè)計(jì)的時(shí)候如何區(qū)分觸發(fā)器和鎖存器的描述方法哪?其實(shí)有不少人在使用的過程中可能并沒有特意區(qū)分過,所以也忽略了二者在描述方法上的區(qū)別。下面是用VHDL語言描述的觸發(fā)器和鎖存器以及綜合器產(chǎn)生的電路邏輯圖。觸發(fā)器的語言描述:processbegin wait until clkeve
11、nt and clk=1; q=d;end process;圖 觸發(fā)器鎖存器的語言描述:process(en,d)begin if en=1 then q=d;end if;end process;圖 所存器由上述對(duì)Latch的描述可見,其很容易于選擇器的描述相混淆,用VHDL語言對(duì)選擇器的描述方法如下:process(en,a,b)begin if en=1 then q=a; else q=b;end if;end process;2 FPGA/CPLD中的一些設(shè)計(jì)方法2.1 FPGA設(shè)計(jì)中的同步設(shè)計(jì)異步設(shè)計(jì)不是總能滿足(它們所饋送的觸發(fā)器的)建立和保持時(shí)間的要求。因此,異步輸入常常會(huì)把錯(cuò)
12、誤的數(shù)據(jù)鎖存到觸發(fā)器,或者使觸發(fā)器進(jìn)入亞穩(wěn)定的狀態(tài),在該狀態(tài)下,觸發(fā)器的輸出不能識(shí)別為l或0。如果沒有正確地處理,亞穩(wěn)性會(huì)導(dǎo)致嚴(yán)重的系統(tǒng)可靠性問題。另外,在FPGA的內(nèi)部資源里最重要的一部分就是其時(shí)鐘資源(全局時(shí)鐘網(wǎng)絡(luò)),它一般是經(jīng)過FPGA的特定全局時(shí)鐘管腳進(jìn)入FPGA內(nèi)部,后經(jīng)過全局時(shí)鐘BUF適配到全局時(shí)鐘網(wǎng)絡(luò)的,這樣的時(shí)鐘網(wǎng)絡(luò)可以保證相同的時(shí)鐘沿到達(dá)芯片內(nèi)部每一個(gè)觸發(fā)器的延遲時(shí)間差異是可以忽略不計(jì)的。在FPGA中上述的全局時(shí)鐘網(wǎng)絡(luò)被稱為時(shí)鐘樹,無論是專業(yè)的第三方工具還是器件廠商提供的布局布線器在延時(shí)參數(shù)提取、分析的時(shí)候都是依據(jù)全局時(shí)鐘網(wǎng)絡(luò)作為計(jì)算的基準(zhǔn)的。如果一個(gè)設(shè)計(jì)沒有使用時(shí)鐘樹提供的
13、時(shí)鐘,那么這些設(shè)計(jì)工具有的會(huì)拒絕做延時(shí)分析有的延時(shí)數(shù)據(jù)將是不可靠的。在我們?nèi)粘5脑O(shè)計(jì)中很多情形下會(huì)用到需要分頻的情形,好多人的做法是先用高頻時(shí)鐘計(jì)數(shù),然后使用計(jì)數(shù)器的某一位輸出作為工作時(shí)鐘進(jìn)行其他的邏輯設(shè)計(jì)。其實(shí)這樣的方法是不規(guī)范的。比如下面的描述方法:processbegin wait until clkevent and clk=1; if fck=1 thencount0); else count=count+1; end if;end process;processbegin wait until count(2)event and count(2)=1 ; shift_reg=dat
14、a;end process;在上述的第一個(gè)process電路描述中,首先計(jì)數(shù)器的輸出結(jié)果(count(2))相對(duì)于全局時(shí)鐘clk已經(jīng)產(chǎn)生了一定的延時(shí)(延時(shí)的大小取決于計(jì)數(shù)器的位數(shù)和所選擇使用的器件工藝);而在第二個(gè)process中使用計(jì)數(shù)器的bit2作為時(shí)鐘,那么shift_reg相對(duì)于全局clk的延時(shí)將變得不好控制。布局布線器最終給出的時(shí)間分析也是不可靠的。這樣產(chǎn)生的結(jié)果波形仿真如下圖所示:正確的做法可以將第二個(gè)process這樣來寫。processbegin wait until clkevent and clk=1 ; if count(2 downto 0)=”000” then sh
15、ift_reg=data;end if;end process;或者分成兩步來寫:process(count)begin if count(2 downto 0)=”000” thenen=1;else en=0;end if;end process;processbegin wait until clkevent and clk=1 ; if en=1 then shift_reg add_12_a_0 = (0 & count_buffer(0)(10 downto 0); add_12_b_0 add_12_a_0 = (0 & count_buffer(0)(21 downto 11)
16、; add_12_b_0 add_12_a_0 = (00 & count_buffer(0)(31 downto 22); add_12_b_0 add_12_a_0 X); add_12_b_0 X); end case;end process;-12 bits adderadd_12_result_0 = add_12_a_0 + add_12_b_0;-Bytes Countprocess(RST,CLK_25MHz,IO,OE_bar,data_sel,Count_0_en)begin if(RST = 1)then -system Reset count_buffer(0) 0);
17、 Carry_0_0 = 0; Carry_0_1 = 0; Carry_0_2 = 0; elsif(CLK_25MHzevent and CLK_25MHz = 0)then if(OE_bar = 0 and data_sel = 0)then count_buffer(0) = IO; Carry_0_2 count_buffer(0)(10 downto 0) = add_12_result_0(10 downto 0); Carry_0_0 count_buffer(0)(21 downto 11) = add_12_result_0(10 downto 0); Carry_0_1
18、 count_buffer(0)(31 downto 22) = add_12_result_0(9 downto 0); Carry_0_2 Carry_0_2 = 0; end case; end if; end if;end process;2.4 信號(hào)輸出 當(dāng)你需要將FPGA/CPLD內(nèi)部的信號(hào)通過管腳輸出給外部相關(guān)器件的時(shí)候,如果不影響功能最好是將這些信號(hào)通過用時(shí)鐘鎖存后輸出。因?yàn)橥ǔG闆r下一個(gè)板子是工作于一種或兩種時(shí)鐘模式下,與FPGA/CPLD相連接的芯片的工作時(shí)鐘大多數(shù)情形下與FPGA的時(shí)鐘同源,如果輸出的信號(hào)經(jīng)過時(shí)鐘鎖存可以起到如下的作用:n 容易滿足芯片間信號(hào)連接的時(shí)序要求
19、;n 容易滿足信號(hào)的建立保持時(shí)間;如上圖所示,比如FPGA/CPLD在CLK的時(shí)鐘沿1鎖存一個(gè)信號(hào)得到SIG所示的波形,SIG信號(hào)需要給另外的一個(gè)與其接口的芯片,那么該芯片將一定會(huì)在CLK的時(shí)鐘沿2正確采樣到SIG信號(hào)。但是如果該信號(hào)在FPGA/CPLD中輸出的時(shí)候不是用時(shí)鐘沿鎖存的,那將有可能出現(xiàn)SIG1/SIG2所示的時(shí)序關(guān)系,則與其接口的芯片在時(shí)鐘沿2處采樣該信號(hào)的時(shí)候有可能出現(xiàn)建立保持時(shí)間不滿足要求而出現(xiàn)采樣不可靠、沿打沿等情況。另外通過組合邏輯輸出還有可能出現(xiàn)毛刺的情況。所有這些不規(guī)范的設(shè)計(jì)都會(huì)引起系統(tǒng)工作時(shí)的不可靠、不穩(wěn)定的情形。2.5 寄存異步輸入信號(hào)我們?cè)谌粘5脑O(shè)計(jì)工作中,F(xiàn)P
20、GA/CPLD總是要與別的芯片相連接的,F(xiàn)PGA/CPLD會(huì)給別的芯片輸出信號(hào),同時(shí)也要處理別的芯片送來的信號(hào),這些信號(hào)往往對(duì)FPGA/CPLD內(nèi)部的時(shí)鐘系統(tǒng)而言是異步的,為了可靠的采樣到這些輸入信號(hào),建議將這些輸入信號(hào)使用相應(yīng)的時(shí)鐘鎖存后在處理,這樣做:n 將原來的異步信號(hào)轉(zhuǎn)化成同步來處理;n 去除輸入信號(hào)中的毛刺(特別是對(duì)于數(shù)據(jù)總線);圖 FPGA/CPLD中信號(hào)的輸入、輸出鎖存2.6 FPGA/CPLD中的時(shí)鐘設(shè)計(jì)無淪是用離散邏輯、可編程邏輯,還是用全定制硅器件實(shí)現(xiàn)的任何數(shù)字設(shè)計(jì),為了成功地操作,可靠的時(shí)鐘是非常關(guān)鍵的。設(shè)計(jì)不良的時(shí)鐘在極限的溫度、電壓或制造工藝的偏差情況下將導(dǎo)致錯(cuò)誤的行
21、為,并且調(diào)試?yán)щy、花銷很大。在設(shè)計(jì)FPGA/CPLD時(shí)通常采用幾種時(shí)鐘類型。時(shí)鐘可分為如下四種類型:全局時(shí)鐘、門控時(shí)鐘、多級(jí)邏輯時(shí)鐘和波動(dòng)式時(shí)鐘。多時(shí)鐘系統(tǒng)能夠包括上述四種時(shí)鐘類型的任意組合。無論采用何種方式,電路中真實(shí)的時(shí)鐘樹也無法達(dá)到假定的理想時(shí)鐘,因此我們必須依據(jù)理想時(shí)鐘,建立一個(gè)實(shí)際工作時(shí)鐘模型來分析電路,這樣才可以使得電路的實(shí)際工作效果和預(yù)期的一樣。在實(shí)際的時(shí)鐘模型中,我們要考慮時(shí)鐘樹傳播中的偏斜、跳變和絕對(duì)垂直的偏差以及其它一些不確定因素。對(duì)于寄存器而言,當(dāng)時(shí)鐘工作沿到來時(shí)它的數(shù)據(jù)端應(yīng)該已經(jīng)穩(wěn)定,這樣才能保證時(shí)鐘工作沿采樣到數(shù)據(jù)的正確性,這段數(shù)據(jù)的預(yù)備時(shí)間我們稱之為建立時(shí)間(set
22、up time)。數(shù)據(jù)同樣應(yīng)該在時(shí)鐘工作沿過去后保持一段時(shí)間,這段時(shí)間稱為保持時(shí)間(hold time)。因此具體的時(shí)鐘如圖5所示。其中網(wǎng)絡(luò)延遲是指時(shí)鐘的傳播延時(shí)以及因?yàn)樘儾淮怪钡刃У钠?,在此基礎(chǔ)上考慮一些不確定因素實(shí)際的工作時(shí)鐘沿如圖中所示。保持時(shí)間(hold)和建立時(shí)間(setup)都是相對(duì)于實(shí)際時(shí)鐘跳變而言的。因此在確定電路時(shí)序時(shí),必須要考慮到這些因素,使得建立時(shí)間和保持時(shí)間符合要求。為了使電路正常工作,建立時(shí)間和保持時(shí)間應(yīng)該分別滿足:其中tclock_Q_max是時(shí)鐘沿變化到數(shù)據(jù)輸出端變化的最慢變化情況,tlogic_max是寄存器間組合邏輯的最大可能延遲,tclock_Q_min
23、和tlogic_min表示最快情況。在考慮建立保持時(shí)間時(shí),應(yīng)該考慮時(shí)鐘樹向后偏斜的情況,在考慮建立時(shí)間時(shí)應(yīng)該考慮時(shí)鐘樹向前偏斜的情況。在進(jìn)行后仿真時(shí),最大延遲用來檢查建立時(shí)間,最小延時(shí)用來檢查保持時(shí)間。2.6.1 全局時(shí)鐘對(duì)于一個(gè)設(shè)計(jì)項(xiàng)目來說,全局時(shí)鐘(或同步時(shí)鐘)是最簡單和最可預(yù)測的時(shí)鐘。在PLD/FPGA設(shè)計(jì)中最好的時(shí)鐘方案是:由專用的全局時(shí)鐘輸入引腳驅(qū)動(dòng)的單個(gè)主時(shí)鐘去鐘控設(shè)計(jì)項(xiàng)目中的每一個(gè)觸發(fā)器。只要可能就應(yīng)盡量在設(shè)計(jì)項(xiàng)目中采用全局時(shí)鐘。PLD/FPGA都具有專門的全局時(shí)鐘引腳,它直接連到器件中的每一個(gè)寄存器。這種全局時(shí)鐘提供器件中最短的時(shí)鐘到輸出的延時(shí)。圖1 示出全局時(shí)鐘的實(shí)例。圖1
24、定時(shí)波形示出觸發(fā)器的數(shù)據(jù)輸入D1.3應(yīng)遵守建立時(shí)間和保持時(shí)間的約束條件。建立和保持時(shí)間的數(shù)值在PLD數(shù)據(jù)手冊(cè)中給出,也可用軟件的定時(shí)分析器計(jì)算出來。如果在應(yīng)用中不能滿足建立和保持時(shí)間的要求,則必須用時(shí)鐘同步輸入信號(hào)(參看下一章“異步輸入”)。圖1 全局時(shí)鐘(最好的方法是用全局時(shí)鐘引腳去鐘控PLD內(nèi)的每一個(gè)寄存器,于是數(shù)據(jù)只要遵守相對(duì)時(shí)鐘的建立時(shí)間tsu和保持時(shí)間th)2.6.2 門控時(shí)鐘在許多應(yīng)用中,整個(gè)設(shè)計(jì)項(xiàng)目都采用外部的全局時(shí)鐘是不可能或不實(shí)際的。PLD具有乘積項(xiàng)邏輯陣列時(shí)鐘(即時(shí)鐘是由邏輯產(chǎn)生的),允許任意函數(shù)單獨(dú)地鐘控各個(gè)觸發(fā)器。然而,當(dāng)你用陣列時(shí)鐘時(shí),應(yīng)仔細(xì)地分析時(shí)鐘函數(shù),以避免毛刺
25、。 通常用陣列時(shí)鐘構(gòu)成門控時(shí)鐘。門控時(shí)鐘常常同微處理器接口有關(guān),用地址線去控制寫脈沖。然而,每當(dāng)用組合函數(shù)鐘控觸發(fā)器時(shí),通常都存在著門控時(shí)鐘。如果符合下述條件,門控時(shí)鐘可以象全局時(shí)鐘一樣可靠地工作:l 驅(qū)動(dòng)時(shí)鐘的邏輯必須只包含一個(gè)“與”門或一個(gè)“或”門。如果采用任何附加邏在某些工作狀態(tài)下,會(huì)出現(xiàn)競爭產(chǎn)生的毛刺。l 邏輯門的一個(gè)輸入作為實(shí)際的時(shí)鐘,而該邏輯門的所有其它輸入必須當(dāng)成地址或控制線,它們遵守相對(duì)于時(shí)鐘的建立和保持時(shí)間的約束。圖2和圖3 是可靠的門控時(shí)鐘的實(shí)例。在 圖2 中,用一個(gè)“與”門產(chǎn)生門控時(shí)鐘,在 圖3 中,用一個(gè)“或”門產(chǎn)生門控時(shí)鐘。在這兩個(gè)實(shí)例中,引腳nWR和nWE考慮為時(shí)鐘
26、引腳,引腳ADDo3是地址引腳,兩個(gè)觸發(fā)器的數(shù)據(jù)是信號(hào)D1.n經(jīng)隨機(jī)邏輯產(chǎn)生的。圖2 “與”門門控時(shí)鐘圖3 “或”門門控時(shí)鐘圖2和圖3 的波形圖顯示出有關(guān)的建立時(shí)間和保持時(shí)間的要求。這兩個(gè)設(shè)計(jì)項(xiàng)目的地址線必須在時(shí)鐘保持有效的整個(gè)期間內(nèi)保持穩(wěn)定(nWR和nWE是低電平有效)。如果地址線在規(guī)定的時(shí)間內(nèi)未保持穩(wěn)定,則在時(shí)鐘上會(huì)出現(xiàn)毛刺,造成觸發(fā)器發(fā)生錯(cuò)誤的狀態(tài)變化。另一方面,數(shù)據(jù)引腳D1n只要求在nWR和nWE的有效邊沿處滿足標(biāo)準(zhǔn)的建立和保持時(shí)間的規(guī)定。我們往往可以將門控時(shí)鐘轉(zhuǎn)換成全局時(shí)鐘以改善設(shè)計(jì)項(xiàng)目的可靠性。圖4 示出如何用全局時(shí)鐘重新設(shè)計(jì) 圖2 的電路。地址線在控制D觸發(fā)器的使能輸入,許多PL
27、D設(shè)計(jì)軟件,如MAX+PLUSII軟件都提供這種帶使能端的D觸發(fā)器。當(dāng)ENA為高電平時(shí),D輸入端的值被鐘控到觸發(fā)器中:當(dāng)ENA為低電平時(shí),維持現(xiàn)在的狀態(tài)。圖4 “與”門門控時(shí)鐘轉(zhuǎn)化成全局時(shí)鐘圖4 中重新設(shè)計(jì)的電路的定時(shí)波形表明地址線不需要在nWR有效的整個(gè)期間內(nèi)保持穩(wěn)定;而只要求它們和數(shù)據(jù)引腳一樣符合同樣的建立和保持時(shí)間,這樣對(duì)地址線的要求就少很多。圖5給出一個(gè)不可靠的門控時(shí)鐘的例子。3位同步加法計(jì)數(shù)器的RCO輸出用來鐘控觸發(fā)器。然而,計(jì)數(shù)器給出的多個(gè)輸入起到時(shí)鐘的作用,這違反了可靠門控時(shí)鐘所需的條件之一。在產(chǎn)生RCO信號(hào)的觸發(fā)器中,沒有一個(gè)能考慮為實(shí)際的時(shí)鐘線,這是因?yàn)樗杏|發(fā)器在幾乎相同的
28、時(shí)刻發(fā)生翻轉(zhuǎn)。而我們并不能保證在PLD/FPGA內(nèi)部QA,QB,QC到D觸發(fā)器的布線長短一致,因此,如 圖5 的時(shí)間波形所示,在器從3計(jì)到4時(shí),RCO線上會(huì)出現(xiàn)毛刺(假設(shè)QC到D觸發(fā)器的路徑較短,即QC的輸出先翻轉(zhuǎn))。圖5 不可靠的門控時(shí)鐘(定時(shí)波形示出在計(jì)數(shù)器從3到4改變時(shí),RCO信號(hào)如何出現(xiàn)毛刺的)圖6 給出一種可靠的全局鐘控的電路,它是圖5不可靠計(jì)數(shù)器電路的改進(jìn),RCO控制D觸發(fā)器的使能輸入。這個(gè)改進(jìn)不需要增加PLD的邏輯單元。圖6 不可靠的門控時(shí)鐘轉(zhuǎn)換為全局時(shí)鐘2.6.3 多級(jí)邏輯時(shí)鐘當(dāng)產(chǎn)生門控時(shí)鐘的組合邏輯超過一級(jí)(即超過單個(gè)的“與”門或“或”門)時(shí),證設(shè)計(jì)項(xiàng)目的可靠性變得很困難。即
29、使樣機(jī)或仿真結(jié)果沒有顯示出靜態(tài)險(xiǎn)象,但實(shí)際上仍然可能存在著危險(xiǎn)。通常,我們不應(yīng)該用多級(jí)組合邏輯去鐘控PLD設(shè)計(jì)中的觸發(fā)器。圖7 給出一個(gè)含有險(xiǎn)象的多級(jí)時(shí)鐘的例子。時(shí)鐘是由SEL引腳控制的多路選擇器輸出的。多路選擇器的輸入是時(shí)鐘(CLK)和該時(shí)鐘的2分頻(DIV2)。由圖7 的定時(shí)波形圖看出,在兩個(gè)時(shí)鐘均為邏輯1的情況下,當(dāng)SEL線的狀態(tài)改變時(shí),存在靜態(tài)險(xiǎn)象。險(xiǎn)象的程度取決于工作的條件。 多級(jí)邏輯的險(xiǎn)象是可以去除的。例如,你可以插入“冗余邏輯”到設(shè)計(jì)項(xiàng)目中。然而,PLD/FPGA編譯器在邏輯綜合時(shí)會(huì)去掉這些冗余邏輯,使得驗(yàn)證險(xiǎn)象是否真正被去除變得困難了。為此,必須應(yīng)尋求其它方法來實(shí)現(xiàn)電路的功能。
30、圖7 有靜態(tài)險(xiǎn)象的多級(jí)時(shí)鐘圖8 給出 圖7 電路的一種單級(jí)時(shí)鐘的替代方案。圖中SEL引腳和DIV2信號(hào)用于使能D觸發(fā)器的使能輸入端,而不是用于該觸發(fā)器的時(shí)鐘引腳。采用這個(gè)電路并不需要附加PLD的邏輯單元,工作卻可靠多了。 不同的系統(tǒng)需要采用不同的方法去除多級(jí)時(shí)鐘,并沒有固定的模式。圖7 無靜態(tài)險(xiǎn)象的多級(jí)時(shí)鐘(這個(gè)電路邏輯上等效于圖7,但卻可靠的多)2.6.4 行波時(shí)鐘另一種流行的時(shí)鐘電路是采用行波時(shí)鐘,即一個(gè)觸發(fā)器的輸出用作另一個(gè)觸發(fā)器的時(shí)鐘輸入。如果仔細(xì)地設(shè)計(jì),行波時(shí)鐘可以象全局時(shí)鐘一樣地可靠工作。然而,行波時(shí)鐘使得與電路有關(guān)的定時(shí)計(jì)算變得很復(fù)雜。行波時(shí)鐘在行波鏈上各觸發(fā)器的時(shí)鐘之間產(chǎn)生較大
31、的時(shí)間偏移,并且會(huì)超出最壞情況下的建立時(shí)間、保持時(shí)間和電路中時(shí)鐘到輸出的延時(shí),使系統(tǒng)的實(shí)際速度下降。 用計(jì)數(shù)翻轉(zhuǎn)型觸發(fā)器構(gòu)成異步計(jì)數(shù)器時(shí)常采用行波時(shí)鐘,一個(gè)觸發(fā)器的輸出鐘控下一個(gè)觸發(fā)器的輸入,參看圖9 同步計(jì)數(shù)器通常是代替異步計(jì)數(shù)器的更好方案,這是因?yàn)閮烧咝枰瑯佣嗟暮陠卧接?jì)數(shù)器有較快的時(shí)鐘到輸出的時(shí)間。圖10 給出具有全局時(shí)鐘的同步計(jì)數(shù)器,它和 圖9 功能相同,用了同樣多的邏輯單元實(shí)現(xiàn),卻有較快的時(shí)鐘到輸出的時(shí)間。幾乎所有PLD開發(fā)軟件都提供多種多樣的同步計(jì)數(shù)器。圖9 行波時(shí)鐘圖10 行波時(shí)鐘轉(zhuǎn)換成全局時(shí)鐘(這個(gè)3位計(jì)數(shù)器是圖9異步計(jì)數(shù)器的替代電路,它用了同樣的3個(gè)宏單元,但有更短的時(shí)
32、鐘到輸出的延時(shí))2.6.5 多時(shí)鐘系統(tǒng)許多系統(tǒng)要求在同一個(gè)PLD內(nèi)采用多時(shí)鐘。最常見的例子是兩個(gè)異步微處理器器之間的接口,或微處理器和異步通信通道的接口。由于兩個(gè)時(shí)鐘信號(hào)之間要求一定的建立和保持時(shí)間,所以,上述應(yīng)用引進(jìn)了附加的定時(shí)約束條件。它們也會(huì)要求將某些異步信號(hào)同步化。圖11 給出一個(gè)多時(shí)鐘系統(tǒng)的實(shí)例。CLK_A用以鐘控REG_A,CLK_B用于鐘控REG_B,由于REG_A驅(qū)動(dòng)著進(jìn)入REG_B的組合邏輯,故CLK_A的上升沿相對(duì)于CLK_B的上升沿有建立時(shí)間和保持時(shí)間的要求。由于REG_B不驅(qū)動(dòng)饋到REG_A的邏輯,CLK_B的上升沿相對(duì)于CLK_A沒有建立時(shí)間的要求。此外,由于時(shí)鐘的下
33、降沿不影響觸發(fā)器的狀態(tài),所以CLK_A和CLK_B的下降沿之間沒有時(shí)間上的要求。如圖4,2II所示,電路中有兩個(gè)獨(dú)立的時(shí)鐘,可是,在它們之間的建立時(shí)間和保持時(shí)間的要求是不能保證的。在這種情況下,必須將電路同步化。圖12 給出REG_A的值(如何在使用前)同CLK_B同步化。新的觸發(fā)器REG_C由GLK_B觸控,保證REG_G的輸出符合REG_B的建立時(shí)間。然而,這個(gè)方法使輸出延時(shí)了一個(gè)時(shí)鐘周期。圖ll 多時(shí)鐘系統(tǒng)(定時(shí)波形示出CLK_A的上升沿相對(duì)于CLK_B的上升沿有建立時(shí)間和保持時(shí)間的約束條件)圖12 具有同步寄存器輸出的多時(shí)鐘系統(tǒng)(如果CLK_A和CLK_B是相互獨(dú)立的,則REGA的輸出
34、必須在它饋送到1REG_B之前,用REG_C同步化)在許多應(yīng)用中只將異步信號(hào)同步化還是不夠的,當(dāng)系統(tǒng)中有兩個(gè)或兩個(gè)以上非同源時(shí)鐘的時(shí)候,數(shù)據(jù)的建立和保持時(shí)間很難得到保證,我們將面臨復(fù)雜的時(shí)間問題。最好的方法是將所有非同源時(shí)鐘同步化。使用PLD內(nèi)部的鎖項(xiàng)環(huán)(PLL或DLL)是一個(gè)效果很好的方法,但不是所有PLD都帶有PLL、DLL,而且?guī)в蠵LL功能的芯片大多價(jià)格昂貴,所以除非有特殊要求,一般場合可以不使用帶PLL的PLD。 這時(shí)我們需要使用帶使能端的D觸發(fā)器,并引入一個(gè)高頻時(shí)鐘。圖13 不同源時(shí)鐘如圖13所示,系統(tǒng)有兩個(gè)不同源時(shí)鐘,一個(gè)為3MHz,一個(gè)為5MHz,不同的觸發(fā)器使用不同的時(shí)鐘。為
35、了系統(tǒng)穩(wěn)定,我們引入一個(gè)20MHz時(shí)鐘,將3M和5M時(shí)鐘同步化,如圖15所示。 20M的高頻時(shí)鐘將作為系統(tǒng)時(shí)鐘,輸入到所有觸發(fā)器的的時(shí)鐘端。3M_EN 和5M_EN將控制所有觸發(fā)器的使能端。即原來接3M時(shí)鐘的觸發(fā)器,接20M時(shí)鐘,同時(shí)3M_EN 將控制該觸發(fā)器使能 ,原接5M時(shí)鐘的觸發(fā)器,也接20M時(shí)鐘,同時(shí)5M_EN 將控制該觸發(fā)器使能。 這樣我們就可以將任何非同源時(shí)鐘同步化。圖13 同步化任意非同源時(shí)鐘(一個(gè)DFF和后面非門,與門構(gòu)成時(shí)鐘上升沿檢測電路) 另外,異步信號(hào)輸入總是無法滿足數(shù)據(jù)的建立保持時(shí)間,容易使系統(tǒng)進(jìn)入亞穩(wěn)態(tài),所以也建議設(shè)計(jì)者把所有異步輸入都先經(jīng)過雙觸發(fā)器進(jìn)行同步化. 小結(jié)
36、:穩(wěn)定可靠的時(shí)鐘是系統(tǒng)穩(wěn)定可靠的重要條件,我們不能夠?qū)⑷魏慰赡芎忻痰妮敵鲎鳛闀r(shí)鐘信號(hào),并且盡可能只使用一個(gè)全局時(shí)鐘,對(duì)多時(shí)鐘系統(tǒng)要注意同步異步信號(hào)和非同源時(shí)鐘。2.6.6 多時(shí)鐘系統(tǒng)設(shè)計(jì)的一些方法:如果時(shí)鐘間存在著固定的頻率倍數(shù),這種情況下它們的相位一般具有固定關(guān)系,可以采用下述方法處理;l 使用高頻時(shí)鐘作為工作時(shí)鐘,使用低頻時(shí)鐘作為使能信號(hào),當(dāng)功耗不作為首要因素時(shí)建議使用這種方式;l 在仔細(xì)分析時(shí)序的基礎(chǔ)上描述兩個(gè)時(shí)鐘轉(zhuǎn)換處的電路;如果電路中存在兩個(gè)不同頻率的時(shí)鐘,并且頻率無關(guān),可以采用如下策略:l 利用高頻時(shí)鐘采樣兩個(gè)時(shí)鐘,在電路中使用高頻時(shí)鐘作為電路的工作時(shí)鐘,經(jīng)采樣后的低頻時(shí)鐘作為使能;l 在時(shí)鐘同步單元中采用兩次同步法ll 使用握手信號(hào)l 使用雙時(shí)鐘FIFO進(jìn)行數(shù)據(jù)緩沖時(shí)鐘同步化,如果系統(tǒng)中存在兩個(gè)時(shí)鐘clk_
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代環(huán)保材料在建筑領(lǐng)域的應(yīng)用前景
- 現(xiàn)代交通工具設(shè)計(jì)中傳統(tǒng)文化的融入方式
- 基坑安全專項(xiàng)方案
- 現(xiàn)代東方風(fēng)洗浴中心的節(jié)能環(huán)保裝修方案
- 2024年春九年級(jí)化學(xué)下冊(cè) 第9單元 溶液 實(shí)驗(yàn)活動(dòng)5 一定溶質(zhì)質(zhì)量分?jǐn)?shù)的氯化鈉溶液的配制說課稿 (新版)新人教版
- 2023三年級(jí)英語下冊(cè) Unit 1 Animals on the farm Lesson 3 Fish and Birds說課稿 冀教版(三起)
- 2023二年級(jí)數(shù)學(xué)上冊(cè) 一 加與減第1課時(shí) 誰的得分高配套說課稿 北師大版
- 2025蓄電池產(chǎn)品及零部件檢驗(yàn)合同書
- 《5 奇形怪狀的熱帶魚(圖形工具)》說課稿-2023-2024學(xué)年清華版(2012)信息技術(shù)一年級(jí)上冊(cè)
- 2024秋五年級(jí)英語上冊(cè) Module 2 Unit 1 What did you buy說課稿 外研版(三起)
- 充電樁知識(shí)培訓(xùn)課件
- 2025年七年級(jí)下冊(cè)道德與法治主要知識(shí)點(diǎn)
- 2025年交通運(yùn)輸部長江口航道管理局招聘4人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 老年髖部骨折患者圍術(shù)期下肢深靜脈血栓基礎(chǔ)預(yù)防專家共識(shí)(2024版)解讀
- 廣東省廣州市2025屆高三上學(xué)期12月調(diào)研測試(零模)英語 含解析
- 偏癱足內(nèi)翻的治療
- 蘭溪市排水防澇提升雨污管網(wǎng)修復(fù)改造初步設(shè)計(jì)文本
- 藥企質(zhì)量主管競聘
- DB35T 1345-2013蘭壽系列金魚養(yǎng)殖技術(shù)規(guī)范
- 祛痘產(chǎn)品原料配方與消費(fèi)者祛痘方案選擇建議
- 年產(chǎn)一萬噸蓖麻項(xiàng)目可行性論證報(bào)告
評(píng)論
0/150
提交評(píng)論