реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> pll в цык-2, как сделать
%-)
сообщение Dec 6 2009, 14:01
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331



нужно задействовать pll в циклон-2 фпга.

на вход CLK0 подана частота с кварцевого генератора 50мгц

требуется получить частоту 150 мгц и использовать внутри фпга. на внешнюю ножку не надо.

гуру, помогите vhdl-фрагментом как юзать PLL
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Dec 6 2009, 14:33
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



MegaWizard Plug-In Manager спасёт отца русской демократии wink.gif
Go to the top of the page
 
+Quote Post
Methane
сообщение Dec 6 2009, 14:38
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(%-) @ Dec 6 2009, 16:01) *
нужно задействовать pll в циклон-2 фпга.

на вход CLK0 подана частота с кварцевого генератора 50мгц

требуется получить частоту 150 мгц и использовать внутри фпга. на внешнюю ножку не надо.

гуру, помогите vhdl-фрагментом как юзать PLL

В мегавизарде конфигурируется, потом готовый файл с настройками подключается к проекту, расписываются выводы. Все.
Go to the top of the page
 
+Quote Post
%-)
сообщение Dec 9 2009, 01:01
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331



Подключил 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мкф всё керамика
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 9 2009, 03:58
Сообщение #5


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(%-) @ Dec 8 2009, 19:01) *
1) Правильно ли сделал?


Собрать, проверить.

Цитата
2) Есть 4 режима PLL: normal mode, source-syncronous mode, in zero-delay buffer mode, with no compensation
какой из этих режимов позволяет выводить сигнал с PLL, чтоб он начинался с той же фазы что и входной сигнал? (тобишь синхронно менялся - в 1 такт входного сигнала вписывалось целое число тактов выходного сигнала с PLL) ?
3) что вообще даёт эта компенсация? Теорию ФАПЧ знаю (ГУН, ФНЧ, делитель, опорный генератор, ...)


в даташите на целевую фпга все разрисовано и объяснено. изучайте, там все есть.

Цитата
5) выбрал режим zero delay buffer. Почему-то в этом режиме из-за присвоения бита счётчика на выходной сигнал - ошибка(см. текст программы ыше - "ClkOut<=counter(0); --ошибка").


телепаты в отпуске

Цитата
6) можно ли более тонко осуществить настройку PLL? Например увеличить время установления, поставив более низкочастотный ФНЧ, и увеличить стабильность (без улучшения разводки питания/земли)?


можно но не во всех фпга.


--------------------
Go to the top of the page
 
+Quote Post
%-)
сообщение Dec 9 2009, 04:44
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331



Цитата(des00 @ Dec 9 2009, 07:58) *
телепаты в отпуске


тут вы погорячились. лог ошибки привёл в предыдущем сообщении. смотрите внимательнее smile.gif


на счёт мегавизарда.
чой-то он бред лепит - прошу из входной частоты 50 мгц сделать 100 мгц, выбираю умножитель 2 делитель 1

он автоматом делает частоту VCO 800 МГц cranky.gif

альтера требует чтобы 10 – 400 MHz без вывода на внешнюю ногу.

на вход допускается 11 – 311 MHz

какая польза тогда от мегавизарда, если потом файл компонента вручную править прийдётся? (исправлять множители)

и вообще он как-то странно подбирает частоту ГУН зависимо от коэффициентов mul, div

скриншот ниже
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 9 2009, 05:37
Сообщение #7


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(%-) @ Dec 8 2009, 22:44) *
тут вы погорячились. лог ошибки привёл в предыдущем сообщении. смотрите внимательнее smile.gif


