реклама на сайте
подробности

 
 
6 страниц V  < 1 2 3 4 5 > »   
Reply to this topicStart new topic
> RS-232 + FPGA
Wild
сообщение Jul 3 2006, 15:41
Сообщение #31


Местный
***

Группа: Участник
Сообщений: 216
Регистрация: 26-05-06
Из: Коломна
Пользователь №: 17 479



Цитата(sazh @ May 21 2006, 14:56) *
To NIOS
Хороший подход. Можно пойти еще дальше. Отказаться от стопового бита. Ведь Вам он не нужен.
Экономия на лицо.


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

Если в схеме с делением битового интервала на 16 частей и выборке 3х средних значений, к моменту приема последнего бита такая выборка может "уплыть" от центра битового интервала к его краю, то есть на время, приблизительно равное половине битового интервала, то при предложенном NIOSом методе, искажение данных произойдет, если выборка "уплывет" хотя бы на треть.
Go to the top of the page
 
+Quote Post
sazh
сообщение Jul 3 2006, 18:38
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Не надо вырывать эту фразу из контекста обсуждения. Иногда имеет смысл довести что то до обсурда, чтобы подчеркнуть ошибочность того или иного мнения.
Go to the top of the page
 
+Quote Post
Wild
сообщение Jul 4 2006, 10:10
Сообщение #33


Местный
***

Группа: Участник
Сообщений: 216
Регистрация: 26-05-06
Из: Коломна
Пользователь №: 17 479



Цитата(sazh @ Jul 3 2006, 22:38) *
Не надо вырывать эту фразу из контекста обсуждения. Иногда имеет смысл довести что то до обсурда, чтобы подчеркнуть ошибочность того или иного мнения.

sazh, простите, я может не совсем понял что вы имеете ввиду, но вы с чем не согласны: с утверждением о необходимости синхронизировать приемник с передатчиком, более плохим показателем устойчивости к рассинхронизации предложенной NIOSом схемы или про стоп бит вы пошутили а я не понял?
Go to the top of the page
 
+Quote Post
vikk
сообщение Jul 4 2006, 11:27
Сообщение #34


Частый гость
**

Группа: Свой
Сообщений: 98
Регистрация: 13-01-06
Пользователь №: 13 134



bb-offtopic.gif
круто! a14.gif
ну вы блин даете!
этож можно человека до самоубийства довести таким количеством советов! )))
по делу ничего сказать не могу - уже все сказали, разжевали и проглотили.
но с шутками надо осторожнее )))
разве что фильтр по-моему не обязателен вовсе.
Go to the top of the page
 
+Quote Post
sazh
сообщение Jul 4 2006, 16:56
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



To Wild. Вы все правильно говорили. А я не шутил. Просто когда по теме rs232 столько копий сломано, а воз и ныне там, уже нет мочи говорить прописные истины. Они просты. Не трогай технику, и она тебя не тронет. Есть старт, есть стоп, значит так надо. Мне вообще непонятно для чего в приемнике эта мажоритарность. Это же не МК. По большому счету и подход при работе с собственным клоком, позволяющий нащупать середину стартового бита, отрицает необходимость мажоритарности. Если Вы досчитали до середины стартового бита, попали в энегетический центр сигнала, зачем анализировать, что слева или справа. Разве это улучшит надежность приемника. Да только ухудшит, если рассогласования частот приемника и передатчика значимы. У меня подход прост.
При перепаде из 1 в 0 анализирую наличие этого нуля в интервале 1/2 длительности бита (меньше 1/2 это не старт, снова ждем перепад), если 0 значит это середина старта, открываю временной интервал работы и нарезаю фронтом по центру длительностью в период бита. На месте где должен быть стоп закрываю интервал и анализирую на наличие 1. Если 0 ошибка кадрирования и дальше принимаем решение, что игнорируем слово или массив.
Go to the top of the page
 
+Quote Post
Kopart
сообщение Jul 6 2006, 08:13
Сообщение #36


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 1-03-05
Из: Spb
Пользователь №: 2 972



