精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

SpinalHDL中Bundle數據類型的轉換

Spinal FPGA ? 來源:Spinal FPGA ? 作者:Spinal FPGA ? 2022-10-17 09:51 ? 次閱讀

編 者 按

SpinalHDL中Bundle與SystemVerilog中的packed struct很像,在某些場景下,與普通數據類型之間的連接賦值可以通過asBits,assignFromBits來實現。

》Bundle—>Bits 在SpinalHDL中,無論是哪種數據類型都是可以轉換成Bits類型,我們擴展Bundle類型定義的復雜數據類型也不例外,可以通過asBits函數將自定義的數據類型轉換成Bits數據類型。以下面所定義的數據類型為例:

case class port() extends Bundle with IMasterSlave {
val data0=UInt(8 bits)
val data1=Bits(8 bits)
val last=Bool()


override def asMaster(): Unit = {
out(data0,data1,last)
  }
}
我們完全可以通過調用asBits函數將其轉換成Bits類型:
val portInst=port()
valdata=portInst.asBits
生成的Verilog代碼將對應:
assign data = {portInst_last,{portInst_data1,portInst_data0}};
這里與SystemVerilog中的packed struct略不相同的是,在SystemVerilog中packed struct中先定義的元素排在最高位,而在SpinalHDL Bundle中先定義的元素在轉換成Bits時則是排在最低位,這與asBits函數的實現有關:

47ceacc4-4d3c-11ed-a3b6-dac502259ad0.jpg

》Bits—>Bundle

Bits—>Bundle的轉換可以通過assignFromBits來實現。在SpinalHDL中針對Bundle類型,提供了三種不同的實現:

assignFromBits(bits:Bits)—將bits整個賦值給Bundle,當bits位寬大于Bundle定義的位寬時,高位將抹去。

assignFromBits(bits:Bits,hi:Int,lo:Int)—將bits整個賦值給Bundle對應Bits的(hi down to lo),多余的位將抹去

assignFromBits(bits:Bits,offset:Int,bitCount:BitCount)—等價于assignFromBits(bits,offset:Int+bitCount.value,offset)

在和已有的一些Verilog/SystemVerilog接口進行對接時這些API還是很有作用的,可以方便的實現接口轉換以實現功能。

像下面的用法是等價的:

val dataIn=Bits(17 bits)
val portInst=port()
portInst.assignFromBits(dataIn)
等價于:
portInst.data0:=dataIn(7downto 0)
portInst.data1:=dataIn(15 downto 8)
portInst.last:=dataIn(16)



valportData=Bits(16bits)
valportLast=Bits(16bits)
val portInst=port()
portInst.assignFromBits(portData,15,0)
portInst.last:=portLast


等價于
portInst.data0:=portData(7 downto 0)
portInst.data1:=portData(15 downto 8)
portInst.last:=portLast

下面的這個例子展示了如果通過這些方法調用SpinalHDL中的StreamArbiter來實現兩個port端口FragmentLock RR調度:

47fc2262-4d3c-11ed-a3b6-dac502259ad0.png

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

    關注

    28

    文章

    1345

    瀏覽量

    109996
  • bundled
    +關注

    關注

    0

    文章

    4

    瀏覽量

    9091
  • 數據類型
    +關注

    關注

    0

    文章

    236

    瀏覽量

    13610

原文標題:Bundle的轉換

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

