0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SpinalHDL中不可不知的位拼接符

Spinal FPGA 来源:Spinal FPGA 作者:玉骐 2022-11-12 11:34 次阅读

编 者 按

在之前写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次:

`timescale 1ns/1ps


module demo (
input      [1:0]    a,
output     [5:0]    b
);




assign b = {a,{a,a}};


endmodule
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Verilog
    +关注

    关注

    28

    文章

    1327

    浏览量

    109309
  • HDL
    HDL
    +关注

    关注

    8

    文章

    323

    浏览量

    47104

原文标题:SpinalHDL中不可不知的位拼接符

文章出处:【微信号:Spinal FPGA,微信公众号:Spinal FPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    买笔记本电脑不可不知道的10个热点问题

    买笔记本电脑不可不知道的10个热点问题
    发表于 08-10 10:49

    不可不知的嵌入式工程师经验(总结篇)

    不可不知的嵌入式工程师经验(总结篇)
    发表于 08-20 10:52

    不可不知的ARM技术学习诀窍

    不可不知的ARM技术学习诀窍
    发表于 08-20 23:52

    写好LabVIEW程序不可不知的利器——汇总篇

    1、写好LabVIEW程序不可不知的利器(一):模块化功能 VI2、写好LabVIEW程序不可不知的利器(二):State Machine3、写好LabVIEW程序不可不知的利器(三):进阶应用4、写好LabVIEW程序
    发表于 11-20 15:38

    看下在SpinalHDL中常见的拼接的使用

    在之前写Verilog时,拼接是一个很常见的东西,今天来看下在SpinalHDL中常见的拼接
    发表于 11-18 15:21

    七则不可不知的电池常识

    七则不可不知的电池常识         一、电池有保质期吗?  电池是通过其内部的正负极发生化学反应,
    发表于 11-14 10:40 648次阅读

    充电电池不可不知的基本常识

    充电电池不可不知的基本常识        一.电压:两极间的电位差称为电池的电压。主要有标称(额定)电压、开路电压、充电终止(截止)
    发表于 11-14 10:45 3488次阅读

    手机使用常识及手机电池不可不知的小常识

    手机使用常识及手机电池不可不知的小常识 手机使用常识 1、使用手机时,不要接触天线,否则会影响
    发表于 11-23 15:20 1831次阅读

    笔记本电脑电池不可不知的常识

    笔记本电脑电池不可不知的常识 电池的分类和区别   一般我们使用的电池有3种,1.镍铬电池、2.镍氢电池、3.锂电池;它们一般表示为:
    发表于 01-23 10:06 607次阅读

    不可不知的投影幕选购常识

    不可不知的投影幕选购常识 前言:   当今,无论是商务活动,还是居家生活,人们对于大屏幕显示画面、高亮度、高分辨率以及高
    发表于 02-10 11:10 673次阅读

    显示卡不可不知15大参数

    显示卡不可不知15大参数 1、 帧率(Frames
    发表于 01-12 09:49 829次阅读

    微软Azure大放异彩 Azure术语不可不知

    微软Azure大数据服务魅力凸显 Azure术语不可不知 大数据正上增工,不仅是规模,知名度也在上升。
    发表于 11-10 11:02 997次阅读

    PCB板工艺不可不知的五大小原则

    本文主要详细阐述了PCB板工艺不可不知的小原则。
    的头像 发表于 10-05 08:48 5774次阅读

    电气人不可不知的45个电机知识盘点

    本文主要汇总了电气人不可不知的45个电机知识,具体的跟随小编一起来了解一下。
    的头像 发表于 10-05 09:06 4503次阅读

    MOSFET基础电路不可不知

    MOSFET电路不可不知MOSFET已成为最常用的三端器件,给电子电路界带来了一场革命。没有MOSFET,现在集成电路的设计似乎是不可能的。它们非常小,制造过程非常简单。由于MOSFET的特性,模拟
    的头像 发表于 05-10 16:35 868次阅读
    MOSFET基础电路<b class='flag-5'>不可不知</b>