女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

淺析Stream里的隱式轉(zhuǎn)換

Spinal FPGA ? 來源:Spinal FPGA ? 2023-05-15 17:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

》開篇立問

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

我們定義如下接口

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

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

b.data

b.payload.data

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

》深入一步

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

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

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

那么剩下的一種可能就是隱式轉(zhuǎn)換了~

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

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

這里的隱式轉(zhuǎn)換存在于trait DataCarrier中:

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

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

如果數(shù)據(jù)類型是普通類型,則直接返回dataCarrier.payload

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

如果你在toImplicit函數(shù)上打斷點,執(zhí)行上面的接口定義相關的代碼,你就會發(fā)現(xiàn)會在toImplicit函數(shù)上暫停。也就意味著當我們調(diào)用b.data時會調(diào)用隱式轉(zhuǎn)換函數(shù)toImplicit返回b.payload后再執(zhí)行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代碼是不是和你想的又不一樣了?

我們調(diào)用函數(shù)實現(xiàn)和我們自己實現(xiàn)大相徑庭!

先暈一會兒~

》撥云見霧

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

我也思索了兩三天~

回歸正題。接下來的內(nèi)容好好品。這一切的一切均還是在于隱式轉(zhuǎn)換。





審核編輯:劉清

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

    關注

    1

    文章

    389

    瀏覽量

    61088
  • HDL語言
    +關注

    關注

    0

    文章

    48

    瀏覽量

    9164

原文標題:Stream里的隱式轉(zhuǎn)換

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Stream模塊的基礎用法和進階用法

    在 Rust 語言中,Tokio 是一個非常流行的異步編程框架。它提供了一系列的模塊,其中最常用的就是 Stream 模塊。Stream 模塊允許我們以異步的方式處理數(shù)據(jù)流,這在很多情況下非常
    的頭像 發(fā)表于 09-19 15:33 ?1584次閱讀

    Stream API原理介紹

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

    一文詳解Video In to AXI4-Stream IP核

    Video In to AXI4-Stream IP核用于將視頻源(帶有同步信號的時鐘并行視頻數(shù)據(jù),即同步sync或消blank信號或者而后者皆有)轉(zhuǎn)換成AXI4-Stream接口形
    的頭像 發(fā)表于 04-03 09:28 ?1293次閱讀
    一文詳解Video In to AXI4-<b class='flag-5'>Stream</b> IP核

    得到警告373“簽名到無符號轉(zhuǎn)換

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

    mysql轉(zhuǎn)換具體描述

    mysql 轉(zhuǎn)換問題
    發(fā)表于 08-13 06:07

    2D解析

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

    XC8怎么將float轉(zhuǎn)換為整數(shù)

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

    有符號到無符號轉(zhuǎn)換

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

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

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

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

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

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

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

    JDK8 Stream數(shù)據(jù)流效率分析

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

    Java 8 Stream流底層原理

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

    pipeline高端玩法之Stage轉(zhuǎn)換

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

    在SpinalHDL在頂層一鍵優(yōu)化Stream/Flow代碼生成

    ? ? 在SpinalHDL在頂層一鍵優(yōu)化代碼中Stream/Flow代碼生成的payload,fragment。 難看的代碼 ? ????來看一段代碼: ? import
    的頭像 發(fā)表于 12-14 09:05 ?1040次閱讀