0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

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

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

淺談RTL設(shè)計(jì)風(fēng)格及Verilog編碼規(guī)范

FPGA之家 ? 來源:FPGA之家 ? 作者:FPGA之家 ? 2021-06-12 17:20 ? 次閱讀

一、同步設(shè)計(jì)

1.1 時(shí)鐘的同步設(shè)計(jì)

關(guān)注問題:

(1)設(shè)計(jì)中盡可能使用單時(shí)鐘和單時(shí)鐘邊沿觸發(fā)

(2)不要使用例如“與”“或”門這些基本單元來生成RS鎖存或者FF

(3)不要在組合邏輯中引入反饋電路

在HDL設(shè)計(jì)中使用同步設(shè)計(jì)思想以及邏輯綜合工具。使用異步時(shí)鐘會(huì)讓更加精確的時(shí)序約束變得困難,因此,盡可能利用單個(gè)時(shí)鐘和單邊沿。(使用單個(gè)時(shí)鐘在多數(shù)設(shè)計(jì)中很難實(shí)現(xiàn),在設(shè)計(jì)中盡量減少時(shí)鐘數(shù)量以減輕分析的復(fù)雜度)

盡管可以使用基本門來實(shí)現(xiàn)RS或FF,但時(shí)序分析工具會(huì)把它視作對(duì)組合電路的反饋,如果無法避免,則需要使用set_disable_timing設(shè)置來避免時(shí)序分析期間反饋環(huán)路的影響。

避免在內(nèi)部電路生成異步時(shí)鐘,如果需要生成這樣的時(shí)鐘,那么推薦在生成時(shí)鐘的FF輸出端使用create_clock來指定時(shí)鐘。

避免反饋跨越異步復(fù)位,同樣的,避免使用門控時(shí)鐘和門控復(fù)位。

二、 復(fù)位問題

2.1 使用異步復(fù)位作為初始的復(fù)位

關(guān)注問題:

(1)使用同步復(fù)位電路可能會(huì)導(dǎo)致綜合器生成無法正確復(fù)位的電路,同時(shí),同步復(fù)位會(huì)在數(shù)據(jù)路徑引入復(fù)位信號(hào)(延遲讓時(shí)序變得困難),在多時(shí)鐘系統(tǒng)中可能需要計(jì)數(shù)器來保證復(fù)位信號(hào)寬度。但同步復(fù)位并不是完全沒有優(yōu)點(diǎn),比如,保證系統(tǒng)是完全同步的,可以濾除掉復(fù)位信號(hào)的一些小毛刺,同步復(fù)位需要更少的觸發(fā)器等等,這些問題整理詳細(xì)文章討論。

(2)使用異步復(fù)位對(duì)寄存器進(jìn)行初始的復(fù)位會(huì)更加安全

(3)除了復(fù)位功能外,復(fù)位/置位的引腳不要用作它途

(4)在同一個(gè)復(fù)位線路上禁止同時(shí)使用同步復(fù)位和異步復(fù)位

(5)一個(gè)FF盡量不使用異步復(fù)位和異步置位

異步復(fù)位示例:

always結(jié)構(gòu)僅會(huì)由時(shí)鐘上升沿以及低有效的復(fù)位信號(hào)觸發(fā)

always @(posedge CLK or negedge RST_X) if (!RST_X) Q 《= 1‘b0; else Q 《= DATA;

請(qǐng)注意上面表述的是初始復(fù)位(Initial reset)推薦使用異步復(fù)位。異步復(fù)位的時(shí)序分析比較困難,因?yàn)闀r(shí)序路徑會(huì)被切斷,從而沒有考慮到B的復(fù)位輸入到寄存器B的輸出Q的時(shí)序。同時(shí),A的輸出到B異步復(fù)位的的時(shí)序也不會(huì)被分析。

2.2 復(fù)位問題

注意問題:

(1)不要在復(fù)位路徑引入邏輯電路

例:

reg[4:0] count; wire REN_X,EN_X,count32_x,ctl_x; assign count32_x = ~(& count) | ctl_x; assign REN_X = EN_X | count32_x; always @( posedge CLK or negedge REN_X ) if(REN_X == 1’b0) Q 《= 1‘b0; else Q 《= D;

