LeonY 0 26 мая, 2006 Опубликовано 26 мая, 2006 · Жалоба Возникла интересная задачка, предельно простая в описании, но решения я пока не нахожу. Нужен "счетчик" с четырьмя входными сигналами: UpEnable, ClkUp и DownEnable, ClkDown. Про всякое типа Reset не говорю. ClkUp и ClkDown - две независимые тактовые последовательности, асинхронные относительно друг-друга, с неизвестным соотношением частот. Вот по-моему и все... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 26 мая, 2006 Опубликовано 26 мая, 2006 · Жалоба Возникла интересная задачка, предельно простая в описании, но решения я пока не нахожу. Нужен "счетчик" с четырьмя входными сигналами: UpEnable, ClkUp и DownEnable, ClkDown. Про всякое типа Reset не говорю. ClkUp и ClkDown - две независимые тактовые последовательности, асинхронные относительно друг-друга, с неизвестным соотношением частот. Вот по-моему и все... Тривиальный указатель адреса на FIFO. В их описаниях и надо смотреть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LeonY 0 26 мая, 2006 Опубликовано 26 мая, 2006 · Жалоба Тривиальный указатель адреса на FIFO. В их описаниях и надо смотреть. А поточнее можно - где именно??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vetal 0 26 мая, 2006 Опубликовано 26 мая, 2006 · Жалоба Интересная задачка. с ответом опоздал:) http://www.opencores.org, generic_fifos Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kst 0 26 мая, 2006 Опубликовано 26 мая, 2006 · Жалоба Про переключение между двумя клоками можно посмотреть в юзер гайде на Virtex2 (UG002, стр.71) http://www.xilinx.com/bvdocs/userguides/ug002.pdf Есть там такая штука - BUFGMUX. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 26 мая, 2006 Опубликовано 26 мая, 2006 · Жалоба Тривиальный указатель адреса на FIFO. В их описаниях и надо смотреть. А поточнее можно - где именно??? Synthesis and Scripting Techniques for Designing Multi-Asynchronous Clock Designs И еще много чего там есть: www.sunburst-design.com/papers Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LeonY 0 26 мая, 2006 Опубликовано 26 мая, 2006 · Жалоба Тривиальный указатель адреса на FIFO. В их описаниях и надо смотреть. А поточнее можно - где именно??? Synthesis and Scripting Techniques for Designing Multi-Asynchronous Clock Designs И еще много чего там есть: www.sunburst-design.com/papers Посмотрел - действительно много интересной информации, но это не то, что меня интересует сейчас. Мне надо чего-то на функциональном уровне, а с проблемами метастабильности я буду бороться потом :) Про переключение между двумя клоками можно посмотреть в юзер гайде на Virtex2 (UG002, стр.71) http://www.xilinx.com/bvdocs/userguides/ug002.pdf Есть там такая штука - BUFGMUX. Не понял связи - во-первых, мне надо не для Xilinx-а, но это не столь и важно, а второе - мне не надо переключать клоки в принципе Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k0t 0 26 мая, 2006 Опубликовано 26 мая, 2006 · Жалоба //Посмотрел - действительно много интересной информации, но это не то, что меня интересует сейчас. Мне надо чего-то на функциональном уровне, а с проблемами метастабильности я буду бороться потом :) Если на функциональном уровне - два счетчика с енейблами, один работает на частоте ClkUp, второй на ClkDown и вычитатель на который подается то, что насчитали счетчики. Либо выделять фронты обеих частот (работая на заведомо более высокой частоте) и управлять реверсивным счетчиком. Последний вариант мне больше нравится, но катит только если есть более высокая частота. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 26 мая, 2006 Опубликовано 26 мая, 2006 · Жалоба Возникла интересная задачка, предельно простая в описании, но решения я пока не нахожу. Нужен "счетчик" с четырьмя входными сигналами: UpEnable, ClkUp и DownEnable, ClkDown. Про всякое типа Reset не говорю. ClkUp и ClkDown - две независимые тактовые последовательности, асинхронные относительно друг-друга, с неизвестным соотношением частот. Если чуть копнуть, то оказывается, что эта задачка не так примитивна, как кажется на первый взгляд, и связана с вопросами семантики языка, которым написано сообщение ;) Во-первых, что такое счетчик? Самый обычный, одноклоковый? Попробуйте дать его формальное определение. Наверняка не обойдетесь без дискретного времени: "по приходу клоку происходит изменение выходов". Счетчик в непрерывном времени нереализуем без дополнительного упоминания переходных процессов - любые счетчики в непрерывном времени являются лишь аппроксимацией идеального счетчика. Можно или нет пользоваться той или иной аппроксимацией - зависит от применения. К счастью, в большинстве применений время дискретно и совпадает с доменом клока самого счетчика, и никаких вопросов не возникает. Сложность рассматриваемой задачи связана с тем, что в случае двух независимых клоков, очевидно, нет такого единого дискретного времени, в котором можно было бы просто и однозначно определить понятие "двухклоковый счетчик". То есть, с самого начала приходится работать с аппроксимациями, несколько вариантов таких аппроксимаций было накидано ранее, но какую из них можно применять - зависит от несообщенных деталей применения. Возможно, что ни один из изложенных вариантов не подойдет - и прийдется выдумывать что-то совсем экзотическое и сильно навороченное. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 26 мая, 2006 Опубликовано 26 мая, 2006 · Жалоба И еще много чего там есть: www.sunburst-design.com/papers там же: Simulation and Synthesis Techniques for Asynchronous FIFO Design Simulation and Synthesis Techniques for Asynchronous FIFO Design with Asynchronous Pointer Comparisons Я надеялся, что Вы сами это найдете.... Удачи! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LeonY 0 27 мая, 2006 Опубликовано 27 мая, 2006 · Жалоба //Посмотрел - действительно много интересной информации, но это не то, что меня интересует сейчас. Мне надо чего-то на функциональном уровне, а с проблемами метастабильности я буду бороться потом :) Если на функциональном уровне - два счетчика с енейблами, один работает на частоте ClkUp, второй на ClkDown и вычитатель на который подается то, что насчитали счетчики. Об этом варианте я подумал сразу - вроде все ничего, но что произойдет со всей этой халабудой в момент переполнения одного из счетчиков??? Вот тут и проблема... Пытаюсь придумать что-то, чтобы перезагружать счетчики, по пока не могу врубиться что именно Либо выделять фронты обеих частот (работая на заведомо более высокой частоте) и управлять реверсивным счетчиком. Последний вариант мне больше нравится, но катит только если есть более высокая частота. Очень бы не хотелось, так как не очень понятно как генерировать эту "заведомо более высокую частоту", т.е. не сам процесс получения ее - тут все просто, а от чего отталкиваться. Да и есть еще одно ограничение - требуемые частоты (или одна из них) уже могут, и, почти гарантированно - будут, сидеть на пределе возможностей железа. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k0t 0 28 мая, 2006 Опубликовано 28 мая, 2006 · Жалоба Об этом варианте я подумал сразу - вроде все ничего, но что произойдет со всей этой халабудой в момент переполнения одного из счетчиков??? Вот тут и проблема... Пытаюсь придумать что-то, чтобы перезагружать счетчики, по пока не могу врубиться что именно Все зависит от того, что за данные нужно получить. И как они потом будут обрабатываться. Очень бы не хотелось, так как не очень понятно как генерировать эту "заведомо более высокую частоту", т.е. не сам процесс получения ее - тут все просто, а от чего отталкиваться. Да и есть еще одно ограничение - требуемые частоты (или одна из них) уже могут, и, почти гарантированно - будут, сидеть на пределе возможностей железа. Так все-таки одна частота известна? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 28 мая, 2006 Опубликовано 28 мая, 2006 · Жалоба Об этом варианте я подумал сразу - вроде все ничего, но что произойдет со всей этой халабудой в момент переполнения одного из счетчиков??? Если оба счётчика максимальной разрядности, какой и требуемый результат, то никаких проблем не должно быть. Это вероятнее всего самый надёжный вариант, работающий на максимально возможной частоте и без каких-либо ограничений. Лишь бы счётчики синхронно (одновременно) обновляли все свои выходы. Другой вариант - корректировать оба счётчика в момент прихода любого строба. То есть, на который счётчик приходит строб - он прибавляет еденицу и вычитает значение противоположного счётчика. А противоположный при этом обнуляется. Для вычитающего счётчика - наоборот. Однако, это ненадёжный вариант. Так как он требует чтобы в этот момент не было прихода второго строба. И скорее всего он неработоспособный. Вобщем, на мой взляд первый вариант самый разумный и надёжный. ____________________ А кто-нибудь может привести пример логического элемента с двумя строб-входами? Мне почему-то ничего в голову не приходит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться