一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

3天內(nèi)不再提示

FPGA編碼風格介紹

Hack電子 ? 來源:Hack電子 ? 2024-11-15 10:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

什么是組合邏輯環(huán)路?

組合邏輯環(huán)路(Combinational Loops):指組合邏輯的輸出信號不經(jīng)過任何時序邏輯電路(FF等),而直接反饋到輸入節(jié)點,從而構(gòu)成的電路環(huán)路。

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

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

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

為什么要避免組合邏輯環(huán)路?

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

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

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

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

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

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

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

什么情況會導致組合邏輯環(huán)路?

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

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

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

如何處理組合邏輯環(huán)路?

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

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

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

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

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

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

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

什么是語言模板?

不論是Xilinx的Vivado,還是AlteraQuartus II,都為開發(fā)者提供了一系列Verilog、SystemVerilog、VHDL、TCL、原語、XDC約束等相關(guān)的語言模板(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

設計模板有什么用?

語言模板的內(nèi)容還是非常豐富的,比如你可以看看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的結(jié)構(gòu)差異,可能相同的代碼在不同的器件上生成的結(jié)構(gòu)會存在很大差異。比如有時候,可能你想設計的是一個分布式DRAM,但是由于你的代碼風格和綜合工具的原因,它給你生成的事BRAM,那這樣就和你的設計初衷相違背了(當然隨著綜合工具的發(fā)展,這類情況是越來越少了)。所以在設計相關(guān)電路時,請盡量參考xilinx提供的代碼,以確保vivado能正確生成你想要的電路(Altera 的FPGA類似)。

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

總 結(jié)

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

● 語言模板可以快速查找設計內(nèi)容、模板;

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

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

    關(guān)注

    1646

    文章

    22054

    瀏覽量

    618803
  • 組合邏輯
    +關(guān)注

    關(guān)注

    0

    文章

    48

    瀏覽量

    10219
  • 環(huán)路
    +關(guān)注

    關(guān)注

    0

    文章

    51

    瀏覽量

    12274

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    HDL編碼風格編碼

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

    編碼風格編碼

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

    FPGA實戰(zhàn)演練邏輯篇39:代碼風格與書寫規(guī)范

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

    FPGA實戰(zhàn)演練邏輯篇41:代碼風格

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

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

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

    Gowin HDL編碼風格要求及編碼實現(xiàn)

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

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

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

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

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

    自適應算術(shù)編碼FPGA實現(xiàn)

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

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

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

    基于FPGA的Varint編碼設計原理和實現(xiàn)

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

    關(guān)于Linux的內(nèi)核代碼風格

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

    Gowin HDL編碼風格用戶指南

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

    Verilog編碼風格的建議

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

    阿里AliOS的編碼風格

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