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()val data=portinst.asbits 生成的verilog代码将对应:assign data = {portinst_last,{portinst_data1,portinst_data0}}; 这里与systemverilog中的packed struct略不相同的是,在systemverilog中packed struct中先定义的元素排在最高位,而在spinalhdl bundle中先定义的元素在转换成bits时则是排在最低位,这与asbits函数的实现有关:
》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(7 downto 0)portinst.data1:=datain(15 downto 8)portinst.last:=datain(16)val portdata=bits(16 bits)val portlast=bits(16 bits)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调度:
近红外光谱仪是干什么用的 近红外光谱仪使用方法
谷歌:FBI调查恶意软件购买行为或导致个人数据被披露
如何利用近红外传感技术实现土壤监测?
Exar推出高效3安培稳压器,简化节能电源设计
5G不同频段PCB电路材料的选择
asBits函数如何转换成Bits数据类型
华为荣耀Note8,6.6英寸的巨屏手机,华为目前最好用的大屏手机
Kasite柔性去毛刺浮动主轴 铝合金压铸件毛刺无所遁形
通信 | 不可能完成的任务——欧洲数字信号干扰器项目
PCBA设计时丝印位号错误有什么影响?
英码科技深元ai分析盒子,在安防领域的应用
电源和地之间的电容作用是什么,电源和地之间的电容多大
区块链以多种方式使物联网安全受益
新能源车车险与传统车险存在的三个主要差异
对比Cat.1和Cat.4,它们的区别是什么
拉力试验机是个怎么样的测试仪器?品牌、质量、操作
全球感知体验领导者瑞声科技与UltraSense达成战略合作,激光雷达龙头图达通落子重庆
大数据技术在对抗冠状病毒中的作用
基础电路认识
PLC在人造金刚石六面顶压机设备中的应用