FPGA程式設計中 打拍 的目的

2021-09-26 21:27:35 字數 1034 閱讀 2966

一直說要自己寫個部落格,把自己一路來的學習經驗記錄下來。與別人分享交流!同時也相當於記了筆記,以後需要的時候,能夠及時拿出來溫故知新。但!!!一直拖著快一年了。。。今天,給自己下個決心。行動!

關於fpga中「打一拍」的含義,我們可以理解為把某個訊號延遲了乙個時鐘週期,推而廣之:「打兩拍」就是延遲兩個時鐘週期,「打n拍」就是延遲n個時鐘週期。

「打一拍」的目的很簡單,就是為了fpga中時序的正確性!!!!(了保證fpga輸入輸出介面的時序,一般會要求將輸入管腳首先打一拍再使用,輸出介面也要打一拍再輸出fpga。將訊號打一拍的方法是將訊號通過一次暫存器,而且必須在iob裡面的暫存器中打一拍。因為,從fpga的pad到iob裡面的暫存器是有專用佈線資源的,而到內部其他暫存器沒有專用的佈線資源。使用iob裡面的暫存器可以保證每次實現的結果都一樣,使用內部其他暫存器就無法保證每次用的都是同乙個暫存器且採用同樣的佈線。同時,為了使用輸入輸出延遲功能(input / output delay),也必須要求訊號使用iob裡面的暫存器。)

「打一拍」具體是怎麼通過fpga實現的呢?如下

always @ (posedge clk) //對輸入訊號打三拍

begin

inputs_reg1 <= inputs;

inputs_reg2 <= inputs_reg1;

inputs_reg3 <= inputs_reg2;

if (inputs_reg2 == 1』b1 && inputs_reg3 == 1』b0)

begin

…end

…end

當然,打一拍也是有一定原則的,不是想打就打的

1.全域性時鐘的跳變沿最可靠。

2.來自非同步時鐘域的輸入需要寄存一次以同步化,再寄存一次以減少亞穩態帶來的影響。

3.不需要用到跳變沿的來自同一時鐘域的輸入,沒有必要對訊號進行寄存。

4.需要用到跳變沿的來自同一時鐘域的輸入,寄存一次即可。

5.需要用到跳變沿的來自不同時鐘域的輸入,需要用到3個觸發器,前兩個用以同步,第3個觸發器的輸出和第2個的輸出經過邏輯門來判斷跳變沿。

FPGA中FIFO的配置

今天我們來討論一下通過quartus2中的mega plugin來配置乙個fifo,這是偏 軟體的,但是今天我把歸為硬體來講,因為其中有許多是硬體相關聯的。首先我們tools進入配置介面,選擇 creat a custome megafuction variation 進入第2頁然後在左面點開 me...

fpga中的case語句

case語句模型 module ex case input wire rst n,input wire sclk,output reg o dv,output reg 7 0 o data,input wire 9 0 i data,input wire 7 0 i addr reg 2 0 cnt...

FPGA中的小數運算

最近在影象演算法的中間遇到一下小數的運算問題,雖然之前也遇到很多次,但是這次記錄下來。r 1.164 y 16 1.596 cr 128 g 1.164 y 16 0.391 cb 128 0.813 cr 128 b 1.164 y 16 2.018 cb 128 遇到的一些問題是,色彩空間的轉換...