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

Получить число из массива

1 hour ago, Flip-fl0p said:

Представьте, что Вы заказчик, который нанимает человека проект делать, час работы которого стоит  много денег.  Так вот опишите Вашу задачу таким образом, будто Вы выдаете ТЗ для наемного работника. Ибо в Ваших же интересах описать задачу таким образом, чтобы никаких вопросов касаемо поставленной задачи у работника не возникало, поскольку кривое ТЗ=потеря $. Сейчас мне совсем непонятно что Вы делаете, и что хотите сделать. Уважайте других участников форума, ибо их советы бесплатные и они тратят своё время на помощь, не требуя ничего взамен. И не забывайте, ВТО форум - это отличная база знаний, вклад в которую вносит каждый участник форума 

какой именно момент вам не понятен? даже я понял пока объяснял. как работает UART знаете?

Изменено пользователем jenya7

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


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

3 минуты назад, jenya7 сказал:

какой именно момент вам не понятен? даже я понял пока объяснял.

Все о  начала и до конца. Почему вы так "криво" разбиваете Ваше число изначально. Где оно потом применяется. Да и код  перед выкладыванием не  ешало бы формулировать и описать....

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


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

Не понятен такой момент: вы получили байт по UART, зачем его переделывать на VHDL? Вы получили число, в симуляторе смотрите значение в хексе или десятке, суть задачи не ясна.

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


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

19 минут назад, jenya7 сказал:

даже я понял пока объяснял

Наверное, речь всё-таки идёт об этом:

 

https://www.google.ru/search?&q="bcd+to+binary"+vhdl

 

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

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


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

1 hour ago, Nieve said:

Не понятен такой момент: вы получили байт по UART, зачем его переделывать на VHDL? Вы получили число, в симуляторе смотрите значение в хексе или десятке, суть задачи не ясна.

ну если его прислали в аски, строкой "1234"

я его принял

if (RX_DATA > X"2F" and RX_DATA < X"3A") then  --0 to 9
    rx_uart_buf (rx_idx) <= RX_DATA - X"30"; --convert to number

теперь у меня содержимое буфера

rx_uart_buf(0) -1

rx_uart_buf(1) -2

rx_uart_buf(2) -3

rx_uart_buf(3) -4

вопрос - конкатенация в VHDL даст результатирующее число - 1234?

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


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

4 минуты назад, jenya7 сказал:

ну если его прислали в аски, строкой "1234"

я его принял

if (RX_DATA > X"2F" and RX_DATA < X"3A") then  --0 to 9
    rx_uart_buf (rx_idx) <= RX_DATA - X"30"; --convert to number

теперь у меня содержимое буфера

rx_uart_buf(0) -1

rx_uart_buf(1) -2

rx_uart_buf(2) -3

rx_uart_buf(3) -4

вопрос - конкатенация в VHDL даст результатирующее число - 1234?

 Конкатенация даст лишь объединение битов. Вы бы хоть умную книжку по VHDL прочитали, странно слышать от Вас такой вопрос про конкатенацию.

Чтобы правильно восстановить число надо правильно его разбить. т.е представить Ваше несчастное число 1234 в виде 4 байт изначально. И побайтно его пересылать. Сначала байты с 7 по 0, затем с 15 по 8, затем с 23 по 16, затем с 31 по 24. 

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


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

6 минут назад, jenya7 сказал:

конкатенация в VHDL даст результатирующее число - 1234?

Вы это число вот сейчас написали в десятичной системе, или в двоично-десятичной?

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


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

1 hour ago, Flip-fl0p said:

 Конкатенация даст лишь объединение битов. Вы бы хоть умную книжку по VHDL прочитали, странно слышать от Вас такой вопрос про конкатенацию.

Чтобы правильно восстановить число надо правильно его разбить. т.е представить Ваше несчастное число 1234 в виде 4 байт изначально. И побайтно его пересылать. Сначала байты с 7 по 0, затем с 15 по 8, затем с 23 по 16, затем с 31 по 24.  

понял. я честно попытался. просто пользователю удобней наклацать в терминале, скажем "write 1234 5678". а не сдвигать и слать аргументы побайтно.

Изменено пользователем jenya7

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


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

6 hours ago, Flip-fl0p said:

Хреновое ТЗ - результат - ХЗ. Понятнее не стало...

Ответ супер. Повеселил. спасибо.

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


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

7 часов назад, Maverick_ сказал:

Ответ супер. Повеселил. спасибо.

В каждой шутке есть доля правды.:biggrin:

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


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

11 hours ago, jenya7 said:

понял. я честно попытался. просто пользователю удобней наклацать в терминале, скажем "write 1234 5678". а не сдвигать и слать аргументы побайтно.

Я бы рекомендовал автору перед созданием темы не спешить, а посидеть и подумать на задачей с карандашом и блокнотом, и симулятором.

+ хорошее и грамотное описание задачи/вопроса уже несет в себе часть ответа

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


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

On 8/28/2019 at 9:19 PM, jenya7 said:

ну если его прислали в аски, строкой "1234"

https://stackoverflow.com/questions/10979491/ascii-to-integer-conversion-in-verilog

и будут вам дальше числа как вы и хотите :wink2:

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


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

On 8/30/2019 at 9:22 AM, Mad_kvmg said:

https://stackoverflow.com/questions/10979491/ascii-to-integer-conversion-in-verilog

и будут вам дальше числа как вы и хотите :wink2:

спасибо. но у меня не совсем классический случай

num = atoi(str);

я уже получил байты и перевел их в числовое значение. теперь мне их надо перевести в std_logic_vector.

типа этого

reg_data <= rx_uart_buf(0)(3 downto 0) & rx_uart_buf(1)(3 downto 0) & rx_uart_buf(2)(3 downto 0) & rx_uart_buf(3)(3 downto 0);

но только генерик метод.

Изменено пользователем jenya7

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


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

On 9/1/2019 at 9:27 AM, jenya7 said:

типа этого 

reg_data <= rx_uart_buf(0)(3 downto 0) & rx_uart_buf(1)(3 downto 0) & rx_uart_buf(2)(3 downto 0) & rx_uart_buf(3)(3 downto 0);

'типа этого' будет как то работать для hex байтов (в виде '12ff'), но не в децимал (как у вас)

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


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

1 hour ago, xvr said:

'типа этого' будет как то работать для hex байтов (в виде '12ff'), но не в децимал (как у вас)

мда. а слона то я и не заметил. печалька.

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


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

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

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

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

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

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

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

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

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

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