|
ep3c5e pll не захватывает частоту |
|
|
|
May 2 2015, 18:17
|
Гуру
     
Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923

|
Пытаюсь запустить 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
|
|
|
|
|
 |
Ответов
(1 - 14)
|
May 2 2015, 20:24
|
Профессионал
    
Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968

|
Использую вот прямо сейчас именно EP3C5, оба PLL, питаю от отдельного регулятора линейного, входная частота именно 50МГц. Оба ПЛЛ сразу встают в 1 (сигнал Locked, а не phazelocked, как у Вас) и вниз не опускаются. Делаю проект в Q91, ПЛЛ конфигурил мегавизардом, правда ставил его в графике, в bdf. ' Давным давно была проблема, что у PLL срывался захват (locked падал вниз, затем снова в 1), но хоть убей не помню из-за чего так было и как решил.
|
|
|
|
|
May 3 2015, 03:09
|
Профессионал
    
Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968

|
Цитата(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В поближе к ногам и все обычно работает. О, нате ка проект маленький, там плл точно работает Если не заработает у вас, значит в железе искать.
Прикрепленные файлы
sample.rar ( 607.58 килобайт )
Кол-во скачиваний: 4
|
|
|
|
|
May 3 2015, 20:05
|
Профессионал
    
Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968

|
Цитата(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), один ПЛЛ работал, второй - нет. Не было захвата. Перенес в ассайнментах физически с одного ПЛЛ на другой - все заработало. Но чип такой не использовал - ХЗ что у него там еще сломалось внутри.
|
|
|
|
|
May 3 2015, 21:12
|
Частый гость
 
Группа: Свой
Сообщений: 75
Регистрация: 10-12-04
Из: spb
Пользователь №: 1 435

|
sergey sva Для таких моментов держу 8-й квартус, там быстро можно симулировать. Ваш проект просто так не заработал, закомментировал четыре строки в файле testpll.qsf иначе 8-й не берёт. Вывел тестовые сигналы, вывел отдельно res. Разбираться в ваших счётчиках не встал. После этого заработало. Вроде 13 -й диаграммы testpll.vwf должен показывать. Проект в 8-м с симуляцией.
nest.zip ( 1.25 мегабайт )
Кол-во скачиваний: 29
|
|
|
|
|
May 6 2015, 09:02
|
Местный
  
Группа: Свой
Сообщений: 214
Регистрация: 26-05-05
Пользователь №: 5 397

|
Цитата(sergey sva @ May 5 2015, 21:56)  Нашел причину, после продолжительных мучений платы феном и паяльником  pll начал запускаться но на частоте кгц. Тут сразу стало понятно дело где то в плате внимательно осмотрел и нашел не пропаянную не пропаянную ножку vccd_pll она расположена с краю корпуса lqfp144. Буду дальше экспериментировать )) Проверьте соответствует ли напряжение питания, для PLL должно быть 2,5В
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|