FPGA基礎(chǔ)之時(shí)序設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
FPGA設(shè)計(jì)一個(gè)很重要的設(shè)計(jì)是時(shí)序設(shè)計(jì),而時(shí)序設(shè)計(jì)的實(shí)質(zhì)就是滿足每一個(gè)觸發(fā)器的建立(Setup)/保持(Hold)時(shí)間的要求。
建立時(shí)間(Setup Time):是指在觸發(fā)器的時(shí)鐘信號(hào)上升沿到來以前,數(shù)據(jù)穩(wěn)定不變的時(shí)間,如果建立時(shí)間不夠,數(shù)據(jù)將不能在這個(gè)時(shí)鐘上升沿被打入觸發(fā)器;
保持時(shí)間(Hold Time):是指在觸發(fā)器的時(shí)鐘信號(hào)上升沿到來以后,數(shù)據(jù)穩(wěn)定不變的時(shí)間, 如果保持時(shí)間不夠,數(shù)據(jù)同樣不能被打入觸發(fā)器。
FPGA設(shè)計(jì)分為同步電路設(shè)計(jì)和同步電路設(shè)計(jì),然而很多異步電路設(shè)計(jì)都可以轉(zhuǎn)化為同步電路設(shè)計(jì),在設(shè)計(jì)時(shí)盡量采用同步電路進(jìn)行設(shè)計(jì)。對(duì)于同步電路可以轉(zhuǎn)化的邏輯必須轉(zhuǎn)化,不能轉(zhuǎn)化的邏輯,應(yīng)將異步的部分減到最小,而其前后級(jí)仍然應(yīng)該采用同步設(shè)計(jì)。
為了讓同步電路可靠地運(yùn)行,就要對(duì)時(shí)鐘偏差進(jìn)行控制,以使時(shí)鐘偏差減小到可用的范圍。影響時(shí)鐘偏差的主要有以下幾個(gè)因素:
用于連接時(shí)鐘樹的連線
鐘樹的拓?fù)浣Y(jié)構(gòu)
時(shí)鐘的驅(qū)動(dòng)
時(shí)鐘線的負(fù)載
時(shí)鐘的上升及下降時(shí)間
在通常的FPGA設(shè)計(jì)中對(duì)時(shí)鐘偏差的控制主要有以下幾種方法:
控制時(shí)鐘信號(hào)盡量走可編程器件的的全局時(shí)鐘網(wǎng)絡(luò)。在可編程器件中一般都有專門的時(shí)鐘驅(qū)動(dòng)器及全局時(shí)鐘網(wǎng)絡(luò),不同種類、型號(hào)的可編程器件,它們中的全局時(shí)鐘網(wǎng)絡(luò)數(shù)量不同,因此要根據(jù)不同的設(shè)計(jì)需要選擇含有合適數(shù)量全局時(shí)鐘網(wǎng)絡(luò)的可編程器件。一般來說,走全局時(shí)鐘網(wǎng)絡(luò)的時(shí)鐘信號(hào)到各使用端的延時(shí)小,時(shí)鐘偏差很小,基本可以忽略不計(jì)。
若設(shè)計(jì)中時(shí)鐘信號(hào)數(shù)量很多,無法讓所有的信號(hào)都走全局時(shí)鐘網(wǎng)絡(luò),那么可以通過在設(shè)計(jì)中加約束的方法,控制不能走全局時(shí)鐘網(wǎng)絡(luò)的時(shí)鐘信號(hào)的時(shí)鐘偏差。
異步接口時(shí)序裕度要足夠大。局部同步電路之間接口都可以看成是異步接口,比較典型的是設(shè)計(jì)中的高低頻電路接口、I/O接口,那么接口電路中后一級(jí)觸發(fā)器的建立-保持時(shí)間要滿足要求,時(shí)序裕度要足夠大。
在系統(tǒng)時(shí)鐘大于30MHz時(shí),設(shè)計(jì)難度有所加大,建議采用流水線等設(shè)計(jì)方法。采用流水線處理方式可以達(dá)到提高時(shí)序電路的速度,但使用的器件資源也成倍增加。
要保證電路設(shè)計(jì)的理論最高工作頻率大于電路的實(shí)際工作頻率。