Цитата(Wild @ Jul 3 2006, 19:41) *
Позвольте с вами не согласиться. Стоповый бит необходим для того чтобы устанавливать синхронизацию приемника и передатчика, так как в общем случае два уарта работают на немного разных частотах необходимо более или менее точно определить момент начала передачи байта, чтобы даже после небольшой рассинхронизации можно было быть уверенным, что снимаемое с линии значение последнего бита, действительно соответствует последнему биту а не соседнему сним.

Если в схеме с делением битового интервала на 16 частей и выборке 3х средних значений, к моменту приема последнего бита такая выборка может "уплыть" от центра битового интервала к его краю, то есть на время, приблизительно равное половине битового интервала, то при предложенном NIOSом методе, искажение данных произойдет, если выборка "уплывет" хотя бы на треть.

Макс возможный случай - что к приему стопового бита генератор уплывет на треть длительности БИТА.
Прикинем какое должно быть рассогласование опорных генераторов, чтобы выборка уплыла на треть.
Макс скорость передачи 128000, максимально возможно бит = 1+8+1+2 = 12
Те за 93.75мкс частота должна уйти на 2.604мкс не более 2.7% (это для частоты 128кГц)
В вашем случае (1/2 бита) получается не более 4.1%
Стабильность генератора не хуже 10^-6 те 0.0001%.
А вот точность, сейчас программируемых генераторов, я на вскидку не скажу - это уже другой вопрос, который также актуален при рассогласовании в 1/2 бита.
Те жертвуя 1/2-1/3 ~= 0.16 бита Вы получает удобство по компактности реализации и простоте алгоритма приема.

Цитата(sazh @ Jul 4 2006, 20:56) *
Мне вообще непонятно для чего в приемнике эта мажоритарность. Это же не МК. По большому счету и подход при работе с собственным клоком, позволяющий нащупать середину стартового бита, отрицает необходимость мажоритарности. Если Вы досчитали до середины стартового бита, попали в энегетический центр сигнала, зачем анализировать, что слева или справа. Разве это улучшит надежность приемника. Да только ухудшит, если рассогласования частот приемника и передатчика значимы. У меня подход прост.

Логика проста: Первый МЖФ - простейщий фильтр на входе в ПЛИС (получще будет чем стробирование)
- к минимум задача фильтровать пички.
Второй МЖФ нужен по идее метода - определять значения бодовых битов (+не учитывать, если выборка попадет на перепад сигнала)

Если просто сравнивать с тем, что предлагает Вы - мне не требуется точно определять начала стартового бита, чтобы потом попасть на середину. Я работаю максимально с частотой в 3 раза больше бодовой, а Вам нужно довольно точно защелкивать, чтобы быть увереным, что попали в середину.
А определение начала и конца "посылки" в моем методы тоже присутствует - в КА, и не требует такой точности.


--------------------
Насколько проще была бы жизнь, если бы она была в исходниках
Go to the top of the page
 
+Quote Post
javalenok
сообщение Jul 10 2006, 08:57
Сообщение #37


Местный
***

Группа: Участник
Сообщений: 290
Регистрация: 18-02-06
Пользователь №: 14 469



Допустим один проголосовал против -- и что дальше? Правильные голоса появились -- мажоритарность можно реализовать проще -- выборкой 1-го бита в середине битового интервала. Какой смысл пропускать ряд пичков 1010101010 -- не понял. Это как-то повышает надёжность? Ещё не понял, как без стопового бита вы будете засекать появление стартового, ведь последний бит данных может быть нулём, т.е. неразличим от старта.

И ещё, когда считаете погрешности рассинхронизации, не забывайте, что передискретизация 16х сама по себе даёт задержку до 6,5% от настоящего старт-фронта. При эхо-тестировании приёмопередатчика длинными потоками у меня случались сбои. Чтобы ошибка не накапливалась, сбрасывать приёмник надо в середине стоп-бита.

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

Но вообще идея использовать сдвиг вместо подсчёта бит заслуживает рассмотрения. Парадоксально, но декодер на N адресов в FPGA занимает вдвое больше ресурсов, чем цепочка из N FF-ов.
Go to the top of the page
 
