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

 
 
> Интересная задачка
LeonY
сообщение May 26 2006, 09:21
Сообщение #1


Знающий
****

Группа: Админы
Сообщений: 689
Регистрация: 24-06-04
Из: South Africa
Пользователь №: 164



Возникла интересная задачка, предельно простая в описании, но решения я пока не нахожу.

Нужен "счетчик" с четырьмя входными сигналами: UpEnable, ClkUp и DownEnable, ClkDown. Про всякое типа Reset не говорю.

ClkUp и ClkDown - две независимые тактовые последовательности, асинхронные относительно друг-друга, с неизвестным соотношением частот.

Вот по-моему и все...


--------------------
"В мире есть две бесконечные вещи: Вселенная и человеческая глупость. За Вселенную, впрочем, поручиться не могу". (С)

А. Эйнштейн.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 13)
iosifk
сообщение May 26 2006, 09:28
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(LeonY @ May 26 2006, 13:21) *
Возникла интересная задачка, предельно простая в описании, но решения я пока не нахожу.

Нужен "счетчик" с четырьмя входными сигналами: UpEnable, ClkUp и DownEnable, ClkDown. Про всякое типа Reset не говорю.

ClkUp и ClkDown - две независимые тактовые последовательности, асинхронные относительно друг-друга, с неизвестным соотношением частот.

Вот по-моему и все...


Тривиальный указатель адреса на FIFO. В их описаниях и надо смотреть.


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
LeonY
сообщение May 26 2006, 09:32
Сообщение #3


Знающий
****

Группа: Админы
Сообщений: 689
Регистрация: 24-06-04
Из: South Africa
Пользователь №: 164



Цитата(iosifk @ May 26 2006, 11:28) *
Тривиальный указатель адреса на FIFO. В их описаниях и надо смотреть.

А поточнее можно - где именно???


--------------------
"В мире есть две бесконечные вещи: Вселенная и человеческая глупость. За Вселенную, впрочем, поручиться не могу". (С)

А. Эйнштейн.
Go to the top of the page
 
+Quote Post
vetal
сообщение May 26 2006, 09:34
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553



Интересная задачка.

с ответом опоздалsmile.gif
http://www.opencores.org, generic_fifos
Go to the top of the page
 
+Quote Post
kst
сообщение May 26 2006, 09:53
Сообщение #5


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

Группа: Свой
Сообщений: 141
Регистрация: 16-06-05
Из: Нижний Новгород
Пользователь №: 6 065



Про переключение между двумя клоками можно посмотреть в юзер гайде на Virtex2 (UG002, стр.71)
http://www.xilinx.com/bvdocs/userguides/ug002.pdf
Есть там такая штука - BUFGMUX.
Go to the top of the page
 
+Quote Post
iosifk
сообщение May 26 2006, 10:09
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(LeonY @ May 26 2006, 13:32) *
Цитата(iosifk @ May 26 2006, 11:28) *

Тривиальный указатель адреса на FIFO. В их описаниях и надо смотреть.

А поточнее можно - где именно???


Synthesis and Scripting Techniques for Designing Multi-Asynchronous Clock Designs

И еще много чего там есть:

www.sunburst-design.com/papers


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
LeonY
сообщение May 26 2006, 12:15
Сообщение #7


Знающий
****

Группа: Админы
Сообщений: 689
Регистрация: 24-06-04
Из: South Africa
Пользователь №: 164



Цитата(iosifk @ May 26 2006, 12:09) *
Цитата(LeonY @ May 26 2006, 13:32) *

Цитата(iosifk @ May 26 2006, 11:28) *

Тривиальный указатель адреса на FIFO. В их описаниях и надо смотреть.

А поточнее можно - где именно???


Synthesis and Scripting Techniques for Designing Multi-Asynchronous Clock Designs

И еще много чего там есть:

www.sunburst-design.com/papers

Посмотрел - действительно много интересной информации, но это не то, что меня интересует сейчас. Мне надо чего-то на функциональном уровне, а с проблемами метастабильности я буду бороться потом smile.gif

Цитата(kst @ May 26 2006, 11:53) *
Про переключение между двумя клоками можно посмотреть в юзер гайде на Virtex2 (UG002, стр.71)
http://www.xilinx.com/bvdocs/userguides/ug002.pdf
Есть там такая штука - BUFGMUX.

Не понял связи - во-первых, мне надо не для Xilinx-а, но это не столь и важно, а второе - мне не надо переключать клоки в принципе


--------------------
"В мире есть две бесконечные вещи: Вселенная и человеческая глупость. За Вселенную, впрочем, поручиться не могу". (С)

А. Эйнштейн.
Go to the top of the page
 
+Quote Post
Wild
сообщение May 26 2006, 12:29
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 216
Регистрация: 26-05-06
Из: Коломна
Пользователь №: 17 479



как Вам такая структура:

signal UpCounter:std_logic_vector(n downto 0)
signal DownCounter:std_logic_vector(n downto 0)

process (clkUp,Reset)
begin
if Reset='1' then
UpCounter<=(others =>'0');
elsif ClkUp'event and ClkUp='1' then
If UpEnable='1' then
UpCounter<=UpCounter+'1';
end if;
end if;
end process;

