реклама на сайте
подробности

 
 
> Когда появляется знак, я использую бибиотеки..., "Жизнь диктует свои законы"..Подскажите выход
Мур
сообщение Jul 26 2017, 14:59
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847



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

Суть в том, что нужен переход в знаковую математику(когда из входного сигнала вычитаю средний уровень).
Заявил в начале
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
use ieee.numeric_std.all;

В интернете посмотрел,- применяют тип signed(15 downto 0) вместо std_logic_vector(15 downto 0). Да не тут-то было!... анализатор кричит, что не понимает этот самый signed - сигнал...

Народ! Ткните носом, какой инструментарий взять, примеры посмотреть..... ,чтобы потом полученный знаковый код еще и откалибровать... tort.gif

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

Спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Golikov A.
сообщение Jul 26 2017, 15:24
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Еще разница в том как расширять число.
когда из Н битного надо сделать Н+М битное. Для беззнаковых добивают нулями, для знаковых Н-1 битом.
Ну и конечно сложение Н битных беззнаковых дает Н+1 битный результат. А сложение Н битных знаковых дает Н битный результат.
Go to the top of the page
 
+Quote Post
Tausinov
сообщение Jul 26 2017, 15:31
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 19-10-13
Пользователь №: 78 795



Цитата(Golikov A. @ Jul 26 2017, 18:24) *
Еще разница в том как расширять число.
когда из Н битного надо сделать Н+М битное. Для беззнаковых добивают нулями, для знаковых Н-1 битом.
Ну и конечно сложение Н битных беззнаковых дает Н+1 битный результат. А сложение Н битных знаковых дает Н битный результат.


Да, про расширение совсем забыл, но это уже на уровне автоматизма должно быть)
А вот на счет второго не совсем понял. Возьмем, скажем 8-битные числа. Для беззнаковых в пределе получаем 255 + 255 = 510 - 9 бит. Для знаковых в пределе получаем 127 + 127 = 254 - те же самые 9 бит - 8 на модуль и 1 на знак.
Go to the top of the page
 
+Quote Post
sazh
сообщение Jul 26 2017, 15:50
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Tausinov @ Jul 26 2017, 18:31) *
Возьмем, скажем 8-битные числа.


Железо про числа ничего не знает. Оно работает с кодами, которые в соответствии с задчей можно представить как числа со знаком или без знака.
Если Вы сами заботитесь о расширении разрядной сетки должным образом, то полученный код будет соответствовать Вашим представлением.
Можно конечно воспользоваться указаниями синтезатору. Но нужно четко при этом понимать, что должно получиться.
Go to the top of the page
 
+Quote Post
Tausinov
сообщение Jul 26 2017, 15:56
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 19-10-13
Пользователь №: 78 795



Цитата(sazh @ Jul 26 2017, 18:50) *
Железо про числа ничего не знает. Оно работает с кодами, которые в соответствии с задчей можно представить как числа со знаком или без знака.
Если Вы сами заботитесь о расширении разрядной сетки должным образом, то полученный код будет соответствовать Вашим представлением.
Можно конечно воспользоваться указаниями синтезатору. Но нужно четко при этом понимать, что должно получиться.


Все так, я просто хотел на конкретном примере показать, что не совсем понял, о чем речь. В данном случае, если 9-го бита в железе нет, то переполнение наступит в обоих случаях.
Go to the top of the page
 
+Quote Post
sazh
сообщение Jul 26 2017, 16:06
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(Tausinov @ Jul 26 2017, 18:56) *
Все так, я просто хотел на конкретном примере показать, что не совсем понял, о чем речь. В данном случае, если 9-го бита в железе нет, то переполнение наступит в обоих случаях.


Если нет расширения разрядной сетки.
Возьмем базовый примитив сумматора. Как известно у него разрядность суммы такая же как и разрядность слагаемых.
Но у него при этом есть возможность активизировать выход или переноса, или переполнения. В зависимости от того как Вы воспринимаете входные коды.
А если нет расширения разрядной сетки, значит Вы не получите правильный результат во всем диапазоне входных кодов.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 14:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01399 секунд с 7
ELECTRONIX ©2004-2016