對於設計者來說,我們當然希望我們設計的電路的工作頻率(在這裡如無特別說明
,工作頻率指fpg**內的工作頻率)盡量高。我們也經常聽說用資源換速度,用流水的
方式可以提高工作頻率,這確實是乙個很重要的方法,今天我想進一步去分析該如何提
高電路的工作頻率。
我們先來分析下是什麼影響了電路的工作頻率。
我們電路的工作頻率主要與暫存器到暫存器之間的訊號傳播時延及clock skew有關
。在fpga內部如果時鐘走長線的話,clock skew很小,基本上可以忽略, 在這裡為了簡
單起見,我們只考慮訊號的傳播時延的因素。
訊號的傳播時延包括暫存器的開關時延、走線時延、經過組合邏輯的時延(這樣劃
分或許不是很準確,不過對分析問題來說應該是沒有可以的),要提高電路的工作頻率
,我們就要在這三個時延中做文章,使其盡可能的小。
我們先來看開關時延,這個時延是由器件物理特性決定的,我們沒有辦法去改變,
所以我們只能通過改變走線方式和減少組合邏輯的方法來提高工作頻率。
以altera的器件為例,我們在quartus裡面的timing closure floorplan可以看到有
很多條條塊塊,我們可以將條條塊塊按行和按列分,每乙個條塊代表1個lab,每個lab裡
有8個或者是10個le。它們的走線時延的關係如下:同乙個lab中(最快) < 同列或者同
行 < 不同行且不同列。
我們通過給綜合器加適當的約束(不可貪心,一般以加5%裕量較為合適,比如電路
工作在100mhz,則加約束加到105mhz就可以了,貪心效果反而不好,且極大增加綜合時
間)可以將相關的邏輯在佈線時盡量布的靠近一點,從而減少走線的時延。(注:約束
的實現不完全是通過改進布局佈線方式去提高工作頻率,還有其它的改進措施)
上面我們講了可以通過加約束來提高工作頻率,但是我們在做設計之初可萬萬不可
將提高工作頻率的美好願望寄託在加約束上,我們要通過合理的設計去避免出現大的組
合邏輯,從而提高電路的工作頻率,這才能增強設計的可移植性,才可以使得我們的設
計在移植到另一同等速度級別的晶元時還能使用。
我們知道,目前大部分fpga都基於4輸入lut的,如果乙個輸出對應的判斷條件大於
四輸入的話就要由多個lut級聯才能完成,這樣就引入一級組合邏輯時延,我們要減少組
合邏輯,無非就是要輸入條件盡可能的少,,這樣就可以級聯的lut更少,從而減少了組
合邏輯引起的時延。
我們平時聽說的流水就是一種通過切割大的組合邏輯(在其中插入一級或多級d觸發
器,從而使暫存器與暫存器之間的組合邏輯減少)來提高工作頻率的方法。比如乙個32
位的計數器,該計數器的進製鏈很長,必然會降低工作頻率,我們可以將其分割成4位和
8位的計數,每當4位的計數器計到15後觸發一次8位的計數器,這樣就實現了計數器的切
割,也提高了工作頻率。
在狀態機中,一般也要將大的計數器移到狀態機外,因為計數器這東西一般是經常
是大於4輸入的,如果再和其它條件一起做為狀態的跳變判據的話,必然會增加lut的級
聯,從而增大組合邏輯。以乙個6輸入的計數器為例,我們原希望當計數器計到111100後
狀態跳變,現在我們將計數器放到狀態機外,當計數器計到111011後產生個enable訊號
去觸發狀態跳變,這樣就將組合邏輯減少了。
上面說的都是可以通過流水的方式切割組合邏輯的情況,但是有些情況下我們是很
難去切割組合邏輯的,在這些情況下我們又該怎麼做呢?
狀態機就是這麼乙個例子,我們不能通過往狀態解碼組合邏輯中加入流水。如果我
們的設計中有乙個幾十個狀態的狀態機,它的狀態解碼邏輯將非常之巨大,毫無疑問,
這極有可能是設計中的關鍵路徑。那我們該怎麼做呢?還是老思路,減少組合邏輯。我
們可以對狀態的輸出進行分析,對它們進行重新分類,並根據這個重新定義成一組組小
狀態機,通過對輸入進行選擇(case語句)並去觸發相應的小狀態機,從而實現了將大的
狀態機切割成小的狀態機。在ata6的規範中(硬碟的標準),輸入的命令大概有20十種
,每乙個命令又對應很多種狀態,如果用乙個大的狀態機(狀態套狀態)去做那是不可
想象的,我們可以通過case語句去對命令進行解碼,並觸發相應的狀態機,這樣做下來
這乙個模組的頻率就可以跑得比較高了。
總結:提高工作頻率的本質就是要減少暫存器到暫存器的時延,最有效的方法就是避免出現大的組合邏輯,也就是要盡量去滿足四輸入的條件,減少lut級聯的數量。我們可以通過加約束、流水、切割狀態的方法提高工作頻率。
如何為電源選擇正確的工作頻率
中心議題 為電源選擇正確的工作頻率的方法 解決方案 更高的工作頻率可縮小電感體積 使用更低的電容值或更少的電容 為您的電源選擇最佳的工作頻率是乙個複雜的權衡過程,其中包括尺寸 效率以及成本。通常來說,低頻率設計往往是最為高效的,但是其尺寸最大且成本也最高。雖然調高頻率可以縮小尺寸並降低成本,但會增加...
如何提高有效工作效率
二 如何才能有效提高工作效率 小林是一家外貿公司的業務助理,她感覺每一天都像打仗一樣,一整天都非常忙碌,手頭的事情永遠做不完。但是,每天等到晚上,卻發現其實好像也沒做幾件事情,工作的時候,經常被同事打斷,又或者事情自己做了一半,又去吃東西喝水,又看手機。她很想集中精力把一件事情做好,卻不得不被各種事...
如何提高爬蟲工作效率?
對於大規模爬蟲來說,效率是最核心的問題,沒有效率,就沒有意義。沒有哪個公司或者個人願意等乙個月或者幾個月才能爬取幾十萬上百萬的頁面。所以,對於大規模爬蟲來說,優化流程 提公升效率是十分重要的。單次爬蟲任務的主要耗時在於網路請求等待響應,所以能減少網路請求就儘量減少請求,既能減少目標 的壓力,也能減少...