ViKo 1 February 17, 2011 Posted February 17, 2011 · Report post Извините меня за нубский вопрос. А что такое мажоритирование? Если из 3-х выборок бита хотя бы две находятся в состоянии "1", принимается решение, что бит равен "1". На основе "большинства проголосовавших". Quote Share this post Link to post Share on other sites More sharing options...
gosu-art 0 February 17, 2011 Posted February 17, 2011 · Report post Если честно, я такое давно использовал на сдвиговых регистрах... но не знал, что у этого процесса есть такое гламурное название Quote Share this post Link to post Share on other sites More sharing options...
Мур 2 February 18, 2011 Posted February 18, 2011 (edited) · Report post Строка в моём тексте use IEEE.std_logic_arith.all; тоже является лишней (рудимент от прежней попытки на счётчиках). И её отсутствие никак не меняет быстродействие. Если честно, я такое давно использовал на сдвиговых регистрах... но не знал, что у этого процесса есть такое гламурное название Тут у меня голосование( в одном бите) 2 из 3-х. Американцы любят 3 из 5-ти. Встречается 4 из 7. PS/Советую обратить внимание на выходной сигнал rxd_data_ready Тут готовность достоверных данных сопровождается сменой уровня на противоположный. Это сделано специально, чтобы облегчить переход далее к другой тактовой частоте при помощи простого известного трюка library IEEE; use IEEE.STD_LOGIC_1164.all; entity syn is port( clk : in STD_LOGIC; in_level : in STD_LOGIC; reset : in STD_LOGIC; imp : out STD_LOGIC ); end syn; architecture syn_body of syn is signal qqq : STD_LOGIC; signal ddd : STD_LOGIC; begin tg: process (clk) begin if clk'event and clk = '1' then if reset='1' then qqq <= '0'; ddd <= '0'; else qqq <= ddd; ddd <= in_level; end if; end if; end process; imp <= ddd xor qqq; end syn_body; Edited February 18, 2011 by Мур Quote Share this post Link to post Share on other sites More sharing options...
sazh 9 February 18, 2011 Posted February 18, 2011 · Report post Тут у меня голосование( в одном бите) 2 из 3-х. Американцы любят 3 из 5-ти. Встречается 4 из 7. А зачем в uarte мажоритарность. Это ж не микроконтроллер. Quote Share this post Link to post Share on other sites More sharing options...
des00 26 February 18, 2011 Posted February 18, 2011 · Report post PS/Советую обратить внимание на выходной сигнал rxd_data_ready Тут готовность достоверных данных сопровождается сменой уровня на противоположный. Это сделано специально, чтобы облегчить переход далее к другой тактовой частоте при помощи простого известного трюка ИМХО зря, я бы так не делал Quote Share this post Link to post Share on other sites More sharing options...
Мур 2 February 18, 2011 Posted February 18, 2011 (edited) · Report post А зачем в uarte мажоритарность. Это ж не микроконтроллер. Странная позиция. Значит внутри микроконтроллера это считается нормальным, а методы повышения достоверности в ПЛИС неуместны? Борьба с помехами, несоответствие скоростей передачи-приёма всегда будут актуальны! ИМХО зря, я бы так не делал "Ну не томи!".. Народ ждёт выхода мастера с сольным номером! Трюк взят из статьи Иосифа Каршенбойма в журнале "Компоненты и технологии" №2 2009 стр 102. Краткий курс HDL. Часть 11. Асинхронные частоты, пересечение клоковых доменов и синхронизация Там на рис 8 всё можно рассмотреть.... Edited February 18, 2011 by Мур Quote Share this post Link to post Share on other sites More sharing options...
Kuzmi4 0 February 18, 2011 Posted February 18, 2011 · Report post Странная позиция... Нет, если у вас передающий блок работает от той же частоты что и ваш уарт. Усложнять легко, а вот упрощать сложно (ЦЕ) Quote Share this post Link to post Share on other sites More sharing options...
Мур 2 February 18, 2011 Posted February 18, 2011 · Report post Нет, если у вас передающий блок работает от той же частоты что и ваш уарт. Усложнять легко, а вот упрощать сложно (ЦЕ) Согласен. Только "теория, мой друг сера, но вечно зелено дерево жизни". ... Это я к тому, что эксплуатация в жестских условиях выявляет помехи в линии. (Вот, кстати, почему так тщательно идёт оценка старт-бита!) Quote Share this post Link to post Share on other sites More sharing options...
ViKo 1 February 18, 2011 Posted February 18, 2011 · Report post ... Это я к тому, что эксплуатация в жестских условиях выявляет помехи в линии. (Вот, кстати, почему так тщательно идёт оценка старт-бита!) Верно-верно. Дело не в микроконтроллере или ПЛИС, а в линии передачи. По RS-232 сигналы на сотни метров передаются. Мало ли что по дороге случится. И тактовые генераторы у передатчика и приемника разные. А если устройства рядом, тогда лучше по SPI послать. Quote Share this post Link to post Share on other sites More sharing options...
Kuzmi4 0 February 18, 2011 Posted February 18, 2011 · Report post я ещё не встречал 25МГц уарт в кабелях.. ;) Quote Share this post Link to post Share on other sites More sharing options...
Мур 2 February 18, 2011 Posted February 18, 2011 (edited) · Report post я ещё не встречал 25МГц уарт в кабелях.. ;) Когда есть гальваническая развязка между системами, работающими с разными источниками и мощностями, то даже 1 метр удаления стрёмен! Верно-верно. Дело не в микроконтроллере или ПЛИС, а в линии передачи. По RS-232 сигналы на сотни метров передаются. Мало ли что по дороге случится. И тактовые генераторы у передатчика и приемника разные. А если устройства рядом, тогда лучше по SPI послать. Добавлю, что ложный или битый старт-бит искажает весь побитный отсчёт. Edited February 18, 2011 by Мур Quote Share this post Link to post Share on other sites More sharing options...
des00 26 February 18, 2011 Posted February 18, 2011 · Report post "Ну не томи!".. потому что это не правильно с точки зрения построения системы. Отделяйте мух от котлет. Модуль с положительно активными сигналами отдельно, синхронизатор отдельно. Это более наглядно, понятно, легче констрейнить и повторно использовать. А цена вопроса пара лишних триггеров. Quote Share this post Link to post Share on other sites More sharing options...
sazh 9 February 18, 2011 Posted February 18, 2011 · Report post я ещё не встречал 25МГц уарт в кабелях.. ;) lvds легко. Добавлю, что ложный или битый старт-бит искажает весь побитный отсчёт. А что мешает до uarta почистить. Вы ж за скорость боретесь. `timescale 1 ns / 1 ps module digital_filter #(parameter delay_filter = 4) ( input clk, input in_data, output out_data ); // function integer clogb2 (input [31:0] value); begin value = value-1; for (clogb2=0; value>0; clogb2=clogb2+1) value = value >> 1; end endfunction // reg [2:0] in_data_meta = 3'h0; reg [clogb2(delay_filter)-1:0] ct_filter = {clogb2(delay_filter){1'b0}}; reg out_data_rg = 1'b0; always @(posedge clk) begin in_data_meta <= {in_data_meta[1:0], in_data}; if(in_data_meta[2] == 1'b0) begin if(ct_filter != {clogb2(delay_filter){1'b0}}) ct_filter <= ct_filter - 1'b1; end else begin if(ct_filter != delay_filter-1) ct_filter <= ct_filter + 1'b1; end if(ct_filter == {clogb2(delay_filter){1'b0}}) out_data_rg <= 1'b0; else if (ct_filter == delay_filter-1) out_data_rg <= 1'b1; end assign out_data = out_data_rg; endmodule Quote Share this post Link to post Share on other sites More sharing options...
Kuzmi4 0 February 18, 2011 Posted February 18, 2011 · Report post 2 sazh знамо, только там делали не уарт :laughing: Quote Share this post Link to post Share on other sites More sharing options...
Мур 2 February 18, 2011 Posted February 18, 2011 · Report post потому что это не правильно с точки зрения построения системы. Отделяйте мух от котлет. Модуль с положительно активными сигналами отдельно, синхронизатор отдельно. Это более наглядно, понятно, легче констрейнить и повторно использовать. А цена вопроса пара лишних триггеров. Я не понял. Синхронизатор и есть те самые пара триггеров. Либо мне спрятать его в Усарт и добавить ножку другой частоты? Смена уровня как сигнал( хоть положительного, хоть отрицательного) трудно описать констрейном? Если глянуть в статью, там искусственно создаётся эта ситуация из "положительно активных сигналов" , а я просто выбросил, как лишний этот фрагмент... 2 sazh знамо, только там делали не уарт :laughing: У меня RS422 Quote Share this post Link to post Share on other sites More sharing options...