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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Детектор совпадения импульсов, Помогите чайнику please!
Kuzmi4
сообщение Jun 3 2008, 08:22
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 lex_84 - а чем она вам может не понтавится ?

2 rv3dll(lex) - интересно получилось..
Если правильно вас понял:
Код
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
--
entity sinc_detector is
port(

strob_sovp            : out std_logic;
strob_sovp_dlit        : out std_logic;
sig100meg                : in  std_logic;
syg_1                : in  std_logic;
syg_2                : in  std_logic
);
end entity sinc_detector;

ARCHITECTURE system_architecture OF sinc_detector IS
--signal syg_1 : std_logic;
--signal syg_2 : std_logic;
signal syg_1_del_line : std_logic_vector(0 to 6);
signal syg_2_del_line : std_logic_vector(0 to 6);

signal syg_1_front : std_logic;
signal syg_2_front_t1 : std_logic;
signal syg_2_front_t2 : std_logic;
signal syg_2_front_t3 : std_logic;

--signal 100meg : std_logic;

--signal strob_sovp_dlit : std_logic;
--signal strob_sovp : std_logic;
BEGIN
--+++++++++++++++++++++++++++++++
process (sig100meg)
    begin
        if (sig100meg'event and sig100meg = '1') --polog front
        then
            syg_1_del_line(0 to 6) <= syg_1 & syg_1_del_line(0 to 5);
            syg_2_del_line(0 to 6) <= syg_2 & syg_2_del_line(0 to 5);
        end if;
    end process;
---
syg_1_front <= syg_1_del_line(4) and not(syg_1_del_line(5));
syg_2_front_t1 <= syg_2_del_line(3) and not(syg_2_del_line(4));
syg_2_front_t2 <= syg_2_del_line(4) and not(syg_2_del_line(5));
syg_2_front_t3 <= syg_2_del_line(5) and not(syg_2_del_line(6));
---
process (sig100meg)
    begin
        if (sig100meg'event and sig100meg = '1') --polog front
        then
            if (syg_1_front = '1') then
                if (syg_2_front_t1 = '1' or syg_2_front_t2 = '1' or syg_2_front_t3 = '1') then
                    strob_sovp_dlit <= '1';
                    strob_sovp <= '1';
                else
                    strob_sovp_dlit <= '0';
                    strob_sovp <= '0';
                end if;
            else
                strob_sovp <= '0';
            end if;
        end if;
end process;
--++++++++++++++++++++++++++++++++
END system_architecture;

В результате RTL выдал такую реализацию:
Прикрепленное изображение

Мапа выдала такую гирляндочку:
Прикрепленное изображение

А симуляция:
Прикрепленное изображение

Странно как то....
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Jun 3 2008, 08:35
Сообщение #17


Полное ничтожество
*****

Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354



с схематиком - представление регистра сдвига и шин выхода и входа мне не очень понятно ну да ладно

на второй картинке видно - что по паре триггеров можно со входов убрать от души я так их поставил

а симуляция то что - они же не совпадают - фронты в смысле - ну и нет ничего на выходах
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jun 3 2008, 08:48
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Так это детктор совпадения фронтов.. Блин.. сплужил.
Теперь идя ясна стала - получается мы прогоняем сигналы по сдвиговому регистру - цифруем типа с частотой 100 мегагерц а потом сравниваем...
Получил такую картинку:

Прикрепленное изображение

А почему strob_sovp_dlit не падает ?
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Jun 3 2008, 08:52
Сообщение #19


Полное ничтожество
*****

Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354



Цитата(Kuzmi4 @ Jun 3 2008, 12:48) *
Так это детктор совпадения фронтов.. Блин.. сплужил.
Теперь идя ясна стала - получается мы прогоняем сигналы по сдвиговому регистру - цифруем типа с частотой 100 мегагерц а потом сравниваем...
Получил такую картинку:

Прикрепленное изображение

А почему strob_sovp_dlit не падает ?



это для того., чтобы показать что импульс в канале 1 точнее его фронт всегда совпадает с фронтом в канале 2

нарисуй дальше ещё и не несовпадающие фронты - и он упадёт

три выборки канала 2- это как раз допуск на совпадение
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jun 3 2008, 09:28
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



И наверно последний вопрос
касательно
Код
syg_1_front <= syg_1_del_line(4) and not(syg_1_del_line(5));

То это - до было("1"), после небыло("0") и AND даст 1 - типа фронт есть.
А вот касательно:
Код
syg_2_front_t1 <= syg_2_del_line(3) and not(syg_2_del_line(4));
syg_2_front_t2 <= syg_2_del_line(4) and not(syg_2_del_line(5));
syg_2_front_t3 <= syg_2_del_line(5) and not(syg_2_del_line(6));
...
if (syg_2_front_t1 = '1' or syg_2_front_t2 = '1' or syg_2_front_t3 = '1') then
...

Типа выборки с линии задержки, но почему именно такая хитрая выборка с 3 по 6 (вроде ж 4-5 даёт нам фронт) ?
Можете обяснить ? smile3046.gif

Понял, там же OR - именно допуск на совпадение.
biggrin.gif
Теперь всё стало на свои места.
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Jun 3 2008, 11:10
Сообщение #21


Полное ничтожество
*****

Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354



для самостоятельного изучения

6 стробов показывают положение импульсов друг относительно друга - точность выше

лень думать над решающим устройством - но если очень хочется особенно для курсача штука любопытная


ARCHITECTURE system_architecture OF system IS
signal syg_1 : std_logic;
signal syg_2 : std_logic;
signal syg_1_del_line_p : std_logic_vector(0 to 3);
signal syg_2_del_line_n : std_logic_vector(0 to 3);
signal syg_1_del_line_p : std_logic_vector(0 to 3);
signal syg_2_del_line_n : std_logic_vector(0 to 3);

signal syg_1_front_p : std_logic;
signal syg_2_front_p : std_logic;
signal syg_1_front_n : std_logic;
signal syg_2_front_n : std_logic;

signal 100meg : std_logic ;

signal strob_1 : std_logic ;
signal strob_2 : std_logic ;
signal strob_3 : std_logic ;
signal strob_4 : std_logic ;
signal strob_5 : std_logic ;
signal strob_6 : std_logic ;
BEGIN


process (100meg)
begin
if (100meg'event and 100meg = '1') --polog front
then
syg_1_del_line_p(0 to 3) <= syg_1 & syg_1_del_line_p(0 to 2) ;
syg_2_del_line_p(0 to 3) <= syg_2 & syg_2_del_line_p(0 to 2) ;
end if;
end process ;

process (100meg)
begin
if (100meg'event and 100meg = '0') --otr front
then
syg_1_del_line_n(0 to 3) <= syg_1 & syg_1_del_line_n(0 to 2) ;
syg_2_del_line_n(0 to 3) <= syg_2 & syg_2_del_line_n(0 to 2) ;
end if;
end process ;


syg_1_front_p <= syg_1_del_line_p(2) and not(syg_1_del_line_p(3));
syg_2_front_p <= syg_2_del_line_p(2) and not(syg_2_del_line_p(3));
syg_1_front_n <= syg_2_del_line_n(2) and not(syg_2_del_line_n(3));
syg_2_front_n <= syg_2_del_line_n(2) and not(syg_2_del_line_n(3));


process (100meg) --stroby
begin
if (100meg'event and 100meg = '1') --polog front
then
if syg_1_front_n = '1' and syg_2_front_n = '1'
then
signal strob_1 <= '1';
else
signal strob_1 <= '0';
end if;

if syg_1_front_p = '1' and syg_2_front_n = '1'
then
signal strob_3 <= '1';
else
signal strob_3 <= '0';
end if;

if syg_1_front_n = '1' and syg_2_front_p = '1'
then
signal strob_4 <= '1';
else
signal strob_4 <= '0';
end if;

end if;
end process ;

process (100meg) --stroby
begin
if (100meg'event and 100meg = '0') --neg front
then
if syg_1_front_p = '1' and syg_2_front_p = '1'
then
signal strob_2 <= '1';
else
signal strob_2 <= '0';
end if;

if syg_1_front_p = '1' and syg_2_front_n = '1'
then
signal strob_5 <= '1';
else
signal strob_5 <= '0';
end if;

if syg_1_front_n = '1' and syg_2_front_p = '1'
then
signal strob_6 <= '1';
else
signal strob_6 <= '0';
end if;
end if;
end process ;


END system_architecture;
Go to the top of the page
 
+Quote Post
lex_84
сообщение Jun 3 2008, 15:41
Сообщение #22


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

Группа: Свой
Сообщений: 80
Регистрация: 17-05-08
Из: Питер
Пользователь №: 37 575



Спасибо!!! smile.gif Даст ист фантастиш!!! 08.gif
Судя по диаграмме то что надо! a14.gif
Попробую повторить в Либеро и Моделсиме
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 28th July 2025 - 12:10
Рейтинг@Mail.ru


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