+Quote Post
Kopart
сообщение Jul 10 2006, 10:20
Сообщение #38


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 1-03-05
Из: Spb
Пользователь №: 2 972



Цитата(javalenok @ Jul 10 2006, 12:57) *
Вы хоть обозначайте кому пишите! А лучше ставьте цитаты, того на что отвечаете.
Про комментирую то, что покажется обращено ко мне.

Цитата
Допустим один проголосовал против -- и что дальше? Правильные голоса появились -- мажоритарность можно реализовать проще -- выборкой 1-го бита в середине битового интервала. Какой смысл пропускать ряд пичков 1010101010 -- не понял. Это как-то повышает надёжность? Ещё не понял, как без стопового бита вы будете засекать появление стартового, ведь последний бит данных может быть нулём, т.е. неразличим от старта.

Тут вопрос определения "середины битового интервала" (для этого "точно" надо знать начала стартового бита)
А с МЖФ не надо синхронизоватся - сам поймет "опосля" - вот уже стартовый "ноль" - надо бы начать вдвигать. Плюс фильтруются пологие фронты, спады.
Я изначально "вдвиговый" регистр инициализурую всеми "1", и как стартовый добрался до определенной ячейки (последней, предпоследней, i-ой) - понимаю сколько принял, и жду дальше/сравниваю (четность)/сбрасываю приемник(с задержкой) - в паралель (это же ПЛИС)
Цитата
И ещё, когда считаете погрешности рассинхронизации, не забывайте, что передискретизация 16х сама по себе даёт задержку до 6,5% от настоящего старт-фронта.

Поподробнее откуда такие циферки?
В моем способе синхронизация не требуется... (это паралельный процесс)
Цитата
Никто не сказал ничего вразумительного про метастабильность, но в примере который я брал за основу применялся синхронизатор. Видимо он нужен чтоб предотвратить "непонятки" когда Rx зависает между небом и землёй и вся логика, на нём завязанная, интерпретирует уровень на своё усмотрение, приводя автомат в полный беспорядок.
Но вообще идея использовать сдвиг вместо подсчёта бит заслуживает рассмотрения. Парадоксально, но декодер на N адресов в FPGA занимает вдвое больше ресурсов, чем цепочка из N FF-ов.

+ если я правильно понял - то нужен еще счетчик битов([3:0] макс до 12)

Из непонятного состояния всегда можно выйти по таймауту.


--------------------
Насколько проще была бы жизнь, если бы она была в исходниках
Go to the top of the page
 
+Quote Post
javalenok
сообщение Jul 10 2006, 11:18
Сообщение #39


Местный
***

Группа: Участник
Сообщений: 290
Регистрация: 18-02-06
Пользователь №: 14 469



Цитата(NiOS @ Jul 10 2006, 13:20) *
Цитата

Допустим один проголосовал против -- и что дальше? Правильные голоса зазвучали -- мажоритарность можно реализовать проще -- выборкой 1-го бита в середине битового интервала. Какой смысл пропускать ряд пичков 1010101010 -- не понял. Это как-то повышает надёжность? Ещё не понял, как без стопового бита вы будете засекать появление стартового, ведь последний бит данных может быть нулём, т.е. неразличим от старта.

Тут вопрос определения "середины битового интервала" (для этого "точно" надо знать начала стартового бита)
А с МЖФ не надо синхронизоватся - сам поймет "опосля" - вот уже стартовый "ноль" - надо бы начать вдвигать. Плюс фильтруются пологие фронты, спады.
Я изначально "вдвиговый" регистр инициализурую всеми "1", и как стартовый добрался до определенной ячейки (последней, предпоследней, i-ой) - понимаю сколько принял, и жду дальше/сравниваю (четность)/сбрасываю приемник(с задержкой) - в паралель (это же ПЛИС)

В моем способе синхронизация не требуется... (это паралельный процесс)


