реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Нестабильно работает проект
tttt
сообщение Nov 15 2013, 12:20
Сообщение #1





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



Добрый день!

Расскажите, пожалуйста, как реализуют на ПЛИС большие проекты?

Есть проект, в котором будет использоваться 80% пользовательских пинов, пины уже назначил. В этом проекте пишу 2 своих несложных модуля - передающий, и принимающий, которые по отдельности отлажены и работают нормально, но при сборке их в один модуль они начинают работать некорректно, причем их работа меняется буквально от всего - изменяю что-то в принимающем и уже неправильно работает передающий, либо убираю вообще приемный модуль из проекта и передающая часть всё-равно работает некорректно, но результат симуляции другой, очищаю список назначенных пинов - результат симуляции так же меняется. Это при том, что проект занимает 1-2% логических элементов.

Как избавиться от этой нестабильности? Можно как-то зафиксировать разводку модуля? ПЛИС - FLEX9K. Буду благодарен любой информации на эту тему.
Go to the top of the page
 
+Quote Post
Swup
сообщение Nov 15 2013, 12:29
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 127
Регистрация: 2-09-11
Из: Москва
Пользователь №: 66 970



Добрый день.

Вам стоило бы подробнее развернуть суть проблемы.
Какая тактовая частота? Как ваши модули работают? Как вы их описали? Проверяете ли вы временные ограничения?

FLEX конечно ужасная вещь, но у меня в 5ти тысячном сделан квадратурный приемник, с тактовой частотой 25 МГц, объемом в 95% ПЛИС и 70% пинов и все работало.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Nov 15 2013, 12:37
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(tttt @ Nov 15 2013, 16:20) *
Как избавиться от этой нестабильности? Можно как-то зафиксировать разводку модуля? ПЛИС - FLEX9K. Буду благодарен любой информации на эту тему.

Судя по "Flex", ТС - это студент...
А тогда сам проект - асинхронный, и потому в нем что-то перекашивает...
Ну и в добавок CDC не сделан как надо...

А в остальном, все хорошо и "пины назначены"...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
tttt
сообщение Nov 15 2013, 12:44
Сообщение #4





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



iosifk, давай по делу, пожалуйста, Шерлок.

Swup, спасибо, тактовая частота 50Мгц. Передающая часть принимает извне 32битные слова, сохраняет их в асинхронную RAM, затем как только накопится какое-то количество слов, считывает их из памяти и передает на максимальной скорости в другой модуль - приемный. В приемном модуле принятые данные так же сохраняются в RAM, затем по внешнему сигналу чтения данные из памяти выставляются на выход.

Сообщение отредактировал tttt - Nov 15 2013, 12:44
Go to the top of the page
 
+Quote Post
Swup
сообщение Nov 15 2013, 12:54
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 127
Регистрация: 2-09-11
Из: Москва
Пользователь №: 66 970



Цитата(tttt @ Nov 15 2013, 16:44) *


Ну это только два вопроса.

