Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите с делителем частоты
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Infine
Доброе время суток, господа.
Не могли бы вы мне помочь ?
Необходимо на триггерах(не важно каких) собрать делитель частоты на 27, нужна структурная схема этого устройства.
Все это потом будет реализовываться вXilix на Spartan II-E.
Заранее благодарен, завтра зачет по ЦУ и МП.
vovic
По шагам
1. Посмотри лекции (или учебник) и найди как устроены двоичные счетчики.
2. Нарисуй пятиразрядный счетчик.
3. При появлении числа 26 в двоичном виде надо устроить сброс счетчика в ноль (простая схема на элементе "И")
4. Сигнал сброса лучше пропустить через D-триггер, а уже затем на сброс основных триггеров счетчика. Этот же сигнал будет поделенной частотой.

А структурную схему нарисуешь сам smile.gif
KA_ru
emu naverno nado 50/50 ???? smile.gif
Андрей Харитонов
тоже не сложно. поставить счетчик по обоим фронтам
sergunas
как ещё вариант, могу посоветовать поставить последовательно 3 делителя частоты на 3.
А вариант делителя частоты на 3 сам XILINX предлагает, вот ссылка.
mkalexey
-- Покладов Александр
-- Делитель частоты
-- Выходная частота равна Fout = Fin * (cDiv / (2 ^ cRg))
-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-- ! Fout не может быть больше Fin, т.е. cDiv < (2 ^ cRg)
-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Constant cDiv = 6; -- коэффициент деления
Constant cRg = 3; -- количество разрядов в регистре фазы

SUBDESIGN Fr_div
(
Fin : INPUT;
Fout : OUTPUT;
)
VARIABLE
fv[cRg .. 0] :dff; -- Регистр сумматора
rgF :tff;
fin_X_2 :node; -- Удвоенная частота
BEGIN
fin_X_2 = Fin xor rgF; -- Умножение на 2 Fin
rgF.t = vcc;
rgF.clk = fin_X_2;

fv[].clk = fin_X_2; -- Сумматор фазы
fv[] = fv[] + cDiv;

Fout = fv[cRg]; -- Выход частоты
END;
des00
Цитата(mkalexey @ Jun 15 2005, 09:04)
-- Покладов Александр
        -- Делитель частоты
        -- Выходная частота равна Fout = Fin * (cDiv / (2 ^ cRg))
        -- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        -- ! Fout не может быть больше Fin, т.е. cDiv < (2 ^ cRg)
        -- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        Constant cDiv = 6; -- коэффициент деления
        Constant cRg = 3; -- количество разрядов в регистре фазы

        SUBDESIGN Fr_div
        (
                Fin : INPUT;
                Fout : OUTPUT;
        )
        VARIABLE
        fv[cRg .. 0] :dff; -- Регистр сумматора
        rgF :tff;
        fin_X_2 :node; -- Удвоенная частота
        BEGIN
                fin_X_2 = Fin xor rgF; -- Умножение на 2 Fin
                rgF.t = vcc;
                rgF.clk = fin_X_2;
                     
                fv[].clk = fin_X_2; -- Сумматор фазы
                fv[] = fv[] + cDiv;
               
                Fout = fv[cRg]; -- Выход частоты
        END;
*

класс smile.gif) осталось только AHDL в VHDL/Verilog перевести smile.gif
sazh
"класс осталось только AHDL в VHDL/Verilog перевести "

//-- Покладов Александр
//-- Делитель частоты
//-- Выходная частота равна Fout = Fin * (cDiv / (2 ^ cRg))
//-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//-- ! Fout не может быть больше Fin, т.е. cDiv < (2 ^ cRg)
//-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//Constant cDiv = 6; -- коэффициент деления
//Constant cRg = 3; -- количество разрядов в регистре фазы

module fr_div
(
input Fin,
output Fout
);

parameter cDiv = 3'd6;
parameter cRg = 3;


reg [cRg:0] fv; //-- Регистр сумматора
reg rgF_tff;

wire Fin_X_2;

assign Fout = fv[cRg]; // -- Выход частоты
assign Fin_X_2 = Fin ^ rgF_tff; // -- Умножение на 2 Fin

always @(posedge Fin_X_2) // -- Удвоенная частота
begin
rgF_tff <= rgF_tff ^ 1'b1;
fv <= fv + cDiv; // -- Сумматор фазы
end

endmodule
des00
Цитата(sazh @ Jun 15 2005, 14:15)
"класс  осталось только AHDL в VHDL/Verilog перевести "

//-- Покладов Александр
        //-- Делитель частоты
        //-- Выходная частота равна Fout = Fin * (cDiv / (2 ^ cRg))
        //-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        //-- ! Fout не может быть больше Fin, т.е. cDiv < (2 ^ cRg)
        //-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        //Constant cDiv = 6; -- коэффициент деления
        //Constant cRg = 3; -- количество разрядов в регистре фазы

        module fr_div
        (
          input  Fin,
          output Fout
        );
       