Да, ну и откуда ты узнаешь, что подступил новый байт? Выбирать надо в серёдке, для этого надо сделать отступ от переднего фронта старт-бита. Далее, как ты определишь, что пора сдвигать, если не по собственным часам? Ведь rs232 -- не манчестер и данные не несут синхроинформации в каждом инфобите. В довершение вы собирались отказаться от стопового. Представим, что стартовый и все данные -- нули. Ну и как без стопа узнать о начале нового кадра?

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

Цитата(NiOS @ Jul 10 2006, 13:20) *
Цитата

И ещё, когда считаете погрешности рассинхронизации, не забывайте, что передискретизация 16х сама по себе даёт задержку до 6,5% от настоящего старт-фронта.

Поподробнее откуда такие циферки?


1/16 * 100%



Цитата(NiOS @ Jul 10 2006, 13:20) *
Цитата

Никто не сказал ничего вразумительного про метастабильность, но в примере который я брал за основу применялся синхронизатор. Видимо он нужен чтоб предотвратить "непонятки" когда Rx зависает между небом и землёй и вся логика, на нём завязанная, интерпретирует уровень на своё усмотрение, приводя автомат в полный беспорядок.
Но вообще идея использовать сдвиг вместо подсчёта бит заслуживает рассмотрения. Парадоксально, но декодер на N адресов в FPGA занимает вдвое больше ресурсов, чем цепочка из N FF-ов.

+ если я правильно понял - то нужен еще счетчик битов([3:0] макс до 12)

Из непонятного состояния всегда можно выйти по таймауту.


Тут тоже какое-то досадное замешательство. Полагаю от того, что вопрос-ответ приводится в стековой последовательности и надо читать:
[1]
- Никто не сказал про метастабильность, ... автомат в полный беспорядок.
+ Из непонятного состояния всегда можно выйти по таймауту.


[2]
- идея использовать сдвиг вместо подсчёта бит заслуживает рассмотрения. декодер на [i]N адресов в FPGA занимает вдвое больше ресурсов, чем цепочка из N FF-ов.
+ если я правильно понял - то нужен еще счетчик битов([3:0] макс до 12)[/i]

На первое отвечу, что идея использовать противозависательный монитор конечно имеет право на сущетвование, но более правильная позиция, на мой взгляд такая: компьютер не должен сходить с ума при подаче на него асинхронного, но допустимого сигнала. Да и быстрым грязным хаком попахивает. Я считаю, что лечением симптомов промышлют недобросовестные, недобропорядочные люди, это их отличительная черта.

Ну а что до подсчёта бит, разве мыслимо его вести без счётчика?

Сообщение отредактировал javalenok - Jul 10 2006, 11:26
Go to the top of the page
 
+Quote Post
Wild
сообщение Jul 10 2006, 12:10
Сообщение #40


Местный
***

Группа: Участник
Сообщений: 216
Регистрация: 26-05-06
Из: Коломна
Пользователь №: 17 479



http://www.xilinx.com/xlnx/xweb/xil_tx_dis...hX_ID=kc_srl16e

NIOS, решение предложенное вами безусловно имеет право на существование.
Кстати интересно, Ваш уарт занимал бы меньше вышеописанного, если бы у него была такая же функциональность?

Сообщение отредактировал Wild - Jul 10 2006, 12:11
Go to the top of the page
 
+Quote Post
Kopart
сообщение Jul 11 2006, 08:35
Сообщение #41


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 1-03-05
Из: Spb
Пользователь №: 2 972



Цитата(javalenok @ Jul 10 2006, 15:18) *
Да, ну и откуда ты узнаешь, что подступил новый байт?

Есть "фильтр" на входе сигнала RX в ПЛИС
У меня это сделано с помощью МЖФ (фильтрует лучше), но можно и просто стробировать основной частотой проекта.
На выходе(когда автомат в idle) появился "0" - переходим в прием (STATE_RECEIVE)
Цитата
Выбирать надо в серёдке, для этого надо сделать отступ от переднего фронта старт-бита. Далее, как ты определишь, что пора сдвигать, если не по собственным часам?

