|
|
  |
Нестабильно работает проект |
|
|
|
Nov 15 2013, 12:20
|
Группа: Новичок
Сообщений: 9
Регистрация: 9-07-13
Пользователь №: 77 446

|
Добрый день!
Расскажите, пожалуйста, как реализуют на ПЛИС большие проекты?
Есть проект, в котором будет использоваться 80% пользовательских пинов, пины уже назначил. В этом проекте пишу 2 своих несложных модуля - передающий, и принимающий, которые по отдельности отлажены и работают нормально, но при сборке их в один модуль они начинают работать некорректно, причем их работа меняется буквально от всего - изменяю что-то в принимающем и уже неправильно работает передающий, либо убираю вообще приемный модуль из проекта и передающая часть всё-равно работает некорректно, но результат симуляции другой, очищаю список назначенных пинов - результат симуляции так же меняется. Это при том, что проект занимает 1-2% логических элементов.
Как избавиться от этой нестабильности? Можно как-то зафиксировать разводку модуля? ПЛИС - FLEX9K. Буду благодарен любой информации на эту тему.
|
|
|
|
|
Nov 15 2013, 12:37
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(tttt @ Nov 15 2013, 16:20)  Как избавиться от этой нестабильности? Можно как-то зафиксировать разводку модуля? ПЛИС - FLEX9K. Буду благодарен любой информации на эту тему. Судя по "Flex", ТС - это студент... А тогда сам проект - асинхронный, и потому в нем что-то перекашивает... Ну и в добавок CDC не сделан как надо... А в остальном, все хорошо и "пины назначены"...
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Nov 15 2013, 12:44
|
Группа: Новичок
Сообщений: 9
Регистрация: 9-07-13
Пользователь №: 77 446

|
iosifk, давай по делу, пожалуйста, Шерлок.
Swup, спасибо, тактовая частота 50Мгц. Передающая часть принимает извне 32битные слова, сохраняет их в асинхронную RAM, затем как только накопится какое-то количество слов, считывает их из памяти и передает на максимальной скорости в другой модуль - приемный. В приемном модуле принятые данные так же сохраняются в RAM, затем по внешнему сигналу чтения данные из памяти выставляются на выход.
Сообщение отредактировал tttt - Nov 15 2013, 12:44
|
|
|
|
|
Nov 15 2013, 12:54
|
Частый гость
 
Группа: Свой
Сообщений: 127
Регистрация: 2-09-11
Из: Москва
Пользователь №: 66 970

|
Цитата(tttt @ Nov 15 2013, 16:44)  Ну это только два вопроса. TimeQuest вроде не поддерживает Flex`ы, так что посмотрите хотя бы к простом анализаторе. Опять же, как это описано? Посмотрите результаты синтеза в RTL и убедитесь, что вы именно это имели ввиду. Тут конечно разговор отвлеченный, никто этого не проверит и не скажет наверняка. Ни у кого нету такого кристалла, новый софт его даже и не поддерживает уже. Максимум вы услышите советы насчет кода. ЗЫ грубить - не красиво.
|
|
|
|
|
Nov 15 2013, 13:03
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(tttt @ Nov 15 2013, 16:44)  iosifk, давай по делу, пожалуйста, Шерлок. У нас тут принято общаться на "Вы"... Да и нехорошо так к старшим... А по делу я же все написал - "Краткий Курс", у меня на сайте... И без кода сказать нечего...
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Nov 15 2013, 13:05
|
Участник

Группа: Свой
Сообщений: 58
Регистрация: 28-12-04
Из: Минск
Пользователь №: 1 713

|
Вопрос понятен, и до боли знаком Фиксировать разводку - неправильное решение. Если кратко изложить ответ, то: Цитата(iosifk @ Nov 15 2013, 14:37)  сам проект - асинхронный, и потому в нем что-то перекашивает... Уберите ассинзронные сбросы и установки. Видел прокты у которых определённое состояние шины через элемент И заводилось на тактовый вход. И проект работал! и люди ничего не хотели менять. Но скорее всего, как и у вас до поры, до времени. Так что никакого искуственного принуждения схемы к работе, холько синхронизация всего и вся. Можно конечно и отойти от правил, но чётко представляя себе где именно, зачем это надо, и почему это будет работать вечно. А что студент, так то хорошо.
|
|
|
|
|
Nov 15 2013, 16:54
|
Местный
  
Группа: Участник
Сообщений: 230
Регистрация: 29-08-09
Пользователь №: 52 094

|
Цитата(tttt @ Nov 15 2013, 16:44)  давай по делу, пожалуйста, Шерлок. Давай тоже по делу, студент. Два ключевых вопроса: 1) констрейнты на тайминг назначены? 2) констрейнты на тайминг сходится? Если ответ на вопросы типа "э... а что это такое?" - то RTFM, RTFM и ещё раз RTFM, как завещал Ильич или чуть больше вежливости и , возможно, местные помогут.
|
|
|
|
|
Nov 15 2013, 17:08
|
Знающий
   
Группа: Свой
Сообщений: 555
Регистрация: 14-10-09
Пользователь №: 52 939

|
Цитата(Swup @ Nov 15 2013, 16:54)  TimeQuest вроде не поддерживает Flex`ы, ACEX и FLEX закончились на Q9.0sp2. хоть TQ в последнем есть, но именно для этих семейств поддержки нет. И нужно избавляться от варнинга Цитата clock skew larger than data delay Он часто вылазит когда проект большой. обычно помогает сменой фронта с положительного на отрицательный в некоторых участках кода
|
|
|
|
|
Nov 18 2013, 15:38
|

