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

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

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

3天內不再提示

淺析Stream里的隱式轉換

Spinal FPGA ? 來源:Spinal FPGA ? 2023-05-15 17:36 ? 次閱讀

Stream、Flow是在電路描述里經常用到的對象。較早時間有小伙伴問關于Stream里Fragment嵌套的問題,當時沒有去深入的研究,最近重新review下這個問題,特來做個總結。

》開篇立問

先來看看下面的這個場景:

我們定義如下接口

1a049630-f144-11ed-90ce-dac502259ad0.png

這里定義了一個Stream接口,如果我們想引用這里面的data,那么下面兩種方法是等價的:

b.data

b.payload.data

估計大多數人不深究的話基本上就采用第一種寫法了,簡單快捷(我也是)。

》深入一步

顯而易見,這里b的定義是一個Stream接口。按照Stream接口的定義,其所包含的信號只有三個:

1a1d2772-f144-11ed-90ce-dac502259ad0.png

從直觀上來看,那么采用b.data這種形式顯然是沒有直接的方法或調用關系的。

那么剩下的一種可能就是隱式轉換了~

Stream類在定義時其繼承關系如下:

1a3da6be-f144-11ed-90ce-dac502259ad0.png

這里的隱式轉換存在于trait DataCarrier中:

1a5b6eec-f144-11ed-90ce-dac502259ad0.png

這里為DataCarrier定義了兩個隱式轉換函數toImplicit和toImplicit2。根據DataCarrier的數據類型,分別返回不同的對象:

如果數據類型是普通類型,則直接返回dataCarrier.payload

如果數據類型是Fragment類型,則會返回dataCarrier.fragment(同樣,會調用到toImplicit函數)。

如果你在toImplicit函數上打斷點,執行上面的接口定義相關的代碼,你就會發現會在toImplicit函數上暫停。也就意味著當我們調用b.data時會調用隱式轉換函數toImplicit返回b.payload后再執行b.payload.data~

》亂花漸欲迷人眼

理解了上面的代碼,接下來的場景可能讓你眼花繚亂了。

先來看下面的這段代碼:

1a92e322-f144-11ed-90ce-dac502259ad0.png

上面這段代碼是不是覺得fire0和fire1是表達相同的功能?然而,生成的RTL代碼會讓你懷疑自己:

1aba0dda-f144-11ed-90ce-dac502259ad0.png

再來看看一個Fragment嵌套的場景:

1ae478ea-f144-11ed-90ce-dac502259ad0.png

一眼看去是不是覺得fire0和fire1的作用是一樣的?

然而,生成的RTL代碼卻是這樣的:

1b025428-f144-11ed-90ce-dac502259ad0.png

給你一分鐘,你先品著。等品完之后再來看一個三層Fragment嵌套的代碼:

1b2619c6-f144-11ed-90ce-dac502259ad0.png

對應的RTL代碼:

1b50f9de-f144-11ed-90ce-dac502259ad0.png

看看對應的RTL代碼是不是和你想的又不一樣了?

我們調用函數實現和我們自己實現大相徑庭!

先暈一會兒~

》撥云見霧

是否又到了懷疑TM這SpinalHDL有Bug吧……

我也思索了兩三天~

回歸正題。接下來的內容好好品。這一切的一切均還是在于隱式轉換。





審核編輯:劉清

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

    關注

    1

    文章

    385

    瀏覽量

    59849
  • HDL語言
    +關注

    關注

    0

    文章

    47

    瀏覽量

    8934

原文標題:Stream里的隱式轉換

