DmitryR 0 17 декабря, 2015 Опубликовано 17 декабря, 2015 · Жалоба Производитель ПЛИС нормирует максимальный джиттер PLL. От наихудшего случая и надо плясать. То, что в некоторых ситуациях джиттер будет в разы, а то и на порядок лучше, роли не играет, и закладываться на это нельзя. Закладываться можно на всё, что вы способны протестировать. Производители часто халявят, и вместо того, чтобы расписать условия работы их изделия в разных режимах, пишут в даташите только наихудший случай. Помню ещё много лет назад надо было на Xilinx каком-то дешёвом тоже сделать хитрую систему тактирования - так у них был калькулятор, который считал джиттер DCM в зависимости от его настроек. Сейчас так, к сожалению, уже никто не строит, поэтому если кто хочет получить изделие с наилучшим соотношением цена/качество (что в бизнесе, если он не связан с войной или космосом даёт лучшие результаты, чем абсолютное качество при любой цене), то приходится экспериментировать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 17 декабря, 2015 Опубликовано 17 декабря, 2015 · Жалоба Закладываться можно на всё, что вы способны протестировать. Производители часто халявят, и вместо того, чтобы расписать условия работы их изделия в разных режимах, пишут в даташите только наихудший случай. Помню ещё много лет назад надо было на Xilinx каком-то дешёвом тоже сделать хитрую систему тактирования - так у них был калькулятор, который считал джиттер DCM в зависимости от его настроек. Сейчас так, к сожалению, уже никто не строит, поэтому если кто хочет получить изделие с наилучшим соотношением цена/качество (что в бизнесе, если он не связан с войной или космосом даёт лучшие результаты, чем абсолютное качество при любой цене), то приходится экспериментировать. это Вы правильно заметили эксперементы и еще раз эксперементы. К сожалению это касается не только ПЛИС, производители все чаще стали умалчивать в даташитах свои "баги", а для разработчика, как говорил Винокур "потом сюрприз будет" :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 17 декабря, 2015 Опубликовано 17 декабря, 2015 · Жалоба что это нельзя учесть, только выявить экспериментально... И какой джиттер тогда фигурирует во временном анализе? учитывается наихудший случай. Получите ли вы лучше, можно измерить только экспериментально Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 25 17 декабря, 2015 Опубликовано 17 декабря, 2015 · Жалоба .. поэтому если кто хочет получить изделие с наилучшим соотношением цена/качество ..., то приходится экспериментировать. Ага.. А потом производитель FPGA тоже "захочет получить изделие с наилучшим соотношением цена/качество" и что-нибудь так наоптимизирует в своём тех-процессе, что все ваши "эксперименты" пойдут лесом и вдруг окажется, что старые прошивки в новых кристаллах не работают, ну никак! И здесь на форуме, ЕМНИП, кто-то уже сталкивался с подобными проблемами.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demon3200 0 17 декабря, 2015 Опубликовано 17 декабря, 2015 · Жалоба В цифровых схемах момент семплирования данных с выхода SDRAM выбирают исходя из условия максимального раскрытия Глазковой диаграммы SDRAM это частный случай. Вопрос в том, как учесть джиттер вообще, в т.ч. и в самой ПЛИС. На каждый триггер диаграмму строить же не будешь... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 17 декабря, 2015 Опубликовано 17 декабря, 2015 · Жалоба И здесь на форуме, ЕМНИП, кто-то уже жаловался на подобные проблемы.. Ни кто-то, а я :) при переходе с сыклонов 2 на сыклоны 3. Но проблемы были не в джиттере как таковом, а в модуляции тактовой, вызываемой сигналами разрешения, по которым хлопала достаточно толстая логика. SDRAM это частный случай. Вопрос в том, как учесть джиттер вообще, в т.ч. и в самой ПЛИС. На каждый триггер диаграмму строить же не будешь... вам же сказали уже раза 3. производитель гарантирует максимальный джиттер. весь расчет идет по нему. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 25 17 декабря, 2015 Опубликовано 17 декабря, 2015 · Жалоба Вопрос в том, как учесть джиттер вообще, в т.ч. и в самой ПЛИС. Это всё учитывается в STA: derive_clock_uncertainty, set_clock_uncertainty. Учите матчасть, короче! Ни кто-то, а я :) при переходе с сыклонов 2 на сыклоны 3. Не, я про вот это: Маркировка на всех мс обоих партий практически одинаковая кроме одной цифры в Lot number. Из первой партии (VAM9M73761) всего 1% работает не стабильно. Но меня это устраивает. Вторая VAM9M73741 - 80% работают со сбоями. Причем с повышением температуры до 40-50С не работают практически все. Как такое может быть если выпущены обе партии в одну неделю и скорее всего на одном и том же заводе? Почему может быть такая огромная разница в проценте рабочих мс? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demon3200 0 17 декабря, 2015 Опубликовано 17 декабря, 2015 · Жалоба вам же сказали уже раза 3. производитель гарантирует максимальный джиттер. весь расчет идет по нему. Вот теперь все стало ясно. Не всегда сразу поймешь, что имеется ввиду, приходится дотошно спрашивать. Прошу прощения, если что не так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
enzaime 0 18 декабря, 2015 Опубликовано 18 декабря, 2015 (изменено) · Жалоба И ещё вопрос такой: когда говорится что память dram работает с частотой 133/167/200 мгц это означает, из этой памяти под управлением плис можно выводить данные на цап с частотой 133/167/200 мгц или что контроллер, управляющий этой памятью должен работать с данной частотой, а данные выводятся на самом деле, например каждый 3-4 такт работы контроллера? (например данные выводятся с частотой 30/50/65 мгц) а память например такая: http://www.chipdip.ru/product1/8725096650/ Изменено 18 декабря, 2015 пользователем enzaime Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bugdesigner 0 20 декабря, 2015 Опубликовано 20 декабря, 2015 · Жалоба контроллер, управляющий этой памятью должен работать с данной частотой, а данные выводятся на самом деле, например каждый 3-4 такт работы контроллера? (например данные выводятся с частотой 30/50/65 мгц) Это не совсем так, в sdram кроме обычного цикла чтения, нужно производить периодически цикл регенерации, что приводит к паузам в циклах работы. Поэтому приходится брать память с запасом по производительности, скармливать данные из неё в fifo, а уж потом в dac. Выбранная Вами память никак не справится с поставленной задачей . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 20 декабря, 2015 Опубликовано 20 декабря, 2015 · Жалоба Это не совсем так, в sdram кроме обычного цикла чтения, нужно производить периодически цикл регенерации.... в целом вы правы, но иногда можно обойтись без нее Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
enzaime 0 21 декабря, 2015 Опубликовано 21 декабря, 2015 (изменено) · Жалоба В общем посмотрел я документацию к памяти. И работать с ней что-то не так-то просто и с частотой 200/166/133 МГц должен работать контроллер, который будет этой памятью управлять. А прежде чем получить данные на выходе надо: послать команду предзарядки, потом дать команду активации строки из выбранного банка, потом дать команду чтения, подождать 2-3 цикла и только потом появятся данные (правда задержка только при первой команде чтения, дальше они идут потоком, только каждые 2-3 такта надо посылать команду чтения) + периодически регенерировать ячейки, которые записаны, но не используются. Круто, всё очень дружественно и удобно, блин. В итоге чтобы заставить выдавать данные с заявленной частотой, нужно быть магом не иначе (из-за периодических циклов регенерации (т.е. выдавать данные циклично из какого-либо 1 банка продолжительное время без регенерации, можно потерять, то что хранится в другом банке, к тому же переход от строки к строке прерывает выход данных). Разве не удобнее купить ПЛИС тысяч за 10 на каком-нибудь ali express с кучей логических ячеек (серия Cyclone V, написать код, который выполнял бы просто хранение и запись n битных слов ( не за счёт ресурсов встроенной памяти, которой мало, а за счёт логических ячеек, ну написать проект так чтобы он распознавался не как ram память, а как что-то другое) и использовать в качестве памяти? А как вообще поступают если надо непрерывно выдавать данные на частоте 1-2 ГГц. Единственный вариант, который мне приходит в голову это ставить несколько(4-5) микросхем памяти (частотой 200 МГц) считывать с них одновременно данные, а потом выдавать последовательно результат на цап. Это я так из любопытства интересуюсь. Изменено 21 декабря, 2015 пользователем enzaime Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dinam 1 21 декабря, 2015 Опубликовано 21 декабря, 2015 · Жалоба Основное преимущество динамической памяти это её цена, поэтому и приходится заморачиваться. Делал рефреш для SDRAM в момент между переключениями с чтения на запись и наоборот, экономил пару тактов. Ну или в паузах. Также подключал всю свободную память Cyclone II как SRAM к Blackfin. Всё зависит от задач :) Какой объем памяти и какой поток данных нужен? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
enzaime 0 21 декабря, 2015 Опубликовано 21 декабря, 2015 (изменено) · Жалоба Ну сейчас цап должен выдавать данные из памяти с частотой 165 Мгц. В память будут записываться выборки сигнала с компа (время записи не принципиально, принципиально время чтения, так как запись будет идти 1 раз, чтение много раз, например в течение 2 часов). Объём выборки 600-800 тыс выборок по 8 бит, такие числа брались из расчёта 7 мбит внутренней памяти плис, но в идеале чтобы уместилось 2-4 млн. выборок ( что-то около 30 мбит, т.е. подходит любая dram (по памяти), самое главное чтобы данные из плис в цап шли непрерывно и не абы какие, а те что лежат во внешней памяти (память и цап будут соединены с плис (т.е. плис посылает команду чтения памяти, потом то что пришло из памяти посылается на цап ) Вот такая фигня. Как я понял плис, цап, память должны работать как минимум с частотой 165 МГц. Память будет на 200 МГц в количестве 2 штук ( ну когда одна не может выдать данные (из-за начала регенерации или ещё чего-нибудь, данные продолжит выдавать другая (2 памяти с одинаковыми выборками) что-то вроде такой http://www.chipdip.ru/product1/8508374164/ (время доступа 5 нс (200 МГц)), а какая плис сможет потянуть такие требования (выдавать сигнал на частоте 165 МГц, ну места для контроллера думаю в любом случае хватит, контроллер думаю сам писать, какой-нить самый простой, т.к. документацию изучил и представление о том как он должен выглядеть у меня уже есть) ? Изменено 21 декабря, 2015 пользователем enzaime Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dinam 1 21 декабря, 2015 Опубликовано 21 декабря, 2015 · Жалоба Ну сейчас цап должен выдавать данные из памяти с частотой 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 Гбит. Вот сколько займет по времени разработка не берусь судить, но много. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться