GGGG 0 29 ноября, 2005 Опубликовано 29 ноября, 2005 (изменено) · Жалоба Доброго всем времени суток! Помогите определиться с возможными вариантами решения задачки: Есть 2-а clock сигнала с частотами f1 и f2, причем f1 > f2. Хотелось бы написать на VHDL универсальный модуль делителя f1 на f2. К примеру 40МГц превратить в 8МГц, путем деления на 5 Гц. Какие будут предложения? Какие ограничения возникают при написании такого модуля? Спасибо. Изменено 29 ноября, 2005 пользователем GGGG Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 29 ноября, 2005 Опубликовано 29 ноября, 2005 · Жалоба Помогите определиться с возможными вариантами решения задачки: Есть 2-а clock сигнала с частотами f1 и f2, причем f1 > f2. Хотелось бы написать на VHDL универсальный модуль делителя f1 на f2. К примеру 40МГц превратить в 8МГц, путем деления на 5МГц. Какие будут предложения? Какие ограничения возникают при написании такого модуля? Ничего не понял. Делим мегагерцы на мегагерцы и получаем мегагерцы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GGGG 0 29 ноября, 2005 Опубликовано 29 ноября, 2005 · Жалоба Ничего не понял. Делим мегагерцы на мегагерцы и получаем мегагерцы? Сорри, уже поправил. :) Цифры были приведены как пример. А сделать хотелось бы делитель одной частоты на другую. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 56 29 ноября, 2005 Опубликовано 29 ноября, 2005 · Жалоба К примеру 40МГц превратить в 8МГц, путем деления на 5 Гц. Ничего не понял. Делим мегагерцы на мегагерцы и получаем мегагерцы? Сорри, уже поправил. :) Цифры были приведены как пример. А сделать хотелось бы делитель одной частоты на другую. Как-то странно Вы поправили - мегагерцы в герцы перевели. :) Все равно делим частоту на частоту и получаем частоту. :) Наверное имелось в виду, что делим частоту в N раз и получаем поделенную частоту. Сделать это достаточно просто - используйте счетчик. С другой стороны, если надо иметь синхронные клоки, то этот вариант не пойдет. Для получения синхронных клоков надо использовать специальные аппаратные средства типа PLL. В этом случае коэффициенты умножения/деления, фазовые сдвиги и прочее задаются не HDL описанием, а с помощью параметров модуля, соответствующего аппаратному PLL. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maksya 0 29 ноября, 2005 Опубликовано 29 ноября, 2005 · Жалоба Какие будут предложения? Какие ограничения возникают при написании такого модуля? Спасибо. предложение 1: скорректируй до конца условие задачи. [Гц]/[Гц] = число, а не Гц. Надо нечто вроде делителя частоты. предложение 2: дествительно, как правильно заметил dxp, для деления частоты в ПЛИС лучше пользоваться встроенными блоками PLL. А счетчик может делить только на величину, кратную 2 (f/2, f/4 ...) предложение 3: не пытайтесь строить perpettum mobile, универсальность не всегда выгодна Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 5 29 ноября, 2005 Опубликовано 29 ноября, 2005 · Жалоба Видимо Вам нужен делитель по модулю. Может кто переведет. // 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GGGG 0 29 ноября, 2005 Опубликовано 29 ноября, 2005 (изменено) · Жалоба Спасибо за ответы. Вот что еще интересно. В данной задачке хотелось, чтобы один из clockов выступал в роли коэффициента деления. Т.е., если не вдаваться в размерности, то подав на 1 pin clock с частотой f1, а на 2 pin с частотой f2, на выходе получить clock с частотой f3= f1/f2. (опять, к примеру 30Мгц и 6Гц а на выходе получить 5МГц) Прошу отнестись с пониманием к этому вопросу, т.к. эта задача чисто абстрактная и нацелина на мое любопытство. Изменено 29 ноября, 2005 пользователем GGGG Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Gate 0 29 ноября, 2005 Опубликовано 29 ноября, 2005 · Жалоба Как-то странно Вы поправили - мегагерцы в герцы перевели. :) Все равно делим частоту на частоту и получаем частоту. :) Наверное имелось в виду, что делим частоту в N раз и получаем поделенную частоту. Сделать это достаточно просто - используйте счетчик. С другой стороны, если надо иметь синхронные клоки, то этот вариант не пойдет. Для получения синхронных клоков надо использовать специальные аппаратные средства типа PLL. В этом случае коэффициенты умножения/деления, фазовые сдвиги и прочее задаются не HDL описанием, а с помощью параметров модуля, соответствующего аппаратному PLL. На самом деле делить частоту не нужно - можно использовать выход счетчика как сигнал clock enable. При этом глобальная частота остается одна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stalko 0 29 ноября, 2005 Опубликовано 29 ноября, 2005 · Жалоба счетчик может делить только на величину, кратную 2 (f/2, f/4 ...) Я Вас умоляю!!! ОДИН регистр делит на 2, ДВА последовательно на четыре и т.д.... если больше не строить никаких комбинационных схем... :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GGGG 0 29 ноября, 2005 Опубликовано 29 ноября, 2005 · Жалоба а если, к примеру, из 40МГц надо получить 8256 кГц? То как тогда быть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
psL 0 29 ноября, 2005 Опубликовано 29 ноября, 2005 · Жалоба Т.е., если у одного инженера зарплата 30 т.p., а у другого 6 т.р. - то получается, что первый инженер получает больше второго в 5 т.рублей? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stalko 0 29 ноября, 2005 Опубликовано 29 ноября, 2005 · Жалоба а если, к примеру, из 40МГц надо получить 8256 кГц? То как тогда быть? Поделить на 4845 :) Зато скважность сигнала можно получить просто идеальную :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
psL 0 29 ноября, 2005 Опубликовано 29 ноября, 2005 · Жалоба Читайте FAQ Общие вопросы п.11 http://fpga-faq.narod.ru/#%C0%20%EA%E0%EA%...F2%EE%F2%F3%20Y? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tegumay 4 29 ноября, 2005 Опубликовано 29 ноября, 2005 · Жалоба Э-э-э построение счетчиков (aka делителей) c требуемым коэффициентом счета обязательная задача, по крайней мере нас этим и в техникуме и в институте мурыжили, мурыжат и надеюсь след. поколение будут мурыжить :maniac: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stalko 0 29 ноября, 2005 Опубликовано 29 ноября, 2005 · Жалоба Доброго всем времени суток! Помогите определиться с возможными вариантами решения задачки: Есть 2-а clock сигнала с частотами f1 и f2, причем f1 > f2. Хотелось бы написать на VHDL универсальный модуль делителя f1 на f2. К примеру 40МГц превратить в 8МГц, путем деления на 5 Гц. Какие будут предложения? Какие ограничения возникают при написании такого модуля? Спасибо. Еще раз внимательно перечитал вопрос, напряг все самые извилистые извилины и пришел к выводу, что человек хочет получить делитель частоты, в котором коэффициент деления определяется второй входной частотой. Тогда вариант один: сделать частотомер по сигналу f2, т.е. подать опорную частоту, считать число фронтов f2, получать ЧИСЛО и это ЧИСЛО использовать в качестве коэффициента делителя. Предупреждаю сразу, будет приличный переходной процесс, если частота опоры частотомера будет низкой, либо большая ошибка, если высокой. Хотя мелькал в голове другой вариант: может надо ВЫЧЕСТЬ частоты? Типа смесителя цифрового сделать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться