总结/分配verilog中的位

问题描述 投票:0回答:1

我是verilog编码的初学者,并且正在寻找一种智能的方法来整理位。

我有60个音符(5个八度音符,12个音符):

 output [4:0] c_notes,        
 output [4:0] cs_notes,
 output [4:0] d_notes,
 output [4:0] ds_notes,
 output [4:0] e_notes,
 output [4:0] f_notes,
 output [4:0] fs_notes,
 output [4:0] g_notes,
 output [4:0] gs_notes,
 output [4:0] a_notes,
 output [4:0] as_notes,
 output [4:0] b_notes

哪个应该只分配给一辆公共汽车notes[59:0]

但顺序正确:c [4],cs [4],d [4],ds [4],e [4] ...... a [0],如[0],b [0]

会感谢你的建议。

verilog bit
1个回答
2
投票

这是串联,而不是求和。

notes = {c[4], cs[4], d[4], ds[4], e[4] ... a[0],as[0],b[0]};

请参见IEEE SystemVerilog 1800-2017 LRM中的第11.4.12节“连接运算符”。

您可以使用for循环稍微简化一下。

logic [59:0] notes;
for (int ii=0;ii<5;ii++)
     notes[ii+:5] = {c[ii], cs[ii], d[ii], ds[ii], e[ii]};

要做到这一点,notes必须是变量而不是电线。

© www.soinside.com 2019 - 2024. All rights reserved.