Перейти к содержанию
    

Verilog. Инициализация двумерного массива

Добрый день.

Дано:

1. ВХДЛ модуль, внутри которого есть дженерик параметр Х (C_ARD_ADDR_RANGE_ARRAY) типа "двумерный массив" (описывается в отдельном пэкэдже, подключается как библиотека)

2. ВЕРИЛОГ модуль внутри которого подключается ВХДЛ модуль.

 

Задача: передать параметр Х (C_ARD_ADDR_RANGE_ARRAY) типа "двумерный массив" из верилог модуля в вхдл модуль. В идеале задать значение через константу в верилог модуле и при инициализации вхдл модуля присваивать параметру значение этой константы. Но на безрыбье и хотя бы в процессе инициализации модуля задавать это значение...

 

ЗЫ

Синтезатор вивадовский. Пробовал разный синтаксис, на все ругается. В частности запись

localparam [0:63] C_ARD_ADDR_RANGE_ARRAY [0:7]={
64'h0000000000000200,64'h00000000000003FF,
64'h0000000000000400,64'h00000000000005FF,
64'h0000000000000600,64'h00000000000006FF,
64'h0000000000000700,64'h00000000000007FF}

результат - "parameter with unpaked dimension is only allowed in SV"

 

не совсем понимаю связь упакованных/распакованных массивов с данной ситуацией. как, впрочем, и не совсем понимаю логику и особенности применения таких  массивов :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

28 minutes ago, GAYVER said:

Задача: передать параметр Х (C_ARD_ADDR_RANGE_ARRAY) типа "двумерный массив" из верилог модуля в вхдл модуль

ЕМНП это не возможно, т.к. не детерминировано.  Переносятся только простые типы. Делайте VHDL обертку с назначением параметра внутри и используйте  как готовый модуль.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 минут назад, des00 сказал:

ЕМНП это не возможно, т.к. не детерминировано.  Переносятся только простые типы. Делайте VHDL обертку с назначением параметра внутри и используйте  как готовый модуль.

оставлял это как последнее средство... очень не хотелось переписывать все :(

 

апд

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

53 minutes ago, GAYVER said:

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

там дело в том, что в SV нет понятия вектор, который был в верилоге. Вместо него упакованный массив, который кладется в память(колбасу бит и т.д.) одним куском, без пауз, в так называемом "упакованном" формате массива. Не упакованный массив в SV это обычный массив V, но данные могут в нем лежать с дырками. Например 8ми битная память на 32х битной машине. 

проще всего воспринимать упакованный массив как вектор, с разной адресацией разной группы бит, а неупакованный как память. Тоже самое относится к упакованным и не упакованным структурам. Упакованная структура - воспринимать как вектор, с разными символьными именами битов, соответствующими их положениям в объявлении. А не упакованная как "память" специального вида, с доступом к полям.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 минут назад, des00 сказал:

там дело в том, что в SV нет понятия вектор, который был в верилоге. Вместо него упакованный массив, который кладется в память(колбасу бит и т.д.) одним куском, без пауз, в так называемом "упакованном" формате массива. Не упакованный массив в SV это обычный массив V, но данные могут в нем лежать с дырками. Например 8ми битная память на 32х битной машине. 

проще всего воспринимать упакованный массив как вектор, с разной адресацией разной группы бит, а неупакованный как память. Тоже самое относится к упакованным и не упакованным структурам. Упакованная структура - воспринимать как вектор, с разными символьными именами битов, соответствующими их положениям в объявлении. А не упакованный как "память" специального вида, с доступом к полям.

благодарю

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 hours ago, GAYVER said:

не совсем понимаю связь упакованных/распакованных массивов с данной ситуацией. как, впрочем, и не совсем понимаю логику и особенности применения таких  массивов :)

а попробовать одномерный массив int-ов, который затем собрать в некой VHDL-ной обертке в двумерный 64х битный?

в ncsim-е такое работало (массив интов), но давно

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 часов назад, yes сказал:

а попробовать одномерный массив int-ов, который затем собрать в некой VHDL-ной обертке в двумерный 64х битный?

в ncsim-е такое работало (массив интов), но давно

попробую как вариант. спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...