编 者 按
在之前写verilog时,位拼接符是一个很常见的东西,今天来看下在spinalhdl中常见的位拼接符的使用。
建议spinalhdl 版本不低于1.7.1(1.7.1版本bug较多,再往上~)
》{a,b,c}=c 将一个信号的不同bit赋值给不同的信号,这种拼接方式可以在spinalhdl中按照如下的形式进行书写:
case class demo() extends component{ val datain=in bits(8 bits) val dataout0,dataout1= out bits(4 bits) (dataout0,dataout1):=datain}》d={a,b,c}
对于这种形式的拼接赋值,在spinalhdl中可以采用如下形式:
case class demo() extends component{ val a,b,c=in bits(2 bits) val d= out bits(6 bits) d:=cat(a,b,c)}》{d,e}={a,b,c}
对于这种形式的拼接赋值,是上面两种形式的组合体,那么可以这么来写:
case class demo() extends component{ val a,b,c=in bits(2 bits) val d,e= out bits(3 bits) (d,e):=cat(a,b,c)}
针对这种形式,当然也可以更简化一些:
case class demo() extends component{ val a,b,c=in bits(2 bits) val d,e= out bits(3 bits) (d,e):=(a,b,c)}》b={n{a}}
这种类型的赋值在spinalhdl中提供了两个api:
case class demo() extends component{ val a=in bits(2 bits) val b= out bits(6 bits) b:=b(a,3) //不是b(a,3 bits),别搞混}case class demo() extends component{ val a=in bits(2 bits) val b= out bits(6 bits) b:=repeat(a,3)}
这两种实现方式最终生成的verilog代码略不优雅,只是将a机械的重复了n次:
振动能为传感器网络注入环境智能
七彩虹SL500冰雪白冬季限量版SSD性能测试 AS SSD破千分
劳动者被机器人所替代现象加剧 男女不平等社会地位会更严重
低价位USB3.0系统的可靠性设计方案
华为mate10最新消息:华为首款全面屏手机Mate10,麒麟970,价格再超万元?
SpinalHDL中不可不知的位拼接符
电源模块的输出电压会变低的原因是什么
为什么要选择智能外呼机器人,它有什么优势
时隔20年,莫斯科人汽车再次复产,背后全是中国车企的影子
一种可以通过两种方式进行智能调光的设计
分析机构:Apple Watch 2015年Q3市场份额为74%
谷歌手机再曝光 Pixel2配置残暴
一文看懂英伟达SHIELD 是电视盒子还是游戏机
国产MCU如何抓住更多“芯”机遇?
dfrobotJoyStick摇杆简介
工业环境监控系统中常用的气体浓度检测仪如何进行浓度监测和声光报警?
苹果a10处理器性能测试评估更优越 超越主流多核CPU芯片
载波,频点,载频,信道之间关系与区别
热点 | 修复脱靶“漏洞”!我科学家首获新一代单碱基编辑工具
电脑风扇的风量和风压是指什么