суммирование / назначение битов в verilog - PullRequest
0 голосов
/ 26 февраля 2019

Я новичок в кодировании 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], as [0], b [0]

Буду благодарен за предложения.

1 Ответ

0 голосов
/ 26 февраля 2019

Это конкатенация, а не суммирование.

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

См. Раздел 11.4.12 Операторы объединения в IEEE SystemVerilog 1800-2017 LRM.

Вы можете немного упростить это, используя цикл 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 должна быть переменной, а не проводом.

...