色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

開源的Bluespec SystemVerilog (BSV)語言表現如何?

OpenFPGA ? 來源:OpenFPGA ? 2023-06-27 10:14 ? 次閱讀

Bluespec SystemVerilog (BSV) 是由Arvind 開發的 Bluespec 語言,這是一種高級功能 硬件 描述編程語言,本質上是Haskell(Haskell ( / ?h ?s k ?l / ) 是一種通用的、靜態類型的、純函數式 編程語言,具有類型推斷和惰性求值。)的擴展,用于處理一般的芯片設計和電子設計自動化。Bluespec的主要設計者和實現者是Lennart Augustsson。Bluespec 被部分評估(轉換 Haskell 部分)并編譯為術語重寫系統(TRS)。它帶有一個SystemVerilog前端。BSV 編譯為Verilog RTL 設計文件。

為什么要 BSV?Verilog 不好用?

BSV 是一門高級硬件描述語言(High-Level Hardware Description Language, HL-HDL),與 Verilog 一樣,被用于 FPGAASIC 的設計和驗證。BSV 于 2003 年被 Bluespec 公司開發,期間是商業收費工具,到 2020 年它的編譯器才開源,這才給了我們接觸它的機會。

Verilog 的語法簡單、特性少,卻能全面且精準地描述數字電路,是“小而美”的語言。學習 Verilog 時,只需要掌握3種常見寫法:assign, always @ (*) 和 always @ (posedge clk) ,剩下的就依賴于你對電路設計的理解了。當然,這才是最難的,包括各種繁雜的硬件設計思維——狀態機、并行展開、流水線化、握手信號、總線協議等。

各位讀到這里有沒有意識到問題——用如此簡單的抽象級別來描述如此復雜的數字電路系統,會不會很吃力?相信每個接觸過復雜的 Verilog 系統的讀者,都體會過被 always 塊下的幾十個狀態所支配的恐懼,也清晰地記得模塊實例化時那幾十行嚇人的端口連接。因此,我們需要一種抽象層次更高的 HDL 來提高開發效率,BSV 就能勝任這一工作。

對BSV有興趣的可以看看上面文章《爆肝6萬字的 Bluespec SystemVerilog (BSV) 中文教程上線了》。

今天的核心是使用BSV設計一款游戲,看下在實際設計中BSV表現如何~

使用BSV設計《太空入侵者》

緒論

2020年1月,Bluespec開源了bsc(Bluespec SystemVerilog Compiler)。因此我安裝了 bsc,這是一個編譯器,可以對用BSV (Bluespec SystemVerilog)編寫的設計進行高級綜合。BSV 與任何其他語言一樣,無法通過閱讀手冊來學習,我認為學習新語言的唯一方法是實際設計應用程序。因此,我嘗試使用 BSV 設計《太空入侵者》游戲。

a4b7f8a6-1482-11ee-962d-dac502259ad0.png

BSV

簡而言之,Verilog HDL 是一種標準化為 IEEE 1364 的硬件設計語言 (HDL),而 SystemVerilog 是其標準化為 IEEE 1800 的擴展。BSV 是進一步擴展 SystemVerilog 的 HDL。

使用設備

使用的開發板如下:

a50ee710-1482-11ee-962d-dac502259ad0.png

第一步 - 聲音 FSM(有限狀態機)設計

第一次應用BSV時,聲音狀態機的規模比較小,所以這是第一個設計目標。

確定聲道

游戲中使用了 10 種不同的聲音;需要確定同時發生的數量(=聲道的數量)。考慮到游戲場景中同時發生的條件,假設有4個通道:玩家自己的船的聲音、入侵者的聲音1和2、UFO的聲音。

聲音系統框圖

框圖如下圖所示。聲音FSM從之前的設計擴展到4個通道。

a544dc4e-1482-11ee-962d-dac502259ad0.png

第二步——游戲FSM設計

然后繼續進行游戲FSM的狀態機設計。

在設計聲音 FSM 時,我使用基于狀態的設計方法來設計 FSM 。本文中的基于狀態的FSM設計方法是指將序列手動分解為狀態,并為每個狀態一一編寫規則的方法。這種方法基本上需要與Verilog相同的工時。換句話說,使用高級語言沒有什么好處。

另一方面,BSV 有一個名為StmtFSM的庫,可以高效地設計狀態機。在這個游戲FSM中,我充分利用了這一點,設計時無需手動進行狀態分解。在本文中,這種方法將被稱為基于序列的方法。

博弈FSM算法

基本上,我發現游戲可以用與用C編寫相同的方式來編寫。例如,如果我考慮子彈移動、碰撞檢測、碰撞處理以及顯示和擦除爆炸標記的算法,則算法是對于自己和敵人的子彈來說都是一樣的,如下所示。

