Jump to content

    

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

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

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

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now