Перейти к содержанию
    

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

 

Помогите определиться с возможными вариантами решения задачки:

Есть 2-а clock сигнала с частотами f1 и f2, причем f1 > f2. Хотелось бы написать на VHDL универсальный модуль делителя f1 на f2.

К примеру 40МГц превратить в 8МГц, путем деления на 5 Гц.

 

Какие будут предложения?

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

 

Спасибо.

Изменено пользователем GGGG

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Помогите определиться с возможными вариантами решения задачки:

Есть 2-а clock сигнала с частотами f1 и f2, причем f1 > f2. Хотелось бы написать на VHDL универсальный модуль делителя f1 на f2.

К примеру 40МГц превратить в 8МГц, путем деления на 5МГц.

 

Какие будут предложения?

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

К примеру 40МГц превратить в 8МГц, путем деления на 5 Гц.

 

 

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

 

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какие будут предложения?

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

 

Спасибо.

 

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Видимо Вам нужен делитель по модулю. Может кто переведет.

// 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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

Изменено пользователем GGGG

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

счетчик может делить только на величину, кратную 2 (f/2, f/4 ...)

Я Вас умоляю!!!

ОДИН регистр делит на 2, ДВА последовательно на четыре и т.д.... если больше не строить никаких комбинационных схем... :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т.е., если у одного инженера зарплата 30 т.p., а у другого 6 т.р. - то получается, что первый инженер получает больше второго в 5 т.рублей? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а если, к примеру, из 40МГц надо получить 8256 кГц? То как тогда быть?

Поделить на 4845 :) Зато скважность сигнала можно получить просто идеальную :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Помогите определиться с возможными вариантами решения задачки:

Есть 2-а clock сигнала с частотами f1 и f2, причем f1 > f2. Хотелось бы написать на VHDL универсальный модуль делителя f1 на f2.

К примеру 40МГц превратить в 8МГц, путем деления на 5 Гц.

 

Какие будут предложения?

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

 

Спасибо.

Еще раз внимательно перечитал вопрос, напряг все самые извилистые извилины и пришел к выводу, что человек хочет получить делитель частоты, в котором коэффициент деления определяется второй входной частотой.

Тогда вариант один: сделать частотомер по сигналу f2, т.е. подать опорную частоту, считать число фронтов f2, получать ЧИСЛО и это ЧИСЛО использовать в качестве коэффициента делителя.

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...