if(bullet_explosion_timer>=1){//Bulletexploding
bullet_explosion_timer++;
if(bullet_explosion_timer==MAX){
bulletdeletion;//logicaldeletion
erasebullet_explosion_mark;//logicalerasure
bullet_explosion_timer<=?0;
????}
}?else?{
????if?(no?bullets?and?bullet?generation?condition)?{
????????bullet?generation?process;
????????bullet?sound;?//?only?own?bullets,?no?sound?for?enemy?bullets
????}
????if?(bullet?exists)?{
????????Collision?detection;
????????if?(collision?with?object)?{?//?invader?and?UFO?for?own?bullets,?ship?for?enemy?bullets
????????????delete?bullet;?//?logical?deletion
????????????erase?bullet_mark;?//?Physical?deletion
????????????object?state?<=?explosion;
????????????object_explosion_timer?<=?0;
????????}?else?if?(up?down?hash?||?base?||?bullets)?{?//?bullets:?if?own?bullets,?enemy?bullets;?if?enemy?bullets,?own?bullets
????????????erase?bullet_mark;?//?physical?erase
????????????show?bullet_explosion_mark;
????????????bullet_explosion_timer?<=?1;?//?start?timer
????????}?else?{?//?if?no?collision
????????????advance?bullet;?//?if?no?collision,?advance?the?bullet;?//?if?no?collision,?advance?the?bullet
????????}
????}
}

另一方面,該對象需要專門的處理,如下面的代碼所示。

if(objectstate==explosion){
if(object_explosion_timer==0){
object_explosion_timer<=?1;?//?start?timer
????????object?explosion?sound;
????????show?object_explosion_mark?;
????}?else?{
????????object_explosion_timer++;
????????if?(object_explosion_timer?==?MAX)?{
???????????delete?object;?//?logical?deletion
???????????erase?object_explosion_mark;?//?physical?erasure
????????}
????}
}

通過應用 StmtFSM,可以將項目符號序列描述為一種算法,而無需將其分解為逐個時鐘狀態。我用類C語言編寫了上面的偽代碼,但我只需要將BSV中的'{'更改為seq ,將'}'更改為endseq 。if、while、for等控制語法由bsc進行行為綜合,并轉換為Verilog中的狀態機。

游戲完成

下面的動圖展示了可能是世界上第一部由 BSV 設計的《太空入侵者》游戲的視頻

完整的入侵者層次結構如下圖所示。Button_0 只是一個對板載開關和外部開關進行或運算的電路。入侵者_移動_0是BSV設計的游戲FSM。blk_mem_gen_0是連接到游戲FSM的ROM,用于存儲入侵者的模式等。

a6478a10-1482-11ee-962d-dac502259ad0.png

BSV的優勢

雖然 BSV 看起來效率更高,但它增加了 bsc 的編譯時間,對于大型設計來說可能會超過一個小時。因此,對于這樣的設計,修改、模型創建和仿真的TAT(周轉時間)將非常長,這可能使其效率低于Verilog。然而,Bluesim 中的仿真速度比 iverilog 中快約 3, 000 倍。

總結

對于這一“語言”,其發展肯定會在某一方面有突出優點,之后才能被慢慢接受,類似SpinalHDL/CHISEL等,但是該門語言目前未在業內受到重視,但是未來的發展我抱有希望

審核編輯:湯梓紅

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

    關注

    28

    文章

    1351

    瀏覽量

    110077
  • 編程語言
    +關注

    關注

    10

    文章

    1942

    瀏覽量

    34711
  • 數字電路
    +關注

    關注

    193

    文章

    1605

    瀏覽量

    80581
  • 開源
    +關注

    關注

    3

    文章

    3320

    瀏覽量

    42473
  • 編譯器
    +關注

    關注

    1

    文章

    1624

    瀏覽量

    49108
