在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

告訴你真正的verilog執行順序,糾正你的思路偏差

電子工程師 ? 來源:未知 ? 作者:李倩 ? 2018-08-31 16:45 ? 次閱讀

· 程序執行順序 ·

和C/C++一類編程語言不同,HDL用于電路描述,代表著門電路和觸發器的組合。任何時刻,只要上電后,FPGA就等價于一堆數字電路,每個電路按照自己的條件執行,不會因為某個模塊放在代碼前面,就會先工作。這就需要設計人員,按照每個模塊并行工作的思路來調整設計。這給軟件開發人員入門帶來了難度,但是同時也是FPGA的價值所在,正因為FPGA能夠并行執行,所以很多算法和設計可以在低頻時鐘下高實時性,快速出結果。這是FPGA的優勢,也是火起來的一個重要原因,所以希望大家好好去理解。

同時大家要明白verilog不是不能實現順序執行,而是實現順序執行并不像語法那么直觀,最簡單的順序執行方法就是用狀態機去控制每一個寄存器的跳變,C/C++編程也可以認為本質上就是大型的一個狀態機,verilog要做到那樣也只是做成狀態機去模擬他的工作。只要是數字電路能夠實現的,FPGA都可以做到。

模塊內部的執行順序比較復雜,優秀的設計中,模塊內部是并行工作的,即使是begin end語句內部,這里很多讀者會問,begin end不是串行語句塊嗎?下面詳細解釋這個問題。

begin end之間存在阻塞賦值和非阻塞賦值2種賦值方法,如果使用不當不僅僅會出現競爭冒險,還會導致你的理解和編譯器理解不一樣,最終生成的電路和自己想的天差地別,導致一些難修正的錯誤。所以必須按照以下兩條執行準則使用賦值語句:

描述組合邏輯的always塊里面用阻塞式賦值

描述時序邏輯的always塊里面用非阻塞賦值

在組合邏輯中,阻塞賦值只和電平有關,往往和觸發邊沿沒有關系,可以看成是并行運行的組合邏輯電路。而時序邏輯中,非阻塞賦值是本身就是并行執行的。因此,優秀的設計,其begin end內部也是并行執行的。大家為了加深理解,可以去看看實例說明里面的例子。

· 實例說明 ·

modulepara_demo(clk,reset,a,b);

inputclk;

inputreset;

input[3:0]a;

output[3:0]b;

reg[3:0]tempa1,tempa2,b;

always@(posedgeclk)

begin

if(!reset)begin

tempa1<=?0;??

tempa2<=?0;??

b<=?0;??

end

elsebegin

tempa1<=?a?+?1;??

tempa2<=?tempa1?+?1;??

b<=?tempa2?+?1;??????

end

end

endmodule

上述代碼的RTL級圖如下,可以看出代碼最終實現是一個3級累加結構,每級累加結構中間有一個觸發器打拍。也就是說這是典型的流水線結構。每一級都在一直工作,運行順序沒有先后,但是數據到達時間有先后,處理順序有先后。

大家再看仿真圖,tempa2 并不是等到a+1的結果給到tempa1后才執行的tempa1+1,而是執行a+1的同時也在執行tempa1+1。三句累加都是同時進行,看下圖就知道都是對前一個數值基礎上加1。所以tempa1和tempa2相等,而不是相差1。

看此文之前請千萬很熟悉verilog語法,能區分可綜合,不可綜合語句。

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

    關注

    31

    文章

    5396

    瀏覽量

    122511
  • Verilog
    +關注

    關注

    28

    文章

    1363

    瀏覽量

    111296
  • 編譯器
    +關注

    關注

    1

    文章

    1649

    瀏覽量

    49682

原文標題:面向硬件的設計思維——程序執行順序