當(dāng)組合邏輯產(chǎn)生復(fù)位信號(hào)時(shí),由于優(yōu)化的原因,使能信號(hào)可能會(huì)和FF分離,并且不排除危險(xiǎn)信號(hào)驅(qū)動(dòng)復(fù)位信號(hào)的可能性(FF可能會(huì)以意外的時(shí)序復(fù)位)。如上圖所示,即使在RTL描述中的FF復(fù)位信號(hào)前插入了使能邏輯,也可能會(huì)發(fā)生這種情況。并且一旦發(fā)生這種問題,很難排查??偠灾O(shè)計(jì)電路不要總依賴綜合工具的優(yōu)化。

2.2.1 噪聲,毛刺

復(fù)位信號(hào)不排除會(huì)被噪聲干擾,產(chǎn)生一些毛刺,因此,推薦使用濾波,但引入濾波也不是必須的,視情況而定。下圖是高有效復(fù)位的濾波電路

如果是低有效復(fù)位?

濾波波形原理:

2.2.2 亞穩(wěn)態(tài)問題

以低有效異步復(fù)位為例,如果復(fù)位信號(hào)在時(shí)鐘沿釋放(或附近),不滿足Recovery Time以及Removal Time,會(huì)出現(xiàn)亞穩(wěn)態(tài),所謂復(fù)位恢復(fù)時(shí)間就是,復(fù)位釋放的時(shí)間距離時(shí)鐘沿(上升沿)的時(shí)間,復(fù)位移除時(shí)間就是,復(fù)位釋放的時(shí)間距離時(shí)鐘沿(上升沿)的時(shí)間。和數(shù)據(jù)建立時(shí)間保持時(shí)間一樣,都要滿足一定的時(shí)序要求。這是需要關(guān)注的問題。

2.2.3 同步器/異步復(fù)位同步釋放

module async_resetFFstyle2 ( output reg rst_n, input clk, asyncrst_n); reg rff1; always @(posedge clk or negedge asyncrst_n) if (!asyncrst_n) {rst_n,rff1} 《= 2’b0; else {rst_n,rff1} 《= {rff1,1‘b1}; endmodule

外部的復(fù)位信號(hào)進(jìn)入推薦使用異步復(fù)位同步釋放,下面是代碼綜合出的電路圖,這種設(shè)計(jì)有它的優(yōu)勢(shì)。

編輯:jq

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

    關(guān)注

    3

    文章

    140

    瀏覽量

    110234
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4862

    瀏覽量

    69729
  • 同步器
    +關(guān)注

    關(guān)注

    1

    文章

    98

    瀏覽量

    14863
  • 綜合器
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    6522

