我是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]
会感谢你的建议。
这是串联,而不是求和。
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
必须是变量而不是电线。