精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

FPGA編碼風格介紹

Hack電子 ? 來源:Hack電子 ? 2024-11-15 10:49 ? 次閱讀

什么是組合邏輯環路?

組合邏輯環路(Combinational Loops):指組合邏輯的輸出信號不經過任何時序邏輯電路(FF等),而直接反饋到輸入節點,從而構成的電路環路。

4c248106-906d-11ef-a511-92fbcf53809c.png

此外,如果直接將寄存器的輸出端通過組合邏輯反饋到該寄存器的異步端口(異步復位或異步置位),也會形成組合邏輯環路。

4c424f56-906d-11ef-a511-92fbcf53809c.png

為什么要避免組合邏輯環路?

FPGA設計中,絕大多數的應用場景都不需要使用組合邏輯環路,我暫時能想到的例外只有隨機數發生器(評論區可以補充一下)。

4c55a52e-906d-11ef-a511-92fbcf53809c.png

在實踐中,避免使用組合邏輯環路主要是因為它的特性所導致的危害:

組合邏輯環路違反了同步設計原則,容易振蕩,從而導致整個設計不穩定和不可靠。

組合邏輯環路的行為功能取決于該環路上的延遲(邏輯延遲和布線延遲),一旦延遲發生變化,整個設計的行為功能將變得無法預測。

組合邏輯環路的振蕩將導致EDA軟件做無窮無盡的計算。為了完成這種計算,EDA軟件將會切割環路。不同的EDA軟件的切割方式不盡相同,這可能會與設計者的設計目的相違背,從而導致邏輯功能錯誤。

組合邏輯環路無法進行靜態時序分析(STA),可能會出現時序違例,或者導致STA過程時間過長。

什么情況會導致組合邏輯環路?

情況1:組合邏輯的輸出信號僅經過組合邏輯電路后又反饋到了輸入節點。比如下面的代碼:

4c78c806-906d-11ef-a511-92fbcf53809c.png

4c900f66-906d-11ef-a511-92fbcf53809c.png

這樣的設計在Vivado中不會報錯,但會報嚴重警告(Critical warning)。

4ca6fa00-906d-11ef-a511-92fbcf53809c.png

4cbe19a6-906d-11ef-a511-92fbcf53809c.png

情況2:寄存器的輸出端通過組合邏輯直接反饋到該寄存器的異步端口(異步復位或異步置位)。比如下面的代碼:

4d216e8e-906d-11ef-a511-92fbcf53809c.png

4d349130-906d-11ef-a511-92fbcf53809c.png

這種情況所導致的組合邏輯環路在實踐中還是比較少出現的,因為一般情況下,寄存器的異步端口都是直接由模塊外部連接的信號所驅動。

如何處理組合邏輯環路?

最重要的一點:一定要堅決避免組合邏輯環路!現在的EDA工具基本上都可以把組合邏輯環路識別出來,并報錯或者報警告。寫完RTL代碼后請一定要記得看EDA工具的報告的錯誤和警告信息Message!

組合邏輯環路的避免首先應該通過良好的編碼習慣來避免。上述的兩種示例代碼就是典型的錯誤,請不要在設計中使用類似的代碼。

如果出現了組合邏輯環路且當前設計修改困難,那么請修改你的RTL代碼--通過添加寄存器的方式來切斷反饋回路。就像這樣:

4d4d6f7a-906d-11ef-a511-92fbcf53809c.png

如果組合邏輯環路的出現是符合預期設計目的的(比如隨機數發生器),想將其保留該如何操作?只要在XDC約束文件中添加這一句即可:

4d659992-906d-11ef-a511-92fbcf53809c.png

表示反饋回路上的一個節點,一般EDA工具都會指出這個節點,設計者只要復制替換就好了。

什么是語言模板?

不論是Xilinx的Vivado,還是AlteraQuartus II,都為開發者提供了一系列Verilog、SystemVerilog、VHDL、TCL、原語、XDC約束等相關的語言模板(Language Templates)。

