編 者 按
在之前寫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文章
1351瀏覽量
110392 -
HDL
+關注
關注
8文章
328瀏覽量
47468
原文標題:SpinalHDL中不可不知的位拼接符
文章出處:【微信號:Spinal FPGA,微信公眾號:Spinal FPGA】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
寫好LabVIEW程序不可不知的利器——匯總篇
1、寫好LabVIEW程序不可不知的利器(一):模塊化功能 VI2、寫好LabVIEW程序不可不知的利器(二):State Machine3、寫好LabVIEW程序不可不知的利器(三):進階應用4、寫好LabVIEW程序
發表于 11-20 15:38
電腦木馬識別的三個小命令(不可不知)
電腦木馬識別的三個小命令(不可不知)
一些基本的命令往往可以在保護網絡安全上起到很大的作用,下面幾條命令的作用就非常突出。
發表于 02-23 14:17
?1206次閱讀
微軟Azure大放異彩 Azure術語不可不知
微軟Azure大數據服務魅力凸顯 Azure術語不可不知 大數據正上增工,不僅是規模,知名度也在上升。
發表于 11-10 11:02
?1151次閱讀
MOSFET基礎電路不可不知
MOSFET電路不可不知MOSFET已成為最常用的三端器件,給電子電路界帶來了一場革命。沒有MOSFET,現在集成電路的設計似乎是不可能的。它們非常小,制造過程非常簡單。由于MOSFET的特性,模擬
![MOSFET基礎電路<b class='flag-5'>不可不知</b>](https://file.elecfans.com/web2/M00/11/AF/pYYBAGEjX2CAcHQBAAAbjMuxM3k247.jpg)
評論