時(shí)鐘管理
與其他芯片配置時(shí)鐘引腳直接連接到內(nèi)部的時(shí)鐘樹不同,F(xiàn)PGA可以用來(lái)驅(qū)動(dòng)一個(gè)稱為時(shí)鐘管理器的特殊硬連線功能(塊),再生成多個(gè)子時(shí)鐘。
這些子時(shí)鐘可以驅(qū)動(dòng)內(nèi)部時(shí)鐘樹,也可以通過(guò)外置引腳進(jìn)行時(shí)鐘的輸出。每個(gè)系列的FPGA都會(huì)有自己的時(shí)鐘管理(一個(gè)FPGA可能也會(huì)有多個(gè)時(shí)鐘管理塊)。FPGA的時(shí)鐘管理塊的功能非常強(qiáng)大,一般都擁有以下特點(diǎn):
1、時(shí)鐘抖動(dòng)消除(移除時(shí)基誤差)。一個(gè)簡(jiǎn)單的例子,假設(shè)一個(gè)1MHz的時(shí)鐘(實(shí)際應(yīng)用中可能更高)。理想情況中,一個(gè)1MHz的時(shí)鐘,后一個(gè)時(shí)鐘沿比前一個(gè)時(shí)鐘沿要晚到1us進(jìn)入芯片。但是在實(shí)際中,情況確實(shí)可能會(huì)發(fā)生提前或延后。如果有示波器能夠觀察這個(gè)現(xiàn)象的話,你會(huì)發(fā)現(xiàn),這個(gè)時(shí)鐘的上下沿之間的寬度是會(huì)變化的,是一個(gè)邊沿呈現(xiàn)模糊的時(shí)鐘。FPGA的時(shí)種管理塊能夠檢測(cè)并修正這樣的時(shí)種抖動(dòng),從而給后續(xù)的功能塊提供“干凈穩(wěn)定”的子時(shí)鐘。如下圖所示:
2、頻率合成。有時(shí)候,外部提供的時(shí)鐘可能并不是設(shè)計(jì)人員需要的,需要降頻或者倍頻。在這種情況下,時(shí)鐘管理器可以用來(lái)產(chǎn)生子時(shí)鐘,子時(shí)鐘的頻率是由原始時(shí)鐘頻率的乘或除得到的。在實(shí)際應(yīng)用中,基本上可以直接從原時(shí)鐘獲得工程上所期望的時(shí)鐘頻率。如下圖所示:
3、時(shí)鐘相移。在實(shí)際的工程中,有些設(shè)計(jì)還需求確定時(shí)鐘的相移,一些時(shí)鐘管理器允許您從普通值的固定相移中進(jìn)行選擇,例如120°和240°(對(duì)于三相時(shí)鐘方案)或90°、180°和270°(如果需要四相時(shí)鐘方案)。還有一些允許您配置每個(gè)子時(shí)鐘所需的相移的確切數(shù)量。如下圖所示:
4、自動(dòng)偏差修正。有時(shí)候,后續(xù)的功能塊需要的子時(shí)鐘與原輸入的時(shí)鐘要求相同,同頻率同相位。但是時(shí)鐘信號(hào)在經(jīng)過(guò)時(shí)鐘管理塊處理后,會(huì)有略微延遲的現(xiàn)象,這將會(huì)提高后續(xù)功能塊處理的不確定性。結(jié)果就是,不做任何修正的話,子時(shí)鐘將會(huì)比原時(shí)鐘慢一些。這就是所謂的兩個(gè)時(shí)鐘之間固有的偏差。如果不做處理,這可能導(dǎo)致,F(xiàn)PGA中使用主時(shí)鐘的功能塊和使用子時(shí)鐘的功能塊會(huì)導(dǎo)致一些問(wèn)題。一般做法是,通過(guò)使子時(shí)鐘經(jīng)過(guò)額外的延遲模塊,達(dá)成與主時(shí)鐘的匹配。
PS:一些FPGA時(shí)鐘管理器基于鎖相環(huán)(PLLs),而另一些基于數(shù)字延遲鎖定環(huán)(DLLs)。自20世紀(jì)40年代以來(lái),鎖相環(huán)就被用于模擬實(shí)現(xiàn),但最近對(duì)數(shù)字方法的強(qiáng)調(diào)使得數(shù)字匹配信號(hào)相位成為可取的。鎖相環(huán)(PLLs)可以使用模擬或數(shù)字技術(shù)來(lái)實(shí)現(xiàn),然而,DLLs就是基于數(shù)字技術(shù)的。
PS:DLLs在精度、穩(wěn)定性、電源管理、噪聲不敏感和抖動(dòng)性能方面更具有優(yōu)勢(shì)。
這篇介紹了FPGA的時(shí)鐘管理塊。下一篇介紹大家最關(guān)心的FPGA的GPIO篇。