在Vivado軟件中,按順序點擊Tools----Language Templates,即可打開設計模板界面。

4d7a31cc-906d-11ef-a511-92fbcf53809c.png

4d91b8a6-906d-11ef-a511-92fbcf53809c.png

在Quartus II軟件中,需要設計文件(.v文件等)的需要處點擊右鍵,然后點擊Inset Templates,即可打開模板界面。

4dae52c2-906d-11ef-a511-92fbcf53809c.png

4dd04576-906d-11ef-a511-92fbcf53809c.png

設計模板有什么用?

語言模板的內容還是非常豐富的,比如你可以看看xilinx推薦的文件頭是什么樣的:

4deb537a-906d-11ef-a511-92fbcf53809c.png

Verilog語法(邏輯運算符):

4df7781c-906d-11ef-a511-92fbcf53809c.png

找不到原語使用方式的時候,也可以來這里查找(當然你也可以查xilinx的官方文檔):

4e031a32-906d-11ef-a511-92fbcf53809c.png

有些時序約束語法不太好記,你可以用這個工具查找,比如:

4e28c782-906d-11ef-a511-92fbcf53809c.png

看看xililnx提供的宏XPM(Xilinx Parameterized Macro)是怎么用的,比如CDC這部分的:

4e3907f0-906d-11ef-a511-92fbcf53809c.png

最最重要的一點是,它提供了很多典型電路的設計方法。

由于各家FPGA的結構差異,可能相同的代碼在不同的器件上生成的結構會存在很大差異。比如有時候,可能你想設計的是一個分布式DRAM,但是由于你的代碼風格和綜合工具的原因,它給你生成的事BRAM,那這樣就和你的設計初衷相違背了(當然隨著綜合工具的發展,這類情況是越來越少了)。所以在設計相關電路時,請盡量參考xilinx提供的代碼,以確保vivado能正確生成你想要的電路(Altera 的FPGA類似)。

4e6a252e-906d-11ef-a511-92fbcf53809c.png

總 結

● 語言模板可以學習HDL語言語法、綜合屬性等;

● 語言模板可以快速查找設計內容、模板;

● 語言模板提供的電路設計模板可以保證綜合工具能正確推斷出對應的電路。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1626

    文章

    21665

    瀏覽量

    601805
  • 組合邏輯
    +關注

    關注

    0

    文章

    47

    瀏覽量

    10032
  • 環路
    +關注

    關注

    0

    文章

    48

    瀏覽量

    12000

原文標題:FPGA編碼風格集錦