文章出處:【微信號:HaveFunFPGA,微信公眾號:玩兒轉FPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    UBI告訴如何走向智能汽車

    UBI告訴如何走向智能汽車,UBI將會引爆整個車聯網市場,帶來車聯網大規模普及。
    發表于 10-21 08:13 ?1432次閱讀

    [公告]誰是真正的朋友?

    ,急忙奔上坡來,從草叢魚鱗病中閃出,一下咬住了狼的脖子,狼疼得直叫喚,趁狗換氣時,愴惶逃走了。  回到家,朋友牛皮癬醫院都來了,  牛說:怎么不告訴我?我的硬皮病角可以剜出狼的腸子?! ●R說:怎么不
    發表于 11-15 08:39

    【LabVIEW我來告訴】 Webbrowser調用的隱患

    【LabVIEW我來告訴】 Webbrowser調用的隱患 LabVIEW為我們提供了豐富的程序接口,ActiveX,.net等等,但在調用它們的時候,是否注意過他們存在的一些問題呢?在
    發表于 10-31 10:48

    【labview我來告訴】labview編程可以很簡單

    功能,有各種各樣的引用規則,還有文本語言所不會涉及到的各種節點……”“學起來用起來其實很難……”“G語言也有G語言的缺點,真正做程序并不快”,等等我告訴他們,其實LabVIEW的各個功能不要太多的去
    發表于 11-11 14:17

    【labview我來告訴】用好控件的小技巧

    地使用 Picture控件的 Erase First屬性,將“1”連于此,這樣就可以擦除內容一次,而不需要去改變真正的“Erase First”設定項。 ?在我的項目中,我在Picture控件中使用了很多拖拽的效果。有
    發表于 12-20 10:15

    【labview我來告訴】如何方便的知道事件運行順序

    ”選項設為不選……通過這樣,每當創建一個新的 Event 條件時,VI 就會破線,仍而提醒大家需要將線連在新的Case上。 好,現在我告訴大家為什么我要這么做,因為這樣做可以在我調試亊件結構的亊件順序
    發表于 01-04 10:05

    labview心得體會之我來告訴匯總(持續更新)

    ://bbs.elecfans.com/jishu_215000_1_1.html【labview我來告訴】如何方便的知道事件運行順序https://bbs.elecfans.com/jishu_213347_1_1.html
    發表于 02-01 11:19

    告訴什么叫高逼格的LED

    仔細想想自己對運動LED最重要的需求是什么!若對來說,是用來跑步、集訓、可穿戴,那么富思科技的LED將成為的首先。富思科技是第一個提供真正時尚型可穿戴的LED,內嵌超高清亮度LED布料,可以通過
    發表于 03-23 16:34

    FPGA的幾點總結,同意嗎?

    時鐘管理芯片。因此,要想學好FPGA,得用硬件的思維方式來編寫代碼,注重FPGA的系統結構設計,好的系統結構設計會帶來質的飛躍,這就告訴我們RTL Coding其實是硬件結構設計,而非基于處理器架構
    發表于 11-22 14:35

    十個練習讓學會Verilog語言

    10個 Verilog 練習,進階級教程 完整的pdf格式文檔電子發燒友下載地址(共26頁): 十個練習讓學會Verilog語言.pdf
    發表于 07-03 02:04

    怎樣架構的單片機程序

    對于單片機程序來說,大家都不陌生,但是真正使用架構,考慮架構的恐怕并不多,隨著程序開發的不斷增多,本人覺得架構是非常必要的。前不就發帖與大家一起討論了一下怎樣架構的單片機程序,發現真正使用架構
    發表于 12-07 09:25

    基于Verilog順序狀態邏輯FSM的設計與仿真

    基于Verilog順序狀態邏輯FSM的設計與仿真  硬件描述語言Verilog為數字系統設計人員提供了一種在廣泛抽象層次上描述數字系統的方式,同時,為計算機輔助設計工具
    發表于 02-04 09:32 ?1973次閱讀
    基于<b class='flag-5'>Verilog</b>的<b class='flag-5'>順序</b>狀態邏輯FSM的設計與仿真

    5款手機告訴什么是真正的旗艦

    誰說安卓不如ios?這5部手機告訴什么是真正的旗艦。
    的頭像 發表于 08-16 16:27 ?3279次閱讀

    sql where條件的執行順序

    SQL語句中的WHERE條件是用來篩選數據的,它決定了哪些數據會被返回給用戶。WHERE條件的執行順序是影響SQL語句性能的一個重要因素,正確地理解和優化WHERE條件的執行順序可以提
    的頭像 發表于 11-23 11:31 ?2479次閱讀

    verilog中for循環是串行執行還是并行執行

    Verilog中,for循環是并行執行的。Verilog是一種硬件描述語言,用于描述和設計數字電路和系統。在硬件系統中,各個電路模塊是同時運行的,并且可以并行執行多個操作。因此,在
    的頭像 發表于 02-22 16:06 ?3559次閱讀
    主站蜘蛛池模板: 韩国三级hd中文字幕 | 日本污视频在线观看 | 在线色站 | 清纯漂亮小美女准备啪啪 | 色婷婷影院 | 欧美三级免费观看 | 色视频2 | 色多多网| 天天综合久久 | 亚洲国产日韩女人aaaaaa毛片在线 | 免费在线观看大片影视大全 | 最近2018中文字幕2019高清 | 黄床大片| 日本特黄a级高清免费大片18 | 手机看片日韩永久福利盒子 | 天天干天天拍天天射天天添天天爱 | 色婷婷综合久久久久中文一区二区 | 欧美成人午夜影院 | 他也色在线 | 亚洲免费mv | 欧美在线精品一区二区三区 | 色综合久久天天综合绕观看 | 美女被免费网站视频在线 | 欧美特级黄 | 日本一区二区三区在线网 | 老色批| 国产精品推荐天天看天天爽 | 日韩综合色 | 一二三区乱码一区二区三区码 | 不卡视频一区二区 | 国产叼嘿视频免费网站 | 中文字幕一区二区三区 精品 | 男女视频在线 | 男人j进女人j的一进一出视频 | 亚洲一级毛片中文字幕 | 一级毛片aaa片免费观看 | 美女视频黄免费 | 同性恋激情视频 | 欧美三级免费观看 | 久久鬼| 最近在线观看免费完整视频 |