Jump to content

    
Sign in to follow this  
Tpeck

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

Recommended Posts

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

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

Столкнулся со следующей проблемой в  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?

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

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

Share this post


Link to post
Share on other sites
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?

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

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

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

Share this post


Link to post
Share on other sites
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 достаточно использовать такой же массив с теми же разрядностями (отсюда же и минус неупакованного массива)

Share this post


Link to post
Share on other sites
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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this