chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

在SpinalHDL電路中進(jìn)行信號的賦值

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

掃碼添加小助手

加入工程師交流群

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

是val還是var?

先來看兩個語法:

poYBAGLiYUaAerlMAAAxyFuFyMg400.png

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

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

var:可變變量類型

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

而下面的語句:

pYYBAGLiYVyAePMYAABN4KsGDp4153.png

這里變量c聲明為val,其意味著c所指向的地址不可變更,但我們?nèi)钥梢孕薷钠渲赶虻膬?nèi)容,這也正式為什么我們能對c(0)賦值,而無法再將c指向一個新聲明的Array。

聲明師=,賦值靠:=

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

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

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

pYYBAGLiYauAKkVMAAAeLVny_28278.png

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

小結(jié)

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


審核編輯:劉清

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

    關(guān)注

    31

    文章

    5602

    瀏覽量

    129600
  • C語言
    +關(guān)注

    關(guān)注

    183

    文章

    7642

    瀏覽量

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

    關(guān)注

    10

    文章

    1962

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    VSCode 中進(jìn)行 CW32L010 MCU 的開發(fā),應(yīng)該如何配置環(huán)境?

    我想在 VSCode 中進(jìn)行 CW32L010 MCU 的開發(fā),應(yīng)該如何配置環(huán)境?
    發(fā)表于 11-24 07:17

    PWM周期和占空比是否可以程序中進(jìn)行調(diào)節(jié)?

    PWM周期和占空比是否可以程序中進(jìn)行調(diào)節(jié)
    發(fā)表于 11-20 07:50

    如何在Zephyr中進(jìn)行靜態(tài)代碼分析

    嵌入式軟件開發(fā)中,“能編譯通過”并不等于“可以放心交付”。安全性、可靠性和合規(guī)性是產(chǎn)品能否順利量產(chǎn)的關(guān)鍵。進(jìn)入量產(chǎn)的Bug會浪費(fèi)寶貴的工程時間,也會削弱用戶信任;安全漏洞可能暴露設(shè)備,帶來嚴(yán)重后果;受監(jiān)管市場中,若未滿足MISRA或CERT檢查要求,甚至?xí)苯訉?dǎo)致產(chǎn)品
    的頭像 發(fā)表于 10-17 10:28 ?747次閱讀

    中斷處理程序中進(jìn)入掉電模式需要注意什么?

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

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

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

    使用DAP miniWiggleADS中進(jìn)行對代碼的工程下載以及進(jìn)入調(diào)試模式進(jìn)行調(diào)試,需要安裝配置什么環(huán)境?

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

    射頻電路信號有什么影響

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

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

    如上圖所示,我在用matlab2021Ra APP模塊進(jìn)行編程的時候,想在表格中調(diào)入自己編寫的結(jié)構(gòu)數(shù)組,我從網(wǎng)上AI了一個程序語句,看著沒問題,但是就是給表格賦值不了,還請各位大神幫忙看一下這個是怎么回事,我是初學(xué)者,請各位幫忙看看
    發(fā)表于 07-12 11:45

    信號發(fā)生器泰克AFG31000系列模擬電路檢定中的應(yīng)用

    模擬電路作為電子系統(tǒng)的基礎(chǔ)組成部分,其性能直接關(guān)系到整個系統(tǒng)的可靠性和穩(wěn)定性。模擬電路的研發(fā)、生產(chǎn)及維護(hù)過程中,精確的信號源是進(jìn)行參數(shù)測量
    的頭像 發(fā)表于 06-18 10:57 ?587次閱讀
    <b class='flag-5'>信號</b>發(fā)生器泰克AFG31000系列<b class='flag-5'>在</b>模擬<b class='flag-5'>電路</b>檢定中的應(yīng)用

    AN65974vivado 2018.2中進(jìn)行仿真時, 無法獲取輸出數(shù)據(jù)信號是怎么回事?

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

    labview進(jìn)行的數(shù)據(jù)采集

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

    如何正確地進(jìn)行信號放大

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

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

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

    使用PicoScope4444進(jìn)行心跳信號測試

    幾乎示波器測量的每個信號都包含一些不需要的噪聲。測量小信號或連接到高阻抗節(jié)點時,噪聲有時會超過您希望測量的信號。通常的解決方案是進(jìn)行差分測
    的頭像 發(fā)表于 02-08 17:24 ?1056次閱讀
    使用PicoScope4444<b class='flag-5'>進(jìn)行</b>心跳<b class='flag-5'>信號</b>測試

    ADS4125評估板中,輸入的信號需要進(jìn)行放大,放大的信號怎么出來呢?

    ADS4125評估板中,輸入的信號需要進(jìn)行放大,但是原理圖上 這些器件都不安裝,那么放大的信號怎么出來呢,要安裝的話,這些位置又安裝什么器件呢,請大蝦們給出您的建議!謝謝
    發(fā)表于 02-07 08:34