|
Схема совпадений, необходимо определить момент совпадения тактовых сигналов |
|
|
|
May 23 2006, 23:54
|
Участник

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

|
что-то форум слегка глючит и сообщение куда-то пропало. пробую ещё раз
доброго всем времени суток.
по учёбе возникла необходимость промоделировать парочку схем, методом научного тыка вроде бы немного разобрался, но не могу придумать, как реализовать вот что:
у меня есть 2 тактовых сигнала с близкими частотами, например, 125 и 130 МГц. они стартуют в разные моменты времени и по идее, рано или поздно их передние фронты должны совпасть. вот этот момент и нужно определить - то есть сделать схему совпадений для тактовых сигналов.
есть какой-нибудь _простой_ метод, позволяющий это сделать? может, какая-нить хитрая мегафункция имеется...
ЗЫ. пользуюсь Quartus, если это имеет значение.
|
|
|
|
|
May 24 2006, 07:17
|
Частый гость
 
Группа: Свой
Сообщений: 93
Регистрация: 8-05-06
Пользователь №: 16 880

|
Сначала объедините по И оба сигнала, затем этот объединенный и сигнал более высокой частоты подайте на xor. Осталось отловить тот тактовый период, на котором не будет импульса на вых. xor
|
|
|
|
|
May 24 2006, 09:56
|
Знающий
   
Группа: Свой
Сообщений: 859
Регистрация: 7-04-05
Из: Санкт-Петербург
Пользователь №: 3 943

|
Я бы сделал так: 1. Рассматривать один сигнал как клок, другой - как данные. 2. Приготовить из клока задержаный на небольшое время. Этоя время будет задавать точность, с которой определится время совпадения фронтов. 3. Данные щелкать в регистры (возможно, в 2 для убирания метастабильности) по клоку и задержаному клоку. 4. Если защелкнуто по клоку 0, а по задержанному 1, то был фронт в промежутке между. Эта система определит совпадение фронтов, если фронт по данным пройдет позже фронта клока. Чтобы не потарять ситуацию, когда фронт данных ранише фронта клока - либо меняете местами клок и данные, либо задерживаете данные и дважды клок - сообразите сами, писать лень.
--------------------
"Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается." (с) С.Лем
|
|
|
|
|
May 24 2006, 11:04
|
Знающий
   
Группа: Свой
Сообщений: 859
Регистрация: 7-04-05
Из: Санкт-Петербург
Пользователь №: 3 943

|
Цитата(sazh @ May 24 2006, 14:16)  А Вы все не пишите. Вы только приготовьте из клока задержаный на небольшое время. А дальше мы уж сами. Чувствуется ехидная ирония Зависит от задачи: если только моделирование - то assign clk1=#0.5 clk Если в железе - использовать pll, или цинично пропустить через несколько лог. элементов (умоляю, не надо мне объяснять, что в парадигме синхронного дизайна это моветон, я знаю и мне стыдно  ) . К сожалению, задача поставлена некорректно, т.к. не задана точность (и вообще похоже на учебную задачу). В симуляторе, например, ждать совпадения 2-х произвольных фронтов можно очееееень долго.
--------------------
"Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается." (с) С.Лем
|
|
|
|
|
May 24 2006, 11:04
|

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

|
Цитата(Kazap @ May 24 2006, 11:17)  Сначала объедините по И оба сигнала, затем этот объединенный и сигнал более высокой частоты подайте на xor. Осталось отловить тот тактовый период, на котором не будет импульса на вых. xor  А чем такой подход не нравится? Только здесь еще будут выделяться совпадения по спаду, надо придумать как их отбрасывать
|
|
|
|
|
May 24 2006, 11:38
|
Знающий
   
Группа: Свой
Сообщений: 859
Регистрация: 7-04-05
Из: Санкт-Петербург
Пользователь №: 3 943

|
Цитата(sazh @ May 24 2006, 15:26)  // Эта система определит совпадение фронтов, если фронт по данным пройдет позже фронта клока. Чтобы не потарять ситуацию, когда фронт данных раньше фронта клока - либо меняете местами клок и данные, либо задерживаете данные и дважды клок. И что в результате. Получим два отклика по одному фронту? А длительность этих откликов уже никому не нужна?.На какой частоте приемника можно уверено зафиксировать такой импульс? Да еще соблюсти времена установки данных для корректной работы в программируемой логике. Вы невнимательно прочитали мой пост, или не подумали, а ведь собирались дальше сами. Замечу, что у меня выходной сигнал находится в тактовом домене - или обычного или задержанного, как сделаете. Цитата Все что Вы предлагаете, это по сути эквивалент решения, приведенного мною Выше. И ничего другого быть не может. Все в мире эквивалентно, ибо имеет одного создателя. А дьявол кроется в деталях. Если в задаче поставить точность 1 нс, то моим способом можно сделать, а как сделать внутреннюю частоту fpga 1 ГГЦ? Тогда надо вводить фазовые сдвиго Вашего базового клока на 90, 180 и 270 градусов и работать в их доменах, тогда частоту можно уронить в 4 раза.
--------------------
"Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается." (с) С.Лем
|
|
|
|
|
May 24 2006, 11:58
|
Знающий
   
Группа: Свой
Сообщений: 859
Регистрация: 7-04-05
Из: Санкт-Петербург
Пользователь №: 3 943

|
Цитата(KykyryzzZ @ May 24 2006, 15:04)  Цитата(Kazap @ May 24 2006, 11:17)  Сначала объедините по И оба сигнала, затем этот объединенный и сигнал более высокой частоты подайте на xor. Осталось отловить тот тактовый период, на котором не будет импульса на вых. xor  А чем такой подход не нравится? Только здесь еще будут выделяться совпадения по спаду, надо придумать как их отбрасывать 1. У Вас на выходе асинхронная игла с неопределенной сколь угодно малой длительностью. Что потом с ней делать дальше? 2. Причем при точном совпадении фронтов ее длительность =0 (если пренебречь задержками в И), т.е. возможна потеря. 3. Выходной сигнал будет всегда, если на И исказится положительный полупериод быстрейшего клока, т.е. время совпадения жестко определено и равно половине периода быстрейшего клока.
--------------------
"Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается." (с) С.Лем
|
|
|
|
|
May 24 2006, 12:34
|
Знающий
   
Группа: Свой
Сообщений: 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); Без сброса, убирания метастаб. и пр.
--------------------
"Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается." (с) С.Лем
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|