Да не заметил. За это научу вас пользоваться RTFM smile.gif Ответ лежит там : Cyclone II Device Handbook, Volume 1 -> Section II. Clock Management -> Chapter 7. PLLs in Cyclone II Devices -> Clock Feedback Modes -> Zero Delay Buffer Mode -> In zero delay buffer mode, the clock signal on the PLL external clock output pin (FLL<#>_OUT), fed by the c2 counter, is phase-aligned with the PLL input clock for zero delay. И т.д. ответ лежи на поверхности

Кстати был не прав, для Source synchronus систем режим PLL называется по другому. Для асинхронной нарезки вам достаточно режима Normal

Цитата
на счёт мегавизарда.
чой-то он бред лепит - прошу из входной частоты 50 мгц сделать 100 мгц, выбираю умножитель 2 делитель 1
он автоматом делает частоту VCO 800 МГц cranky.gif


читаем Cyclone II Device Handbook, Volume 1 -> Section II. Clock Management -> Chapter 7. PLLs in Cyclone II Devices -> Hardware Features. Ответ лежит там

Цитата
какая польза тогда от мегавизарда, если потом файл компонента вручную править прийдётся? (исправлять множители)
и вообще он как-то странно подбирает частоту ГУН зависимо от коэффициентов mul, div


Думаю что проблема не в мегавизарде, а в вашем не понимании что происходит. Или вы думаете что разработчики альтеры настолько глупы что сделали не рабочий генератор PLL, который там со времен первых сборок квартуса. И это никто за 10-15 лет не заметил ? %)


--------------------
Go to the top of the page
 
+Quote Post
%-)
сообщение Dec 9 2009, 06:11
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331



Цитата(des00 @ Dec 9 2009, 09:37) *
Кстати был не прав, для Source synchronus систем режим PLL называется по другому. Для асинхронной нарезки вам достаточно режима Normal


спасибо за разъяснения и RTFM beer.gif

но всё-таки частоты VCO=800..1000 МГц вызывают у меня недоумение по поводу возможности их реализации в ПЛИС smile.gif

наверняка - чем больше частоты, тем более качественно нужно разводить цепи питания PLL



На счёт асинхронной нарезки. Согласно теореме Котельникова - нам нужен сигнал с периодом как минимум в 2 раза выше, чем исходный период.

Значит при частоте шины 133 МГц для того чтобы нарезать сигнал с точностью до 1 CLK , нам нужно частоту PLL выбрать не менее 266 МГц.

Я прав или нет?
Go to the top of the page
 
+Quote Post
Builder
сообщение Dec 9 2009, 06:21
Сообщение #9


iBuilder©
****

Группа: Свой
Сообщений: 519
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322



Цитата(%-) @ Dec 9 2009, 07:44) *
на счёт мегавизарда.
чой-то он бред лепит - прошу из входной частоты 50 мгц сделать 100 мгц, выбираю умножитель 2 делитель 1

он автоматом делает частоту VCO 800 МГц cranky.gif

альтера требует чтобы 10 – 400 MHz без вывода на внешнюю ногу.
какая польза тогда от мегавизарда, если потом файл компонента вручную править прийдётся? (исправлять множители)

А чем Вас смущает VCO 800 МГц ? Это не та частота, что идёт на тригеры.
Эта частота базовая для PLL.
Учитывая что вы с этим первый раз сталкиваетесь, лучше руками в настройки пока не лезть,
а то вообще не разберётесь почему не работает.
Остальное ответили.
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 9 2009, 06:23
Сообщение #10


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(%-) @ Dec 9 2009, 00:11) *
спасибо за разъяснения и RTFM beer.gif

но всё-таки частоты VCO=800..1000 МГц вызывают у меня недоумение по поводу возможности их реализации в ПЛИС smile.gif

наверняка - чем больше частоты, тем более качественно нужно разводить цепи питания PLL


не путайте частоту ГУНа PLL и выходную частоту PLL.

Cyclone II PLL Hardware Overview -> The VCO frequency is a critical param eter that must be between 300 and 1,000 MHz to ensure proper operation of the PLL. The Quartus II software automatically sets the VCO frequency within the recommended range based on the clock output and phase-shift requirements in your design.

потому то цепи PLL и требуют особого внимания.

Цитата
На счёт асинхронной нарезки. Согласно теореме Котельникова - нам нужен сигнал с периодом как минимум в 2 раза выше, чем исходный период.

Значит при частоте шины 133 МГц для того чтобы нарезать сигнал с точностью до 1 CLK , нам нужно частоту PLL выбрать не менее 266 МГц.


