Перейти к содержанию
    

Осуществление синхронизации в MIL-1553

Добрый день

 

Задача - реализация протокола MIL-1553.

Есть вопрос с тем, как осуществить синхронизацию.

В начале каждого слова следует синхропоследовательность, на длительность трех символов. В начале на 2/3 идет логический -1, затем 2/3 +1.

imgmF1.gif

 

Я вот думаю, как по этой штуке засинхронизироваться средствами VHDL/Verilog. Интересует не кусок кода, а сама идея.

Если бы там была длительность -1 в 2 периода, то было понятно - по клоку считать if (clk'even and clk='1') if (MANCH='0') count<=count+1.

Дальше делим на 2, сдвигом вправо и отбрасыванием правого бита получив hld_cnt, по которой и будем считать в дальнейшем.

Но тут то 2/3. Реализовывать операцию деления? thrd_cnt<=count/3? Но ведь это будет значительно более сложная схема?

 

И зачем вообще взяли эту тройку? Чем обсуловален выбор синхрослова именно длительность в 3 символа, а не в 2 или 4?

 

Спасибо за ответы

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А следующий далее манчестер вы как собираетесь декодировать?

По любому, частоту надо брать кратную информационной (1МГц).

Причем, кратно раз так в 12-16

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Думаю, что 3 (а не 2 или 4) - это для повышения надежности синхросигнала (внутри обработка идет на более высокой частоте).

 

P.S.: В СОМ-порте к примеру есть режим 1,5 стоповых бита для этих же целей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

MrYuran - дальше есть варианты реализации, основанные как раз таки на том, что более высокой частотой тактируем сигнал и смотрим его состояние. Там вылезают длительность такта и пол-длительности такта, так же как в RS-232. Частота конечно же будет выше, скорее всего не мене 20МГц.

 

<i>Думаю, что 3 (а не 2 или 4) - это для повышения надежности синхросигнала (внутри обработка идет на более высокой частоте).</i>

Можно поподробнее, чем это повышает надежность синхросигнала?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Думаю, что 3 (а не 2 или 4) - это для повышения надежности синхросигнала

 

1.5 бита - это искаженный манчестер (синхроимпульс), чтобы уверенно выделить начало посылки (дифпара) после паузы в линии.

Так как перепад в середине бита, нужно работать на удвоенной частоте (2 мГц)

////////////////////////// 1'b0 == 2'b01

////////////////////////// 1'b1 == 2'b10

Тогда и манчестер легко получается, так и синхроимпульс выделяется (6'b111000 : 6'b000111)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не понял. Как выделятся? Что значат эти равенства?

 

Например Вы хотите передать в манчестере код 0101 на частоте 1 мГц.

Передавайте 01_10_01_10 на частоте 2 мГц. Вот и весь манчестер.

принимайте на частоте 2 мГц и выделяйте нечетные отсчеты. (удвоенный сдвиговый регистр)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

принимайте на частоте 2 мГц и выделяйте нечетные отсчеты. (удвоенный сдвиговый регистр)

а можно четные и нечетные отсчеты писать в два сдвиговых регистра, а потом их сравнивать - получится дублирование приема и защита информации

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а можно четные и нечетные отсчеты писать в два сдвиговых регистра, а потом их сравнивать - получится дублирование приема и защита информации

 

Я не представляю как это сделать. Сама идея - работать по любому перепаду в линии (xor).

А надежность заложена в самом кодировании и критерии достоверности приема

(Анализ наличия синхроимпульса (искаженный манчестер)

и всех битов в формате манчестера, следующих за синхроимпульсом. На удвоенной частоте относительно несущей - это операция xor

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

принимайте на частоте 2 мГц и выделяйте нечетные отсчеты. (удвоенный сдвиговый регистр)

А синхронизировать частоты чем? ФАПЧем?

Не понимаю, для чего себе же трудности устраивать.

И не понимаю, какие проблемы при 20МГц тактовой и быстродействии ПЛИС декодировать мегабитный МКИО.

Хочешь - на счетчиках, хочешь - на регистрах. Мажоритарный выбор бонусом ко второму случаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И не понимаю, какие проблемы при 20МГц тактовой и быстродействии ПЛИС декодировать мегабитный МКИО.

 

У меня нет никаких проблем. ( 2 мГц приведено для понимания. Естественно системная выше относительно 2 мГц)

Но если хотите, разбомблю Вашу реализацию, если выложите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделал привязку к манчестеру. Идеология такова

 

1) Процесс номер раз мониторит сигнал MANCH и в случа переключения генерит сигнал phs_chng, о том что манчестер прыгнул

2) Процесс номер 2 представляет собой тупо счетчик от 1 до 10, который мы тактируем частотой 20 МГц, на выходе вылезает клок 10МГц, по задним фронтам которого мы читаем состояния сигнала Манчестер. Его нарастающие фронты синхронизированы с частотой phs_chng.

Как вам такая реализация синхронизации? Плюсы минусы подводные камни? Плюс я вижу в том, что частоты могут плавать одна от другой, но счетчик всегда будет отсчитывать строго полтакта с момента переключения манчестера.

 

cc9053a25c52.jpg

 

Покритикуйте, попинайте.

 module MIL1553
     (input MANCH,CLK,RST,
     output SYNC,SERIAL);

     reg chng_phs,lst_phs;
     always @(posedge CLK or posedge RST)
        begin
            if (RST)
                chng_phs=0'b0;
            else
                if (MANCH!=lst_phs)
                    chng_phs=1;
                else
                    chng_phs=0;
                
            lst_phs=MANCH;
        end    
    
    reg dbl_sync;
    reg [5:0] counter;
    always @(posedge CLK or posedge RST)
        begin
            if (RST)
                begin
                  counter=0; 
                  dbl_sync=0;
                  end
            else if    (chng_phs)
                begin
                counter=0; 
                dbl_sync=1;
                end
            else
                if (counter!=10)
                    counter=counter+1;
                else
                    begin
                    dbl_sync=~(dbl_sync);
                    counter<=0;
                    end    

        end    
endmodule

Первый проект на Верилоге, прошу так же советов и замечаний по синтаксису и стилю написания.

 

Для MIL-1553 система синхронизации неизменится, так же будет синхронизация по фронту в синхроипульсе+доп.блок, который распознает что за синхросигнал пришел, запустит счетчик принятых бит и прочие штуки протокола.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присваивание нужно использовать неблокирующее <= для синхронной логики

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделал привязку к манчестеру. Идеология такова

Если Вам нужно реализовать все строго по госту, не имеет смысла сегодня все с нуля начинать.

Есть готовые встроенные решения у Элкуса и Миландра

(тестирующие платы у Элкуса)

 

http://forum.milandr.ru/viewtopic.php?f=34&t=405

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...