TimeQuest вроде не поддерживает Flex`ы, так что посмотрите хотя бы к простом анализаторе.
Опять же, как это описано? Посмотрите результаты синтеза в RTL и убедитесь, что вы именно это имели ввиду.

Тут конечно разговор отвлеченный, никто этого не проверит и не скажет наверняка. Ни у кого нету такого кристалла, новый софт его даже и не поддерживает уже.
Максимум вы услышите советы насчет кода.

ЗЫ грубить - не красиво.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Nov 15 2013, 13:03
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(tttt @ Nov 15 2013, 16:44) *
iosifk, давай по делу, пожалуйста, Шерлок.

У нас тут принято общаться на "Вы"... Да и нехорошо так к старшим...
А по делу я же все написал - "Краткий Курс", у меня на сайте...
И без кода сказать нечего...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
kuchynski
сообщение Nov 15 2013, 13:05
Сообщение #7


Участник
*

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



Вопрос понятен, и до боли знаком crying.gif
Фиксировать разводку - неправильное решение.
Если кратко изложить ответ, то:
Цитата(iosifk @ Nov 15 2013, 14:37) *
сам проект - асинхронный, и потому в нем что-то перекашивает...

Уберите ассинзронные сбросы и установки. Видел прокты у которых определённое состояние шины через элемент И заводилось на тактовый вход. И проект работал! и люди ничего не хотели менять. Но скорее всего, как и у вас до поры, до времени.
Так что никакого искуственного принуждения схемы к работе, холько синхронизация всего и вся. Можно конечно и отойти от правил, но чётко представляя себе где именно, зачем это надо, и почему это будет работать вечно.
А что студент, так то хорошо.
Go to the top of the page
 
+Quote Post
o_khavin
сообщение Nov 15 2013, 16:54
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 230
Регистрация: 29-08-09
Пользователь №: 52 094



Цитата(tttt @ Nov 15 2013, 16:44) *
давай по делу, пожалуйста, Шерлок.

Давай тоже по делу, студент. cool.gif
Два ключевых вопроса:
1) констрейнты на тайминг назначены?
2) констрейнты на тайминг сходится?
Если ответ на вопросы типа "э... а что это такое?" - то RTFM, RTFM и ещё раз RTFM, как завещал Ильич или чуть больше вежливости и , возможно, местные помогут.
Go to the top of the page
 
+Quote Post
gosu-art
сообщение Nov 15 2013, 17:08
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 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

Он часто вылазит когда проект большой. обычно помогает сменой фронта с положительного на отрицательный в некоторых участках кода
Go to the top of the page
 
+Quote Post
Corner
сообщение Nov 18 2013, 15:38
Сообщение #10


Профессионал
*****

Группа: Участник
Сообщений: 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 в последнем есть, но именно для этих семейств поддержки нет. И нужно избавляться от варнинга

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


НИКОГДА не используйте негедж в ПЛИС, где его нет аппаратно. Глюки обеспечены.
Go to the top of the page
 
+Quote Post
dxp
сообщение Nov 19 2013, 05:33
Сообщение #11


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), а аппаратура этого не умеет. Но в этом случае, как правило, синтезатор выдаёт ошибку.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
Torpeda
сообщение Nov 19 2013, 09:37
Сообщение #12


Местный
***

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



Цитата(tttt @ Nov 15 2013, 15:20) *
Как избавиться от этой нестабильности? Можно как-то зафиксировать разводку модуля? ПЛИС - FLEX9K. Буду благодарен любой информации на эту тему.

1) Я так понимаю у Вас симуляция с реальными задержками неправильно работает или это сам RTL не работает?
2) А тайминг констрейны у вас как описаны? Напр в SDC формате они есть?
3) А дизайн у Вас 100% синхронный?
Go to the top of the page
 
+Quote Post
o_khavin
сообщение Nov 19 2013, 16:09
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 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 формате они есть?

Этот вопрос ТС-у уже несколько раз задавали. Судя по полному отсутствию ответов, он просто не знает, что это такое. biggrin.gif
Go to the top of the page
 
+Quote Post
Corner
сообщение Nov 19 2013, 16:40
Сообщение #14


Профессионал
*****

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



Цитата(dxp @ Nov 19 2013, 09:33) *
Древний FLEX8000 вполне успешно работал на 40 МГц (лазерный дальномер). От проекта зависит. 40 МГц были не пределом для него.

Категоричное утверждение. И неверное. Всё прекрасно работает. В современных FPGA без проблем вставляется инверсия перед подачей клока на триггер. Другое дело, когда хотят что-то вроде always_ff @(posedge clk, negedge clk), а аппаратура этого не умеет. Но в этом случае, как правило, синтезатор выдаёт ошибку.


1. У меня даже на 80 работал, но код вылизывался 1,5 года.
2. В современных ПЛИС. Флекс лучше так не использовать - инверсия клока это 3 ячейки.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th July 2025 - 11:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01487 секунд с 7
ELECTRONIX ©2004-2016