но у вас же tsu/twr/th 2 такта. Если вы связывайтесь с асинхронной нарезкой надо рассматривать сигналы шины как асинхронные и учитывать из длительности. ИМХО резать нужно такой частотой, что бы умещалось хотя бы 2.5-3 отсчета на сигнал. Котельников тут не совсем к месту %)


--------------------
Go to the top of the page
 
+Quote Post
Builder
сообщение Dec 9 2009, 06:36
Сообщение #11


iBuilder©
****

Группа: Свой
Сообщений: 519
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322



Цитата(%-) @ Dec 9 2009, 09:11) *
но всё-таки частоты VCO=800..1000 МГц вызывают у меня недоумение по поводу возможности их реализации в ПЛИС smile.gif
На счёт асинхронной нарезки. Согласно теореме Котельникова - нам нужен сигнал с периодом как минимум в 2 раза выше, чем исходный период.
Значит при частоте шины 133 МГц для того чтобы нарезать сигнал с точностью до 1 CLK , нам нужно частоту PLL выбрать не менее 266 МГц.

1. насчёт VCO я уже написал, что это за частота.
2. Кательников это хорошо, но применительно к ПЛИС, это имеет косвенное отношение, т.к. вариаций времянки много.
Учитывая что Вы топчетесь с этой шиной уже долго. Я давно, когда начинал этим заниматься, смотрел как делает асинронную шину альтера в своих IP модулях. Проанализируйте. Может на опенкорес что найдёте. На уартах, совместимых со стандартными должны ставить асинхронную шину, их и посмотрите.
Я уже не помню как там у Вас задача ставилась исходно, если 133 - это просто шина, это одно. Если это темп записи, это уже совсем другое. Первое можно и без высокой частоты сделать.
Смысл тут уже Вам писали много, повторяться не вижу смысла. Попробуйте сделать ещё заход с этой стороны-проанализируйте
доступные дизайны. Что не поймёте - спросите. Только вопросы поконкретнее, после того как сами подумаете...
Go to the top of the page
 
+Quote Post
%-)
сообщение Dec 9 2009, 07:21
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331



Цитата(des00 @ Dec 9 2009, 10:23) *
но у вас же tsu/twr/th 2 такта. Если вы связывайтесь с асинхронной нарезкой надо рассматривать сигналы шины как асинхронные и учитывать из длительности.


рассматривал много вариантов. в том числе tsu=1,twr=1,th=1

Цитата(des00 @ Dec 9 2009, 10:23) *
ИМХО резать нужно такой частотой, что бы умещалось хотя бы 2.5-3 отсчета на сигнал


исходя из чего вы брали 2,5 - 3 отсчёта?

пробовал работать на 1.5 отсчётах - оно работает!!!
на одном отсчёте не заработало (наверное из-за 6нс-задержки перед спадом сигналов WE,CE в BF533)

времянка такая: tsu=4, tw=4, th=0, Fbus=133.3 МГц, Ffpga=50 Мгц (правда OSC, а не PLL)


Цитата(Builder @ Dec 9 2009, 10:36) *
Учитывая что Вы топчетесь с этой шиной уже долго. Я давно, когда начинал этим заниматься, смотрел как делает асинронную шину альтера в своих IP модулях. Проанализируйте. Может на опенкорес что найдёте. На уартах, совместимых со стандартными должны ставить асинхронную шину, их и посмотрите.


смотрел, но похожее на своё там не нашёл...
может плохо и не то искал? smile.gif

Цитата(Builder @ Dec 9 2009, 10:36) *
Я уже не помню как там у Вас задача ставилась исходно, если 133 - это просто шина, это одно. Если это темп записи, это уже совсем другое. Первое можно и без высокой частоты сделать.
Смысл тут уже Вам писали много, повторяться не вижу смысла. Попробуйте сделать ещё заход с этой стороны-проанализируйте
доступные дизайны. Что не поймёте - спросите. Только вопросы поконкретнее, после того как сами подумаете...


задча что не есть на первый взгляд простая - нужно писать в управляющие регистры и манипулировать адресом для памяти.

пока сделал так:

1) по фронту тактовой(или PLL) нарезаю : CE,WE,A,D