原文標(biāo)題:RTL設(shè)計(jì)風(fēng)格及Verilog編碼規(guī)范(一)

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 0人收藏

    評(píng)論

    相關(guān)推薦

    淺談Verilog和VHDL的區(qū)別

    Verilog和VHDL是兩種廣泛使用的硬件描述語言(HDL),它們用于描述和模擬數(shù)字電路系統(tǒng)的行為和結(jié)構(gòu)。這兩種語言的主要作用是幫助工程師設(shè)計(jì)、仿真和驗(yàn)證集成電路(IC)和系統(tǒng)級(jí)芯片(SoC)中的硬件模塊。
    的頭像 發(fā)表于 02-17 14:20 ?429次閱讀
    <b class='flag-5'>淺談</b><b class='flag-5'>Verilog</b>和VHDL的區(qū)別

    Verilog 與 ASIC 設(shè)計(jì)的關(guān)系 Verilog 代碼優(yōu)化技巧

    Verilog與ASIC設(shè)計(jì)的關(guān)系 Verilog作為一種硬件描述語言(HDL),在ASIC設(shè)計(jì)中扮演著至關(guān)重要的角色。ASIC(Application Specific Integrated
    的頭像 發(fā)表于 12-17 09:52 ?542次閱讀

    Verilog 測試平臺(tái)設(shè)計(jì)方法 Verilog FPGA開發(fā)指南

    Verilog測試平臺(tái)設(shè)計(jì)方法是Verilog FPGA開發(fā)中的重要環(huán)節(jié),它用于驗(yàn)證Verilog設(shè)計(jì)的正確性和性能。以下是一個(gè)詳細(xì)的Verilog測試平臺(tái)設(shè)計(jì)方法及
    的頭像 發(fā)表于 12-17 09:50 ?688次閱讀

    Verilog與VHDL的比較 Verilog HDL編程技巧

    Verilog 與 VHDL 比較 1. 語法和風(fēng)格 VerilogVerilog 的語法更接近于 C 語言,對(duì)于有 C 語言背景的工程師來說,學(xué)習(xí)曲線較平緩。它支持結(jié)構(gòu)化編程,代
    的頭像 發(fā)表于 12-17 09:44 ?976次閱讀

    ADS1281 PCM編碼規(guī)范應(yīng)該在哪里找?

    的是,根據(jù)文檔M0是符合PCM編碼的,請(qǐng)問這個(gè)PCM編碼規(guī)范應(yīng)該在哪里找?或者它是符合怎么樣的規(guī)范。如何解碼 解碼公式1生成的yn也是符合PCM編碼
    發(fā)表于 12-05 08:33

    如何自動(dòng)生成verilog代碼

    介紹幾種自動(dòng)生成verilog代碼的方法。
    的頭像 發(fā)表于 11-05 11:45 ?724次閱讀
    如何自動(dòng)生成<b class='flag-5'>verilog</b>代碼

    Verilog硬件描述語言參考手冊(cè)

    一. 關(guān)于 IEEE 1364 標(biāo)準(zhǔn)二. Verilog簡介三. 語法總結(jié)四. 編寫Verilog HDL源代碼的標(biāo)準(zhǔn)五. 設(shè)計(jì)流程
    發(fā)表于 11-04 10:12 ?4次下載

    system verilog語言簡介

    ICer需要System Verilog語言得加成,這是ICer深度的表現(xiàn)。
    發(fā)表于 11-01 10:44 ?0次下載

    RTL8192CU驅(qū)動(dòng)

    RTL8192CU驅(qū)動(dòng),支持WINXP/7/10
    發(fā)表于 10-29 10:17 ?5次下載

    Verilog 如何做到心中有電路?

    布線布局卡死一直布不到,在寫verilog代碼應(yīng)該怎么規(guī)范寫以減輕布線壓力?我寫了一個(gè)工程,但是布線布局一部卡住布不下去,想進(jìn)一步規(guī)范verilog代碼以成功布線,有哪些建議嗎? A:
    發(fā)表于 09-26 20:30

    怎么樣提高verilog代碼編寫水平?

    優(yōu)秀代碼:在網(wǎng)上查找開源的、經(jīng)過驗(yàn)證的高質(zhì)量 Verilog 代碼,學(xué)習(xí)他人的編程風(fēng)格、代碼結(jié)構(gòu)和設(shè)計(jì)思路。 實(shí)踐項(xiàng)目:嘗試自己設(shè)計(jì)和實(shí)現(xiàn)一些較為復(fù)雜的項(xiàng)目,如復(fù)雜的控制器、數(shù)據(jù)處理模塊等,通過實(shí)踐來
    發(fā)表于 09-25 20:05

    FPGA Verilog HDL有什么奇技巧?

    的話,仿真波形是z,雖然出結(jié)果時(shí)不影響,有沒有必要一開始的時(shí)候直接reg賦初值?在rtl文件里能不能使用initial賦初值,這樣的rtl代碼能否綜合? A:在 Verilog 中,是否有必要為所有
    發(fā)表于 09-12 19:10

    C語言編碼規(guī)范,這才是最理想的!

    編碼規(guī)范,沒有最好,只有最合適,有但不執(zhí)行不如沒有。一、編碼原則01可讀性清晰第一清晰性是易于維護(hù)程序必須具備的特征。維護(hù)期變更代碼的成本遠(yuǎn)遠(yuǎn)大于開發(fā)期,編寫程序應(yīng)該以人為本,計(jì)算機(jī)第二。一般情況下
    的頭像 發(fā)表于 07-06 08:11 ?1170次閱讀
    C語言<b class='flag-5'>編碼</b><b class='flag-5'>規(guī)范</b>,這才是最理想的!

    基于樹莓派5的RTL仿真體驗(yàn)

    :~/workspace/13_rtl_sim/heart_rtl$ iverilog -V Icarus Verilog version 11.0 (stable) () Copyright 1998-2020
    發(fā)表于 04-30 17:35

    如何通過優(yōu)化RTL減少功耗

    對(duì)于功耗估算來說,架構(gòu)階段為時(shí)過早,物理設(shè)計(jì)階段為時(shí)已晚。有一種趨勢(shì)是在項(xiàng)目的RTL階段分析power hot spots。與后期分析相比,基于 RTL 的功耗分析更快、更容易執(zhí)行,迭代時(shí)間更短。
    的頭像 發(fā)表于 04-05 09:15 ?2429次閱讀
    如何通過優(yōu)化<b class='flag-5'>RTL</b>減少功耗

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品