国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

在SpinalHDL電路中進行信號的賦值

冬至配餃子 ? 來源:Spinal FPGA ? 作者:玉騏 ? 2022-07-28 18:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

對于SpinalHDL電路描述,信號的賦值不免有些小伙伴帶有些許迷茫,本篇抽絲剝繭,一塊兒來梳理。

是val還是var?

先來看兩個語法:

poYBAGLiYUaAerlMAAAxyFuFyMg400.png

對于變量a,聲明為val,在對其進行第二次賦值時發現會報錯,而聲明為var的變量則正常。在Scala里,對于val和var的定義:

**val:不可變變量類型。

var:可變變量類型

這似乎與我們在其他語言中所接觸的有些沖突,變量是不可變的為什么還叫變量呢?Scala是一門函數式編程語言,而在函數式編程里,其所倡導的往往是變量的賦值僅有一次,對于其他地方不會對該變量進行重新賦值,這也是引入val類型的原因,頗有些C語言中const類型的意味。

而下面的語句:

pYYBAGLiYVyAePMYAABN4KsGDp4153.png

這里變量c聲明為val,其意味著c所指向的地址不可變更,但我們仍可以修改其指向的內容,這也正式為什么我們能對c(0)賦值,而無法再將c指向一個新聲明的Array。

聲明師=,賦值靠:=

有了上面的了解,再回到SpinalHDL電路描述里,我們在描述電路時,無論是寄存器還是Mem、這些都是電路對象,其聲明有且僅應當只有一次,因而我們在定義變量時,往往這么來定義:

pYYBAGLiYW6AFeTiAAAS6hNzlwM758.png

在Scala里一切皆為class,這里我們聲明a為一個UInt對象、b為一個RegNext(a)對象,即這里聲明a、b均為8比特的寄存器,而寄存器本身一旦定義了是不可變的,為val類型。想一想倘若一會兒將a聲明為8bit寄存器,一會兒聲明為9比特寄存器,像Verilog中這么寫:

pYYBAGLiYYKAE1_nAAARNt06Qp4376.png

想必沒人會在Verilog中這么來寫吧。同理,在SpinalHDL里,我們聲明一個電路對象時,自然是=。

雖然電路對象不可改,就像聲明了a是8bit,其一定是8bit,但這8bit所代表的值是可以改變的!!!這也正是我們描述電路里的賦值。

SpinalHDL里為電路對象的賦值提供了三種形式:

pYYBAGLiYZeABewYAACSCwiQpKs514.png

我們是為電路對象所代表的值進行賦值,而不是改變電路對象本身(把電路對象指向另一個對象,想一想是否和上面Array的賦值有點兒類似),因而這里我們是不能用=(=在Scala中本身也是一個方法,是改變變量指向的位置,玩不可行),因而所要采用的是SpinalHDL中提供的:=或者\=來給電路對象所代表的含義進行賦值:

pYYBAGLiYauAKkVMAAAeLVny_28278.png

由于只有聲明為Reg類型的變量才會被當成寄存器類型,這里即可放心使用“:=”。

小結

勸君莫懼Scala,我們在電路描述里用到的語法特性并不多,若有systemverilog的基礎那么對于這類軟件語言入門沒那么可怕,畢竟又不是去轉大數據不是么?