2) по фронту тактовой проверяю если WE=0 и CE=0, то это первое состояние - пишим в регистр если A=0, или увеличиваем адрес SRAM (внешняя,болтается на ПЛИС) если A=1. Состояние<=2

3) по фронту тактовой проверяю если WE=1 и CE=0 - то перейти в первое состояние.

Замечено, что если из проверок выкинуть CE, то обмен идёт иногда нестабильно. Хотя устройство на асинхронке одно.

работает на ts=4, tw=4, th=0 1clk=133 мгц, режу частотой 50 мгц.

может быть и глупо сделал.
возможен ли лучше вариант, чем тот что описал?

Сообщение отредактировал %-) - Dec 9 2009, 07:24
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 9 2009, 07:50
Сообщение #13


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(%-) @ Dec 9 2009, 01:21) *
исходя из чего вы брали 2,5 - 3 отсчёта?
пробовал работать на 1.5 отсчётах - оно работает!!!


личный опыт, стробы это асинхронные сигналы на них надо давить метастабильность на что уйдет 2 триггера .

Цитата
1) по фронту тактовой(или PLL) нарезаю : CE,WE,A,D

2) по фронту тактовой проверяю если WE=0 и CE=0, то это первое состояние - пишим в регистр если A=0, или увеличиваем адрес SRAM (внешняя,болтается на ПЛИС) если A=1. Состояние<=2

3) по фронту тактовой проверяю если WE=1 и CE=0 - то перейти в первое состояние.

Замечено, что если из проверок выкинуть CE, то обмен идёт иногда нестабильно. Хотя устройство на асинхронке одно.

работает на ts=4, tw=4, th=0 1clk=133 мгц, режу частотой 50 мгц.


ИМХО я бы привязывался к переднему фронту сигнала WE, в этот момент tsu по адресу, данным, CE уже будет выполнен и есть еще twr времени на то что бы все операции закончить.


--------------------
Go to the top of the page
 
+Quote Post
Builder
сообщение Dec 9 2009, 08:09
Сообщение #14


iBuilder©
****

Группа: Свой
Сообщений: 519
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322



Цитата(des00 @ Dec 9 2009, 09:50) *
ИМХО я бы привязывался к переднему фронту сигнала WE, в этот момент tsu по адресу, данным, CE уже будет выполнен и есть еще twr времени на то что бы все операции закончить.

Во-во, я -бы тоже, сделал запись в регистры фронтом врайта, само сбой с контролем сетапов холдов.
А внутри уже 2 варианта определения факта записи (если нужно):
нарезка селекта высокой частотой, или сброс флагового тригера асинхронно, а потом уже синхронно возведение обратно и анализ что была запись и куда была запись. Но со фторым вариантом нужно поосторожнее, т.к. влупите асинхронный сброс, у которого есть иголки из=за гонок, будете потом долго искать откуда глюки. Хотят он не требует высокой частоты для нарезки.

Цитата
смотрел, но похожее на своё там не нашёл...
может плохо и не то искал?

Поищу, г-дето была функция уарта альтеровского, котрый совместим со стандартным 550.
Если найду - сброшу, куда бросать?
Go to the top of the page
 
+Quote Post
%-)
сообщение Dec 9 2009, 08:52
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331



Цитата(Builder @ Dec 9 2009, 12:09) *
Поищу, г-дето была функция уарта альтеровского, котрый совместим со стандартным 550.
Если найду - сброшу, куда бросать?


electronshik85<гаф>mail.ru
только на vhdl, с верилогом туговато будет smile.gif

Цитата(des00 @ Dec 9 2009, 11:50) *
ИМХО я бы привязывался к переднему фронту сигнала WE, в этот момент tsu по адресу, данным, CE уже будет выполнен и есть еще twr времени на то что бы все операции закончить.


передний фронт - понятие разное - для разных сигналов. это который rising(0-1) или falling(1-0) при активном уровне=0 ?

Сообщение отредактировал %-) - Dec 9 2009, 08:48
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 09:47
Рейтинг@Mail.ru


Страница сгенерированна за 0.01514 секунд с 7
ELECTRONIX ©2004-2016