Профессионал
    
Группа: Участник
Сообщений: 1 072
Регистрация: 11-12-12
Пользователь №: 74 815

|
Цитата(tttt @ Nov 15 2013, 16:44)  iosifk, давай по делу, пожалуйста, Шерлок.
Swup, спасибо, тактовая частота 50Мгц. Передающая часть принимает извне 32битные слова, сохраняет их в асинхронную RAM, затем как только накопится какое-то количество слов, считывает их из памяти и передает на максимальной скорости в другой модуль - приемный. В приемном модуле принятые данные так же сохраняются в RAM, затем по внешнему сигналу чтения данные из памяти выставляются на выход. ФЛЕКС на 24 МГц работает с трудом. Греется и ходит под себя. Теоретические 125 МГц в живую не попадалось... Цитата(gosu-art @ Nov 15 2013, 21:08)  ACEX и FLEX закончились на Q9.0sp2. хоть TQ в последнем есть, но именно для этих семейств поддержки нет. И нужно избавляться от варнинга Он часто вылазит когда проект большой. обычно помогает сменой фронта с положительного на отрицательный в некоторых участках кода НИКОГДА не используйте негедж в ПЛИС, где его нет аппаратно. Глюки обеспечены.
|
|
|
|
|
Nov 19 2013, 05:33
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
QUOTE (Corner @ Nov 18 2013, 22:38)  ФЛЕКС на 24 МГц работает с трудом. Греется и ходит под себя. Теоретические 125 МГц в живую не попадалось... Древний FLEX8000 вполне успешно работал на 40 МГц (лазерный дальномер). От проекта зависит. 40 МГц были не пределом для него. QUOTE (Corner @ Nov 18 2013, 22:38)  НИКОГДА не используйте негедж в ПЛИС, где его нет аппаратно. Глюки обеспечены. Категоричное утверждение. И неверное. Всё прекрасно работает. В современных FPGA без проблем вставляется инверсия перед подачей клока на триггер. Другое дело, когда хотят что-то вроде always_ff @(posedge clk, negedge clk), а аппаратура этого не умеет. Но в этом случае, как правило, синтезатор выдаёт ошибку.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Nov 19 2013, 09:37
|

Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 23-02-12
Пользователь №: 70 424

|
Цитата(tttt @ Nov 15 2013, 15:20)  Как избавиться от этой нестабильности? Можно как-то зафиксировать разводку модуля? ПЛИС - FLEX9K. Буду благодарен любой информации на эту тему. 1) Я так понимаю у Вас симуляция с реальными задержками неправильно работает или это сам RTL не работает? 2) А тайминг констрейны у вас как описаны? Напр в SDC формате они есть? 3) А дизайн у Вас 100% синхронный?
|
|
|
|
|
Nov 19 2013, 16:09
|
Местный
  
Группа: Участник
Сообщений: 230
Регистрация: 29-08-09
Пользователь №: 52 094

|
Цитата(dxp @ Nov 19 2013, 09:33)  Категоричное утверждение. И неверное. Всё прекрасно работает. В современных FPGA без проблем вставляется инверсия перед подачей клока на триггер. Другое дело, когда хотят что-то вроде always_ff @(posedge clk, negedge clk), а аппаратура этого не умеет. Но в этом случае, как правило, синтезатор выдаёт ошибку. Проблема в том, что для старых FPGA может некорректно считаться тайминг на отрицательные фронты клока. В современных FPGA и софте действительно всё в порядке. Цитата(Torpeda @ Nov 19 2013, 13:37)  А тайминг констрейны у вас как описаны? Напр в SDC формате они есть? Этот вопрос ТС-у уже несколько раз задавали. Судя по полному отсутствию ответов, он просто не знает, что это такое.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|