jcxz 233 8 марта Опубликовано 8 марта · Жалоба 44 минуты назад, repstosw сказал: Использую ваш способ. И на счёт скачков фазы тоже разобрался: ключевое слово - unwrap. Проще все данные сдвинуть на 25 влево и работать с такими данными (left-aligned). Будет проще по арифметике. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 24 8 марта Опубликовано 8 марта · Жалоба On 3/8/2024 at 12:04 PM, jcxz said: Это одинаковое в том плане, что и то и другое - неверно. Читайте классику - Преобразования из целочисленных типов со знаком: Quote Когда целое число со знаком преобразуется в целое число или тип с плавающей запятой, значение не изменяется, если оно представлено в результирующем типе. При преобразовании целого числа со знаком в целое число большего размера значение расширяется со знаком. То есть, если нужно преобразовать 7-битное число со знаком в 8-битное число со знаком, то нужно просто скопировать старший бит 7-битного числа в старший бит 8-битного числа. Младшие 7 бит исходного числа (включая знак) копируются в 8-битное число без изменений. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 233 8 марта Опубликовано 8 марта · Жалоба 1 час назад, blackfin сказал: То есть, если нужно преобразовать 7-битное число со знаком в 8-битное число со знаком, то нужно просто скопировать старший бит 7-битного числа в старший бит 8-битного числа. Младшие 7 бит исходного числа (включая знак) копируются в 8-битное число без изменений. Дальше то что? Как выглядят и как обрабатываются данные в регистрах 32-разрядного CPU - имеете представление? А в этих регистрах, если кладёте туда 7-и или 8-и битное значение (в младшие биты), то знаковый бит должен быть распространён вверх до 31-го бита включительно. Иначе получите проблемы при арифметических операциях. Что и наблюдалось у ТС. Да, компилятор перед каждой операцией с 8-битными знаковыми данными, должен сам вставлять операцию знакового расширения (SXTB) исходных операндов. Но: во-первых: это лишние команды; во-вторых - надо очень аккуратно указывать типы операндов, чтобы эта команда вставлялась. А в тех выражениях таких указаний (о приведении к типу char signed) не было. Поэтому те выражения - неверные. А самое правильное и корректное - сделать как я писал. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 24 8 марта Опубликовано 8 марта · Жалоба On 3/8/2024 at 3:10 PM, jcxz said: Как выглядят и как обрабатываются данные в регистрах 32-разрядного CPU - имеете представление? А с чего вы решили, что ТС будет конвертировать биты в 32-разрядном CPU ? Может, он ищет алгоритм для ПЛИС? В первом посте про CPU ничего не сказано, поэтому я написал так, как будет понятнее ТС'у. То есть, в его же обозначениях. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 233 8 марта Опубликовано 8 марта · Жалоба 1 час назад, blackfin сказал: А с чего вы решили, что ТС будет конвертировать биты в 32-разрядном CPU ? Я ничего не решал. Я специально указал в первом посте: 23 часа назад, jcxz сказал: Для 32-разрядного ARM: А после, уже ТС косвенно подтвердил, что у него как раз такой случай. 1 час назад, blackfin сказал: Может, он ищет алгоритм для ПЛИС? Советую почитать другие его посты. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pyroman 2 9 марта Опубликовано 9 марта (изменено) · Жалоба Для signed 7-bit integer (x ^ 0x40) - 0x40 Изменено 9 марта пользователем pyroman Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 10 марта Опубликовано 10 марта · Жалоба On 3/8/2024 at 10:17 PM, blackfin said: А с чего вы решили, что ТС будет конвертировать биты в 32-разрядном CPU ? Может, он ищет алгоритм для ПЛИС? В первом посте про CPU ничего не сказано, поэтому я написал так, как будет понятнее ТС'у. То есть, в его же обозначениях. Правы и blackfin и jcxz. Вариант от blackfin - если требуется результат в 8-битных ячейках памяти. Вариант от jcxz - более универсальный: результат можно хранить в 8/16/24/32 битных ячейках памяти. Основная идея понятна: растиражировать знаковый бит на все старшие биты. Или сдвинуть влево, чтобы знаковый бит оказался старшим. On 3/9/2024 at 12:07 AM, jcxz said: Советую почитать другие его посты. Что касается реализации, то в настоящее время, я делаю обработку данных на ПК. И если идея с выделением битового потока с частотно-фазового демодулятора принесёт свои плоды (а именно в сочетании с коррекцией ошибок на мягких решениях), то есть смысл рассмотреть вопрос переноса алгоритма на ARM, ПЛИС, DSP,.. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
girts 9 10 марта Опубликовано 10 марта · Жалоба Ну и наверное заход в википедию чтоб просто освежить забытое тоже может быть отнюдь не лишним - https://en.wikipedia.org/wiki/Signed_number_representations Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться