На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
    > Имитация логических схем. , Программная реализация логических элементов.
      Цитата
      Если это реальная задача, то вместо предложенного здесь бесконечного цикла заводится таймер и в его обработчике выполняются необходимые действия.

      Та это мелочи. У меня есть предположение, что часть блоков, моделируемых на уровне принципиальной схемы "в лоб" на си( :ph34r: ), можно заменить несколькими строчками относительно понятного кода.
      Сообщение отредактировано: Prince -
        Такой подход с имитацией электрических схем используется в ПЛИС. В микроконтроллерах имитируют алгоритм работы.

        Добавлено
        Цитата Prince @
        У меня есть предположение, что часть блоков, моделируемых на уровне принципиальной схемы "в лоб" на си( :ph34r: ), можно заменить несколькими строчками относительно понятного кода.
        именно так.
          Цитата Prince @
          Шифратор?

          Можно сказать и так.
          Объясняю, что для чего и почему:
          в железе имеется "цифровой" радио передатчик способный передавать цифровой код поданный ему на вход (на схеме блок inf), логика работы преобразования жёстко задана (описал по пунктам в предыдущем сообщении) микросхемами цифровой логики (TTL), дак-вот задача заключается в том чтобы заменить кучу микросхем с жёсткой логикой на один запрограммированный микро контролер. Данную процедуру можно назвать и шифрованием но посуте она является переориентацией кода для блока формирования квадратурных компонент I(t), Q(t) и получения в дальнейшем определённого типа модуляции "MSK".
          Если на пальцах: чтобы получит отличные(разные) частоты несущей во время подачи 0 и 1 необходимо выполнить данные преобразования входящего кода.
          вот
          Прикреплённая картинка

          Цитата Prince @
          Импульсов чего?
          А 200 Гц - это что за импульсы?
          Я правильно разделил четные и нечетные единичные импульсы(чего-то)?

          1. Входящего кода (Поступающего с блока inf)
          2. 200 Гц - это импульсы задающие частоту (скорость) работы схемы.
          3. Единичные импульсы выделены не верно, следовательно и во 2м примере тоже не верно, вот должно быть:
          ExpandedWrap disabled
            1001000001100010101011110110001011  // передаваемый код
            0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0   // не чётные позиции 0
            1000000000100010101010100010001010  // не чётные единицы (результат работы первого блока схемы (а))
            0110000000011101010100000001110100  // выделение 0 после нечётной единицы (b)
            Что на диаграмме есть что?

            Цитата
            200 Гц - это импульсы задающие частоту (скорость) работы схемы.

            ну как бы понятно, что это некий опорный генератор. Но какую функцию конкретно он выполняет? Что это такое - частота работы схемы?
            Вот у вас есть последовательность данных. С частотй 200 Гц происходит выборка очередного бита данных и некое кодирование?
            На вход кодера поступают биты, скорость 200 бод, правильно? И с такой же скоростью появляется на выходе(выходах) какая-то последовательность. Правильно?

            Цитата
            1001000001100010101011110110001011 // передаваемый код
            1000000000100010101010100010001010 // не чётные единицы (результат работы первого блока схемы (а))
            0110000000011101010100000001110100 // выделение 0 после нечётной единицы (b)

            На асме это выглядело бы примерно так:
            ExpandedWrap disabled
              ; подпрограмма кодирования бита
              ; допустим, на 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
            Сообщение отредактировано: Prince -
              Цитата marks90 @
              :huh: Схема без ошибок, вот.

              Да не правда это !
              Приведённая схема не соответствует 155TM2(SN7474).
              Даже мнемоническое изображение не соответствует TM2.
              Твои результаты это подтверждают.

              Добавлено
              Цитата marks90 @
              Думал так проще будет, просто описывать логику работы каждого элемента по действиям. не тут то было..

              Надо понимать, что схема содержит обратную связь (положительную) и за один проход
              алгоритма ты можешь и не рассчитать её состояние правильно.
              Сообщение отредактировано: ЫукпШ -
                Цитата Prince @
                Что на диаграмме есть что?

                В нижней части (прямоугольные импульсы) тот самый передаваемый сигнал.
                В верхней части (синусоида) несущая, частота которой меняется согласно уровню нижних импульсов.

                Цитата Prince @
                ну как бы понятно, что это некий опорный генератор. Но какую функцию конкретно он выполняет? Что это такое - частота работы схемы?
                Вот у вас есть последовательность данных. С частотой 200 Гц происходит выборка очередного бита данных и некое кодирование?
                На вход кодера поступают биты, скорость 200 бод, правильно? И с такой же скоростью появляется на выходе(выходах) какая-то последовательность. Правильно?

                именно так. к сожалению с ассемблером я совершенно не знаком и в приведённом вами примере мне не разобраться, попробую рассмотреть каждую часть схемы (a,b,c..) как чёрный ящик и получать готовую последовательность на выходе (как в вашем примере) только на C.

                Цитата ЫукпШ @
                Надо понимать, что схема содержит обратную связь (положительную) и за один проход
                алгоритма ты можешь и не рассчитать её состояние правильно.

                теперь я понял, с обратной связью действительно ерунда получается, да и как уже упоминал "Pavia-> получилось последовательно, а тригер работает параллельно вернее асинхронно".

                Цитата ЫукпШ @
                Да не правда это !

                И все-таки я с вами не согласен. не отрицаю, что возможно реализация д триггера и другим способом, но простейший способ организации на жесткой логике возможен именно по этой схеме. подробние.
                  Частотную модуляцию реализовать что ли надо?
                    Цитата
                    В нижней части (прямоугольные импульсы) тот самый передаваемый сигнал.
                    В верхней части (синусоида) несущая, частота которой меняется согласно уровню нижних импульсов.

                    Цитата
                    чтобы получит отличные(разные) частоты несущей во время подачи 0 и 1 необходимо выполнить данные преобразования входящего кода.

                    На кой, для того, чтобы получить разные частоты несущей, нужны эти преобразования?
                    Кто генерирует несущую и как управляется генератор несущей? Или 2 генератора? Или генератор будет прямоугольных импульсов, реализованный програмно, а на выходе фильтр?

                    Ничего непонятно.
                    Пора возвращаться к началу и спрашивать "что это будет", "как оно должно работать", о входных/выходных сигналах... :-?
                    Сообщение отредактировано: Prince -
                      Генератор (что на схеме) 200Гц необходим только для обеспечения работы логики (данной схемы, тех пунктов, что описаны выше), для последующей квадратуры есть другой генератор и вообще то что будет с сигналом дальше к этой теме не относится, задача заключается в реализации тех модулей что я описывал.
                      И да, модуляция будет (там даже не модуляция а манипуляция чистоты несущей, ну можно назвать и частотной модуляцией.) но это всё уже есть и организовано в железе, всё работает, нужно только научить микроконтроллер преобразовывать поступающий в него код по описанным выше пунктам (a, b, c..) и выдавать его уже преобразованный на выход (ногу мк).

                      Что касается черного ящика: получилось организовать часть "a) Блок выделения четных и нечетных единичных импульсов." :D
                      ExpandedWrap disabled
                        // ---------------- Блок выделения четных и нечетных единичных импульсов (как черный ящик) ------------- //
                            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; // не чётные единицы
                        // --------------------------------------------------------------------------------------//
                        Цитата marks90 @
                        ... но простейший способ организации на жесткой логике возможен именно по этой схеме.

                        В том то и дело, что в данном случае - невозможен.
                        Чтобы на D-триггере сделать делитель частоты пополам, нужно, чтобы
                        сигнал С воспринимался "по фронту" (как у 74LS74). А в приведённой схеме он работает
                        "по уровню". Отсюда и проблемы.
                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                        0 пользователей:


                        Рейтинг@Mail.ru
                        [ Script execution time: 0,0666 ]   [ 18 queries used ]   [ Generated: 16.04.24, 07:58 GMT ]