審核編輯:劉清

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

    關注

    31

    文章

    5608

    瀏覽量

    129985
  • C語言
    +關注

    關注

    183

    文章

    7644

    瀏覽量

    145596
  • 編程語言
    +關注

    關注

    10

    文章

    1964

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    VSCode 中進行 CW32L010 MCU 的開發,應該如何配置環境?

    我想在 VSCode 中進行 CW32L010 MCU 的開發,應該如何配置環境?
    發表于 11-24 07:17

    PWM周期和占空比是否可以程序中進行調節?

    PWM周期和占空比是否可以程序中進行調節
    發表于 11-20 07:50

    如何在Zephyr中進行靜態代碼分析

    嵌入式軟件開發中,“能編譯通過”并不等于“可以放心交付”。安全性、可靠性和合規性是產品能否順利量產的關鍵。進入量產的Bug會浪費寶貴的工程時間,也會削弱用戶信任;安全漏洞可能暴露設備,帶來嚴重后果;受監管市場中,若未滿足MISRA或CERT檢查要求,甚至會直接導致產品
    的頭像 發表于 10-17 10:28 ?874次閱讀

    中斷處理程序中進入掉電模式需要注意什么?

    中斷處理程序中進入掉電模式需要注意什么?
    發表于 08-26 07:46

    請問中斷處理程序中進入掉電模式需要注意什么?

    中斷處理程序中進入掉電模式需要注意什么?
    發表于 08-21 06:20

    使用DAP miniWiggleADS中進行對代碼的工程下載以及進入調試模式進行調試,需要安裝配置什么環境?

    如題,現在想使用DAP miniWiggleADS中進行對代碼的工程下載以及進入調試模式進行調試,請問需要安裝配置什么環境以及相關的有什么操作步驟,感謝解答
    發表于 07-31 06:08

    射頻電路信號有什么影響

    射頻電路,聽起來是不是有點高大上?其實它就在我們身邊,手機信號、無線網絡,都離不開它的功勞。今天,咱們就來好好聊聊,射頻電路到底是干啥的,它對信號又會有什么影響。
    的頭像 發表于 07-16 11:00 ?1797次閱讀
    射頻<b class='flag-5'>電路</b>對<b class='flag-5'>信號</b>有什么影響

    matlab appdesigner 表格組件賦值問題,求助

    如上圖所示,我在用matlab2021Ra APP模塊進行編程的時候,想在表格中調入自己編寫的結構數組,我從網上AI了一個程序語句,看著沒問題,但是就是給表格賦值不了,還請各位大神幫忙看一下這個是怎么回事,我是初學者,請各位幫忙看看
    發表于 07-12 11:45

    信號發生器泰克AFG31000系列模擬電路檢定中的應用

    模擬電路作為電子系統的基礎組成部分,其性能直接關系到整個系統的可靠性和穩定性。模擬電路的研發、生產及維護過程中,精確的信號源是進行參數測量
    的頭像 發表于 06-18 10:57 ?788次閱讀
    <b class='flag-5'>信號</b>發生器泰克AFG31000系列<b class='flag-5'>在</b>模擬<b class='flag-5'>電路</b>檢定中的應用

    AN65974vivado 2018.2中進行仿真時, 無法獲取輸出數據信號是怎么回事?

    大家好, 我已經嘗試過 AN65974 指南 pdf 并下載了 fpga rtl vhdl 文件夾的示例。 我做了一些配置,例如輸入圖像和相關信號 vivado 2018.2 中進行仿真
    發表于 05-12 06:58

    labview進行的數據采集

    請問labview中進行數據采集,為保證不同設備之間采集數據的同步性,準備利用PPS進行觸發開始任務,利用DAQmx設備內部時鐘源來設置數據采集的一些參數,但是為了防止pps信號的缺
    發表于 04-27 10:19

    高精度信號處理電路海綿空氣透氣率測定儀溫度補償中的應用

    海綿空氣透氣率測定儀的溫度補償系統中,溫度傳感器采集到的信號通常處于毫伏級甚至更低的水平,這類信號極其微弱,并且極易受到來自周邊環境的電磁噪聲、電路自身的熱噪聲等多方面干擾。一旦這些
    的頭像 發表于 04-21 10:27 ?613次閱讀
    高精度<b class='flag-5'>信號</b>處理<b class='flag-5'>電路</b><b class='flag-5'>在</b>海綿空氣透氣率測定儀溫度補償中的應用

    如何正確地進行信號放大

    晶體管和運放都可以放大信號,但到底什么是信號放大,以及如何正確地進行信號放大。在學習電子設計的過程中,我從未在微控制器和邏輯門的世界里遇到過什么困難。但模擬
    的頭像 發表于 04-15 11:52 ?1427次閱讀
    如何正確地<b class='flag-5'>進行</b><b class='flag-5'>信號</b>放大

    testbench中如何使用阻塞賦值和非阻塞賦值

    本文詳細闡述了一個testbench中,應該如何使用阻塞賦值與非阻塞賦值。首先說結論,建議testbench中,對時鐘信號(包括分頻時鐘
    的頭像 發表于 04-15 09:34 ?1206次閱讀
    <b class='flag-5'>在</b>testbench中如何使用阻塞<b class='flag-5'>賦值</b>和非阻塞<b class='flag-5'>賦值</b>

    模擬示波器電路設計與調試中的應用

    模擬示波器電路設計與調試中的應用主要體現在以下幾個方面:一、電路設計階段 信號驗證: 電路
    發表于 03-31 14:07