Jump to content

    

Recommended Posts

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

 

Share this post


Link to post
Share on other sites

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

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

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

"defparam altpll_component.inclk0_input_frequency = 40000"

на " = 20000",

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

 

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

2.png

Edited by Leka

Share this post


Link to post
Share on other sites

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

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

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

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

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

Share this post


Link to post
Share on other sites

Я стесняюсь спросить, но что мешает сделать обычный проект на 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 в таком проекте)

Share this post


Link to post
Share on other sites
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, если её установить сразу после загрузки ПЛИС (и в мегавизадре необходимо проверить и на модели);

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

Share this post


Link to post
Share on other sites
5 minutes ago, Leka said:

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

Edited by Leka

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.