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

схема анализа сигналов

необходимо для реализации на плис схемку, которая сможет анализировать пришедшие цифровые сигналы на ножки на предмет того кто раньше пришел(имеется ввиду из данных сигналов).

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

Есть ли какие-нибудь идеи таких схем или подскажите книжку где искать... спасибо!

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


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

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

Есть идея. Даже две.

Первая - нужно бороться именно с этим "подрабатыванием", все остальное - потом. Пока вы не выясните причину этого эффекта, двигаться дальше нет смысла.

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

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


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

все что можно было сделать чтобы побороть "подрабатывания" уже сделано.

Я объяснил достаточно чтобы понять что нужно реализовать на плис, а с железом уже ничего нельзя сделать, к сожалению

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


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

все что можно было сделать чтобы побороть "подрабатывания" уже сделано.

Я объяснил достаточно чтобы понять что нужно реализовать на плис, а с железом уже ничего нельзя сделать, к сожалению

Значит, не все, раз не побороли. Почему с железом нельзя ничего сделать ?

Объяснение небрежное, из коего ровным счетом ничего понять нельзя. Хотите считать его нормальным ? Считайте ...

P.S. Простите, если вы решали задачу так же качественно, как писали запрос на форум, то легко понять, почему ваша система работает именно так ...

 

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


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

детекторы аналоговых каналов, цифровые импульсы которых потом и приходят в плис, срабатывают одновременно

вы хотите различать эти импульсы во времени?

если

с железом уже ничего нельзя сделать, к сожалению
, то ПЛИС тут ни чём не поможет и со всей задачей уже ничего нельзя сделать,

п.с. расскажите лучше про аналоговые сигналы и детекторы

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


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

Так они срабатывают одновременно или нет, всё таки?

Если нет, то на плис можно сделать так, например:

 

wire in_a, in_b;

 

reg a_r; // сработал первый датчик!

reg b_r; //сработал второй датчик!

reg state; // 0- на старт, внимание, марш!

// 1 - есть победитель !

always@(posedge clk)

begin

...

if(!state & in_a & !in_b)

begin

a_r <= 1'b1;

state <= 1'b1;

end

if(!state & !in_a & in_b)

begin

b_r <= 1'b1;

state <= 1'b1;

end

end

Изменено пользователем Fujitser

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


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

Значит, не все, раз не побороли. Почему с железом нельзя ничего сделать ?

Объяснение небрежное, из коего ровным счетом ничего понять нельзя. Хотите считать его нормальным ? Считайте ...

P.S. Простите, если вы решали задачу так же качественно, как писали запрос на форум, то легко понять, почему ваша система работает именно так ...

про железо ничего больше сказать не могу.

Если Вы считаете что объяснение небрежное, то это Ваше дело, но я считаю что специалисту в такой области больше пояснять ничего не нужно.

 

вы хотите различать эти импульсы во времени?

если , то ПЛИС тут ни чём не поможет и со всей задачей уже ничего нельзя сделать,

п.с. расскажите лучше про аналоговые сигналы и детекторы

Да, во времени. Точно сказать не могу, но разброс между фронтами сигналов может исчисляться единицами нс, а может и пс. К сожалению измерить нет возможности.

 

Так они срабатывают одновременно или нет, всё таки?

Если нет, то на плис можно сделать так, например:

 

wire in_a, in_b;

 

reg a_r; // сработал первый датчик!

reg b_r; //сработал второй датчик!

reg state; // 0- на старт, внимание, марш!

// 1 - есть победитель !

always@(posedge clk)

begin

...

if(!state & in_a & !in_b)

begin

a_r <= 1'b1;

state <= 1'b1;

end

if(!state & !in_a & in_b)

begin

b_r <= 1'b1;

state <= 1'b1;

end

end

Спасибо за схемку, но для её реализации нужна большая "clk" сотни МГц.

Сейчас схема работает без подрабатываний для 2-х каналов от простейшего RS триггера с небольшими наворотами.

 

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


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

Да, во времени. Точно сказать не могу, но разброс между фронтами сигналов может исчисляться единицами нс, а может и пс. К сожалению измерить нет возможности.

Фронты сигналов, приходящие на ПЛИС, привязаны к какой-либо тактовой сетке?

если нет, тогда в ПЛИС делать нечего.

 

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


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

Фронты сигналов, приходящие на ПЛИС, привязаны к какой-либо тактовой сетке?

если нет, тогда в ПЛИС делать нечего.

нет не привязана по приходу ни к какой частоте.

 

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

 

module videlyalka(input DATAIN, CLR, CLOCK, output DATAOUT);
   reg [4:0] sr1_q, sr2_q;
    reg fd1_q, fd2_q;
    wire clr1, clr2;
    
    assign clr11 = (|sr2_q) | CLR;
    
    always @(posedge CLOCK or posedge clr11)  begin    
       if(clr11) sr1_q <= 5'b0;
        else      sr1_q <= {sr1_q[3:0], DATAIN};     
   end
    
    assign clr12 = clr11 | sr1_q[4];
    
    always @(posedge CLOCK or posedge clr12)  begin    
       if(clr12) fd1_q <= 1'b0;    
        else      fd1_q <= DATAIN;    
   end
   
    assign clr21 = (|sr1_q) | CLR;

    always @(negedge CLOCK or posedge clr21)  begin    
       if(clr21) sr2_q <= 5'b0;
        else      sr2_q <= {sr2_q[3:0], DATAIN};     
   end

      assign clr22 = clr21 | sr2_q[4];

    always @(negedge CLOCK or posedge clr22)  begin    
       if(clr22) fd2_q <= 1'b0;    
        else      fd2_q <= DATAIN;    
   end
   
    assign DATAOUT = fd1_q | fd2_q;
endmodule

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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