色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > FPGA設(shè)計中對輸入信號的處理

          FPGA設(shè)計中對輸入信號的處理

          作者: 時間:2017-10-13 來源:網(wǎng)絡(luò) 收藏

          1.輸入信號為什么要寄存

          一般來說,在中,如果信號來自同一時鐘域,各模塊的輸入不需要寄存。只要滿足建立時間,保持時間的約束,可以保證在時鐘上升沿到來時,輸入信號已經(jīng)穩(wěn)定,可以采樣得到正確的值。但是如果模塊需要使用輸入信號的跳變沿(比如幀同步信號),千萬不要直接這樣哦。

          本文引用地址:http://cafeforensic.com/article/201710/365631.htm

          always @ (posedge inputs)
          begin
          ...
          end

          2.所有信號都需要寄存兩拍嗎

          如果這個輸入信號來自異步時鐘域(比如芯片外部的輸入),必須寄存兩拍。第一拍將輸入信號同步化,同步化后的輸出可能帶來建立/保持時間的沖突,產(chǎn)生亞穩(wěn)態(tài)。需要再寄存一拍,減少(注意是減少)亞穩(wěn)態(tài)帶來的影響。

          如果這個輸入信號來自于同一時鐘域且需要用到跳變沿,需要寄存一拍。否則時序報告多半會報clock skew > data delay,造成建立/保持時間的沖突。

          總而言之,五條原則:

          1.全局時鐘的跳變沿最可靠。
          2.來自異步時鐘域的輸入需要寄存一次以同步化,再寄存一次以減少亞穩(wěn)態(tài)帶來的影響。
          3.不需要用到跳變沿的來自同一時鐘域的輸入,沒有必要對信號進行寄存。
          4.需要用到跳變沿的來自同一時鐘域的輸入,寄存一次即可。
          5.需要用到跳變沿的來自不同時鐘域的輸入,需要用到3個觸發(fā)器,前兩個用以同步,第3個觸發(fā)器的輸出和第2個的輸出經(jīng)過邏輯門來判斷跳變沿。

          給出一個verilog模板:

          always @ (posedge Clk) //不對輸入信號進行寄存
          begin
          if (inputs)
          begin
          ...
          end
          ...
          end

          always @ (posedge Clk) //對輸入信號寄存一拍
          begin
          inputs_reg = inputs;
          if (inputs_reg == 1b0 inputs == 1b1)
          begin
          ...
          end
          ...
          end

          always @ (posedge Clk) //對輸入信號寄存三拍
          begin
          inputs_reg1 = inputs;
          inputs_reg2 = inputs_reg1;
          inputs_reg3 = inputs_reg2;
          if (inputs_reg2 == 1b1 inputs_reg3 == 1b0)
          begin
          ...
          end
          ...
          end



          關(guān)鍵詞: FPGA 全同步設(shè)計

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