Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2009, 18:53   #1
zzz678
 
Регистрация: 12.11.2009
Сообщений: 4
По умолчанию Помогите с цифровым сигналом, пожалуйста.

Не могу понять как разбить последовательность цифрового сигнала на каналы.
Пример: (последовательность) 0111/0101//0010/1010//1000/1111//
нужно получить разбитие на два канала, в каждом канале по 4ре бита.

1) 0111 0010 1000
2) 0101 1010 1111

то есть: отсчитало N бит - отправило по каналу; следующие N бит отправит по другому каналу и так до M канала.

Просьба не разъяснять кодом, а словами. Хотелось бы понять "смысловой алгоритм". Заранее спасибо, надеюсь получить хороший ответ.

Вообщем, я хочу сделать это аппаратно-програмно. Это всё, не для того, чтобы я видел как оно происходит, а для того, чтобы система работала быстрее.

Последний раз редактировалось zzz678; 12.11.2009 в 19:07. Причина: пояснение
zzz678 вне форума Ответить с цитированием
Старый 12.11.2009, 19:05   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
0111/0101//0010/1010//1000/1111//
сделайте окно на 4 символа и двигайте вперед (например через copy), четные в один канал, нечетные во второй
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 12.11.2009, 21:13   #3
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

temp1 db 0
temp2 db 0
source db 23

mov al,[source]
mov [temp1],al
mov [temp2],al
and [temp1],11110000b
and [temp2],00001111b ; биты с 4-го по 7-й.
shr [temp1],4 ;На самом деле в TEMP1 - биты с 0-го по 3-й.

Код на ассемблере х86 но думаю логика понятна. AND-ом выделяем нужную часть(обозначена единицами в маске - 11110000b - верхние 4 бита), и дальше двигаем ее вниз. Т.е. скажем нужно вам взять верхние 3 бита - просто ставьте маску 11100000b и двигайте в нужном направлении(в данном случае вправо) на количество нулей в маске.

На С++ :

unsigned char temp=23;
temp=temp & 11100000b;
temp=temp>5;
"Тяжело в учении, легко в бою" - А.В. Суворов
Ivan_32 вне форума Ответить с цитированием
Старый 12.11.2009, 21:18   #4
zzz678
 
Регистрация: 12.11.2009
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Ivan_32 Посмотреть сообщение
temp1 db 0
temp2 db 0
source db 23....
Спасибо, мне по ассемблеру понятней.
zzz678 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помощь с BASS, сигналом и выводом графики Манжосов Денис :) Мультимедиа в Delphi 7 12.01.2011 15:25
Помогите создать програму для роботы с файлами, пожалуйста помогите нужно очень срочно Сергей Человек Фриланс 3 06.07.2009 19:30
Помогите Помогите Пожалуйста Решить Одну Задачку в Паскале!!! VisTBacK Помощь студентам 6 19.09.2008 13:44