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

 
 
> проблема со знаковыми числами, помогите плиз срочно нужно
Виталий_Ж
сообщение Mar 12 2009, 12:33
Сообщение #1


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

Группа: Участник
Сообщений: 142
Регистрация: 3-07-08
Пользователь №: 38 716



проектирую цифровой фильтр в ISE от xilinx. пробовал в схематике и на vhdl. проблема общего плана: допустим, первый коэффициент фильтра равен -20(возьмем ких-фильтр), допустим выход фильтра 10-разрядный. В симуляторе я подаю на вход единичный импульс, по идее на выходе я должен получить импульсную характеристику, но первый отсчет выходного сигнала мне выдает не -20, что в двоичном знаковом представлении при числе разрядов = 10 должно быть равно 1000010100(старший разряд - знак), а 1111101100, что соотвествует 1024-20. то есть полная лажа какая то , на выходе в итоге я получаю громадное число, уже при единичном сигнале...
Может сталкивался кто с подобной проблемой?
заранее благодарен за участие
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Ionistor
сообщение Apr 6 2009, 09:25
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 62
Регистрация: 22-10-07
Пользователь №: 31 601



Двоичная арифметика выполняется в дополнительном коде, что связано с некоторыми особенностями АЛУ.
Вообще отрицательные числа можно представить в:
- прямом коде: пишется то же число, только в старший (знаковый) разряд записывается "1", что соответствует отрицательному числу. -(0000010100) = 1000010100(пр.код) - это наиболее естественная с точки зрения арифметики форма представления отрицательных чисел;
- обратном коде: все разряды числа инвертируются, в знаковый разряд пишется "1". -(0000010100) = 1111101011(обр.код);
- дополнительном коде: к обратному коду отрицательного числа прибавляется единица. -(0000010100) = 1111101100(доп.код);

Отрицательное число, представленное в дополнительном коде, в прямой код можно преобразовать через обратный код:
- из числа в дополнительном коде вычесть "1" (или, если нужно выполнить преобразование аппаратно в дополнительном коде, а не просто "в уме для себя" то прибавить 1111111111 - доп.код минус единицы);
- полученное число в обратном коде проинвертировать поразрядно, не трогая старший. знаковый разряд - получите отрицательное число в прямом коде.
P.S.: понимаю, что автор темы, заглохшей месяц назад, вряд ли нуждается в ответе, но ведь кто-то может и через поиск наткнуться на эту страничку.
Go to the top of the page
 
+Quote Post



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

 


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


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