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

    文章

    5434

    瀏覽量

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

    關(guān)注

    180

    文章

    7632

    瀏覽量

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

    關(guān)注

    10

    文章

    1956

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    信號發(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 ?183次閱讀
    <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 ?525次閱讀
    如何正確地<b class='flag-5'>進(jìn)行</b><b class='flag-5'>信號</b>放大

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

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

    數(shù)組名之間可以直接賦值

    ; ????return 0;} 想把數(shù)組 a 里面的數(shù)據(jù)全部賦值給 b,寫成 b = a 行不行? 和這個問題類似的還有,數(shù)組名為什么不能進(jìn)行 ++ 操作? char?array[5]?=?{0};array++; 比如
    的頭像 發(fā)表于 11-26 11:23 ?634次閱讀

    信號放大基礎(chǔ):什么是信號放大,如何正確地進(jìn)行信號放大

    就是放大之前對信號進(jìn)行偏移。舉例來說,輸入波形的中心電壓為 0 V,峰峰值振幅為 5 V。我們可以使用以下電路將其拉高: 我們來做一個實驗,使用相同值的 R1 和 R2,阻值為 1
    發(fā)表于 11-21 17:35

    ADS131M03的寄存器讀寫是要在轉(zhuǎn)換觸發(fā)的中斷中進(jìn)行配置,還是可以standby狀態(tài)下進(jìn)行?

    我使用32位M4單片機(jī),通過SPI總線與AD進(jìn)行通信。 基本情況: ADC外接晶振8.192MHz,晶振信號板子上電后一直連著ADC的時鐘引腳,片選信號通過單片機(jī)CS程序控制,SP
    發(fā)表于 11-13 07:08

    FPGA無芯片怎么進(jìn)行HDMI信號輸入

    FPGA 無外部PHY芯片情況下輸出HDMI,目前是比較成熟的方案(外部電路需要轉(zhuǎn)換成TMDS電平)。無PHY芯片情況下怎么進(jìn)行HDMI信號
    的頭像 發(fā)表于 10-24 18:11 ?2375次閱讀
    FPGA無芯片怎么<b class='flag-5'>進(jìn)行</b>HDMI<b class='flag-5'>信號</b>輸入

    進(jìn)行高速信號放大設(shè)計時,往往需要用到反饋電路,是否反饋電路越短越好?

    進(jìn)行高速信號放大設(shè)計時,往往需要用到反饋電路,是否反饋電路越短越好,不同封裝是否在這方面有不同優(yōu)勢?
    發(fā)表于 09-26 07:55

    使用霍爾效應(yīng)傳感器電子智能鎖中進(jìn)行位置感應(yīng)應(yīng)用說明

    電子發(fā)燒友網(wǎng)站提供《使用霍爾效應(yīng)傳感器電子智能鎖中進(jìn)行位置感應(yīng)應(yīng)用說明.pdf》資料免費(fèi)下載
    發(fā)表于 09-12 14:03 ?0次下載
    使用霍爾效應(yīng)傳感器<b class='flag-5'>在</b>電子智能鎖<b class='flag-5'>中進(jìn)行</b>位置感應(yīng)應(yīng)用說明

    如何利用模擬電路對方波信號進(jìn)行移相?

    比較常用的移相網(wǎng)絡(luò)就是直接用一個全通電路對固定頻率的正弦信號進(jìn)行移相,但是對于方波信號而言因為本身包含很多諧波分量,不同頻率的諧波相移不同,導(dǎo)致輸出波形發(fā)生失真,那么對于方波
    發(fā)表于 09-11 08:00

    使用THS4531驅(qū)動ADC時,THS4531電路無法對信號進(jìn)行放大的原因?

    和實際工作都能正常,但有時該THS4531 電路無法對信號進(jìn)行放大,多次上電重啟都無法恢復(fù)。使用烙鐵對C4和C5加熱后,或者說用烙鐵焊一下周圍的電路
    發(fā)表于 09-05 06:07

    數(shù)字電路是對什么信號進(jìn)行傳輸?shù)?/a>

    數(shù)字電路是一種電子系統(tǒng),它使用數(shù)字信號進(jìn)行信息傳輸和處理。數(shù)字信號是由離散的電壓水平或電流水平表示的信號,通常用二進(jìn)制代碼表示。與模擬
    的頭像 發(fā)表于 08-11 11:00 ?1498次閱讀

    INA321放大器輸出不了信號是怎么回事?如何解決?

    電路連接如上圖,仿真TINA-Ti中進(jìn)行的,放大倍數(shù)和結(jié)果都是可以的 但打板之后,信號輸入之后,電路沒有
    發(fā)表于 08-09 07:13