Muscat 0 20 февраля, 2012 Опубликовано 20 февраля, 2012 · Жалоба Добрый день Задача - реализация протокола MIL-1553. Есть вопрос с тем, как осуществить синхронизацию. В начале каждого слова следует синхропоследовательность, на длительность трех символов. В начале на 2/3 идет логический -1, затем 2/3 +1. Я вот думаю, как по этой штуке засинхронизироваться средствами 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? Спасибо за ответы Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 29 20 февраля, 2012 Опубликовано 20 февраля, 2012 · Жалоба А следующий далее манчестер вы как собираетесь декодировать? По любому, частоту надо брать кратную информационной (1МГц). Причем, кратно раз так в 12-16 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
eugen_pcad_ru 0 20 февраля, 2012 Опубликовано 20 февраля, 2012 · Жалоба Думаю, что 3 (а не 2 или 4) - это для повышения надежности синхросигнала (внутри обработка идет на более высокой частоте). P.S.: В СОМ-порте к примеру есть режим 1,5 стоповых бита для этих же целей. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Muscat 0 20 февраля, 2012 Опубликовано 20 февраля, 2012 · Жалоба MrYuran - дальше есть варианты реализации, основанные как раз таки на том, что более высокой частотой тактируем сигнал и смотрим его состояние. Там вылезают длительность такта и пол-длительности такта, так же как в RS-232. Частота конечно же будет выше, скорее всего не мене 20МГц. <i>Думаю, что 3 (а не 2 или 4) - это для повышения надежности синхросигнала (внутри обработка идет на более высокой частоте).</i> Можно поподробнее, чем это повышает надежность синхросигнала? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 20 февраля, 2012 Опубликовано 20 февраля, 2012 · Жалоба Думаю, что 3 (а не 2 или 4) - это для повышения надежности синхросигнала 1.5 бита - это искаженный манчестер (синхроимпульс), чтобы уверенно выделить начало посылки (дифпара) после паузы в линии. Так как перепад в середине бита, нужно работать на удвоенной частоте (2 мГц) ////////////////////////// 1'b0 == 2'b01 ////////////////////////// 1'b1 == 2'b10 Тогда и манчестер легко получается, так и синхроимпульс выделяется (6'b111000 : 6'b000111) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Muscat 0 20 февраля, 2012 Опубликовано 20 февраля, 2012 · Жалоба Не понял. Как выделятся? Что значат эти равенства? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 20 февраля, 2012 Опубликовано 20 февраля, 2012 · Жалоба Не понял. Как выделятся? Что значат эти равенства? Например Вы хотите передать в манчестере код 0101 на частоте 1 мГц. Передавайте 01_10_01_10 на частоте 2 мГц. Вот и весь манчестер. принимайте на частоте 2 мГц и выделяйте нечетные отсчеты. (удвоенный сдвиговый регистр) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stells 12 20 февраля, 2012 Опубликовано 20 февраля, 2012 · Жалоба принимайте на частоте 2 мГц и выделяйте нечетные отсчеты. (удвоенный сдвиговый регистр) а можно четные и нечетные отсчеты писать в два сдвиговых регистра, а потом их сравнивать - получится дублирование приема и защита информации Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 20 февраля, 2012 Опубликовано 20 февраля, 2012 · Жалоба а можно четные и нечетные отсчеты писать в два сдвиговых регистра, а потом их сравнивать - получится дублирование приема и защита информации Я не представляю как это сделать. Сама идея - работать по любому перепаду в линии (xor). А надежность заложена в самом кодировании и критерии достоверности приема (Анализ наличия синхроимпульса (искаженный манчестер) и всех битов в формате манчестера, следующих за синхроимпульсом. На удвоенной частоте относительно несущей - это операция xor Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 29 20 февраля, 2012 Опубликовано 20 февраля, 2012 · Жалоба принимайте на частоте 2 мГц и выделяйте нечетные отсчеты. (удвоенный сдвиговый регистр) А синхронизировать частоты чем? ФАПЧем? Не понимаю, для чего себе же трудности устраивать. И не понимаю, какие проблемы при 20МГц тактовой и быстродействии ПЛИС декодировать мегабитный МКИО. Хочешь - на счетчиках, хочешь - на регистрах. Мажоритарный выбор бонусом ко второму случаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 20 февраля, 2012 Опубликовано 20 февраля, 2012 · Жалоба И не понимаю, какие проблемы при 20МГц тактовой и быстродействии ПЛИС декодировать мегабитный МКИО. У меня нет никаких проблем. ( 2 мГц приведено для понимания. Естественно системная выше относительно 2 мГц) Но если хотите, разбомблю Вашу реализацию, если выложите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladec 12 21 февраля, 2012 Опубликовано 21 февраля, 2012 · Жалоба Вы здесь говорите об "идеалином" манчестерском сигнале, а в реалии из за шумов в канале или возможной просадки уровня сигнала наблюдается сильная дрожь фронтов и вы должны в своей схеме максимально правильно декодировать сигнал, а длительность стартовой последовательности в три бита, является минимальной которую можно правильно декодировать в таких условиях. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Muscat 0 24 февраля, 2012 Опубликовано 24 февраля, 2012 · Жалоба Сделал привязку к манчестеру. Идеология такова 1) Процесс номер раз мониторит сигнал MANCH и в случа переключения генерит сигнал phs_chng, о том что манчестер прыгнул 2) Процесс номер 2 представляет собой тупо счетчик от 1 до 10, который мы тактируем частотой 20 МГц, на выходе вылезает клок 10МГц, по задним фронтам которого мы читаем состояния сигнала Манчестер. Его нарастающие фронты синхронизированы с частотой phs_chng. Как вам такая реализация синхронизации? Плюсы минусы подводные камни? Плюс я вижу в том, что частоты могут плавать одна от другой, но счетчик всегда будет отсчитывать строго полтакта с момента переключения манчестера. Покритикуйте, попинайте. 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 система синхронизации неизменится, так же будет синхронизация по фронту в синхроипульсе+доп.блок, который распознает что за синхросигнал пришел, запустит счетчик принятых бит и прочие штуки протокола. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Poluektovich 0 25 февраля, 2012 Опубликовано 25 февраля, 2012 · Жалоба Присваивание нужно использовать неблокирующее <= для синхронной логики Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 8 25 февраля, 2012 Опубликовано 25 февраля, 2012 · Жалоба Сделал привязку к манчестеру. Идеология такова Если Вам нужно реализовать все строго по госту, не имеет смысла сегодня все с нуля начинать. Есть готовые встроенные решения у Элкуса и Миландра (тестирующие платы у Элкуса) http://forum.milandr.ru/viewtopic.php?f=34&t=405 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться