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

Кварцевый генератор для ПЛИС

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

Закладываться можно на всё, что вы способны протестировать. Производители часто халявят, и вместо того, чтобы расписать условия работы их изделия в разных режимах, пишут в даташите только наихудший случай. Помню ещё много лет назад надо было на Xilinx каком-то дешёвом тоже сделать хитрую систему тактирования - так у них был калькулятор, который считал джиттер DCM в зависимости от его настроек. Сейчас так, к сожалению, уже никто не строит, поэтому если кто хочет получить изделие с наилучшим соотношением цена/качество (что в бизнесе, если он не связан с войной или космосом даёт лучшие результаты, чем абсолютное качество при любой цене), то приходится экспериментировать.

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


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

Закладываться можно на всё, что вы способны протестировать. Производители часто халявят, и вместо того, чтобы расписать условия работы их изделия в разных режимах, пишут в даташите только наихудший случай. Помню ещё много лет назад надо было на Xilinx каком-то дешёвом тоже сделать хитрую систему тактирования - так у них был калькулятор, который считал джиттер DCM в зависимости от его настроек. Сейчас так, к сожалению, уже никто не строит, поэтому если кто хочет получить изделие с наилучшим соотношением цена/качество (что в бизнесе, если он не связан с войной или космосом даёт лучшие результаты, чем абсолютное качество при любой цене), то приходится экспериментировать.

это Вы правильно заметили эксперементы и еще раз эксперементы. К сожалению это касается не только ПЛИС, производители все чаще стали умалчивать в даташитах свои "баги", а для разработчика, как говорил Винокур "потом сюрприз будет" :)

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


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

что это нельзя учесть, только выявить экспериментально...

И какой джиттер тогда фигурирует во временном анализе?

учитывается наихудший случай. Получите ли вы лучше, можно измерить только экспериментально

 

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


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

.. поэтому если кто хочет получить изделие с наилучшим соотношением цена/качество ..., то приходится экспериментировать.

Ага.. А потом производитель FPGA тоже "захочет получить изделие с наилучшим соотношением цена/качество" и что-нибудь так наоптимизирует в своём тех-процессе,

что все ваши "эксперименты" пойдут лесом и вдруг окажется, что старые прошивки в новых кристаллах не работают, ну никак!

 

И здесь на форуме, ЕМНИП, кто-то уже сталкивался с подобными проблемами.. :biggrin:

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


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

В цифровых схемах момент семплирования данных с выхода SDRAM выбирают исходя из условия максимального раскрытия Глазковой диаграммы

SDRAM это частный случай. Вопрос в том, как учесть джиттер вообще, в т.ч. и в самой ПЛИС. На каждый триггер диаграмму строить же не будешь...

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


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

И здесь на форуме, ЕМНИП, кто-то уже жаловался на подобные проблемы.. :biggrin:

Ни кто-то, а я :) при переходе с сыклонов 2 на сыклоны 3. Но проблемы были не в джиттере как таковом, а в модуляции тактовой, вызываемой сигналами разрешения, по которым хлопала достаточно толстая логика.

 

SDRAM это частный случай. Вопрос в том, как учесть джиттер вообще, в т.ч. и в самой ПЛИС. На каждый триггер диаграмму строить же не будешь...

вам же сказали уже раза 3. производитель гарантирует максимальный джиттер. весь расчет идет по нему.

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


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

Вопрос в том, как учесть джиттер вообще, в т.ч. и в самой ПЛИС.

Это всё учитывается в STA:

 

derive_clock_uncertainty,

set_clock_uncertainty.

 

Учите матчасть, короче! :biggrin:

 

Ни кто-то, а я :) при переходе с сыклонов 2 на сыклоны 3.

Не, я про вот это:

Маркировка на всех мс обоих партий практически одинаковая кроме одной цифры в Lot number.

Из первой партии (VAM9M73761) всего 1% работает не стабильно. Но меня это устраивает.

Вторая VAM9M73741 - 80% работают со сбоями. Причем с повышением температуры до 40-50С не работают практически все.

Как такое может быть если выпущены обе партии в одну неделю и скорее всего на одном и том же заводе?

Почему может быть такая огромная разница в проценте рабочих мс?

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


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

вам же сказали уже раза 3. производитель гарантирует максимальный джиттер. весь расчет идет по нему.

Вот теперь все стало ясно. Не всегда сразу поймешь, что имеется ввиду, приходится дотошно спрашивать. Прошу прощения, если что не так.

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


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

И ещё вопрос такой: когда говорится что память dram работает с частотой 133/167/200 мгц это означает, из этой памяти под управлением плис можно выводить данные на цап с частотой 133/167/200 мгц или что контроллер, управляющий этой памятью должен работать с данной частотой, а данные выводятся на самом деле, например каждый 3-4 такт работы контроллера? (например данные выводятся с частотой 30/50/65 мгц) а память например такая: http://www.chipdip.ru/product1/8725096650/

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

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


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

контроллер, управляющий этой памятью должен работать с данной частотой, а данные выводятся на самом деле, например каждый 3-4 такт работы контроллера? (например данные выводятся с частотой 30/50/65 мгц)