ЕЩЕ раз - я не выбираю в середке!!!
У меня ВСЕГДА есть утроенная частота бодовой скорости (Я ее НЕ синхронизую со стартом!!!)
Далее (когда в состоянии STATE_RECEIVE) - считаю эту частоту и по каждому третьему фронту вдигаю в регистр выход МЖФ (его код уже приводил(там есть enable))

Для кого-то в коде понятней smile.gif
Код
if(STATE_RECEIVE & counter==2'h3)
           rx_reg[9:0] <= #T {out(MZHF),rx_reg[9:1]};

Цитата
В довершение вы собирались отказаться от стопового. Представим, что стартовый и все данные -- нули. Ну и как без стопа узнать о начале нового кадра?

ЕЩЕ раз повторяю - я знаю сколько битов в "бодовом байте" - те выбрал глубину сдвигового регистра.
!!!!!!!!!!!!!!!В "idle" я его устанавливаю всеми "1" и вдвигаю ВСЕ биты и СТАРТ!!!!!!!!!!!!!!!!!!!!!!!!
Стартовый ВСЕГДА "0" - на пример вдвигаю с "конца" - добрался "0" до "начала" регистра - значит стоповый уже вдвинулся.
Цитата
И в порядке любопытства, вы не ответили чем мажоритарный фильтр, манкирующий временную информацию, лучше обычного гистерезиса низких частот, пропускающего только те образцы, что похожи на соседей? Вам фильтрация нужна, как я догадываюсь, именно для предотвращения ложных срабатываний (сдвигов).

Я наверное не столь продвинут в фильтрации. Но о Вашем вопросе с умными словами нужно думать вместе с теорией фильтров и спектрами пропушенных сигналов. Да и вопрос зачем? Задача немного другая. Хотя (если сможете) приведите HDL описание "обычного гистерезиса низких частот, пропускающего только те образцы, что похожи на соседей?" - может вы о простых вещах по умному smile.gif

Опять повторяю - фильтрация нужна - чтобы не синхронизоватся и при этом ДВА отсчета будут около центра бита

Цитата
Ну а что до подсчёта бит, разве мыслимо его вести без счётчика?

Ваше сообщение "Парадоксально, но декодер на N адресов в FPGA занимает вдвое больше ресурсов, чем цепочка из N FF-ов."
Декодер на N адрессов можно реализовать и без счетчика smile.gif

Но учитывай, что прийдется дабовлять как минимум один лишний FF в цепочку - для старта smile.gif


--------------------
Насколько проще была бы жизнь, если бы она была в исходниках
Go to the top of the page
 
+Quote Post
javalenok
сообщение Jul 11 2006, 10:26
Сообщение #42


Местный
***

Группа: Участник
Сообщений: 290
Регистрация: 18-02-06
Пользователь №: 14 469



Цитата(NiOS @ Jul 11 2006, 11:35) *
Я наверное не столь продвинут в фильтрации. Но о Вашем вопросе с умными словами нужно думать вместе с теорией фильтров и спектрами пропушенных сигналов. Да и вопрос зачем? Задача немного другая. Хотя (если сможете) приведите HDL описание "обычного гистерезиса низких частот, пропускающего только те образцы, что похожи на соседей?" - может вы о простых вещах по умному smile.gif

Опять повторяю - фильтрация нужна - чтобы не синхронизоватся и при этом ДВА отсчета будут около центра бита


Я сам принцып FIR фильтра представляю лишь отдалённо, но фильтр низких частот (сглаживающий) должен пропускать только стабильный сигнал, убирая переменную составляющюю. Вы говорите, что мажоритарный подавляет случайные пички. Но каким же образом, если он у вас пропустит 10101010 -- сплошные пички? "Пропускать только те образцы, что похожи на соседей" -- это и есть фильтр низких частот, вам уже задвали вопрос о двух одниаковых значениях подряд. В чередующемся ряду 10101010 все соседние значения отличны. Фильтр низких частот должен сгладить ряд и получить среднее значение 0.5 -- где-то по-середине между 0 и 1. Имеет место неопределённость. 0 тянет "вниз", 1 -- "наверх", в среднем движения не происходит. ФНЧ с 2-значной историей решит эту задачу -- будет считать, что значение не меняется. Все пички отфильтруются. Так чем мажоритарный лучше? По-моему, пичков вообще быть не должно, самое точное значение в центре, а не на границе бита.



Цитата(NiOS @ Jul 11 2006, 11:35) *
ЕЩЕ раз - я не выбираю в середке!!! У меня ВСЕГДА есть утроенная частота бодовой скорости (Я ее НЕ синхронизую со стартом!!!) Далее (когда в состоянии STATE_RECEIVE) - считаю эту частоту и по каждому третьему фронту вдигаю в регистр выход МЖФ (его код уже приводил(там есть enable))

1-й и 3-й -- это как раз граничные обрызцы, они могут относится к другому биту. Вы же их цените на равне со средним. Может ну их, эти выборы -- баловство? Просто сдвигать в данные состояние среднего когда счётчик сэмплов переваливает через 2? И вообще от посреднечества сдвигового регистра отказаться, грузить Rx прямо в rx_reg[0]? У меня именно так сделано -- без детских игр в голосование. Так что я думаю вопрос Вильда: "NIOS, решение предложенное вами безусловно имеет право на существование. Кстати интересно, Ваш уарт занимал бы меньше вышеописанного, если бы у него была такая же функциональность?" имеет отницательный ответ. Ваша конструкция -- избыточна, она сложнее аналогов и не имеет права на существование.



И для чего вы выход своего mzf регистра дополнительно регистируете? Конвееризация biggrin.gif ?


Цитата(NiOS @ Jul 11 2006, 11:35) *
ЕЩЕ раз повторяю - я знаю сколько битов в "бодовом байте" - те выбрал глубину сдвигового регистра.
!!!!!!!!!!!!!!!В "idle" я его устанавливаю всеми "1" и вдвигаю ВСЕ биты и СТАРТ!!!!!!!!!!!!!!!!!!!!!!!!
Стартовый ВСЕГДА "0" - на пример вдвигаю с "конца" - добрался "0" до "начала" регистра - значит стоповый уже вдвинулся.

Я тоже знаю сколько бит в кадре (выражение "бодовый байт" слышу впервые, смысл не ясен). Но это не значит, что стоповый бит смысла не имеет. Он необходим для отделения начала нового кадра. Старт можно гарантированно увидеть только на фоне стопа.

Значит у вас вместо 10-битного счётчика принятых бит используется 10-битный сдвиговый регистр иль вы его как-то совмещаете с регистром принимаемых данных? Если первое, что что-то мне подсказывает, что счётчиком счетать биты эффективнее.



Цитата(NiOS @ Jul 11 2006, 11:35) *
Ваше сообщение "Парадоксально, но декодер на N адресов в FPGA занимает вдвое больше ресурсов, чем цепочка из N FF-ов."
Декодер на N адрессов можно реализовать и без счетчика smile.gif

Но учитывай, что прийдется дабовлять как минимум один лишний FF в цепочку - для старта smile.gif


Ну декодер -- часть демукса, выбирает ячейку, которая будет грузится в следующий момент. Код ячейки увеличивается с приёмом каждого нового бита. Код генерируется счётчиком. Декодер не имеет смысла без счётчика.

Заменить счётчик + декодер на один сдвиговый регистр, пускай длины +1, не получится. Нужно два сдвиговых: первый 8 бит для приёма данных и другой -- круговая лента 10-ти состояний FSM приёмника (приём старт, данных, стопа). Так вот принимать данные мне кажется экономнее в сдвиговый регистр по сравнению с кодированными ячейками, а состояние машины всёж лучше держать в счётчике, благо полного декодирования для управления машиной не требуется, поскольку автомат должен вести себя одинаково для всех бит данных и синтезатор должен это здорово оптимизировать.

Сообщение отредактировал javalenok - Jul 11 2006, 10:44
Go to the top of the page
 
+Quote Post
Kopart
сообщение Jul 12 2006, 07:03
Сообщение #43


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 1-03-05
Из: Spb
Пользователь №: 2 972



Цитата(javalenok @ Jul 11 2006, 14:26) *
Но каким же образом, если он у вас пропустит 10101010 -- сплошные пички?

Вы знаете что такое простое "стробирование по входу" - так вот МЖФ на входе это просто лучше.
При таком сигнале на входе Вам ни какой фильтр не позволит принять сигнал стандарта RS-232.
Речь шла о статистически случайных одиночных пичках сигнала на паде ПЛИС, которые МЖФ сглаживает лучше, чем стробирование.
Цитата
1-й и 3-й -- это как раз граничные обрызцы, они могут относится к другому биту. Вы же их цените на равне со средним. Может ну их, эти выборы -- баловство?
И вообще от посреднечества сдвигового регистра отказаться, грузить Rx прямо в rx_reg[0]? У меня именно так сделано -- без детских игр в голосование.


Нельзя ориентироватся по среднему - тк я не синхронизую отсчеты с началом бита и этот средний не будет в центре - в центре будет другой средний smile.gif smile.gif smile.gif

Так там Verilog'ом по белому и написано, что "грузится Rx прямо в rx_reg[0] "

Цитата
И для чего вы выход своего mzf регистра дополнительно регистируете? Конвееризация biggrin.gif ?

В каком месте (коде) я это написал????

Цитата
Но это не значит, что стоповый бит смысла не имеет. Он необходим для отделения начала нового кадра. Старт можно гарантированно увидеть только на фоне стопа.

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

Цитата
Значит у вас вместо 10-битного счётчика принятых бит используется 10-битный сдвиговый регистр иль вы его как-то совмещаете с регистром принимаемых данных?

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

Понятие "декодер" - в оригинале это просто демукс, а счетчик это уже другое понятие smile.gif


--------------------
Насколько проще была бы жизнь, если бы она была в исходниках
Go to the top of the page
 
+Quote Post
javalenok
сообщение Jul 12 2006, 14:18
Сообщение #44


Местный
***

Группа: Участник
Сообщений: 290
Регистрация: 18-02-06
Пользователь №: 14 469



Цитата(NiOS @ Jul 12 2006, 10:03) *
Цитата(javalenok @ Jul 11 2006, 14:26) *

Но каким же образом, если он у вас пропустит 10101010 -- сплошные пички?

Вы знаете что такое простое "стробирование по входу" - так вот МЖФ на входе это просто лучше.
При таком сигнале на входе Вам ни какой фильтр не позволит принять сигнал стандарта RS-232.
Речь шла о статистически случайных одиночных пичках сигнала на паде ПЛИС, которые МЖФ сглаживает лучше, чем стробирование.

"Cтробирование по входу"? Не слышал. Это байда навроде "бодового байта"? Вообще я спрашивал о приемуществах мажоритарного против фильтра низких частот, а не против некоего "стробирования по какому-то входу". Последовательность 1010101 вполне реальна, если выборка делается не в середине битового интервала, а в моменты смены бит, как у вас -- две крайние выборки имеют силу наравне с центральной. Но если вам нечего ответить, кроме "МЖФ на входе это просто лучше", вопрос снимается. Лучше наверное пониженной надёжностью и повышенной громоздкостью чем ФНЧ, при условии что фильтр -- вообще не нужен.


Цитата(NiOS @ Jul 12 2006, 10:03) *
Цитата

1-й и 3-й -- это как раз граничные обрызцы, они могут относится к другому биту. Вы же их цените на равне со средним. Может ну их, эти выборы -- баловство?
И вообще от посреднечества сдвигового регистра отказаться, грузить Rx прямо в rx_reg[0]? У меня именно так сделано -- без детских игр в голосование.

Нельзя ориентироватся по среднему - тк я не синхронизую отсчеты с началом бита и этот средний не будет в центре - в центре будет другой средний smile.gif smile.gif smile.gif

Так там Verilog'ом по белому и написано, что "грузится Rx прямо в rx_reg[0] "


Вы регистрируете выборки для МЖФ в произвольные моменты времени? Тогда какой смысл вообще отлавливать начало кадра, вести счётчик сэмплов бита? Всё равно приёмник rs232 не будет работать, поскольку это -- синхронный протокол. У него битовые интервалы отстоят от начала кадра на фиксированное время. Следовательно надо синхронизироватся с началом кадра и следить за за временем для выборки бита. И мажоритарный фильтр тут не поможет, синхронный протокол -- требует большего, чем фильтрация пичков.

А последняя фраза означает: "данные со входа Rx грузятся в сдвиговый регистр в обход мажоритарного фильтра". В таком случае вопрос о целесообразности его привлечения должен бы решиться сам собой. Но это только если чехи доели мацу.


Цитата(NiOS @ Jul 12 2006, 10:03) *
Цитата

И для чего вы выход своего mzf регистра дополнительно регистируете? Конвееризация biggrin.gif ?

В каком месте (коде) я это написал????


Я, конечно не знаток верилога, но
Код
always @ (posedge rst or clk)
if (ena)
           out <= #T (dd[0]&dd[1])|(dd[0]&dd[2])|(dd[1]&dd[2]);



Цитата(NiOS @ Jul 12 2006, 10:03) *
Для асинхронных одиночных кадров совсем не обязателен стоповый бит, а вот для нескольких последовательных кадров - стоповый, скорее, нужен, чтобы на длином промежутке значительной не была рассинхронизация приемника и передатчика.

Мой, пускай и очень небольшой опыт rs232, полученный на FPGA, подсказывает что длинные последовательности -- реальный источник угрозы, в отличае от мифическийх пичков. Потому что часы в разных системах сильно несовпадающие. А пичков я даже на осциллографе никогда не видел и тем более не принимал. Им теоретически взятся неоткуда в середине интервала.


Цитата(NiOS @ Jul 12 2006, 10:03) *
Цитата

Значит у вас вместо 10-битного счётчика принятых бит используется 10-битный сдвиговый регистр иль вы его как-то совмещаете с регистром принимаемых данных?

У меня есть регистр, в который я сдвигаю данные, и откуда можо забирать информационый байт.
И помимо этого я его же использую при передаче - только в обратную сторону.

Снова на красной площади сидели чехи и ели мацу палочками. У вас счётчик бит хранит поступающие данные, чтоб его можно на сдвиговый регистр заменить? Допустим у меня вообще сдвигает в тот регистр контроллера, который надо загрузить, без всяких промежуточных регистров и в полнодуплексном режиме. Что я теперь, должен так гордиться, чтоб использовать это как универсальный ответ на все вопросы?

Цитата(NiOS @ Jul 12 2006, 10:03) *
И вобщето сдвиговый регистр хранит то, что в него вдвинули.

Правда, что ли? Никога бы ни подумал. Хорошо, что вы это написали, так бы и оставался в неведении. А если ничего не вдвигали -- ничего не хранит? glare.gif

Сообщение отредактировал javalenok - Jul 12 2006, 14:28
Go to the top of the page
 
+Quote Post
Kopart
сообщение Jul 12 2006, 15:05
Сообщение #45


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 1-03-05
Из: Spb
Пользователь №: 2 972



А есть ли смысл разговаривать с человеком, который даже не удосужился перед ответом "не слышал" попробовать посмотреть в любои поиске слово "стробирование". twak.gif
А особено который имеет дело с ПЛИС!!

На пару актуальных вопросиков отвечу:

1. Да согласен - есть лишний такт на выходе МЖФ, впесто простого assign <wire>=...
Но он ничего не меняет в алгоритме. Он нужен тк FPGA - "любит" синхронный дизайн.

2. Счетчик я использую только, чтобы считать отсчеты (до 3х) внутри бита. САМИ биты я не считаю!


--------------------
Насколько проще была бы жизнь, если бы она была в исходниках
Go to the top of the page
 
+Quote Post

6 страниц V  < 1 2 3 4 5 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th June 2025 - 17:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.0153 секунд с 7
ELECTRONIX ©2004-2016