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

Знающий
   
Группа: Свой
Сообщений: 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 - сигнал... Народ! Ткните носом, какой инструментарий взять, примеры посмотреть..... ,чтобы потом полученный знаковый код еще и откалибровать... Дома сооружу пробный бенч для прогона вариантов, чтобы закрепить в голове новые знания.... Спасибо!
|
|
|
|
|
 |
Ответов
|
Jul 26 2017, 17:15
|
Частый гость
 
Группа: Участник
Сообщений: 135
Регистрация: 19-10-13
Пользователь №: 78 795

|
Цитата(Golikov A. @ Jul 26 2017, 19:12)  Знаковая арифметика при сложении 8 битных чисел не предполагает получение 9 битного числа. 9 битное число можно получить только после принудительного и правильного расширения изначальных 8 битных чисел до 9 битных. Понял, что вы имели в виду. Но, имхо, это не совсем так. При знаковом сложении положительных чисел этот бит как раз адекватно показывает переполнение. На счет остальных случаев точно уже не помню, но, вроде, как-то тоже его можно использовать для определения того же самого переполнения. Это я и имел в виду под Цитата(Tausinov) Разница лишь в трактовке этого самого результата и отлавливании переполнений. P.S. Пока домой ехал понял, что бред написал. Все, что написано выше верно для знакового разряда, а не для "нового".
Сообщение отредактировал Tausinov - Jul 26 2017, 20:54
|
|
|
|
|
Jul 26 2017, 17:37
|
Гуру
     
Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804

|
Цитата(Tausinov @ Jul 26 2017, 20:15)  Это я и имел в виду под А зачем вам ловить переполнения. Расширяйте разрядную сетку. module sum_signed_unsigned ( input add, input [3:0] a, b, // unsigned input [3:0] aa, bb, // signed output [4:0] s, // unsigned output [4:0] ss // signed ); assign s = add ? {1'b0, a} + {1'b0, b} : {1'b0, a} - {1'b0, b}; assign ss = add ? {aa[3], aa} + {bb[3], bb} : {aa[3], aa} - {bb[3], bb}; endmodule
|
|
|
|
Сообщений в этой теме
Мур Когда появляется знак, я использую бибиотеки... Jul 26 2017, 14:59 Tausinov Цитата(Мур @ Jul 26 2017, 17:59) Столкнул... Jul 26 2017, 15:20 Golikov A. Еще разница в том как расширять число.
когда из Н ... Jul 26 2017, 15:24 Tausinov Цитата(Golikov A. @ Jul 26 2017, 18:24) Е... Jul 26 2017, 15:31  sazh Цитата(Tausinov @ Jul 26 2017, 18:31) Воз... Jul 26 2017, 15:50   Tausinov Цитата(sazh @ Jul 26 2017, 18:50) Железо ... Jul 26 2017, 15:56    sazh Цитата(Tausinov @ Jul 26 2017, 18:56) Все... Jul 26 2017, 16:06 ViKo Цитата(Мур @ Jul 26 2017, 17:59) Столкнул... Jul 26 2017, 17:30 Мур Цитата(ViKo @ Jul 26 2017, 20:30) И я сто... Jul 26 2017, 17:49 GriXa По поводу библиотек, как уже написал Tausinov,
нел... Jul 26 2017, 19:53 Tausinov Цитата(GriXa @ Jul 26 2017, 22:53) шпарга... Jul 26 2017, 20:57  Flip-fl0p Цитата(Tausinov @ Jul 27 2017, 00:57) О, ... Jul 27 2017, 05:10
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|