文章出處:【微信號:Spinal FPGA,微信公眾號:Spinal FPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Stream API原理介紹

    Stream API 是 Java 8 中最重要的新特性之一,它是處理集合和數組的一種新方式。它提供了一種簡單、靈活和可讀的方式來處理集合和數組中的元素,從而使代碼更加簡潔、高效和易于維護。 1.
    的頭像 發表于 09-30 15:31 ?730次閱讀

    得到警告373“簽名到無符號轉換

    嗨,伙計,附件是我的4位16×2液晶顯示屏的截圖。我不斷得到警告373“簽名到無符號轉換”。你會看到它在第148行和第157行。我在C代碼上仍然是新的,所以我確信我正在做愚蠢的錯誤。有人可以幫助
    發表于 03-13 09:19

    mysql轉換具體描述

    mysql 轉換問題
    發表于 08-13 06:07

    2D解析

    《Fundamentals of Computer Graphics》翻譯(三):2D直線
    發表于 09-03 12:19

    XC8怎么將float轉換為整數

    您好,我使用了兩個選項來改變浮點到余弦角的整數。但是我得到了如下警告:警告[356 ]代碼\ADC.C;282.27將浮點到整數的轉換。所以不能得到準確的結果。我的代碼
    發表于 09-06 12:07

    有符號到無符號轉換

    您好,我現在正在使用PIC16F18313,在代碼中,我聲明了一個變量,它位于我放入的示例代碼中,問題是,我收到一個警告:簽名到無符號轉換,我不知道是什么原因或者如何修復它。關于我的問題:希望你能得到一個很好的回答。謝謝。
    發表于 04-07 14:06

    看看Stream信號是如何做跨時鐘域握手的

    邏輯出身的農民工兄弟在面試時總難以避免“跨時鐘域”的拷問,在諸多跨時鐘域的方法,握手是一種常見的方式,而Stream作為一種天然的握手信號,不妨看看它里面是如做跨時鐘域的握手
    發表于 07-07 17:25

    在SpinalHDL有沒有什么好的方式實現一個接口位寬轉換

    下午微信群有個小伙伴問了這么一道題:將一個為UInt(128 bits)的Stream接口連接到一個UInt(32 bits)的StreamFiFo上,在SpinalHDL有沒有什么好的方式實現
    發表于 07-27 14:52

    基于顯反饋信息的矩陣分解

    針對現有的基于用戶顯反饋信息的推薦系統推薦準確率不高的問題,提出了一種基于顯反饋信息的概率矩陣分解推薦方法。該方法綜合考慮了顯示反饋信息和
    發表于 01-04 16:22 ?0次下載

    基于機器學習的中文實體關系抽取方法

    基于機器學習的中文實體關系抽取方法
    發表于 06-02 14:42 ?4次下載

    JDK8 Stream數據流效率分析

    Stream 是Java SE 8類庫中新增的關鍵抽象,它被定義于 java.util.stream (這個包有若干流類型:Stream 代表對象引用流,此外還有一系列特化流,
    的頭像 發表于 08-17 10:53 ?1253次閱讀

    Java 8 Stream流底層原理

    初識lambda呢,函數接口肯定是繞不過去的,函數接口就是一個有且僅有一個抽象方法,但是可以有多個非抽象方法的接口。函數接口可以被
    的頭像 發表于 11-18 10:27 ?1415次閱讀

    pipeline高端玩法之Stage轉換

    Scala里面的轉換的好處是靈活,壞處就是太靈活。
    的頭像 發表于 08-19 10:45 ?681次閱讀
    pipeline高端玩法之Stage<b class='flag-5'>里</b>的<b class='flag-5'>隱</b><b class='flag-5'>式</b><b class='flag-5'>轉換</b>

    Java的Stream的常用知識

    什么是Stream 生產線 Stream就像處理生產流水線一樣去工作,傳送帶就是Stream的管道,每個工廠關注直接的生產,將上游產品加工成下游需要的產品。為什么Stream比傳統的處
    的頭像 發表于 10-11 15:45 ?473次閱讀
    Java的<b class='flag-5'>Stream</b>的常用知識

    在SpinalHDL在頂層一鍵優化Stream/Flow代碼生成

    ? ? 在SpinalHDL在頂層一鍵優化代碼中Stream/Flow代碼生成的payload,fragment。 難看的代碼 ? ????來看一段代碼: ? import
    的頭像 發表于 12-14 09:05 ?703次閱讀
    主站蜘蛛池模板: 精品国产自在现线拍400部| 偷上邻居熟睡少妇| 免费啪视频观试看视频| 青草久久精品亚洲综合专区| 无码日韩人妻精品久久蜜桃免费 | 久久久精品成人免费看| 男人一进一出桶女人视频| 四川少妇大战4黑人| 伊在香蕉国产在线视频| 超级最爽的乱淫片免费| 韩国hd高清xxx| 亲胸吻胸添奶头GIF动态图免费| 性色香蕉AV久久久天天网| 最近日本MV字幕免费观看在线| 成人在线免费视频观看| 九九久久久2| 日产精品久久久久久久蜜殿| 一级毛片免费播放| 哒哒哒影院在线观看免费高清| 久久AV无码AV高潮AV不卡| 日韩一区二区三区免费体验| 曰本女人牲交视频免费| 福利啪啪吧| 榴莲黄版无限刷| 午夜小视频免费观看| a视频在线观看免费| 娇妻被朋友玩得呻吟在线电影| 欧洲最大无人区免费高清完整版| 亚洲欧美国产视频| 成人在线视频播放| 脔到她哭H粗话HWWW男男动漫| 偷拍自偷拍亚洲精品| 99久久伊人一区二区yy5099| 果冻传媒2021一二三在线观看| 日韩插啊免费视频在线观看| 在线不卡日本v二区到六区| 国产精品人成在线播放新网站| 女配穿书病娇被强啪h| 亚洲午夜无码久久久久蜜臀av| 国产成人精品自线拍| 年轻的的小婊孑2中文字幕|