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

Работа с многомерными массивами.

Доброго времени суток.

Помогите пожалуйста.

Столкнулся со следующей проблемой в  Verilog.

В качестве базового элемента, допустим, используется массив reg signed [7:0] Data_x [8:0].

Первый вопрос. Правильно ли я понимаю, что каждый раз при при присвоение (i=0; i<9; i=i+1)   Data_1<=Data_0(i), необходимо делать цикл по 9 элементам и иначе нельзя?

Второй вопрос. Если я захочу передать этот сигнал из компонента на верхний уровень, который написан на VHDL, то мне его надо преобразовать в [71:0] Data_x и передать как std_logic_vectoк(71 downto 0) и в VHDL опять собрать в удобный для работы array?

Или можно это сделать как-то проще?

Всем спасибо.

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


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

6 hours ago, Tpeck said:

Доброго времени суток.

Помогите пожалуйста.

Столкнулся со следующей проблемой в  Verilog.

В качестве базового элемента, допустим, используется массив reg signed [7:0] Data_x [8:0].

Первый вопрос. Правильно ли я понимаю, что каждый раз при при присвоение (i=0; i<9; i=i+1)   Data_1<=Data_0(i), необходимо делать цикл по 9 элементам и иначе нельзя?

Второй вопрос. Если я захочу передать этот сигнал из компонента на верхний уровень, который написан на VHDL, то мне его надо преобразовать в [71:0] Data_x и передать как std_logic_vectoк(71 downto 0) и в VHDL опять собрать в удобный для работы array?

Или можно это сделать как-то проще?

Всем спасибо.

Ничего не понял. Что присваивается ? Куда присваивается ? Зачем присваивается ? 

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


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

3 hours ago, Tpeck said:

Доброго времени суток.

Помогите пожалуйста.

Столкнулся со следующей проблемой в  Verilog.

В качестве базового элемента, допустим, используется массив reg signed [7:0] Data_x [8:0].

Первый вопрос. Правильно ли я понимаю, что каждый раз при при присвоение (i=0; i<9; i=i+1)   Data_1<=Data_0(i), необходимо делать цикл по 9 элементам и иначе нельзя?

Второй вопрос. Если я захочу передать этот сигнал из компонента на верхний уровень, который написан на VHDL, то мне его надо преобразовать в [71:0] Data_x и передать как std_logic_vectoк(71 downto 0) и в VHDL опять собрать в удобный для работы array?

Или можно это сделать как-то проще?

Всем спасибо.

Если в вашей лабораторной работе или в другом ТЗ не написано чёрным по белому "используйте неупакованный массив", то кроме как для памяти нигде и никогда не применяйте их. Создайте двухмерный упакованный массив и будет счастье.

Для присвоения элемента массива, другому достаточно написать Data_1[0] <= Data_2[1], дальше векторы присвоят я сами (те которые [7:0]).

Если будет упакованный массив, то для VHDL достаточно использовать такой же массив с теми же разрядностями (отсюда же и минус неупакованного массива)

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


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

7 hours ago, Nick_K said:

Если в вашей лабораторной работе или в другом ТЗ не написано чёрным по белому "используйте неупакованный массив", то кроме как для памяти нигде и никогда не применяйте их. Создайте двухмерный упакованный массив и будет счастье.

Совет как выстрелить себе в ногу, оригинально, но многое спорно. 

10 hours ago, Tpeck said:

Первый вопрос. Правильно ли я понимаю, что каждый раз при при присвоение (i=0; i<9; i=i+1)   Data_1<=Data_0(i), необходимо делать цикл по 9 элементам и иначе нельзя? 

Можно, каким образом и при каких условиях, написано в стандарте, в разделе описания работы с массивами и их присваиваниями. В старом ПО, были проблемы в некоторых, особых случаях, но сейчас вроде всё хорошо.

Quote

Второй вопрос. Если я захочу передать этот сигнал из компонента на верхний уровень, который написан на VHDL, то мне его надо преобразовать в [71:0] Data_x и передать как std_logic_vectoк(71 downto 0) и в VHDL опять собрать в удобный для работы array

Обратитесь к документации на ваш софт, раздел совместимости языков. Там должна быть табличка переносимости сигналов между языками. Насколько помню, в симуляторах проблемы нет, в софте от вендоров ПО, надо уточнить, но ЕМНИП проблем тоже нет.  

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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