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

 
 
> Делитель f1 на f2, это возможно?
GGGG
сообщение Nov 29 2005, 06:02
Сообщение #1


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

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



Доброго всем времени суток!

Помогите определиться с возможными вариантами решения задачки:
Есть 2-а clock сигнала с частотами f1 и f2, причем f1 > f2. Хотелось бы написать на VHDL универсальный модуль делителя f1 на f2.
К примеру 40МГц превратить в 8МГц, путем деления на 5 Гц.

Какие будут предложения?
Какие ограничения возникают при написании такого модуля?

Спасибо.

Сообщение отредактировал GGGG - Nov 29 2005, 08:34
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 20)
andrew_b
сообщение Nov 29 2005, 06:07
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(GGGG @ Nov 29 2005, 09:02) *
Помогите определиться с возможными вариантами решения задачки:
Есть 2-а clock сигнала с частотами f1 и f2, причем f1 > f2. Хотелось бы написать на VHDL универсальный модуль делителя f1 на f2.
К примеру 40МГц превратить в 8МГц, путем деления на 5МГц.

Какие будут предложения?
Какие ограничения возникают при написании такого модуля?

Ничего не понял. Делим мегагерцы на мегагерцы и получаем мегагерцы?
Go to the top of the page
 
+Quote Post
GGGG
сообщение Nov 29 2005, 08:35
Сообщение #3


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

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



Цитата(andrew_b @ Nov 29 2005, 09:07) *
Ничего не понял. Делим мегагерцы на мегагерцы и получаем мегагерцы?


Сорри, уже поправил. smile.gif Цифры были приведены как пример. А сделать хотелось бы делитель одной частоты на другую.
Go to the top of the page
 
+Quote Post
dxp
сообщение Nov 29 2005, 09:32
Сообщение #4


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(GGGG @ Nov 29 2005, 12:02) *
К примеру 40МГц превратить в 8МГц, путем деления на 5 Гц.



Цитата(GGGG @ Nov 29 2005, 14:35) *
Цитата(andrew_b @ Nov 29 2005, 09:07) *

Ничего не понял. Делим мегагерцы на мегагерцы и получаем мегагерцы?


Сорри, уже поправил. smile.gif Цифры были приведены как пример. А сделать хотелось бы делитель одной частоты на другую.

Как-то странно Вы поправили - мегагерцы в герцы перевели. smile.gif Все равно делим частоту на частоту и получаем частоту. smile.gif Наверное имелось в виду, что делим частоту в N раз и получаем поделенную частоту.

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


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
maksya
сообщение Nov 29 2005, 11:29
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 253
Регистрация: 28-08-04
Из: Ленинград
Пользователь №: 562



Цитата(GGGG @ Nov 29 2005, 09:02) *
Какие будут предложения?
Какие ограничения возникают при написании такого модуля?

Спасибо.


предложение 1: скорректируй до конца условие задачи. [Гц]/[Гц] = число, а не Гц. Надо нечто вроде делителя частоты.

предложение 2: дествительно, как правильно заметил dxp, для деления частоты в ПЛИС лучше пользоваться встроенными блоками PLL. А счетчик может делить только на величину, кратную 2 (f/2, f/4 ...)

предложение 3: не пытайтесь строить perpettum mobile, универсальность не всегда выгодна


--------------------
Лень - это не врожденное чувство русского человека, а средство борьбы с неуемной, но бестолковой энергией начальника.
Go to the top of the page
 
+Quote Post
sazh
сообщение Nov 29 2005, 14:41
Сообщение #6


Гуру
******

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



Видимо Вам нужен делитель по модулю. Может кто переведет.
// A modulus 8 up counter
module ct_module (clk, out_a, out_b);

parameter modulus = 8;
parameter width = 3;

input clk;
output out_a;
output out_b;

reg [width-1:0] ct;
reg out_b;

always @(posedge clk)
begin
if (ct == (modulus-1))
ct <= {width{1'b0}};
else
ct <= ct + 1'b1;
end

assign out_a = ct[width-1];

always @(posedge clk)
begin
out_b <= (ct == (modulus-1));
end

endmodule
Go to the top of the page
 
+Quote Post
GGGG
сообщение Nov 29 2005, 15:12
Сообщение #7


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

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



Спасибо за ответы.

Вот что еще интересно. В данной задачке хотелось, чтобы один из clockов выступал в роли коэффициента деления.

Т.е., если не вдаваться в размерности, то подав на 1 pin clock с частотой f1, а на 2 pin с частотой f2, на выходе получить clock с частотой f3= f1/f2. (опять, к примеру 30Мгц и 6Гц а на выходе получить 5МГц)

Прошу отнестись с пониманием к этому вопросу, т.к. эта задача чисто абстрактная и нацелина на мое любопытство.

Сообщение отредактировал GGGG - Nov 29 2005, 15:12
Go to the top of the page
 
+Quote Post
Gate
сообщение Nov 29 2005, 17:09
Сообщение #8


Знающий
****

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



Цитата(dxp @ Nov 29 2005, 12:32) *
Как-то странно Вы поправили - мегагерцы в герцы перевели. smile.gif Все равно делим частоту на частоту и получаем частоту. smile.gif Наверное имелось в виду, что делим частоту в N раз и получаем поделенную частоту.

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


На самом деле делить частоту не нужно - можно использовать выход счетчика как сигнал clock enable. При этом глобальная частота остается одна.


--------------------
"Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается." (с) С.Лем
Go to the top of the page
 
+Quote Post
stalko
сообщение Nov 29 2005, 19:10
Сообщение #9


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

Группа: Свой
Сообщений: 139
Регистрация: 5-05-05
Из: Зеленоград
Пользователь №: 4 762



Цитата(maksya @ Nov 29 2005, 14:29) *
счетчик может делить только на величину, кратную 2 (f/2, f/4 ...)

Я Вас умоляю!!!
ОДИН регистр делит на 2, ДВА последовательно на четыре и т.д.... если больше не строить никаких комбинационных схем... smile.gif
Go to the top of the page
 
+Quote Post
GGGG
сообщение Nov 29 2005, 19:25
Сообщение #10


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

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



а если, к примеру, из 40МГц надо получить 8256 кГц? То как тогда быть?
Go to the top of the page
 
+Quote Post
psL
сообщение Nov 29 2005, 19:38
Сообщение #11


Знающий
****

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



Т.е., если у одного инженера зарплата 30 т.p., а у другого 6 т.р. - то получается, что первый инженер получает больше второго в 5 т.рублей? smile.gif
Go to the top of the page
 
+Quote Post
stalko
сообщение Nov 29 2005, 19:43
Сообщение #12


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

Группа: Свой
Сообщений: 139
Регистрация: 5-05-05
Из: Зеленоград
Пользователь №: 4 762



Цитата(GGGG @ Nov 29 2005, 22:25) *
а если, к примеру, из 40МГц надо получить 8256 кГц? То как тогда быть?

Поделить на 4845 smile.gif Зато скважность сигнала можно получить просто идеальную smile.gif
Go to the top of the page
 
+Quote Post
psL
сообщение Nov 29 2005, 19:46
Сообщение #13


Знающий
****

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



Читайте FAQ Общие вопросы п.11
http://fpga-faq.narod.ru/#%C0%20%EA%E0%EA%...F2%EE%F2%F3%20Y?
Go to the top of the page
 
+Quote Post
tegumay
сообщение Nov 29 2005, 21:25
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 264
Регистрация: 16-09-05
Из: Москва
Пользователь №: 8 640



Э-э-э построение счетчиков (aka делителей) c требуемым коэффициентом счета обязательная задача, по крайней мере нас этим и в техникуме и в институте мурыжили, мурыжат и надеюсь след. поколение будут мурыжить maniac.gif


--------------------
;X
Go to the top of the page
 
+Quote Post
stalko
сообщение Nov 29 2005, 22:03
Сообщение #15


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

Группа: Свой
Сообщений: 139
Регистрация: 5-05-05
Из: Зеленоград
Пользователь №: 4 762



Цитата(GGGG @ Nov 29 2005, 09:02) *
Доброго всем времени суток!

Помогите определиться с возможными вариантами решения задачки:
Есть 2-а clock сигнала с частотами f1 и f2, причем f1 > f2. Хотелось бы написать на VHDL универсальный модуль делителя f1 на f2.
К примеру 40МГц превратить в 8МГц, путем деления на 5 Гц.

Какие будут предложения?
Какие ограничения возникают при написании такого модуля?

Спасибо.

Еще раз внимательно перечитал вопрос, напряг все самые извилистые извилины и пришел к выводу, что человек хочет получить делитель частоты, в котором коэффициент деления определяется второй входной частотой.
Тогда вариант один: сделать частотомер по сигналу f2, т.е. подать опорную частоту, считать число фронтов f2, получать ЧИСЛО и это ЧИСЛО использовать в качестве коэффициента делителя.
Предупреждаю сразу, будет приличный переходной процесс, если частота опоры частотомера будет низкой, либо большая ошибка, если высокой.
Хотя мелькал в голове другой вариант: может надо ВЫЧЕСТЬ частоты? Типа смесителя цифрового сделать...
Go to the top of the page
 
+Quote Post
GGGG
сообщение Nov 30 2005, 15:20
Сообщение #16


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

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



Цитата(stalko @ Nov 30 2005, 01:03) *
Тогда вариант один: сделать частотомер по сигналу f2, т.е. подать опорную частоту, считать число фронтов f2, получать ЧИСЛО и это ЧИСЛО использовать в качестве коэффициента делителя.

Хотя мелькал в голове другой вариант: может надо ВЫЧЕСТЬ частоты? Типа смесителя цифрового сделать...


Хм.. интересно... но тогда можно и так:
т.к. f1 > f2 (наложем ограничения в 10 раз) то в качестве опорной частоты можно взять f1.
После этого поставить счетчик переходов f1 за период f2. Получаем число, которое соответсвуюет значию частоты которую надо получить на f3. Но это не коэффициент деления ... по-моему sad.gif .
Следовательно, частотомер не поможет или что-то не ясно.

Про вычитание: смеситель это конечно хорошо.... smile.gif smile.gif smile.gif , но опять не то. Он не будет выполнять необходимые операции, либо его надо дорабатывать или что-то в нем изобретать. Мне эт тоже пока не очень ясно.
Go to the top of the page
 
+Quote Post
stalko
сообщение Dec 1 2005, 07:39
Сообщение #17


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

Группа: Свой
Сообщений: 139
Регистрация: 5-05-05
Из: Зеленоград
Пользователь №: 4 762



Цитата(GGGG @ Nov 30 2005, 18:20) *
Хм.. интересно... но тогда можно и так:
т.к. f1 > f2 (наложем ограничения в 10 раз) то в качестве опорной частоты можно взять f1.
После этого поставить счетчик переходов f1 за период f2. Получаем число, которое соответсвуюет значию частоты которую надо получить на f3. Но это не коэффициент деления ... по-моему sad.gif .
Следовательно, частотомер не поможет или что-то не ясно.

То о чем Вы сейчас говорите, и то, о чем я говорил, СОВСЕМ не одно и то же. Так Вы измерите, во сколько раз f1 больше f2. А оно Вам надо?
Вам нужно все приводить к Гц, т.е. нужно измерять количество фронтов f2 в СЕКУНДУ, либо в другой период, а потом нормировать к секунде, но так точность будет маленькой.
Цитата(GGGG @ Nov 30 2005, 18:20) *
Про вычитание: смеситель это конечно хорошо.... smile.gif smile.gif smile.gif , но опять не то. Он не будет выполнять необходимые операции, либо его надо дорабатывать или что-то в нем изобретать. Мне эт тоже пока не очень ясно.
Go to the top of the page
 
+Quote Post
GGGG
сообщение Dec 2 2005, 06:08
Сообщение #18


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

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



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

И все-таки как все это запихнуть в кубик с 2-я входами и 1 выходом?

С уважением, GGGG.
Go to the top of the page
 
+Quote Post
Xorval
сообщение Dec 3 2005, 07:15
Сообщение #19


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

Группа: Участник
Сообщений: 79
Регистрация: 1-06-05
Из: Мос. обл.
Пользователь №: 5 620



ошибка при редактировании.
Go to the top of the page
 
+Quote Post
Xorval
сообщение Dec 3 2005, 07:36
Сообщение #20


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

Группа: Участник
Сообщений: 79
Регистрация: 1-06-05
Из: Мос. обл.
Пользователь №: 5 620



Цитата(GGGG @ Nov 30 2005, 18:20) *
Хм.. интересно... но тогда можно и так:
т.к. f1 > f2 (наложем ограничения в 10 раз) то в качестве опорной частоты можно взять f1.
После этого поставить счетчик переходов f1 за период f2. Получаем число, которое соответсвуюет значию частоты которую надо получить на f3. Но это не коэффициент деления ... по-моему sad.gif .
Следовательно, частотомер не поможет или что-то не ясно.

Вот, вот!
Тут вы как раз и уперлись в размерность. Полученное число будет равно f3, выраженной в герцах (или, например, в смупсах smile.gif, так как оно безразмерное). Однако получить эту f3 без третьего генератора (с фиксированной частотой) не выйдет. Так как f1 и f2 заранее неизвестны, то вся система не имеет в явном виде никакой опорной частоты, относительно которой можно было бы все считать.

Хорошей аналогией может служить задача отмерить отрезок с длиной равной отношению длин двух других отрезков - например 10м и 2м. Смотрим, что отрезок2 укладывается в отрезок1 5 раз. Однако без мерного 1-метрового отрезка мы все равно 5-метровый не построим.

Так что берите опорный генератор (например тактовую частоту процессора) и синтезируйте f3 обычными способами. А ее значение и в самом деле получится на выходе вашего счетчика.
Go to the top of the page
 
+Quote Post
GGGG
сообщение Dec 9 2005, 06:40
Сообщение #21


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

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



Да, без опорного сигнала не получаеться ни как sad.gif.

Поэтому, решение было построено на принципе 3 входа 1 выход:
Входы:
1,2 - входы сигналов, которые надо поделить
3 - опорник
Выходы:
1 - результат

частота опорника должна быть >=10*максимальная частота 1 или 2 входа. (это одно из ограничений)
А так получаеться вся структура построена на счетчиках.

Всем спасибо за участие. smile.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 Текстовая версия Сейчас: 18th July 2025 - 05:27
Рейтинг@Mail.ru


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