Это не совсем так, в sdram кроме обычного цикла чтения, нужно производить периодически цикл регенерации, что приводит к паузам в циклах работы. Поэтому приходится брать память с запасом по производительности, скармливать данные из неё в fifo, а уж потом в dac. Выбранная Вами память никак не справится с поставленной задачей .

 

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


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

Это не совсем так, в sdram кроме обычного цикла чтения, нужно производить периодически цикл регенерации....

в целом вы правы, но иногда можно обойтись без нее

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


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

В общем посмотрел я документацию к памяти. И работать с ней что-то не так-то просто и с частотой 200/166/133 МГц должен работать контроллер, который будет этой памятью управлять. А прежде чем получить данные на выходе надо: послать команду предзарядки, потом дать команду активации строки из выбранного банка, потом дать команду чтения, подождать 2-3 цикла и только потом появятся данные (правда задержка только при первой команде чтения, дальше они идут потоком, только каждые 2-3 такта надо посылать команду чтения) + периодически регенерировать ячейки, которые записаны, но не используются. Круто, всё очень дружественно и удобно, блин. В итоге чтобы заставить выдавать данные с заявленной частотой, нужно быть магом не иначе (из-за периодических циклов регенерации (т.е. выдавать данные циклично из какого-либо 1 банка продолжительное время без регенерации, можно потерять, то что хранится в другом банке, к тому же переход от строки к строке прерывает выход данных). Разве не удобнее купить ПЛИС тысяч за 10 на каком-нибудь ali express с кучей логических ячеек (серия Cyclone V, написать код, который выполнял бы просто хранение и запись n битных слов ( не за счёт ресурсов встроенной памяти, которой мало, а за счёт логических ячеек, ну написать проект так чтобы он распознавался не как ram память, а как что-то другое) и использовать в качестве памяти? А как вообще поступают если надо непрерывно выдавать данные на частоте 1-2 ГГц. Единственный вариант, который мне приходит в голову это ставить несколько(4-5) микросхем памяти (частотой 200 МГц) считывать с них одновременно данные, а потом выдавать последовательно результат на цап. Это я так из любопытства интересуюсь.

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

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


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

Основное преимущество динамической памяти это её цена, поэтому и приходится заморачиваться. Делал рефреш для SDRAM в момент между переключениями с чтения на запись и наоборот, экономил пару тактов. Ну или в паузах. Также подключал всю свободную память Cyclone II как SRAM к Blackfin. Всё зависит от задач :)

Какой объем памяти и какой поток данных нужен?

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


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

Ну сейчас цап должен выдавать данные из памяти с частотой 165 Мгц. В память будут записываться выборки сигнала с компа (время записи не принципиально, принципиально время чтения, так как запись будет идти 1 раз, чтение много раз, например в течение 2 часов). Объём выборки 600-800 тыс выборок по 8 бит, такие числа брались из расчёта 7 мбит внутренней памяти плис, но в идеале чтобы уместилось 2-4 млн. выборок ( что-то около 30 мбит, т.е. подходит любая dram (по памяти), самое главное чтобы данные из плис в цап шли непрерывно и не абы какие, а те что лежат во внешней памяти (память и цап будут соединены с плис (т.е. плис посылает команду чтения памяти, потом то что пришло из памяти посылается на цап ) Вот такая фигня. Как я понял плис, цап, память должны работать как минимум с частотой 165 МГц. Память будет на 200 МГц в количестве 2 штук ( ну когда одна не может выдать данные (из-за начала регенерации или ещё чего-нибудь, данные продолжит выдавать другая (2 памяти с одинаковыми выборками) что-то вроде такой http://www.chipdip.ru/product1/8508374164/ (время доступа 5 нс (200 МГц)), а какая плис сможет потянуть такие требования (выдавать сигнал на частоте 165 МГц, ну места для контроллера думаю в любом случае хватит, контроллер думаю сам писать, какой-нить самый простой, т.к. документацию изучил и представление о том как он должен выглядеть у меня уже есть) ?

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

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


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

Ну сейчас цап должен выдавать данные из памяти с частотой 165 Мгц. Объём выборки 600000-800000 тыс выборок по 8 бит
Я не совсем понял, объем желаемой памяти 600-800 Мбайт? Поток данных 165 Мбайт/сек? Если да, то надо использовать DRAM. Конкретный тип памяти SDRAM или DDR SDRAM сложно советовать. У меня стоит похожая задача. Я пытаюсь пристыковать DDR3 к Cyclone V, но застрял на этапе моделирования. Даже тему на форуме создавал. И не только у меня проблемы возникали с моделированием. К сожалению, я сам пока не осилил, а другой участник форуме не отписался о достигнутых результатах.

Я вижу примерно такое решение для своей задачи. Использую в Cyclone V аппаратный контроллер памяти, подключаю к нему на вход и на выход FIFO необходимой длины, сделанной на внутренней памяти FPGA. Получаю для 5CEFA2F23C8N 333 МГц или 1332 Мбайт/сек на x16 для DDR3. Реально будет поменьше из-за накладных расходов. Объем одной микросхемы памяти 2-8 Гбит. Вот сколько займет по времени разработка не берусь судить, но много.

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


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

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

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

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

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

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

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

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

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

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