Перейти к содержанию
    

После реконфигурации нужно обязательно сбросить PLL. Сигнал асинхронный, в даташите должна быть написана минимальная длительность

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробовал убрать сигнал сброса PLL - ничего не изменилось, значит неправильно формировал.

Сделал сброс по-другому - фазы всегда стали правильные, но перестала работать подстройка фазы.

Где-то еще ошибка у меня осталась.

А частота меняется и без сброса PLL, поэтому думал, что со сбросом все правильно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ничего не понимаю.

Давно делал динамический сдвиг фазы - все работало с 1-ого раза. Сейчас не работает.

Конфигурацию и сброс не делаю, только сдвиг фазы. 

"phasedone" всегда в "1", и не падает в "0" после подачи "1" на "phasestep".

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так и не поборол.

Вообще-то у Циклона-4 есть errata на динамический сдвиг фазы в PLL, но другого плана.

"phasedone" стал переключаться после правки

"defparam altpll_component.inclk0_input_frequency = 40000"

на " = 20000",

хотя клок у меня 25МГц (раньше для некоторых кристаллов приходилось выставлять завышенную входную частоту, иначе PLL вообще не работала, даже со статической конфигурацией). Но динамические сдвиги все-равно не работают.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Заработало с такими параметрами (входная частота 25МГц, но указано 50МГц):

altpll_component.vco_phase_shift_step = 100,
	altpll_component.inclk0_input_frequency = 20000,

так что проблема была с кристаллом, или с параметрами конфигурации, но не с кодом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Одновременно реконфигурировать и частоту, и фазу у меня не получилось. Для заданной (в параметрах мегафункции) частоты фаза правильно управляется, для произвольной частоты после реконфигурации - получается неправильный шаг фазы. Хочу недостижимого?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можете описать ваш процесс изменения частоты и потом фазы. Что получаете и что хотите.

Я не совсем понимаю, как вы хотите двигать фазу сгенерированной произвольной частоты относительно неизменной опоры и как оцениваете результат.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хочу получить генератор ступенчатой трапеции с меняемой частотой.

Сложение N меандров со сдвинутыми фазами дает искомое.

PLL с N выходами может дать N меандров одинаковой перестраиваемой частоты.

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

2.png

Изменено пользователем Leka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Странная задача для ПЛИС.

Вот что видится - при загрузке и активации прошивки сброс у вас всегда со входа PLL снимается в одно и то же время. Фаза при этом стабильна и вы ей управляете.

Как только вы поменяли частоту - необходимо пересбросить PLL. И, в зависимости от её типа и  характеристик, вы получите различные доступные варианты сдвигов фазы.

И тут 2 проблемы: 1 - проверьте, будет ли работать сдвиг фазы для варианта частоты номер 2, если её установить сразу после загрузки ПЛИС (и в мегавизадре необходимо проверить и на модели);

2 - насколько точно вы снимаете сброс с PLL относительно вновь установленной выходной частоты (на входе 10 МГц, на выходе 127,764 МГц - фаза такого выходного клока будет плавать, ибо клок не кратен входному и предугадать начальный момент фазы едва ли возможно)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я стесняюсь спросить, но что мешает сделать обычный проект на 100-200 MHz и посредством автоматов/логики + счётчиков реализовать задуманное?

200 Мегагерцовый проект позволяет спокойно создавать 5 фаз частотой до 40 MHz. За то всё будет в одном домене и никаких странных плясок с бубном и пересбросов PLL или ещё хуже - попыток повторить PLL-функционал на логике. И приведёт к необоснованной сложности на ровном месте.

p.s. Если нужно увеличить разрешающую способность, можно сформировать 4 частоты на 200 MHz со сдвигом фаз в 1/4 периода. Итого миксуя установление/сброс с разных клоковых доменов, можно добиться 200*4=800 MHz разрешение. Думаю этого будет сверхдостаточно, чтобы сформировать любые выходные данные с частотой от 20 до 80 MHz с шагом дискретизации 1,25 ns. Правда я представляю как сойдёт с ума STA в таком проекте)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 minutes ago, Nick_K said:

200 Мегагерцовый проект позволяет спокойно создавать 5 фаз частотой до 40 MHz.

Это уже есть, но нужна выходная частота минимум до 500МГц. 

9 minutes ago, Nick_K said:

За то всё будет в одном домене и никаких странных плясок с бубном

Если клок перестраиваемый, единственность домена не гарантирует синхронность дизайна, и все-равно потребует "странных  плясок".

Пример нерабочего кода c перестраиваемым клоком genclk c выхода реконфигурируемой PLL:

reg [`MSB:0] sr = `CONST;
	always@(posedge genclk) sr<={sr, sr[`MSB]};
	


Сохранение образа sr не гарантируется при перестройке частоты genclk.

56 minutes ago, warrior-2001 said:

проверьте, будет ли работать сдвиг фазы для варианта частоты номер 2, если её установить сразу после загрузки ПЛИС (и в мегавизадре необходимо проверить и на модели);

Да, это работает, поэтому запасной вариант - скриптом сделать прошивки на все требуемые частоты, и загружать в ПЛИС нужную. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, Leka said:

Если клок перестраиваемый

Я как раз и пытаюсь донести, что лучше воздержаться от перенастройки клока. Любое изменение частоты потребует 3 действий (что очень увеличивает латентность схемы):

1. Установка новой частоты и сброс PLL. Иначе рабочий режим может быть неопределён.

2. Конфигурация PLL, Происходит автоматически, но занимает время.

3. Выдержка времени, когда состояние PLL установится и заблокируется. А это очень много времени. Иногда до десятков микросекунд.

Если такие ограничения Вас не смущают, чтоже можете продолжать проектировать)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Без перестройки частоты не получить малый относительный шаг изменения частоты. Латентность не имеет значения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вроде нашел компромиссное решение.

Весь диапазон перестройки частоты ступенчатой трапеции надо разбить на октавы, тк частота VCO перестраивается примерно в 2 раза.

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

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

Для перекрытия с малым относительным шагом диапазона 5МГц...640МГц надо 7 прошивок (загружаемые с МК или ПК).    

Изменено пользователем Leka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...