我已經做了Verilog一個差錯控制編碼合成的延遲,因爲我得到的18000 ns的一些延遲解碼數據。我需要將解碼後的數據與原始數據進行比較,但是我的原始數據開始大約100 ns,所以如何對這兩個信號進行協作。如何獲得用Verilog
如何耽誤我輸入數據的Verilog這應該是綜合的?
我需要實現這個是硬件。
我已經做了Verilog一個差錯控制編碼合成的延遲,因爲我得到的18000 ns的一些延遲解碼數據。我需要將解碼後的數據與原始數據進行比較,但是我的原始數據開始大約100 ns,所以如何對這兩個信號進行協作。如何獲得用Verilog
如何耽誤我輸入數據的Verilog這應該是綜合的?
我需要實現這個是硬件。
生成延遲將是使用一個移位寄存器,其將轉向要通過儘可能多的時鐘週期按照需要來比較數據的同步方式。用這種方法,或者在評論中提出的一個計數器,你應該延遲接近目標。
但是,如果時鐘週期是不適合的移位寄存器,可以通過半人工緩衝信號產生延遲:
使用您的合成工具生成想要的延遲。例如與Synopsys的Design Compiler:set_min_delay delay_value_in_ns -from startpoint -to endpoint
將指示工具,是正確的,你想startpoint
和endpoint
之間至少delay_value_in_ns
。您還可以設置一個值來約束最大值:set_max_delay
這些約束將不得不轉發到進一步的流程步驟,如地點和路線以保持正確的延遲。
一種選擇是手動實例的一個或多個緩衝器的細胞。爲此,您需要知道與您的技術庫有關的單元名稱,並且您的RTL代碼將依賴於技術。如果你不想要這個,你也可以創建你自己的緩衝模塊(例如用逆變器)並且可以使用它。
下面是對Verilog實例化的例子。 BUFX1是任意庫中的單元名稱。
BUFX1 my_buffer (.in(my_signal), .out(my_delayed_signal));
通常的合成和&佈線工具優化了該小區,但你可以告訴你要保持它的工具。下面的示例約束是Synopsys Design Constraints(SDC)格式。大多數工具供應商都支持它。
set_dont_touch <path to my_buffer>
你應該知道的是,小區的時延將爲每個角落不同(例如慢,一般,快)。所以延遲不是恆定的,而是在一個範圍內。
我認爲您需要更正您的基本知識,請參閱[這裏](https://embeddedmicro.com/tutorials/mojo/writing-test-benches) – Emman
通常測試平臺不可合成? 無論如何,對於硬件的延遲,您使用一個計數器,在您的時鐘的每個積極的邊緣更新。通過這種方式,您可以通過計算週期數來保持延遲跟蹤。 –
延遲無法合成。在後端處理之後,延遲將包含在標準單元延遲和路由淨延遲中。 –