Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ep3c5e pll не захватывает частоту
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
sergey sva
Пытаюсь запустить pll в циклоне ep3c5 но не как не хочет запускаться, не устанавливается сигнал phazelocked. Питание vcca=2.5v от отдельного регулятора. vccd_pll = 1.2 входная частота 50мгц на пин22 clk0. vccio = 3.3v megawizartom сделал настройки вот файл верилог, может в нем ошибка, проверил уже все что можно, может нужно что то настроить в квартусе?
Код
module pll (
    areset,
    inclk0,
    c0,
    c1,
    c2,
    c3,
    locked);

    input      areset;
    input      inclk0;
    output      c0;
    output      c1;
    output      c2;
    output      c3;
    output      locked;
`ifndef ALTERA_RESERVED_QIS
// synopsys translate_off
`endif
    tri0      areset;
`ifndef ALTERA_RESERVED_QIS
// synopsys translate_on
`endif

    wire [4:0] sub_wire0;
    wire  sub_wire3;
    wire [0:0] sub_wire8 = 1'h0;
    wire [2:2] sub_wire5 = sub_wire0[2:2];
    wire [0:0] sub_wire4 = sub_wire0[0:0];
    wire [3:3] sub_wire2 = sub_wire0[3:3];
    wire [1:1] sub_wire1 = sub_wire0[1:1];
    wire  c1 = sub_wire1;
    wire  c3 = sub_wire2;
    wire  locked = sub_wire3;
    wire  c0 = sub_wire4;
    wire  c2 = sub_wire5;
    wire  sub_wire6 = inclk0;
    wire [1:0] sub_wire7 = {sub_wire8, sub_wire6};

    altpll    altpll_component (
                .areset (areset),
                .inclk (sub_wire7),
                .clk (sub_wire0),
                .locked (sub_wire3),
                .activeclock (),
                .clkbad (),
                .clkena ({6{1'b1}}),
                .clkloss (),
                .clkswitch (1'b0),
                .configupdate (1'b0),
                .enable0 (),
                .enable1 (),
                .extclk (),
                .extclkena ({4{1'b1}}),
                .fbin (1'b1),
                .fbmimicbidir (),
                .fbout (),
                .fref (),
                .icdrclk (),
                .pfdena (1'b1),
                .phasecounterselect ({4{1'b1}}),
                .phasedone (),
                .phasestep (1'b1),
                .phaseupdown (1'b1),
                .pllena (1'b1),
                .scanaclr (1'b0),
                .scanclk (1'b0),
                .scanclkena (1'b1),
                .scandata (1'b0),
                .scandataout (),
                .scandone (),
                .scanread (1'b0),
                .scanwrite (1'b0),
                .sclkout0 (),
                .sclkout1 (),
                .vcooverrange (),
                .vcounderrange ());
    defparam
        altpll_component.bandwidth_type = "LOW",
        altpll_component.clk0_divide_by = 5,
        altpll_component.clk0_duty_cycle = 50,
        altpll_component.clk0_multiply_by = 36,
        altpll_component.clk0_phase_shift = "0",
        altpll_component.clk1_divide_by = 5,
        altpll_component.clk1_duty_cycle = 50,
        altpll_component.clk1_multiply_by = 36,
        altpll_component.clk1_phase_shift = "347",
        altpll_component.clk2_divide_by = 5,
        altpll_component.clk2_duty_cycle = 50,
        altpll_component.clk2_multiply_by = 36,
        altpll_component.clk2_phase_shift = "694",
        altpll_component.clk3_divide_by = 5,
        altpll_component.clk3_duty_cycle = 50,
        altpll_component.clk3_multiply_by = 36,
        altpll_component.clk3_phase_shift = "1042",
        altpll_component.compensate_clock = "CLK3",
        altpll_component.inclk0_input_frequency = 20000,
        altpll_component.intended_device_family = "Cyclone III",
        altpll_component.lpm_hint = "CBX_MODULE_PREFIX=pll",
        altpll_component.lpm_type = "altpll",
        altpll_component.operation_mode = "NORMAL",
        altpll_component.pll_type = "AUTO",
        altpll_component.port_activeclock = "PORT_UNUSED",
        altpll_component.port_areset = "PORT_USED",
        altpll_component.port_clkbad0 = "PORT_UNUSED",
        altpll_component.port_clkbad1 = "PORT_UNUSED",
        altpll_component.port_clkloss = "PORT_UNUSED",
        altpll_component.port_clkswitch = "PORT_UNUSED",
        altpll_component.port_configupdate = "PORT_UNUSED",
        altpll_component.port_fbin = "PORT_UNUSED",
        altpll_component.port_inclk0 = "PORT_USED",
        altpll_component.port_inclk1 = "PORT_UNUSED",
        altpll_component.port_locked = "PORT_USED",
        altpll_component.port_pfdena = "PORT_UNUSED",
        altpll_component.port_phasecounterselect = "PORT_UNUSED",
        altpll_component.port_phasedone = "PORT_UNUSED",
        altpll_component.port_phasestep = "PORT_UNUSED",
        altpll_component.port_phaseupdown = "PORT_UNUSED",
        altpll_component.port_pllena = "PORT_UNUSED",
        altpll_component.port_scanaclr = "PORT_UNUSED",
        altpll_component.port_scanclk = "PORT_UNUSED",
        altpll_component.port_scanclkena = "PORT_UNUSED",
        altpll_component.port_scandata = "PORT_UNUSED",
        altpll_component.port_scandataout = "PORT_UNUSED",
        altpll_component.port_scandone = "PORT_UNUSED",
        altpll_component.port_scanread = "PORT_UNUSED",
        altpll_component.port_scanwrite = "PORT_UNUSED",
        altpll_component.port_clk0 = "PORT_USED",
        altpll_component.port_clk1 = "PORT_USED",
        altpll_component.port_clk2 = "PORT_USED",
        altpll_component.port_clk3 = "PORT_USED",
        altpll_component.port_clk4 = "PORT_UNUSED",
        altpll_component.port_clk5 = "PORT_UNUSED",
        altpll_component.port_clkena0 = "PORT_UNUSED",
        altpll_component.port_clkena1 = "PORT_UNUSED",
        altpll_component.port_clkena2 = "PORT_UNUSED",
        altpll_component.port_clkena3 = "PORT_UNUSED",
        altpll_component.port_clkena4 = "PORT_UNUSED",
        altpll_component.port_clkena5 = "PORT_UNUSED",
        altpll_component.port_extclk0 = "PORT_UNUSED",
        altpll_component.port_extclk1 = "PORT_UNUSED",
        altpll_component.port_extclk2 = "PORT_UNUSED",
        altpll_component.port_extclk3 = "PORT_UNUSED",
        altpll_component.self_reset_on_loss_lock = "OFF",
        altpll_component.width_clock = 5;


endmodule
alexPec
Использую вот прямо сейчас именно EP3C5, оба PLL, питаю от отдельного регулятора линейного, входная частота именно 50МГц. Оба ПЛЛ сразу встают в 1 (сигнал Locked, а не phazelocked, как у Вас) и вниз не опускаются. Делаю проект в Q91, ПЛЛ конфигурил мегавизардом, правда ставил его в графике, в bdf. '
Давным давно была проблема, что у PLL срывался захват (locked падал вниз, затем снова в 1), но хоть убей не помню из-за чего так было и как решил.
sergey sva
А как пины сконфигурированы? у меня все 3,3в LVTTL? из предупреждений критических только что по времени не все цепи укладываются, pll все равно должен запуститься? Еще есть не критические предупреждения logic latch доступно только с subscription лицензией.
alexPec
Цитата(sergey sva @ May 3 2015, 06:44) *
А как пины сконфигурированы? у меня все 3,3в LVTTL? из предупреждений критических только что по времени не все цепи укладываются, pll все равно должен запуститься? Еще есть не критические предупреждения logic latch доступно только с subscription лицензией.

Да, все пины в 3.3В, но LVCMOS. А у Вас генератор TTL? Может у Вас уровень нижний до лог.0 ТТЛ не доходит? И вообще, Вам точно LVTTL нужен? Может порог переключения все-таки на середине питания сделать (LVCMOS)? Землю PLL проверьте тоже. Они вроде неприхотливые, емкости 0,1u повесить на 2,5В поближе к ногам и все обычно работает.

О, нате ка проект маленький, там плл точно работает Если не заработает у вас, значит в железе искать.
sergey sva
Генератор ttl cmos пробовал выводить этот клок через плис на другую ногу, смотрел осциллографом сигнал проходит нормально. Земля не разделена gnda gnd через бусинку, конденсаторы по 0,22мкф. Смотрел рекомендации там рекомендуют для vcc pll 470мкф. Такую большую емкость не использовал, поставил керамику параллельно по 10мкф 4шт и отдельный регулятор.
Сейчас попробую загрузить ваш проект.
krux
попробуйте на areset подавать сигнал сброса минимальной длительностью 150 мсек.
alexPec
areset никогда не задействовал, емкости - на каждый PLL по 0,1мк +4,7мк керамику на выходе стабилизатора 2,5В.

Ну сравните мою PCB со своей что ли. Хотя делал ее давно и наспех, все в автомате разводил. Кстати, если TQFP - пузо обязательно припаять надо к земле. Иначе ведет себя как попало.
sergey sva
Что то ни в какую не хочет запускаться pll ( . Создал новый проект ничего в нем нет только pll и выход на pin7. На 7 io всегда висит 1. Если меняю always@(posedge pll1clck0 ) на always@(posedge CLCKIN50Mhz) на io7 идут импульсы. Может pll сломался может быть такое? Полигон под микросхемой припаян к ней и присоединен к gnd. проект quartus 13.1 Нажмите для просмотра прикрепленного файла
begin
Код
reg[7:0] counter;
always@(posedge pll1clck0 )
begin
if(counter < 10)
begin

counter = counter + 7'd1;

end
else begin

counter = 0;
end

end
alexPec
Цитата(sergey sva @ May 3 2015, 20:42) *
Что то ни в какую не хочет запускаться pll ( . Создал новый проект ничего в нем нет только pll и выход на pin7. На 7 io всегда висит 1. Если меняю always@(posedge pll1clck0 ) на always@(posedge CLCKIN50Mhz) на io7 идут импульсы. Может pll сломался может быть такое? Полигон под микросхемой припаян к ней и присоединен к gnd. проект quartus 13.1


Я бы попробовал так:

1. Снизить частоту ПЛЛ и попробовать на частоте , скажем 100МГц, а не 360МГц. Хотя по даташиту и вроде проходит, но мне кажется есть какой-то подвох, много это 360МГц для -С8. На такой частоте если и будет что-то работать- так это маленький счетчик какой-нибудь. Но это мои тараканы, субъективное мое мнение.

2. Убрать areset в визарде и вывести наружу locked, чтобы мониторить его при любых изменениях проекта.

3. Никто не отменял моделирование, попробуйте промоделировать в modelsim, если там не будет лочиться - значит и в железе тоже. На Q91 сравнивал как-то - PLL довольно точно моделировался, в частности, смотрел время захвата. Но там был не моделсим, а встроенный графический симулятор.

4. Насчет ПЛЛ сломался - было такое, перегрел видимо корпус (правда BGA256), один ПЛЛ работал, второй - нет. Не было захвата. Перенес в ассайнментах физически с одного ПЛЛ на другой - все заработало. Но чип такой не использовал - ХЗ что у него там еще сломалось внутри.
tvcam
sergey sva
Для таких моментов держу 8-й квартус, там быстро можно симулировать.
Ваш проект просто так не заработал, закомментировал четыре строки в файле testpll.qsf иначе 8-й не берёт.
Вывел тестовые сигналы, вывел отдельно res. Разбираться в ваших счётчиках не встал. После этого заработало.
Вроде 13 -й диаграммы testpll.vwf должен показывать. Проект в 8-м с симуляцией. Нажмите для просмотра прикрепленного файла
Alex11
В Вашем проекте стоит входная частота 20 МГц, Вы пишете про 50 - умножитель 36 - чатота генератора 1.8 ГГц. Мне кажется, многовато. Поставьте в визарде Ваши 50 и посмотрите, что он сгенерит. Скорее всего, заработает.
alexPec
Цитата(Alex11 @ May 4 2015, 01:43) *
В Вашем проекте стоит входная частота 20 МГц, Вы пишете про 50 - умножитель 36 - чатота генератора 1.8 ГГц. Мне кажется, многовато. Поставьте в визарде Ваши 50 и посмотрите, что он сгенерит. Скорее всего, заработает.


Там все нормально, входная PLL указана 50, делитель 5, умножитель 36 = 360МГц
Александр77
Если не ошибаюсь, у циклона в планарном корпусе максимальная частота на выводе может быть не выше 240МГц. Может в этом причина Ваших бед? Попробуйте раскачать pll до указанного порога.
sergey sva
Нашел причину, после продолжительных мучений платы феном и паяльником sm.gif pll начал запускаться но на частоте кгц. Тут сразу стало понятно дело где то в плате внимательно осмотрел и нашел не пропаянную не пропаянную ножку vccd_pll она расположена с краю корпуса lqfp144. Буду дальше экспериментировать ))
Magnum
Цитата(sergey sva @ May 5 2015, 21:56) *
Нашел причину, после продолжительных мучений платы феном и паяльником sm.gif pll начал запускаться но на частоте кгц. Тут сразу стало понятно дело где то в плате внимательно осмотрел и нашел не пропаянную не пропаянную ножку vccd_pll она расположена с краю корпуса lqfp144. Буду дальше экспериментировать ))

Проверьте соответствует ли напряжение питания, для PLL должно быть 2,5В
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.