|
|
  |
Как управлять задержками на пинах? |
|
|
|
Sep 20 2013, 13:02
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(nmurzin @ Sep 20 2013, 09:04)  Для Cyclon3. Действительно, в Assignment Editor есть опции Delay from Output Register to Output Pin. Можно задать варианты [0..1]. Input Delay from Pin to Internal Cells. Можно задать варианты [0..6]. можно в .qsf файле вручную прописать, например Код set_instance_assignment -name D1_DELAY 12 -to ........ если есть возможность и знаете что хотите.
|
|
|
|
|
Sep 22 2013, 13:59
|

Местный
  
Группа: Свой
Сообщений: 323
Регистрация: 14-12-10
Из: Королёв
Пользователь №: 61 599

|
Цитата(bogaev_roman @ Sep 20 2013, 17:02)  можно в .qsf файле вручную прописать, например Код set_instance_assignment -name D1_DELAY 12 -to ........ если есть возможность и знаете что хотите. HPC2 на этапа инициализации пишет/читает разные последовательности ноликов и единичек и на основе полученных задержек сам выставляет оптимальные. То есть если local_init_done поднимается в '1' после включения питания стабильно - то задержки подобраны и проблем быть не должно. Смотрите "железные" проблемы - питание, перекрестные помехи .... Попробуйте снизить частоту DDR2 до 125 МГц - вдруг все всплывет
|
|
|
|
|
Sep 23 2013, 08:05
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(Sergey_Bekrenyov @ Sep 22 2013, 17:59)  HPC2 Да, я слона и не увидел  В этом случае все задержки определяются оптимально на этапе инициализации и ручное размещение все только испортит. Тогда тут либо проблема в физике, либо неправильно подключен сам контроллер. to nmurzin таймквест о временных сбоях ничего не пишет? У меня с DDR3 контроллером на stratixiv проблемы были - ошибки по холдам и приходилось вручную регистры двигать. Кстати, до исправления в железе иногда работало - иногда нет, но начальная инициализация всегда проходила.
|
|
|
|
|
Sep 23 2013, 10:03
|

Местный
  
Группа: Свой
Сообщений: 323
Регистрация: 14-12-10
Из: Королёв
Пользователь №: 61 599

|
Цитата(bogaev_roman @ Sep 23 2013, 12:05)  Да, я слона и не увидел  В этом случае все задержки определяются оптимально на этапе инициализации и ручное размещение все только испортит. Тогда тут либо проблема в физике, либо неправильно подключен сам контроллер. to nmurzin таймквест о временных сбоях ничего не пишет? У меня с DDR3 контроллером на stratixiv проблемы были - ошибки по холдам и приходилось вручную регистры двигать. Кстати, до исправления в железе иногда работало - иногда нет, но начальная инициализация всегда проходила. Интересно, а частота у Вас на краю возможного была? И какие исправления в железе? Я до DDR3 еще не добрался, но Cyclone-V светит, да и Artix/Spartan-6 - так что заранее побиваюсь
|
|
|
|
|
Sep 23 2013, 14:43
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(Sergey_Bekrenyov @ Sep 23 2013, 14:03)  Интересно, а частота у Вас на краю возможного была? И какие исправления в железе? Я до DDR3 еще не добрался, но Cyclone-V светит, да и Artix/Spartan-6 - так что заранее побиваюсь Опорная 100, рабочая 300МГц, т.е. не предельная. Точное место сейчас не скажу, суть - частота *clk_div2* приходила на триггер позже данных. Я вручную регистры отодвигал от входных DDR регистров на несколько позиций, чтобы задержать данные. Если интерсно, завтра посмотрю схему подробнее и отпишусь.
|
|
|
|
|
Sep 24 2013, 10:59
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(Sergey_Bekrenyov @ Sep 23 2013, 18:58)  Если не трудно Тип ошибки вроде был uniphy core (setup), посмотреть сейчас не могу т.к. надо перекомпилировать все, а это процесс долгий. Вход частоты - получен на обычном триггере из dqs, т.е. в два раза меньшая и идущая по обычной линии(*mc_phy|uniphy|p0|umemphy|uread_datapath|read_capture_clk_div2[8]|q). Данные - выход DDR, конкретно low (*mc_phy|uniphy|p0|umemphy|uio_pads|dq_ddio[8].ubidir_dq_dqs|altdq_dqs2_inst|rea d_data_out[4]). И, соответственно, ошибка на триггере (*mc_phy|uniphy|p0|umemphy|uread_datapath|read_buffering[8].read_subgroup[0].ure ad_fifo_neg|data_stored[0][4]) из-за того, что данные приходили с большой задержкой. Изначально прижимал регистр к пинам, чтобы уменьшить время по данным , но вылазили ошибки в других местах. Было принято решение отодвинуть размещение триггера, на котором формируется частота подальше от входов dq. Это сработало. Сам квартус это растащить не смог и при различных настройках, проблема как мне кажется в том, что в конкретном критсталле и проекте все входы-выходы размещены по вертикали и через два/четыре (в зависимости от стороны) лаба по вертикали идут банки M9K. Ну и вся логика контроллера получается довольно плотно размещена из-за памятей.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|