parameter cDiv = 3'd6;
parameter cRg = 3;


reg [cRg:0] fv;  //-- Регистр сумматора
reg          rgF_tff;

wire        Fin_X_2;

assign Fout = fv[cRg]; // -- Выход частоты
assign Fin_X_2 = Fin ^ rgF_tff; // -- Умножение на 2 Fin

always @(posedge Fin_X_2) // -- Удвоенная частота
begin
rgF_tff <= rgF_tff ^ 1'b1;
fv <= fv + cDiv; // -- Сумматор фазы
end

endmodule
*

уже и пошутить нельзя smile.gif
sazh
"уже и пошутить нельзя "
Если кто и пошутил, так это я. Вот пример того, как делать не надо.
Victor®
Цитата(Infine @ Jun 3 2005, 19:01)
Доброе время суток, господа.
Не могли бы вы мне помочь ?
Необходимо на триггерах(не важно каких) собрать делитель частоты на 27, нужна структурная схема этого устройства.
Все это потом будет реализовываться вXilix на Spartan II-E.
Заранее благодарен, завтра зачет по ЦУ и МП.
*


Настоятельно всем рекомендую
VHDL code implements 50%-duty-cycle divider
Brian Boorman, Harris RF Communications, Rochester, NY

http://www.edn.com/archives/1997/081597/17di_01.htm
sazh
"Настоятельно всем рекомендую
VHDL code implements 50%-duty-cycle divider
Brian Boorman, Harris RF Communications, Rochester, NY"
Это хорошо только для тренинга ума.
В реальной жизни применять такое в программированной логике, значит искать себе приключения на одно место.
Victor®
Цитата(sazh @ Jun 23 2005, 13:38)
"Настоятельно всем рекомендую
VHDL code implements 50%-duty-cycle divider
Brian Boorman, Harris RF Communications, Rochester, NY"
Это хорошо только для тренинга ума.
В реальной жизни применять такое в программированной логике, значит  искать себе приключения на одно место.
*


А что Вас смущает? Нормальный код, рабочий.
И какие приключения могут случится?
А в Вашем коде умножать частоту на 2 внутри ПЛИС - это нормально !?
sazh
"А что Вас смущает? Нормальный код, рабочий.
И какие приключения могут случится?
А в Вашем коде умножать частоту на 2 внутри ПЛИС - это нормально !? "
Это не мой код. Мне чужого не надо. И фамилия у меня другая.
Это Вами предложенный код ничем от мной переведенного на верилог кода не отличаются.
В первом случае пички на удвоенной частоте. Если ввести в формулу удвоенную частоту, простой аккумулятор получается.
В Вашем случае таже удвоенная частота. Попробуйте принять выход xor на триггер на первичной. Что от меандра останется.
Я уже не говорю о стандартном подходе к написанию примитива. На входе триггер, на выходе триггер, никаких инверсий несущего клока. А если первичный код от PLL. Ну и так жалее.
Victor®
Цитата(sazh @ Jun 24 2005, 13:05)
Это Вами предложенный код ничем  от мной переведенного на верилог кода  не отличаются.

*


?
И еще - нет там никакого удвоения частоты.
Или Вы с авторами постов запутались?
stu
т.е. из 120 получаем 33,75:
33,75 MHz = 120(MHz) * (18 / 2^64)
а как получить 33,333333 без PLL ??? делитель = 17,777777776 ???))
stu
Цитата(Victor® @ Jun 22 2005, 14:39) *
Настоятельно всем рекомендую
VHDL code implements 50%-duty-cycle divider
Brian Boorman, Harris RF Communications, Rochester, NY

http://www.edn.com/archives/1997/081597/17di_01.htm


1)есть синтаксические ошибки
2)не делит на real
stu
никто не напишет, как получить 33,(3) МГц ??? знаю, что можно как-то с счетчиком/регистором и RS-триггером
stu
Цитата(sazh @ Jun 16 2005, 10:11) *
"уже и пошутить нельзя "
Если кто и пошутил, так это я. Вот пример того, как делать не надо.

кст, осцил говорит, что на верилоге теория соответствует действительности, а вот ahdl не порадовал =(
whiteTigr
Цитата(stu @ Sep 14 2011, 18:03) *
т.е. из 120 получаем 33,75:
33,75 MHz = 120(MHz) * (18 / 2^64)
а как получить 33,333333 без PLL ??? делитель = 17,777777776 ???))


Блок DCM. Выход CLKFX. Умножить (CLKFX_MULTIPLY) на 5, разделить (CLKFX_DIVIDE) на 18.
А вот как без него, даже не знаю.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.