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

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

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

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

在實際設(shè)計中BSV表現(xiàn)如何

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

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

為什么要 BSV?Verilog 不好用?

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

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

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

以上內(nèi)容來源于:

?

https://zhuanlan.zhihu.com/p/469917984

?

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

今天的核心是使用BSV設(shè)計一款游戲,看下在實際設(shè)計中BSV表現(xiàn)如何~

使用BSV設(shè)計《太空入侵者》

緒論

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

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

BSV

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

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

使用設(shè)備

使用的開發(fā)板如下:

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

第一步 - 聲音 FSM(有限狀態(tài)機)設(shè)計

第一次應(yīng)用BSV時,聲音狀態(tài)機的規(guī)模比較小,所以這是第一個設(shè)計目標(biāo)。

確定聲道

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

聲音系統(tǒng)框圖

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

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

第二步——游戲FSM設(shè)計

然后繼續(xù)進行游戲FSM的狀態(tài)機設(shè)計。

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

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

博弈FSM算法

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

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
????????}
????}
}

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

游戲完成

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

a5dae8ce-1482-11ee-962d-dac502259ad0.gif

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

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

BSV的優(yōu)勢

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

總結(jié)

代碼如下:

?

https://github.com/mocapapa/SpaceInvaders_BSV_Ultra96v2

?

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

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

    關(guān)注

    6673

    文章

    2451

    瀏覽量

    204232
  • 編程語言
    +關(guān)注

    關(guān)注

    10

    文章

    1942

    瀏覽量

    34715

原文標(biāo)題:開源的Bluespec SystemVerilog (BSV)語言表現(xiàn)如何?

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