收藏 人收藏

    評論

    相關推薦

    Bluespec SytemVerilog握手協議接口轉換設計實現

    由于接口控制信號上的差異,要實現Bluespec SystemVerilog(BSV)生成的代碼和外部Verilog代碼之間的正確交互是一件比較麻煩同時容易出錯的事情。
    發表于 10-08 11:02 ?572次閱讀
    <b class='flag-5'>Bluespec</b> SytemVerilog握手協議接口轉換設計實現

    blue-ethernet高性能FPGA網絡數據包處理項目簡介

    blue-ethernet項目使用Bluespec SystemVerilog(BSV)硬件描述語言實現了一系列在FPGA上加速網絡數據包處理的硬件模塊。
    的頭像 發表于 11-13 10:44 ?1232次閱讀
    blue-ethernet高性能FPGA網絡數據包處理項目簡介

    systemverilog學習教程

    systemverilog的一些基本語法以及和verilog語言之間的區別。
    發表于 04-01 14:24

    做FPGA工程師需要掌握SystemVerilog嗎?

    在某大型科技公司的招聘網站上看到招聘邏輯硬件工程師需要掌握SystemVerilog語言,感覺SystemVerilog語言是用于ASIC驗證的,那么做FPGA工程師有沒有必要掌握
    發表于 08-02 20:30

    verilog語言表示圓周率

    如何使用verilog語言表示圓周率?
    發表于 09-11 14:24

    SystemVerilog 3.1a語言參考手冊

    本參考手冊詳細描述了Accellera為使用Verilog硬件描述語言在更高的抽象層次上進行系統的建模和驗證所作的擴展。這些擴展將Verilog語言推向了系統級空間和驗證級空間。SystemVerilog
    發表于 07-22 12:14 ?188次下載

    SystemVerilog設計語言

    SystemVerilog 是過去10年來多方面技術發展和實際試驗的結晶,包括硬件描述語言(HDL)、硬件驗證語言(HVL)、SystemC、Superlog和屬性規范語言。它們都從技
    發表于 09-07 09:55 ?1173次閱讀

    基于SystemVerilog語言的驗證方法學介紹

    文章主要介紹《VMM for SystemVerilog》一書描述的如何利用SystemVerilog語言,采用驗證方法學以及驗證庫開發出先進驗證環境。文章分為四部分,第一部分概述了用Syst
    發表于 05-09 15:22 ?52次下載
    基于<b class='flag-5'>SystemVerilog</b><b class='flag-5'>語言</b>的驗證方法學介紹

    現代交互技術下的兒童語言表達訓練方法

    現代交互技術下的兒童語言表達訓練方法
    發表于 06-27 11:27 ?3次下載

    SystemVerilog語言介紹匯總

    作者:limanjihe ?https://blog.csdn.net/limanjihe/article/details/83005713 SystemVerilog是一種硬件描述和驗證語言
    的頭像 發表于 10-11 10:35 ?2390次閱讀

    IEEE SystemVerilog標準:統一的硬件設計規范和驗證語言

    IEEE SystemVerilog標準:統一的硬件設計規范和驗證語言
    發表于 08-25 15:52 ?1次下載

    基于性別的暴力(GBV)的語言表達如何影響責任認知

    不同的語言表達可以通過強調某些部分從不同的角度來概念化同一事件。該論文調查了一個具有社會后果的案例:基于性別的暴力(GBV)的語言表達如何影響責任認知。
    的頭像 發表于 11-12 10:28 ?1531次閱讀

    SystemVerilog語言中的Upcasting和Downcasting概念解析

    要想理解清楚SystemVerilog語言中的Upcasting和Downcasting概念,最好的方式從內存分配的角度理解。
    的頭像 發表于 11-24 09:58 ?1490次閱讀

    FPGA學習-SystemVerilog語言簡介

    SystemVerilog是一種硬件描述和驗證語言(HDVL),它基于IEEE1364-2001 Verilog硬件描述語言(HDL),并對其進行了擴展,包括擴充了 C語言 數據類型、
    的頭像 發表于 12-08 10:35 ?2147次閱讀

    在實際設計中BSV表現如何

    ? Bluespec SystemVerilog (BSV) 是由Arvind 開發的 Bluespec 語言,這是一種高級功能 硬件 描述
    的頭像 發表于 06-27 10:44 ?1277次閱讀
    在實際設計中<b class='flag-5'>BSV</b><b class='flag-5'>表現</b>如何
    主站蜘蛛池模板: 亚洲午夜福利未满十八勿进| 在线二区 中文 无码| 极品少妇小泬50PTHEPON| 免费夜里18款禁用软粉色| 小777论坛| 扒开校花粉嫩小泬喷潮漫画| 精品AV无码一二三区视频| 亚洲黄色在线视频| 久久精选视频| 亚洲国产成人爱AV在线播放丿| 国偷自产AV一区二区三区健身房| 亚洲一区二区三区免费看 | 男人的天堂久久精品激情a| xxx性欧美在线| 迅雷成人下载| 攻把受做得合不拢腿play| 午夜一级毛片看看| 久久re这里精品23| 亚洲国产综合人成综合网站00| 精品国产露脸久久AV麻豆| 性生交片免费无码看人| 精子射到丝袜上图| vagaa哇嘎黄短片| 无码乱人伦一区二区亚洲| 福利社的阿姨| 野花韩国中文版免费观看| 精品国产乱码久久久久久乱码| 97精品国产自产在线观看永久| 天天操天天干天天爽| 久久精品免费观看久久| 成人天堂婷婷青青视频在线观看| 欧美日韩一区二区三区四区| 国产高潮久久精品AV无码| 伊人亚洲综合青草青草久热| 久久精品一卡二卡三卡四卡视频版| xxx69欧美| 亚洲蜜芽在线观看精品一区| 久久不射网| 国产AV国产精品国产三级在线L| 亚洲欧美一级久久精品| 久久婷婷久久一区二区三区|