文章出處:【微信號:Hack電子,微信公眾號:Hack電子】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    HDL編碼風格編碼

    本帖最后由 mr.pengyongche 于 2013-4-30 02:58 編輯 HDL編碼風格編碼
    發表于 08-12 12:09

    編碼風格編碼

    本帖最后由 mr.pengyongche 于 2013-4-30 02:56 編輯 編碼風格編碼
    發表于 08-17 09:34

    FPGA實戰演練邏輯篇39:代碼風格與書寫規范

    代碼風格與書寫規范本文節選自特權同學的圖書《FPGA設計實戰演練(邏輯篇)》配套例程下載鏈接:http://pan.baidu.com/s/1pJ5bCtt 不同的人可能對代碼風格和代碼書寫規范
    發表于 06-19 10:38

    FPGA實戰演練邏輯篇41:代碼風格

    代碼風格本文節選自特權同學的圖書《FPGA設計實戰演練(邏輯篇)》配套例程下載鏈接:http://pan.baidu.com/s/1pJ5bCtt 所謂的設計習慣和代碼風格,主要是指工程師用于實現
    發表于 06-25 09:41

    Linux內核編碼風格(編程代碼風格推薦)

    編碼素質的重要性。相反沒有良好的風格的代碼讀起來難看、晦澀,甚至有時候一個括號沒對齊就能造成對程序的曲解或者不理解。我曾經就遇見過這樣的情況,花費了很多不必要的時間在程序的上下文對照上,還debug了
    發表于 08-24 09:45

    Gowin HDL編碼風格要求及編碼實現

    本手冊主要描述高云?HDL 編碼風格要求及原語的 HDL 編碼實現,旨在幫助用戶快速熟悉高云 HDL 編碼風格和原語實現,指導用戶設計,提高
    發表于 09-29 06:23

    基于FPGA的非編碼無線模塊的應用設計

    介紹了一種使用射頻技術的無線收發模塊的編解碼應用設計,自主調制與解調,該方式電路連接簡單,傳輸距離遠,且不受方向性約束。選用未經編碼的無線模塊,通過FPGA實現編
    發表于 12-18 12:03 ?10次下載

    基于FPGA的非編碼無線模塊的應用設計

    介紹了一種使用射頻技術的無線收發模塊的編解碼應用設計,自主調制與解調,該方式電路連接簡單,傳輸距離遠,且不受方向性約束。選用未經編碼的無線模塊,通過FPGA實現編碼
    發表于 07-21 17:40 ?27次下載

    自適應算術編碼FPGA實現

    摘要: 在簡單介紹算術編碼和自適應算術編碼的基礎上,介紹了利用FPGA器件并通過VHDL語言描述實現自適應算術
    發表于 06-20 13:40 ?1121次閱讀
    自適應算術<b class='flag-5'>編碼</b>的<b class='flag-5'>FPGA</b>實現

    高精度增量式編碼器與基于DSP和FPGA編碼器信號測量模塊

    本文介紹了基于DSP和FPGA編碼器信號測量及處理的通用模塊,對海德漢編碼器進行了概述等。
    發表于 10-13 18:17 ?19次下載
    高精度增量式<b class='flag-5'>編碼</b>器與基于DSP和<b class='flag-5'>FPGA</b><b class='flag-5'>編碼</b>器信號測量模塊

    基于FPGA的Varint編碼設計原理和實現

    今天是畫師第二次和各位大俠見面,執筆繪畫FPGA江湖,本人最近項目經驗,寫了篇基于FPGA的Varint編碼(壓縮算法)實現,這里分享給大家,僅供參考。如有轉載,請在文章底部留言,請勿隨意轉載,否則
    的頭像 發表于 04-02 16:29 ?1878次閱讀
    基于<b class='flag-5'>FPGA</b>的Varint<b class='flag-5'>編碼</b>設計原理和實現

    關于Linux的內核代碼風格

    編碼風格錯誤開始 曾經在開發Linux內核驅動的時候,創建了一個補丁文件,但是在把補丁打到主分支的時候提示很多編碼風格的錯誤問題,后來重做了補丁才解決了問題,這也是沒有嚴格按照的Li
    的頭像 發表于 04-25 14:50 ?1785次閱讀

    Gowin HDL編碼風格用戶指南

    本手冊主要描述高云?HDL 編碼風格要求及原語的 HDL 編碼實現,旨在 幫助用戶快速熟悉高云 HDL 編碼風格和原語實現,指導用戶設計,
    發表于 09-15 16:02 ?0次下載
    Gowin HDL<b class='flag-5'>編碼</b><b class='flag-5'>風格</b>用戶指南

    Verilog編碼風格的建議

    良好的編碼風格,有助于代碼的閱讀、調試和修改。雖然 Verilog 代碼可以在保證語法正確的前提下任意編寫,但是潦草的編碼風格往往是一錘子買賣。
    的頭像 發表于 06-01 16:27 ?687次閱讀
    Verilog<b class='flag-5'>編碼</b><b class='flag-5'>風格</b>的建議

    阿里AliOS的編碼風格

    其實,我們身邊就有很多“好的資源”值得學習,比如本文分享的 阿里 AliOS 的編碼風格
    發表于 06-02 09:26 ?222次閱讀