Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.149.255.162] |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Цитата Если это реальная задача, то вместо предложенного здесь бесконечного цикла заводится таймер и в его обработчике выполняются необходимые действия. Та это мелочи. У меня есть предположение, что часть блоков, моделируемых на уровне принципиальной схемы "в лоб" на си( ), можно заменить несколькими строчками относительно понятного кода. |
Сообщ.
#17
,
|
|
|
Такой подход с имитацией электрических схем используется в ПЛИС. В микроконтроллерах имитируют алгоритм работы.
Добавлено Цитата Prince @ именно так. У меня есть предположение, что часть блоков, моделируемых на уровне принципиальной схемы "в лоб" на си( ), можно заменить несколькими строчками относительно понятного кода. |
Сообщ.
#18
,
|
|
|
Можно сказать и так. Объясняю, что для чего и почему: в железе имеется "цифровой" радио передатчик способный передавать цифровой код поданный ему на вход (на схеме блок inf), логика работы преобразования жёстко задана (описал по пунктам в предыдущем сообщении) микросхемами цифровой логики (TTL), дак-вот задача заключается в том чтобы заменить кучу микросхем с жёсткой логикой на один запрограммированный микро контролер. Данную процедуру можно назвать и шифрованием но посуте она является переориентацией кода для блока формирования квадратурных компонент I(t), Q(t) и получения в дальнейшем определённого типа модуляции "MSK". Если на пальцах: чтобы получит отличные(разные) частоты несущей во время подачи 0 и 1 необходимо выполнить данные преобразования входящего кода. вот
Цитата Prince @ Импульсов чего? А 200 Гц - это что за импульсы? Я правильно разделил четные и нечетные единичные импульсы(чего-то)? 1. Входящего кода (Поступающего с блока inf) 2. 200 Гц - это импульсы задающие частоту (скорость) работы схемы. 3. Единичные импульсы выделены не верно, следовательно и во 2м примере тоже не верно, вот должно быть: 1001000001100010101011110110001011 // передаваемый код 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 // не чётные позиции 0 1000000000100010101010100010001010 // не чётные единицы (результат работы первого блока схемы (а)) 0110000000011101010100000001110100 // выделение 0 после нечётной единицы (b) |
Сообщ.
#19
,
|
|
|
Что на диаграмме есть что?
Цитата 200 Гц - это импульсы задающие частоту (скорость) работы схемы. ну как бы понятно, что это некий опорный генератор. Но какую функцию конкретно он выполняет? Что это такое - частота работы схемы? Вот у вас есть последовательность данных. С частотй 200 Гц происходит выборка очередного бита данных и некое кодирование? На вход кодера поступают биты, скорость 200 бод, правильно? И с такой же скоростью появляется на выходе(выходах) какая-то последовательность. Правильно? Цитата 1001000001100010101011110110001011 // передаваемый код 1000000000100010101010100010001010 // не чётные единицы (результат работы первого блока схемы (а)) 0110000000011101010100000001110100 // выделение 0 после нечётной единицы (b) На асме это выглядело бы примерно так: ; подпрограмма кодирования бита ; допустим, на PB0 поступает входная последовательность. ; y - выход кодера ; cnt - счётчик битов tr - триггер выделения 0 после нечётной единицы ; y,cnt,tr - 8-и битные регистры ; y,tr хранят 1 бит полезной информации, их можно хранить и в одном регистре, цельных 2 регистра для наглядности... ;.def y = R21 ;.def cnt = R22 ;.def tr = R23 coder: inc cnt ; sbis PINB,PINB0 ; rjmp log0 log1: clr y clr tr sbrc cnt,0 ser tr rjmp end_coder log0: clr y sbrc tr,0 ser y end_coder: ret |
Сообщ.
#20
,
|
|
|
Да не правда это ! Приведённая схема не соответствует 155TM2(SN7474). Даже мнемоническое изображение не соответствует TM2. Твои результаты это подтверждают. Добавлено Цитата marks90 @ Думал так проще будет, просто описывать логику работы каждого элемента по действиям. не тут то было.. Надо понимать, что схема содержит обратную связь (положительную) и за один проход алгоритма ты можешь и не рассчитать её состояние правильно. |
Сообщ.
#21
,
|
|
|
Цитата Prince @ Что на диаграмме есть что? В нижней части (прямоугольные импульсы) тот самый передаваемый сигнал. В верхней части (синусоида) несущая, частота которой меняется согласно уровню нижних импульсов. Цитата Prince @ ну как бы понятно, что это некий опорный генератор. Но какую функцию конкретно он выполняет? Что это такое - частота работы схемы? Вот у вас есть последовательность данных. С частотой 200 Гц происходит выборка очередного бита данных и некое кодирование? На вход кодера поступают биты, скорость 200 бод, правильно? И с такой же скоростью появляется на выходе(выходах) какая-то последовательность. Правильно? именно так. к сожалению с ассемблером я совершенно не знаком и в приведённом вами примере мне не разобраться, попробую рассмотреть каждую часть схемы (a,b,c..) как чёрный ящик и получать готовую последовательность на выходе (как в вашем примере) только на C. Цитата ЫукпШ @ Надо понимать, что схема содержит обратную связь (положительную) и за один проход алгоритма ты можешь и не рассчитать её состояние правильно. теперь я понял, с обратной связью действительно ерунда получается, да и как уже упоминал "Pavia-> получилось последовательно, а тригер работает параллельно вернее асинхронно". Цитата ЫукпШ @ Да не правда это ! И все-таки я с вами не согласен. не отрицаю, что возможно реализация д триггера и другим способом, но простейший способ организации на жесткой логике возможен именно по этой схеме. подробние. |
Сообщ.
#22
,
|
|
|
Частотную модуляцию реализовать что ли надо?
|
Сообщ.
#23
,
|
|
|
Цитата В нижней части (прямоугольные импульсы) тот самый передаваемый сигнал. В верхней части (синусоида) несущая, частота которой меняется согласно уровню нижних импульсов. Цитата чтобы получит отличные(разные) частоты несущей во время подачи 0 и 1 необходимо выполнить данные преобразования входящего кода. На кой, для того, чтобы получить разные частоты несущей, нужны эти преобразования? Кто генерирует несущую и как управляется генератор несущей? Или 2 генератора? Или генератор будет прямоугольных импульсов, реализованный програмно, а на выходе фильтр? Ничего непонятно. Пора возвращаться к началу и спрашивать "что это будет", "как оно должно работать", о входных/выходных сигналах... |
Сообщ.
#24
,
|
|
|
Генератор (что на схеме) 200Гц необходим только для обеспечения работы логики (данной схемы, тех пунктов, что описаны выше), для последующей квадратуры есть другой генератор и вообще то что будет с сигналом дальше к этой теме не относится, задача заключается в реализации тех модулей что я описывал.
И да, модуляция будет (там даже не модуляция а манипуляция чистоты несущей, ну можно назвать и частотной модуляцией.) но это всё уже есть и организовано в железе, всё работает, нужно только научить микроконтроллер преобразовывать поступающий в него код по описанным выше пунктам (a, b, c..) и выдавать его уже преобразованный на выход (ногу мк). Что касается черного ящика: получилось организовать часть "a) Блок выделения четных и нечетных единичных импульсов." // ---------------- Блок выделения четных и нечетных единичных импульсов (как черный ящик) ------------- // if(a){ // считаем положительные уровни nomer++; } if(nomer == 4294967295){ // предотвращаем переполнение выделенной памяти для переменной nomer = 1; } if((nomer % 2) != 0){ //выбираем только четные - нечетные положительные уровни Q0 = 1; // не четное Q01 = 0; // для четной }else{ Q0 = 0; // не четное Q01 = 1; // для четной } if(a == 0){ // Если нет 1 то при любом раскладе 0 Q0 = 0; Q01 = 0; } Q0; // четные единицы Q01; // не чётные единицы // --------------------------------------------------------------------------------------// |
Сообщ.
#25
,
|
|
|
Цитата marks90 @ ... но простейший способ организации на жесткой логике возможен именно по этой схеме. В том то и дело, что в данном случае - невозможен. Чтобы на D-триггере сделать делитель частоты пополам, нужно, чтобы сигнал С воспринимался "по фронту" (как у 74LS74). А в приведённой схеме он работает "по уровню". Отсюда и проблемы. |