2014-11-21 76 views
1

我正嘗試在VHDL中爲FPGA中的時間到數字項目生成可合成緩衝區。 我一直在環顧四周,但無法找到任何設置。 我一直建議,stackoverflow有非常好的答案。 您能否給我一些關於這門課程的技巧,我會非常樂意接受您可能提出的任何方法。VHDL中的可合成延遲緩衝區

謝謝很多提前!

問候

+1

對於綜合的多週期的延遲時間,你通常只是將你的樣本送入移位寄存器。如果您需要一個非常長/寬的延遲線,並且不需要並行訪問,您還可以使用BRAM FIFO來節省資源。你需要給我們關於這個問題的更具體的細節,讓任何人給你一個比這更具體的答案。 – QuantumRipple 2014-11-21 21:46:14

+0

你好,謝謝你的回答,我正在試圖做的是數字轉換器的時間,其中需要一個緩衝器,以最小可能的延遲來鎖定信號。[鏈接](http://en.wikipedia.org/wiki/Time-to-digital_converter)我已經建立了一個一位計數器,其中延遲是ILO的內部時鐘頻率。 – 2014-11-24 13:40:44

回答

1

進行時間延遲電路(TDC)是有點硬現在。

基本上,它歸結爲HDL描述多個寄存器都讀取相同的信號。然後您需要申請保留指令,例如針對Xilinx的equivalent_register_removal。您可能還需要對正在採樣的信號進行時序忽略約束。

然後,您需要仔細檢查FPGA的結構,並確保您的觸發器跨越多個站點放置在同一個切片中,這些站點都可以通過相同類型的線連接(請檢查FPGA編輯器)同樣的時間延遲。

您可以在FPGA編輯器中爲Xilinx構建最小的測試設計。一旦你關閉了路由,你就可以爲你的UCF文件制定適當的約束條件,並構建更大,更復雜的TDC。

我幾年前才熟悉Altera。但Altera並沒有爲您提供像Xilinx的FPGA編輯器這樣的接口,因此您可以自行確定觸發器的位置。我曾經看過一次關於一個大學工作組的演示文稿,其中介紹了使用Altera進行TDC的工作,並最終通過使用輸入激勵來檢查設計是否按照他們的意願進行路由來測量分辨率。如果不是這樣,他們會調整一些時間參數,超出合理範圍,沖洗並重復。

最後一步當然是在您設計的同步部分(計數器所在的位置)對信號進行採樣,並在發生所需事件(即上升沿,下降沿)時讀取計數器和觸發器的內容。然後你的計數器中有主要的時間單位,在觸發器狀態中有小的時間單位作爲位域。

如果你甚至想在你的觸發器延遲中傳播,你將需要仔細檢查觸發器之間路徑的延遲長度,並調整整個時鐘週期。

因此,基本上,計數器* clock_period + index_of_highest_set_bit_in_flip_flop_flop_state * path_delay是您的延遲時間。

您還需要檢查FPGA數據表來了解你的最低時序,即最快的切換時間輸入緩衝器可以實現的,最小的建立和保持你的拖鞋等