Подключил PLL следующим образом. В мегавизарде сформировал ALTPLL.
Далее перенёс компонент в основной текст:
Код
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;
entity test is port
(
Clk:in std_logic; --входной сигнал синхронизации 50 МГц
ClkOut:out std_logic; --выходной умноженный сигнал
CounterOut:out std_logic_vector(7 downto 0)
);
end test;
architecture test_arch of test is
signal c:std_logic; --сигнал на выходе умножителя
signal counter:std_logic_vector(7 downto 0):=(others => '0'); --счётчик
component pll port
(
inclk0:in std_logic:='0';
c0:out std_logic
);
end component;
begin
pll_inst:pll port map(Clk,c);
process(c)
begin
if rising_edge(c) then
counter<=counter+1;
end if;
end process;
ClkOut<=counter(0); --ошибка
Counterout(0)<=counter(0); --нет ошибки
end test_arch;
1) Правильно ли сделал?
Также интересуют следующие вопросы:
2) Есть 4 режима PLL: normal mode, source-syncronous mode, in zero-delay buffer mode, with no compensation
какой из этих режимов позволяет выводить сигнал с PLL, чтоб он начинался с той же фазы что и входной сигнал? (тобишь синхронно менялся - в 1 такт входного сигнала вписывалось целое число тактов выходного сигнала с PLL) ?
3) что вообще даёт эта компенсация? Теорию ФАПЧ знаю (ГУН, ФНЧ, делитель, опорный генератор, ...)
4) В мега-визарде указываются входная частота и градация по скорости. Зачем? Не для параметров ФНЧ случайно ли? Заметил что если "обмануть" мегавизард - сказать ему входную частоту в 2 раза меньше, то стабильность частоты на выходе PLL улучшается (даже при самой безалаберной разводке цепей питания/земли PLL)
5) выбрал режим zero delay buffer. Почему-то в этом режиме из-за присвоения бита счётчика на выходной сигнал - ошибка(см. текст программы ыше - "ClkOut<=counter(0); --ошибка").
Тескт ошибки:
Цитата
Error: PLL "pll:pll_inst|altpll:altpll_component|pll" COMPENSATE_CLOCK port CLK0 must feed an output pin when OPERATION_MODE is set to ZERO_DELAY_BUFFER
Error: Quartus II Analysis & Synthesis was unsuccessful. 1 error, 16 warnings
Error: Peak virtual memory: 188 megabytes
Error: Processing ended: Wed Dec 09 10:47:14 2009
Error: Elapsed time: 00:00:02
Error: Total CPU time (on all processors): 00:00:02
Error: Quartus II Full Compilation was unsuccessful. 3 errors, 16 warnings
А конструкция типа: Counterout(0)<=counter(0); - не даёт ошибки.
6) можно ли более тонко осуществить настройку PLL? Например увеличить время установления, поставив более низкочастотный ФНЧ, и увеличить стабильность (без улучшения разводки питания/земли)?
7) каков процент отклонения частоты PLL на 150 МГц при отсутствии феритовой бусины и аналоговых полигонов? (входная кварцевый генератор 50мгц) - только 10нф +0.1мкф + 10мкф всё керамика