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

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

    文章

    5392

    瀏覽量

    121922
  • C語言
    +關注

    關注

    180

    文章

    7618

    瀏覽量

    138700
  • 編程語言
    +關注

    關注

    10

    文章

    1952

    瀏覽量

    35277
收藏 人收藏

    評論

    相關推薦

    使用PicoScope4444進行心跳信號測試

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

    數組名之間可以直接賦值

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

    信號放大基礎:什么是信號放大,如何正確地進行信號放大

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

    ADS131M03的寄存器讀寫是要在轉換觸發的中斷中進行配置,還是可以standby狀態下進行

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

    FPGA無芯片怎么進行HDMI信號輸入

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

    進行高速信號放大設計時,往往需要用到反饋電路,是否反饋電路越短越好?

    進行高速信號放大設計時,往往需要用到反饋電路,是否反饋電路越短越好,不同封裝是否在這方面有不同優勢?
    發表于 09-26 07:55

    使用霍爾效應傳感器電子智能鎖中進行位置感應應用說明

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

    如何利用模擬電路對方波信號進行移相?

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

    使用THS4531驅動ADC時,THS4531電路無法對信號進行放大的原因?

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

    數字電路是對什么信號進行傳輸的

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

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

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

    IAR用PD_ODR_ODR3 = CPU_CCR_C; 無法賦值成功的原因?

    IAR用PD_ODR_ODR3 = CPU_CCR_C;無法賦值成功,仿真中看到 CPU_CCR_C的值是有變化的,但是賦值到PD_ODR_ODR3時,PD_ODR_ODR3總是等于0。PD_ODR_ODR3=1;這樣正常
    發表于 05-15 07:45

    STM32CubeIDE開發LWIP,IP靜態地址的賦值問題求解

    使用STM32Cube,進行開發。lWIP中設定靜態地址。自動代碼生成時,其中IP_ADDRESS,NETMASK_ADDRESS, GATEWAY_ADDRESS這三個值是什么地方賦值
    發表于 04-12 06:15

    為什么指針之間不要隨意賦值呢?

    指針之間也不能隨意賦值
    的頭像 發表于 03-28 17:13 ?817次閱讀
    為什么指針之間不要隨意<b class='flag-5'>賦值</b>呢?

    淺析SpinalHDL中Pipeline中的復位定制

    之前有系列文章介紹了SpinalHDL中Pipeline的使用,最近在一個功能模塊中真實的使用了這個lib。
    的頭像 發表于 03-17 17:31 ?1192次閱讀
    淺析<b class='flag-5'>SpinalHDL</b>中Pipeline中的復位定制
    主站蜘蛛池模板: 娇小老少配xxxxx | 0855福利| 在线天天看片视频免费观看 | 国产欧美亚洲综合第一页 | 久久re视频精品538在线 | 欧美极品尿交 | 国产精品青草久久福利不卡 | 国产精品A久久777777 | 久久99综合国产精品亚洲首页 | 暖暖日本手机免费完整版在线观看 | 97蜜桃123 | 大胆国模一区二区三区伊人 | 播色屋97超碰在人人 | 色吧最新网址 | 亚洲欧美国产综合在线一区 | 色窝窝亚洲AV在线观看 | 色偷偷超碰97人人澡人人 | 特级黑人三人共一女 | 中文字幕 日韩 无码 在线 | 色综合久久88色综合天天提莫 | 亚洲欧美一区二区三区九九九 | 欧美一区二区三区激情视频 | 色综合伊人色综合网站中国 | 麻豆国产原创中文AV网站 | 亚洲人成电影网站色2017 | 亚洲人成网站7777视频 | 国产精一品亚洲二区在线播放 | 无码人妻少妇色欲AV一区二区 | 99精品视频在线观看 | 最近中文字幕高清中文 | 麻豆久久国产亚洲精品超碰热 | 丰满少妇被猛烈进出69影院 | 中文字幕在线观看亚洲 | 免费啪视频观试看视频 | 久久精品电影久久电影大全 | 亚洲无线码一区在线观看 | 伊人亚洲综合网色 | 最新国自产拍 高清完整版 最新国产在线视频在线 | 两个人的视频hd全免费 | 成人片在线播放 | 阿片在线播放 |