收藏 人收藏

    評論

    相關(guān)推薦

    C語言實際的應(yīng)用是什么?

    C語言實際的應(yīng)用是什么?
    發(fā)表于 11-11 06:28

    LabVIEW實際的應(yīng)用

    LabVIEW 實際的應(yīng)用蔣逢春,王鑫(商丘師范學(xué)院物理系,河南商丘47600)摘要:通過實側(cè)介紹了LabVIEW 的使用方法.并對結(jié)果進行了分析。關(guān)鍵詞:虛擬儀器程序f控制
    發(fā)表于 08-06 22:07 ?356次下載

    從測算家庭電費說起-了解功率實際的應(yīng)用

    1、結(jié)合實例理解功率的概念。了解功率實際的應(yīng)用。2、理解電功率和電流、電壓之間的關(guān)系,并能進行簡單計算。能區(qū)分用電器的額定功率和實際功率。3、通過實驗探究
    發(fā)表于 03-06 23:17 ?22次下載

    擴頻通信技術(shù)實際的應(yīng)用

    通過介紹擴頻通信技術(shù)的概念及原理來研究它是如何在實際應(yīng)用的。
    發(fā)表于 11-07 18:20 ?93次下載
    擴頻通信技術(shù)<b class='flag-5'>在</b><b class='flag-5'>實際</b><b class='flag-5'>中</b>的應(yīng)用

    幣安明確提出下架BSV之后對幣市產(chǎn)生了什么影響

    與此同時,Kraken交易所發(fā)起了下架BSV的投票,73%的人同意下架,Kraken順應(yīng)民意調(diào)查,已于昨日晚間宣布下架BSV。隨后,shapeshift交易所也決定在兩天內(nèi)下架BSV。 而
    發(fā)表于 04-18 10:48 ?2872次閱讀

    BU全節(jié)點客戶端將不再支持BSV區(qū)塊鏈的運行

    BSV區(qū)塊鏈誕生初期,BU開發(fā)組并沒有直接進行表態(tài)支持,而是選擇進行用戶投票(BUIP098),由用戶和礦工選擇是否繼續(xù)支持BSV,根據(jù)投票結(jié)果,BU實施了兩套共識規(guī)則。開發(fā)組在其中一套共識規(guī)則
    發(fā)表于 07-23 10:16 ?1502次閱讀

    BSV52L NPN雙極晶體管

    電子發(fā)燒友網(wǎng)為你提供ON Semiconductor(ti)BSV52L相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有BSV52L的引腳圖、接線圖、封裝手冊、中文資料、英文資料,BSV52L真值表,BSV
    發(fā)表于 08-04 03:02
    <b class='flag-5'>BSV</b>52L NPN雙極晶體管

    英特爾推出6核/6線程Core i5-9600KF的CPU實際表現(xiàn)口號

    12月10日消息,AMD推出銳龍3代之后,由于架構(gòu)改進和核數(shù)增加,跑分軟件上常常勝于英特爾同級別產(chǎn)品。而在英特爾這邊,他們更加注重的是CPU的實際表現(xiàn)
    的頭像 發(fā)表于 12-10 14:26 ?5109次閱讀

    BSV才是真正的比特幣BTC并不是比特幣

    北京時間本周二上午十點左右,BSV 網(wǎng)絡(luò)進行了升級,通過加入 Genesis 規(guī)則使區(qū)塊鏈“修復(fù)回到本聰愿景的比特幣協(xié)議”。
    發(fā)表于 02-06 14:25 ?5665次閱讀

    LDO和開關(guān)電源實際電路的使用

    本文主要是了解LDO和開關(guān)電源實際電路的使用,后續(xù)具體細(xì)節(jié)慢慢添加和修正。
    的頭像 發(fā)表于 10-13 14:09 ?1w次閱讀
    LDO和開關(guān)電源<b class='flag-5'>在</b><b class='flag-5'>實際</b>電路<b class='flag-5'>中</b>的使用

    蘋果M1 Mac實際應(yīng)用表現(xiàn)如何?

    隨著全新的 Mac 產(chǎn)品陸續(xù)來到用戶手中,評測也陸續(xù)公開,M1 芯片的實力已經(jīng)多方位地展示了我們面前。 我們已經(jīng)知道,新款 M1 Mac 的跑分非常出色,那么它們實際應(yīng)用
    的頭像 發(fā)表于 11-25 15:51 ?1883次閱讀

    電站的實際表現(xiàn)與等效小時的對比表現(xiàn)如何

    ,電站實際建成后該電站的實際表現(xiàn)與等效小時的對比表現(xiàn)如何呢? 01 理論年等效小時數(shù) 利用PVsyst里Meteonorm(1991-2000)氣象數(shù)據(jù),得到下列水平和最佳斜面的太陽能
    的頭像 發(fā)表于 07-01 10:18 ?7921次閱讀
    電站的<b class='flag-5'>實際</b><b class='flag-5'>表現(xiàn)</b>與等效小時的對比<b class='flag-5'>表現(xiàn)</b>如何

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

    Bluespec SystemVerilog (BSV) 是由Arvind 開發(fā)的 Bluespec 語言,這是一種高級功能 硬件 描述編程語言,本質(zhì)上是Haskell(Haskell ( / ?h
    的頭像 發(fā)表于 06-27 10:14 ?769次閱讀
    開源的Bluespec SystemVerilog (<b class='flag-5'>BSV</b>)語言<b class='flag-5'>表現(xiàn)</b>如何?

    NTC熱敏電阻實際使用的故障表現(xiàn)及其對策

    NTC熱敏電阻實際使用的故障表現(xiàn)及其對策
    的頭像 發(fā)表于 08-17 14:40 ?2300次閱讀
    NTC熱敏電阻<b class='flag-5'>在</b><b class='flag-5'>實際</b>使用<b class='flag-5'>中</b>的故障<b class='flag-5'>表現(xiàn)</b>及其對策

    光耦實際使用的注意事項

    光耦,即光電耦合器,是一種以光為媒介傳輸電信號的電一光一電轉(zhuǎn)換器件。實際使用,為了確保光耦的穩(wěn)定性和可靠性,需要注意多個方面的因素。以下是對光耦
    的頭像 發(fā)表于 08-15 10:52 ?828次閱讀
    主站蜘蛛池模板: 麻豆精品无码久久久久久久久 | FREE性丰满HD毛多多| 99精彩视频在线观看| 99精品网站| 吃胸亲吻吃奶摸下面免费视频| 国产精品第十页| 护士WC女子撒尿| 乱码AV午夜噜噜噜噜| 人妖欧美一区二区三区四区| 污污内射久久一区二区欧美日韩| 亚洲精品九色在线网站| 做暖暖视频在线看片免费| 白丝女仆被啪到深夜漫画| 国产看黄网站又黄又爽又色| 久久亚洲黄色| 日本内射精品一区二区视频| 香蕉在线播放| 24小时日本在线| 国产精品嫩草影院| 旧里番6080在线观看| 秋霞网站一级一片| 亚洲精品高清AV在线播放| 做暖免费观看日本| 国产精品欧美久久久久天天影视| 久久aa毛片免费播放嗯啊| 秋霞网在线伦理影片| 亚洲视频一| 厕所xxxxx| 久久99re热在线观看视频| 欧美亚洲天堂网| 亚洲免费人成 久久| JAPANBABES11学生老师| 国语自产视频在线| 欧美熟妇互舔20p| 亚洲人成电影网站色2017| www.伊人| 久久精品电影久久电影大全| 成人毛片免费播放| 久久不射网| 无码AV动漫精品一区二区免费 | 亚洲高清一区二区三区电影 |