《FPGA入门教程》看书随笔——数字电路设计入门
生活随笔
收集整理的這篇文章主要介紹了
《FPGA入门教程》看书随笔——数字电路设计入门
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1、數(shù)字電路設(shè)計的核心是邏輯設(shè)計。數(shù)字電路的邏輯值只有‘1’和‘0’,表征的是模擬 電壓或電流的離散值,一般‘1’代表高電平,‘0’代表低電平。
2、當(dāng)前的數(shù)字電路的電平標(biāo)準(zhǔn)常見的有:TTL、CMOS、LVTTL、LVCMOS、 ECL、PECL、LVDS、HSTL、SSTL等。
3、數(shù)字電路設(shè)計大致可分為組合邏輯電路和時序邏輯電路。
組合邏輯電 路的輸出僅與當(dāng)前的輸入有關(guān),而時序邏輯電路的輸出不但與輸入有關(guān),還和系統(tǒng)上一個 狀態(tài)有關(guān)。
組合邏輯電路由任意數(shù)目的邏輯門電路組成,一般包括與門、或門、異或門、與非門、或非門等。
4、時序邏輯電路由時鐘的上升沿或下降沿驅(qū)動工作,其實真正被時鐘沿驅(qū)動的是電路中的觸發(fā)器(Register),也稱為寄存器。觸發(fā)器的工作原理和參數(shù)如下圖:
5、競爭與冒險 競爭:當(dāng)一個邏輯門的輸入有兩個或兩個以上的變量發(fā)生改變時,由于這些變量時經(jīng)過不同路徑產(chǎn)生的,是它們狀態(tài)改變的時刻有先有后,這種時差引起的現(xiàn)象稱為競爭(Race), 競爭的結(jié)果將很可能導(dǎo)致冒險(Hazard)發(fā)生(例如產(chǎn)生毛刺)。 組合邏輯電路的冒險僅在信號狀態(tài)改變的時刻出現(xiàn)毛刺,這種冒險是過渡性的,它不會是狀態(tài)值偏離正常值。但在時序電路中,冒險是本質(zhì)的,可導(dǎo)致電路輸出值永遠(yuǎn)偏離正常值或發(fā)生震蕩。 ?避免冒險的最簡單的方法是同一時刻只允許單個輸入變量發(fā)生變化,或使用寄存器采樣的辦法。 6、毛刺的產(chǎn)生 信號在器件中傳輸?shù)臅r候,所需要的時間是不能精確估計的,當(dāng)多路信號同時發(fā)生跳變的瞬間,就產(chǎn)生了“競爭冒險”。 這是,往往會出現(xiàn)一些不確定的尖峰信號,即“毛刺”。 7、毛刺的危害: 毛刺是數(shù)字電路設(shè)計中的棘手問題,它的出現(xiàn)會影響電路工作的穩(wěn)定性、可靠性,嚴(yán)重 時會導(dǎo)致整個數(shù)字系統(tǒng)的誤動作和邏輯紊亂。 8、毛刺的消除 (1)輸出加D觸發(fā)器 原理是用一個D觸發(fā)器去讀帶毛刺的信號,利用D觸發(fā)器對輸入信號的毛刺不敏感的特點,去除信號中的毛刺。? (2)信號同步法 設(shè)計數(shù)字電路的時候采用同步電路可以大大減少毛刺。做到真正的“同步”就是去除毛刺信號的關(guān)鍵問題。所以同步的關(guān)鍵就是保證在時鐘的跳變沿讀取的數(shù)據(jù)時穩(wěn)定的數(shù)據(jù)胃不是毛刺的數(shù)據(jù)。以下為兩種具體的信號同步方法: 1)信號延時同步法 原理就是在兩級信號傳遞的過程中加一個延時環(huán)節(jié),從而保證在下一 個模塊中讀取到的數(shù)據(jù)是穩(wěn)定后的數(shù)據(jù),即不包含毛刺信號 2)狀態(tài)機控制 ? ? ?由狀態(tài)機在特定的時刻分別發(fā)出控制特定模塊的時鐘信號或者模塊使能信號,狀態(tài)機的循環(huán)控制就可以使得整個系統(tǒng)協(xié)調(diào)運作,同時減少毛刺信號。 (3)格雷碼計數(shù)器 ? ? ?格雷碼計數(shù)器的輸出每次只有一位跳變
9、同步電路設(shè)計 同步電路設(shè)計是指所有電路在同一個公共時鐘的上升沿或下降沿的觸發(fā)下同步的工作。 同步電路的設(shè)計準(zhǔn)則: (1)盡可能在設(shè)計中使用同一時鐘,時鐘走全局時鐘網(wǎng)絡(luò)。走全局時鐘網(wǎng)絡(luò)的時鐘是最簡單、最可預(yù)測的時鐘,并保證Clocke skew可以小到忽略的地步 (2)避免使用混合時鐘沿采樣數(shù)據(jù)。 (3)盡量少在模塊內(nèi)部使用計數(shù)器分頻所產(chǎn)生的時鐘。計數(shù)器分頻時鐘需完成的邏輯 功能完全可由PLL鎖相環(huán)或時鐘使能電路替代。計數(shù)器分頻時鐘的缺點是使得系統(tǒng)內(nèi)時鐘 不可控,并產(chǎn)生較大的Clock skew,還使靜態(tài)時序分析變得復(fù)雜。 (4)避免使用門控時鐘。因為經(jīng)組合邏輯產(chǎn)生的門控時鐘極可能產(chǎn)生毛刺,且組合邏輯電路的Jitter和Skew比較大。 (5)當(dāng)整個電路需要多個時鐘來實現(xiàn),則可以將整個電路分成若干局部同步電路(盡可能以同一個時鐘為一個模塊),局部同步電路之間接口當(dāng)作異步接口考慮,而且每個時鐘信 號的時鐘偏差(△T)要嚴(yán)格控制。 (6)電路的實際最高工作頻率不應(yīng)大于理論最高工作頻率,留有設(shè)計余量,保證芯片 可靠工作。 (7)電路中所有寄存器、狀態(tài)機在系統(tǒng)被reset復(fù)位時應(yīng)處在一個已知的狀態(tài)。 10、時鐘的設(shè)計討論 時鐘類型包括: 全局時鐘、內(nèi)部邏輯時鐘和門控時鐘。 (1)全局時鐘 全局時鐘即同步時鐘,它通過 FPGA 芯片內(nèi)的全局時鐘布線網(wǎng)絡(luò)或區(qū)域時鐘網(wǎng)絡(luò)來驅(qū) 動。 全局時鐘的設(shè)計方法: 1)由PLL鎖相環(huán)來產(chǎn)生全局時鐘。 2)將FPGA芯片內(nèi)部邏輯產(chǎn)生的時鐘分配至全局時鐘布線邏輯 3)將外部時鐘通過專用的全局時鐘輸入引腳引入FPGA。 (2)內(nèi)部邏輯時鐘(嚴(yán)格禁用) 內(nèi)部邏輯時鐘即指由芯片每部的組合邏輯或計數(shù)器分頻產(chǎn)生的時鐘。 (3)門控時鐘(避免使用) 門控時鐘最好只在頂層模塊中出現(xiàn),并將其分離到一個在頂層的獨立模塊中。 推薦的門控時鐘設(shè)計如下,該設(shè)計一般不會產(chǎn)生毛刺和亞穩(wěn)態(tài)的問題。 11、亞穩(wěn)態(tài) 在同步電路或異步電路中,如果觸發(fā)器的setup 時間或hold 時間不能得到滿足,就可 能產(chǎn)生亞穩(wěn)態(tài)。此時觸發(fā)器輸出端Q在有效時鐘沿之后比較長的一段時間處于不確定的狀 態(tài),在這段時間里Q端將會產(chǎn)生毛刺并不斷振蕩、最終固定在某一電壓值上,此電壓值并 不一定等于原來數(shù)據(jù)輸入端D 的值。這段時間稱為決斷時間 (resolution time)。經(jīng)過決斷 時間之后,Q端將穩(wěn)定到0或 1上,但是究竟是0還是1, ?這是隨機的,與輸入沒有必然 的關(guān)系。 亞穩(wěn)態(tài)的危害: (1)導(dǎo)致邏輯誤判 (2)導(dǎo)致亞穩(wěn)態(tài)的傳播(嚴(yán)重情況下輸出0~1之間的中間電壓值還會使下一級 產(chǎn)生亞穩(wěn)態(tài)) 12、對跨時域數(shù)據(jù)的處理 ?核心就是要保證下級時鐘對上級數(shù)據(jù)采樣的setup時間或hold時間滿足要求,即盡量避免亞穩(wěn)態(tài)的發(fā)生和傳播。但是,只要系統(tǒng)中有異步元件,亞穩(wěn)態(tài)就無法避免。推薦下面的方法來解決異步時鐘域數(shù)據(jù)同步問題: (1)用觸發(fā)器打兩拍
(2)異步FIFO或DPRAM 因為異步FIFO或DPRAM使用格雷碼計數(shù)器設(shè)計讀寫地址的指針,所以它可以很 好地避免亞穩(wěn)態(tài)的發(fā)生。 (3)調(diào)整時鐘相位(難度大,適用面有限)
5、競爭與冒險 競爭:當(dāng)一個邏輯門的輸入有兩個或兩個以上的變量發(fā)生改變時,由于這些變量時經(jīng)過不同路徑產(chǎn)生的,是它們狀態(tài)改變的時刻有先有后,這種時差引起的現(xiàn)象稱為競爭(Race), 競爭的結(jié)果將很可能導(dǎo)致冒險(Hazard)發(fā)生(例如產(chǎn)生毛刺)。 組合邏輯電路的冒險僅在信號狀態(tài)改變的時刻出現(xiàn)毛刺,這種冒險是過渡性的,它不會是狀態(tài)值偏離正常值。但在時序電路中,冒險是本質(zhì)的,可導(dǎo)致電路輸出值永遠(yuǎn)偏離正常值或發(fā)生震蕩。 ?避免冒險的最簡單的方法是同一時刻只允許單個輸入變量發(fā)生變化,或使用寄存器采樣的辦法。 6、毛刺的產(chǎn)生 信號在器件中傳輸?shù)臅r候,所需要的時間是不能精確估計的,當(dāng)多路信號同時發(fā)生跳變的瞬間,就產(chǎn)生了“競爭冒險”。 這是,往往會出現(xiàn)一些不確定的尖峰信號,即“毛刺”。 7、毛刺的危害: 毛刺是數(shù)字電路設(shè)計中的棘手問題,它的出現(xiàn)會影響電路工作的穩(wěn)定性、可靠性,嚴(yán)重 時會導(dǎo)致整個數(shù)字系統(tǒng)的誤動作和邏輯紊亂。 8、毛刺的消除 (1)輸出加D觸發(fā)器 原理是用一個D觸發(fā)器去讀帶毛刺的信號,利用D觸發(fā)器對輸入信號的毛刺不敏感的特點,去除信號中的毛刺。? (2)信號同步法 設(shè)計數(shù)字電路的時候采用同步電路可以大大減少毛刺。做到真正的“同步”就是去除毛刺信號的關(guān)鍵問題。所以同步的關(guān)鍵就是保證在時鐘的跳變沿讀取的數(shù)據(jù)時穩(wěn)定的數(shù)據(jù)胃不是毛刺的數(shù)據(jù)。以下為兩種具體的信號同步方法: 1)信號延時同步法 原理就是在兩級信號傳遞的過程中加一個延時環(huán)節(jié),從而保證在下一 個模塊中讀取到的數(shù)據(jù)是穩(wěn)定后的數(shù)據(jù),即不包含毛刺信號 2)狀態(tài)機控制 ? ? ?由狀態(tài)機在特定的時刻分別發(fā)出控制特定模塊的時鐘信號或者模塊使能信號,狀態(tài)機的循環(huán)控制就可以使得整個系統(tǒng)協(xié)調(diào)運作,同時減少毛刺信號。 (3)格雷碼計數(shù)器 ? ? ?格雷碼計數(shù)器的輸出每次只有一位跳變
9、同步電路設(shè)計 同步電路設(shè)計是指所有電路在同一個公共時鐘的上升沿或下降沿的觸發(fā)下同步的工作。 同步電路的設(shè)計準(zhǔn)則: (1)盡可能在設(shè)計中使用同一時鐘,時鐘走全局時鐘網(wǎng)絡(luò)。走全局時鐘網(wǎng)絡(luò)的時鐘是最簡單、最可預(yù)測的時鐘,并保證Clocke skew可以小到忽略的地步 (2)避免使用混合時鐘沿采樣數(shù)據(jù)。 (3)盡量少在模塊內(nèi)部使用計數(shù)器分頻所產(chǎn)生的時鐘。計數(shù)器分頻時鐘需完成的邏輯 功能完全可由PLL鎖相環(huán)或時鐘使能電路替代。計數(shù)器分頻時鐘的缺點是使得系統(tǒng)內(nèi)時鐘 不可控,并產(chǎn)生較大的Clock skew,還使靜態(tài)時序分析變得復(fù)雜。 (4)避免使用門控時鐘。因為經(jīng)組合邏輯產(chǎn)生的門控時鐘極可能產(chǎn)生毛刺,且組合邏輯電路的Jitter和Skew比較大。 (5)當(dāng)整個電路需要多個時鐘來實現(xiàn),則可以將整個電路分成若干局部同步電路(盡可能以同一個時鐘為一個模塊),局部同步電路之間接口當(dāng)作異步接口考慮,而且每個時鐘信 號的時鐘偏差(△T)要嚴(yán)格控制。 (6)電路的實際最高工作頻率不應(yīng)大于理論最高工作頻率,留有設(shè)計余量,保證芯片 可靠工作。 (7)電路中所有寄存器、狀態(tài)機在系統(tǒng)被reset復(fù)位時應(yīng)處在一個已知的狀態(tài)。 10、時鐘的設(shè)計討論 時鐘類型包括: 全局時鐘、內(nèi)部邏輯時鐘和門控時鐘。 (1)全局時鐘 全局時鐘即同步時鐘,它通過 FPGA 芯片內(nèi)的全局時鐘布線網(wǎng)絡(luò)或區(qū)域時鐘網(wǎng)絡(luò)來驅(qū) 動。 全局時鐘的設(shè)計方法: 1)由PLL鎖相環(huán)來產(chǎn)生全局時鐘。 2)將FPGA芯片內(nèi)部邏輯產(chǎn)生的時鐘分配至全局時鐘布線邏輯 3)將外部時鐘通過專用的全局時鐘輸入引腳引入FPGA。 (2)內(nèi)部邏輯時鐘(嚴(yán)格禁用) 內(nèi)部邏輯時鐘即指由芯片每部的組合邏輯或計數(shù)器分頻產(chǎn)生的時鐘。 (3)門控時鐘(避免使用) 門控時鐘最好只在頂層模塊中出現(xiàn),并將其分離到一個在頂層的獨立模塊中。 推薦的門控時鐘設(shè)計如下,該設(shè)計一般不會產(chǎn)生毛刺和亞穩(wěn)態(tài)的問題。 11、亞穩(wěn)態(tài) 在同步電路或異步電路中,如果觸發(fā)器的setup 時間或hold 時間不能得到滿足,就可 能產(chǎn)生亞穩(wěn)態(tài)。此時觸發(fā)器輸出端Q在有效時鐘沿之后比較長的一段時間處于不確定的狀 態(tài),在這段時間里Q端將會產(chǎn)生毛刺并不斷振蕩、最終固定在某一電壓值上,此電壓值并 不一定等于原來數(shù)據(jù)輸入端D 的值。這段時間稱為決斷時間 (resolution time)。經(jīng)過決斷 時間之后,Q端將穩(wěn)定到0或 1上,但是究竟是0還是1, ?這是隨機的,與輸入沒有必然 的關(guān)系。 亞穩(wěn)態(tài)的危害: (1)導(dǎo)致邏輯誤判 (2)導(dǎo)致亞穩(wěn)態(tài)的傳播(嚴(yán)重情況下輸出0~1之間的中間電壓值還會使下一級 產(chǎn)生亞穩(wěn)態(tài)) 12、對跨時域數(shù)據(jù)的處理 ?核心就是要保證下級時鐘對上級數(shù)據(jù)采樣的setup時間或hold時間滿足要求,即盡量避免亞穩(wěn)態(tài)的發(fā)生和傳播。但是,只要系統(tǒng)中有異步元件,亞穩(wěn)態(tài)就無法避免。推薦下面的方法來解決異步時鐘域數(shù)據(jù)同步問題: (1)用觸發(fā)器打兩拍
(2)異步FIFO或DPRAM 因為異步FIFO或DPRAM使用格雷碼計數(shù)器設(shè)計讀寫地址的指針,所以它可以很 好地避免亞穩(wěn)態(tài)的發(fā)生。 (3)調(diào)整時鐘相位(難度大,適用面有限)
總結(jié)
以上是生活随笔為你收集整理的《FPGA入门教程》看书随笔——数字电路设计入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL数据库引擎介绍、区别、创建和性
- 下一篇: JSON数组分配输出每个li