, он должен быть использован как полный

на некоторый код, который я поддерживаю в System Verilog, я вижу некоторые сигналы, которые определены следующим образом:

node [range_hi:range_lo]x;

и другие, которые определены так:

node y[range_hi:range_lo];

Я это понимаюx определяется как упакованный, в то время какy определяется как распакованный. Однако я понятия не имею, что это значит.

В чем разница между упакованными и неупакованными векторами в System Verilog?

Редактировать: Отвечая на ответ @ Empi, почему разработчик оборудования, пишущий на SV, должен заботиться о внутреннем представлении массива? Есть ли случаи, когда яне должен или жене может использовать упакованные сигналы?

Ответы на вопрос(5)

Решение Вопроса

http://electrosofts.com/systemverilog/arrays.htmlособенно раздел 5.2.

Упакованный массив - это механизм для разделения вектора на подполя, к которым удобно обращаться как к элементам массива. Следовательно, упакованный массив гарантированно будет представлен как непрерывный набор битов. Распакованный массив может или не может быть представлен таким образом. Упакованный массив отличается от неупакованного массива тем, что, когда упакованный массив появляется как первичный, он обрабатывается как один вектор.

что такое упакованные и распакованные массивы, давайте также посмотрим, как вы можете узнать, что это за массив, просто по их объявлению. Упакованные массивы имеют имя объекта перед объявлением размера. Например:

bit [3][7] a;

Распакованный массив имеет имя объекта после объявления размера. Например:

bit a[3];

Упакованный массив создает память, а распакованный - нет. Вы можете также получить доступ / объявить распакованный массив

reg unpacked_array [7:0] = '{0,0,0,0,0,0,0,1};

Вы можете смешивать как упакованные, так и распакованные массивы, чтобы создать многомерную память. Например:

bit [3:0][7:0]a[2:0].

Он создает массив из 4 (то есть 4 * 8) байтов с глубиной 3.

 Tom Verbeure30 мая 2017 г., 21:22
Msgstr "Упакованный массив создает память, а распакованный - нет." Что это обозначает? Существует множество инструментов синтеза FPGA, которые преобразуют распакованные массивы в какую-то память (FF или RAM).

чем упакованные.

По этой причине я вижу распакованные массивы в определениях портов модулей. Компилятор выдаст ошибку, если размеры сигнала не совпадают с портом с распакованными массивами. С упакованными массивами он обычно просто идет вперед и связывает вещи как можно лучше, не выдавая ошибки.

ания памяти, когда мы пишем [3: 0] [7: 0] A [4: 0], что означает, что в 32-битных ячейках памяти 4 фрагмента каждый из 8-битных упаковываются для формирования 32-битного. Значение справа означает, что есть 5 таких срезов.

bit[3:0] a -> упакованный массив Упакованный массив можно использовать как полный массив (a='d1) или просто часть массива (a[0]='b1)

bit a [3:0] -> распакованный массив Распакованный массив нельзя использовать какa[0]='b1, он должен быть использован как полныйa={8{'b1}}

Ваш ответ на вопрос