process (clkDown,Reset)
begin
if Reset='1' then
DownCounter<=(others =>'0');
elsif ClkDown'event and ClkDown='1' then
If DownEnable='1' then
DownCounter<=DownCounter+'1';
end if;
end if;
end process;

CounterResult<=UpCounter-DownCounter;
Go to the top of the page
 
+Quote Post
k0t
сообщение May 26 2006, 12:34
Сообщение #9


Участник
*

Группа: Свой
Сообщений: 53
Регистрация: 11-01-05
Пользователь №: 1 889



//Посмотрел - действительно много интересной информации, но это не то, что меня интересует сейчас. Мне надо чего-то на функциональном уровне, а с проблемами метастабильности я буду бороться потом smile.gif

Если на функциональном уровне - два счетчика с енейблами, один работает на частоте ClkUp, второй на ClkDown и вычитатель на который подается то, что насчитали счетчики.

Либо выделять фронты обеих частот (работая на заведомо более высокой частоте) и управлять реверсивным счетчиком. Последний вариант мне больше нравится, но катит только если есть более высокая частота.
Go to the top of the page
 
+Quote Post
Oldring
сообщение May 26 2006, 13:09
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(LeonY @ May 26 2006, 13:21) *
Возникла интересная задачка, предельно простая в описании, но решения я пока не нахожу.

Нужен "счетчик" с четырьмя входными сигналами: UpEnable, ClkUp и DownEnable, ClkDown. Про всякое типа Reset не говорю.

ClkUp и ClkDown - две независимые тактовые последовательности, асинхронные относительно друг-друга, с неизвестным соотношением частот.


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

Во-первых, что такое счетчик? Самый обычный, одноклоковый? Попробуйте дать его формальное определение. Наверняка не обойдетесь без дискретного времени: "по приходу клоку происходит изменение выходов". Счетчик в непрерывном времени нереализуем без дополнительного упоминания переходных процессов - любые счетчики в непрерывном времени являются лишь аппроксимацией идеального счетчика. Можно или нет пользоваться той или иной аппроксимацией - зависит от применения. К счастью, в большинстве применений время дискретно и совпадает с доменом клока самого счетчика, и никаких вопросов не возникает.

Сложность рассматриваемой задачи связана с тем, что в случае двух независимых клоков, очевидно, нет такого единого дискретного времени, в котором можно было бы просто и однозначно определить понятие "двухклоковый счетчик". То есть, с самого начала приходится работать с аппроксимациями, несколько вариантов таких аппроксимаций было накидано ранее, но какую из них можно применять - зависит от несообщенных деталей применения. Возможно, что ни один из изложенных вариантов не подойдет - и прийдется выдумывать что-то совсем экзотическое и сильно навороченное.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
iosifk
сообщение May 26 2006, 13:17
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(iosifk @ May 26 2006, 14:09) *
И еще много чего там есть:

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

Я надеялся, что Вы сами это найдете....
Удачи!


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
LeonY
сообщение May 27 2006, 11:19
Сообщение #12


Знающий
****

Группа: Админы
Сообщений: 689
Регистрация: 24-06-04
Из: South Africa
Пользователь №: 164



Цитата(k0t @ May 26 2006, 14:34) *
//Посмотрел - действительно много интересной информации, но это не то, что меня интересует сейчас. Мне надо чего-то на функциональном уровне, а с проблемами метастабильности я буду бороться потом smile.gif

Если на функциональном уровне - два счетчика с енейблами, один работает на частоте ClkUp, второй на ClkDown и вычитатель на который подается то, что насчитали счетчики.

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

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

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


--------------------
"В мире есть две бесконечные вещи: Вселенная и человеческая глупость. За Вселенную, впрочем, поручиться не могу". (С)

А. Эйнштейн.
Go to the top of the page
 
+Quote Post
k0t
сообщение May 28 2006, 11:38
Сообщение #13


Участник
*

Группа: Свой
Сообщений: 53
Регистрация: 11-01-05
Пользователь №: 1 889



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

Все зависит от того, что за данные нужно получить. И как они потом будут обрабатываться.
Цитата
Очень бы не хотелось, так как не очень понятно как генерировать эту "заведомо более высокую частоту", т.е. не сам процесс получения ее - тут все просто, а от чего отталкиваться. Да и есть еще одно ограничение - требуемые частоты (или одна из них) уже могут, и, почти гарантированно - будут, сидеть на пределе возможностей железа.

Так все-таки одна частота известна?
Go to the top of the page
 
+Quote Post
GetSmart
сообщение May 28 2006, 18:37
Сообщение #14


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата
Об этом варианте я подумал сразу - вроде все ничего, но что произойдет со всей этой халабудой в момент переполнения одного из счетчиков???

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

Другой вариант - корректировать оба счётчика в момент прихода любого строба. То есть, на который счётчик приходит строб - он прибавляет еденицу и вычитает значение противоположного счётчика. А противоположный при этом обнуляется. Для вычитающего счётчика - наоборот. Однако, это ненадёжный вариант. Так как он требует чтобы в этот момент не было прихода второго строба. И скорее всего он неработоспособный.

Вобщем, на мой взляд первый вариант самый разумный и надёжный.
____________________
А кто-нибудь может привести пример логического элемента с двумя строб-входами? Мне почему-то ничего в голову не приходит.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post

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

 


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


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