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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Схема совпадений, необходимо определить момент совпадения тактовых сигналов
//Nikson
сообщение May 23 2006, 23:54
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 43
Регистрация: 26-01-06
Из: Минск, Беларусь
Пользователь №: 13 651



что-то форум слегка глючит и сообщение куда-то пропало. пробую ещё раз

доброго всем времени суток.

по учёбе возникла необходимость промоделировать парочку схем, методом научного тыка вроде бы немного разобрался, но не могу придумать, как реализовать вот что:

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

есть какой-нибудь _простой_ метод, позволяющий это сделать? может, какая-нить хитрая мегафункция имеется...

ЗЫ. пользуюсь Quartus, если это имеет значение.
Go to the top of the page
 
+Quote Post
Magnum
сообщение May 24 2006, 02:25
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 26-05-05
Пользователь №: 5 397



NXOR попробуй smile.gif
Go to the top of the page
 
+Quote Post
Kazap
сообщение May 24 2006, 07:17
Сообщение #3


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

Группа: Свой
Сообщений: 93
Регистрация: 8-05-06
Пользователь №: 16 880



Сначала объедините по И оба сигнала, затем этот объединенный и сигнал более высокой частоты
подайте на xor.
Осталось отловить тот тактовый период, на котором не будет импульса на вых. xor smile.gif
Go to the top of the page
 
+Quote Post
sazh
сообщение May 24 2006, 08:24
Сообщение #4


Гуру
******

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



Странная задача. А смысл в чем?
По идее Вы можете работать только в дискретах. Берете например частоту много выше например 500 мГц. Стробируете ею эти клоки. И анализируете по обоим каналам, когда совпадут состояния 01 (xor не подходит, если надо анализировать какой то один перепад). И зачем это надо. Ведь не определить количество этих совпадений в дискретах этой 500 мГц частоты.
Верилог:

module comp_clk
(
input clk_500,
input clk_125,
input clk_130,
output out
);

reg [1:0] shift_left_rga;
reg [1:0] shift_left_rgb;

always @(posedge clk_500)
begin
shift_left_rga <= {shift_left_rga[0], clk_125};
shift_left_rgb <= {shift_left_rgb[0], clk_130};
end
assign out = (shift_left_rga == 2'b01) & (shift_left_rgb == 2'b01);


endmodule
Go to the top of the page
 
+Quote Post
Gate
сообщение May 24 2006, 09:56
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 859
Регистрация: 7-04-05
Из: Санкт-Петербург
Пользователь №: 3 943



Я бы сделал так:
1. Рассматривать один сигнал как клок, другой - как данные.
2. Приготовить из клока задержаный на небольшое время. Этоя время будет задавать точность, с которой определится время совпадения фронтов.
3. Данные щелкать в регистры (возможно, в 2 для убирания метастабильности) по клоку и задержаному клоку.
4. Если защелкнуто по клоку 0, а по задержанному 1, то был фронт в промежутке между.
Эта система определит совпадение фронтов, если фронт по данным пройдет позже фронта клока. Чтобы не потарять ситуацию, когда фронт данных ранише фронта клока - либо меняете местами клок и данные, либо задерживаете данные и дважды клок - сообразите сами, писать лень.


--------------------
"Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается." (с) С.Лем
Go to the top of the page
 
+Quote Post
sazh
сообщение May 24 2006, 10:16
Сообщение #6


Гуру
******

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



А Вы все не пишите.
Вы только приготовьте из клока задержаный на небольшое время. А дальше мы уж сами.
Go to the top of the page
 
+Quote Post
Magnum
сообщение May 24 2006, 10:55
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 26-05-05
Пользователь №: 5 397



Ну например если использовать PLL то можно там вывести смещенную по фазе частоту клока.
Go to the top of the page
 
+Quote Post
Gate
сообщение May 24 2006, 11:04
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 859
Регистрация: 7-04-05
Из: Санкт-Петербург
Пользователь №: 3 943



Цитата(sazh @ May 24 2006, 14:16) *
А Вы все не пишите.
Вы только приготовьте из клока задержаный на небольшое время. А дальше мы уж сами.

Чувствуется ехидная ирония smile.gif
Зависит от задачи: если только моделирование - то assign clk1=#0.5 clk
Если в железе - использовать pll, или цинично пропустить через несколько лог. элементов (умоляю, не надо мне объяснять, что в парадигме синхронного дизайна это моветон, я знаю и мне стыдно wub.gif ) .
К сожалению, задача поставлена некорректно, т.к. не задана точность (и вообще похоже на учебную задачу). В симуляторе, например, ждать совпадения 2-х произвольных фронтов можно очееееень долго.


--------------------
"Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается." (с) С.Лем
Go to the top of the page
 
+Quote Post
KykyryzzZ
сообщение May 24 2006, 11:04
Сообщение #9



***

Группа: Свой
Сообщений: 404
Регистрация: 20-10-05
Пользователь №: 9 885



Цитата(Kazap @ May 24 2006, 11:17) *
Сначала объедините по И оба сигнала, затем этот объединенный и сигнал более высокой частоты
подайте на xor.
Осталось отловить тот тактовый период, на котором не будет импульса на вых. xor smile.gif

А чем такой подход не нравится?
Только здесь еще будут выделяться совпадения по спаду, надо придумать как их отбрасывать
Go to the top of the page
 
+Quote Post
sazh
сообщение May 24 2006, 11:26
Сообщение #10


Гуру
******

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



// Эта система определит совпадение фронтов, если фронт по данным пройдет позже фронта клока. Чтобы не потарять ситуацию, когда фронт данных раньше фронта клока - либо меняете местами клок и данные, либо задерживаете данные и дважды клок.
И что в результате. Получим два отклика по одному фронту? А длительность этих откликов уже никому не нужна?.На какой частоте приемника можно уверено зафиксировать такой импульс? Да еще соблюсти времена установки данных для корректной работы в программируемой логике.
Все что Вы предлагаете, это по сути эквивалент решения, приведенного мною Выше. И ничего другого быть не может.
Go to the top of the page
 
+Quote Post
Gate
сообщение May 24 2006, 11:38
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 859
Регистрация: 7-04-05
Из: Санкт-Петербург
Пользователь №: 3 943



Цитата(sazh @ May 24 2006, 15:26) *
// Эта система определит совпадение фронтов, если фронт по данным пройдет позже фронта клока. Чтобы не потарять ситуацию, когда фронт данных раньше фронта клока - либо меняете местами клок и данные, либо задерживаете данные и дважды клок.
И что в результате. Получим два отклика по одному фронту? А длительность этих откликов уже никому не нужна?.На какой частоте приемника можно уверено зафиксировать такой импульс? Да еще соблюсти времена установки данных для корректной работы в программируемой логике.

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

Все в мире эквивалентно, ибо имеет одного создателя. А дьявол кроется в деталях. Если в задаче поставить точность 1 нс, то моим способом можно сделать, а как сделать внутреннюю частоту fpga 1 ГГЦ? Тогда надо вводить фазовые сдвиго Вашего базового клока на 90, 180 и 270 градусов и работать в их доменах, тогда частоту можно уронить в 4 раза.


--------------------
"Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается." (с) С.Лем
Go to the top of the page
 
+Quote Post
Gate
сообщение May 24 2006, 11:58
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 859
Регистрация: 7-04-05
Из: Санкт-Петербург
Пользователь №: 3 943



Цитата(KykyryzzZ @ May 24 2006, 15:04) *
Цитата(Kazap @ May 24 2006, 11:17) *

Сначала объедините по И оба сигнала, затем этот объединенный и сигнал более высокой частоты
подайте на xor.
Осталось отловить тот тактовый период, на котором не будет импульса на вых. xor smile.gif

А чем такой подход не нравится?
Только здесь еще будут выделяться совпадения по спаду, надо придумать как их отбрасывать

1. У Вас на выходе асинхронная игла с неопределенной сколь угодно малой длительностью. Что потом с ней делать дальше?
2. Причем при точном совпадении фронтов ее длительность =0 (если пренебречь задержками в И), т.е. возможна потеря.
3. Выходной сигнал будет всегда, если на И исказится положительный полупериод быстрейшего клока, т.е. время совпадения жестко определено и равно половине периода быстрейшего клока.


--------------------
"Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается." (с) С.Лем
Go to the top of the page
 
+Quote Post
sazh
сообщение May 24 2006, 12:01
Сообщение #13


Гуру
******

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



///Вы невнимательно прочитали мой пост, или не подумали, а ведь собирались дальше сами. Замечу, что у меня выходной сигнал находится в тактовом домене - или обычного или задержанного, как сделаете.
Вы оперируете одним периодом этого клокового домена.
Во втором Вы действительно подхватите этот пичок. И получите импульс в период. А если фронт удасться зафиксировать и в следующем периоде, зафиксируете длительность в два периода. так и будете вобулировать. Хоть и не царское это дело, может напишите модуль?
Go to the top of the page
 
+Quote Post
Gate
сообщение May 24 2006, 12:34
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 859
Регистрация: 7-04-05
Из: Санкт-Петербург
Пользователь №: 3 943



Цитата(sazh @ May 24 2006, 16:01) *
///Вы невнимательно прочитали мой пост, или не подумали, а ведь собирались дальше сами. Замечу, что у меня выходной сигнал находится в тактовом домене - или обычного или задержанного, как сделаете.
Вы оперируете одним периодом этого клокового домена.
Во втором Вы действительно подхватите этот пичок. И получите импульс в период. А если фронт удасться зафиксировать и в следующем периоде, зафиксируете длительность в два периода. так и будете вобулировать.

Вы имеете в виду ситуацию, когда частоты близки и фронты будут совпадать с заданной точностью в течение не одного, а N периодов? Да, такое возможно, на выходе будет не однотактный строб, а длинный - ну выделите из него фронт стандартной цепочкой из 2 триггеров и xor, если задача это требует. У Вашего кода будет такой же недостаток.

A propos а что такое "вобулировать"?
Цитата
Хоть и не царское это дело, может напишите модуль?

Вам должно быть стыдно:
Код
assign d=#0.5 clk1;
assign c1= clk2;
assign c2=#1.0 clk2;
always @(posedge c1) d1<=d;
always @(posedge c2) d2<=d;
assign out=(d2 & ~d1);

Без сброса, убирания метастаб. и пр.


--------------------
"Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается." (с) С.Лем
Go to the top of the page
 
+Quote Post
KykyryzzZ
сообщение May 24 2006, 13:05
Сообщение #15



***

Группа: Свой
Сообщений: 404
Регистрация: 20-10-05
Пользователь №: 9 885



Цитата(Gate @ May 24 2006, 15:58) *
1. У Вас на выходе асинхронная игла с неопределенной сколь угодно малой длительностью. Что потом с ней делать дальше?
2. Причем при точном совпадении фронтов ее длительность =0 (если пренебречь задержками в И), т.е. возможна потеря.
3. Выходной сигнал будет всегда, если на И исказится положительный полупериод быстрейшего клока, т.е. время совпадения жестко определено и равно половине периода быстрейшего клока.

Согласен
Go to the top of the page
 
+Quote Post

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

 


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


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