收藏 人收藏

    評論

    相關推薦

    GaussDB 數據類型介紹

    進行數據類型轉換,以滿足不同的需求。本文將以示例的形式羅列并介紹一些常見的數據類型轉換方法等。? 數據類型概念及特點
    的頭像 發表于 06-05 16:40 ?1621次閱讀
    GaussDB <b class='flag-5'>數據類型</b>介紹

    JAVA語言的數據類型轉換

    JAVA語言的數據類型轉換很多場合需要用到類型轉換。例如,要把一個整型變量作為字符型變量來使用,就需要使用類型
    發表于 12-06 00:30

    關于數據類型轉換的問題

    如圖,最右邊的反饋節點輸出M序列。這個M序列的數據類型是布爾型。樓主想把M序列的數據類型轉換成布爾型數組。想了好久都不知道該怎么操作。希望能有人解答。樓主不勝感激
    發表于 04-27 21:07

    怎么轉換連接數據類型

    請問怎么把圖二的“藍線”轉換成圖一的“紅色”數據類型?很急,在線等,謝謝!
    發表于 11-29 09:33

    SpinalHDL定義各種各樣的復合數據類型

    通過繼承Bundle,在SpinalHDL我們可以定義各種各樣的復合數據類型。今天,關于Bundle的幾個容易被忽略的點,一同來看下。》
    發表于 06-28 15:21

    SpinalHDL的UInt與SInt數據類型能夠進行有符號/無符號數操作

    在Bits的基礎上,SpinalHDL提供了UInt、SInt數據類型,從而能夠進行有符號/無符號數操作。變量定義/初始化UInt/SInt的初始化與Bits類型相似:邏輯操作符UInt/SInt
    發表于 07-14 14:45

    SpinalHDLBundle與普通數據類型之間的連接賦值轉換

    。》Bundle—>Bits在SpinalHDL,無論是哪種數據類型都是可以轉換成Bits類型
    發表于 10-18 14:22

    51單片機數據類型解析

    數據類型數據結構的定義是一個值的集合以及定義在這個值集上的一組操作。數據類型包括原始類型、多元組、記錄單元、代數
    發表于 11-16 08:45 ?2.5w次閱讀
    51單片機<b class='flag-5'>中</b>的<b class='flag-5'>數據類型</b>解析

    vhdl數據類型

    VHDL的標識符可以是常數、變量、信號、端口、子程序或參數的名字。VHDL數據類型可以分成四大類: 標量型(SCALAR TYPE):屬單元素的最基本的數據類型,通常用于描述一個
    發表于 03-30 15:59 ?11次下載

    asBits函數如何轉換成Bits數據類型

    SpinalHDLBundle與SystemVerilog的packed struct很像,在某些場景下,與普通數據類型之間的連接賦值可
    的頭像 發表于 10-17 09:53 ?800次閱讀

    什么是數據類型轉換

    常用的3種數據類型:1、Python數據類型第一種:字符串(str)。 2、Python數據類型第二種:整數(int)。 3、Python數據類型第三種:浮點數(float)。
    的頭像 發表于 02-23 15:21 ?1749次閱讀

    什么是數據類型轉換

    數據類型轉換就是將數據(變量、數值、表達式的結果等)從一種類型轉換為另一種類型
    的頭像 發表于 02-27 15:04 ?1369次閱讀
    什么是<b class='flag-5'>數據類型</b><b class='flag-5'>轉換</b>

    GaussDB數據類型轉換介紹

    數據類型轉換在實際應用中非常常見。GaussDB 作為一款企業級分布式關系型數據庫,在實際業務場景使用,也會避免不了數據類型
    的頭像 發表于 06-05 16:29 ?817次閱讀
    GaussDB<b class='flag-5'>數據類型</b><b class='flag-5'>轉換</b>介紹

    ARRAY 數據類型的變量

    要求 全局數據塊已打開。 操作步驟 要聲明一個 ARRAY 數據類型的變量,請按以下步驟操作: 在“名稱”(Name) 列,輸入變量的名稱。 在“數據類型”列
    的頭像 發表于 07-06 11:08 ?1061次閱讀

    plc數據類型怎么理解和應用

    PLC(可編程邏輯控制器)是一種工業自動化設備,用于控制機械和工業過程。在PLC編程數據類型是非常重要的概念,因為它決定了程序數據的存儲和處理方式。正確理解和應用PLC
    的頭像 發表于 12-19 11:39 ?4039次閱讀