|
Переполнение кристала или неверная компановка проекта? |
|
|
|
Sep 7 2012, 07:07
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 26-01-11
Из: Свердловская область, г. Каменск-Уральский
Пользователь №: 62 487

|
Добрый день, Уважаемые Коллеги! Столкнулся я с такой бедой. Был проект на ПЛИС EPF10K20RI208-4. Жил он и развивался, пока не подошел к своему логическому завершению, а именно реализации на БМК. Проект не то чтобы сложный, но всеже. По сути набор автоматов обработки входных данных, контроллер Манчестер (сильно урезанный под протокол) и интерфейс обмена с процессором. В проекте 3 домена частот 40, 37,5 и 12МГц. 40 и 37,5 связанные частоты (37,5 производится из 40 внешним ФАПЧ), 12 - асинхронная (не привязана к другим). Из констрейнов заданы были только эти частоты и расчет временЫх параметров производился Quartus'ом без анализа переходов между доменами. Сейчас проект занимает 91% логической емкости кристала и 68% пинов. И все было хорошо: проект компилился, разводился, работал адекватно и предсказуемо реагировал на изменения в логике и пинах. Но, как всегда это бывает, в последний момент появилась необходимость доработки проекта, в связи с аппаратными доработками. И тут НАЧАЛОСЬ!!! После реализации половины доработок проект начал работать, что называется "как есть". Шаг в право, шаг в лево - расстрел, т.е. любые попытки изменения приводят к тому, что проект перестает работать (на железе), причем перестает довольно хитро и не понятно. Например есть у меня несколько выходных пинов в проекте (тестовых), которые жестко не привязаны в пин-планере (отдано на откуп компилятору). Я смотрю в репорте к какому внешнему пину компилятор привязал мой тестовый, в пинпланенре повторяю эту привязку (тоесть "оффициально" прошу Quartus вывести мне этот сигнал на этот пин) и после компиляции проект на железе не работает (нет всязи с процессором, либо автоматы отработывают один раз и затыкаются и т.д. и т.п.) Причем на симмуляции - все работает все тесты проходят. Тоже самое происходит при попытке добавления пинов, при попытке изменения логики (например вместо данных с процессора я выставляю константу). Что теперь делать - ума не приложу. Есть ли у кого-нибудь мысли по этому поводу? Нужно именно доводить текущий проект, т.к. сроки поджимают.
|
|
|
|
|
Sep 7 2012, 07:46
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 26-01-11
Из: Свердловская область, г. Каменск-Уральский
Пользователь №: 62 487

|
запас по частота, по оценкам Quartus'а, порядка 1,5 - 2 раза.
|
|
|
|
|
Sep 7 2012, 10:31
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 26-01-11
Из: Свердловская область, г. Каменск-Уральский
Пользователь №: 62 487

|
Цитата(litv @ Sep 7 2012, 15:21)  Ну вывести на внешние ножки парочку внутренних контрольных сигналов и смотреть.
Значит блоки есть асинхронные.......... Каким нибудь быстрым клоком их .... В том-то и проблемма, что вывести контрольные сигналы из ПЛИС не получается. Точнее сигналы я, конечно, вывожу, но проект при этом перестает работать. Цитата(sazh @ Sep 7 2012, 15:33)  В этом кристалле ничего нет. Ни pll, ни двухпортовой памяти. Переходите на одноклоковую синхронизацию. (Посмотрите fitter- resource section- global&other fast signal, имеют ли все ваши клоки атрибут global) Да этот кристал пуст - только логика. (Двухпортовая память в другом проекте, мне приходится до 4-х проектов вести одновременно  ). Перейти на дноклоковою снхронизацию неполучится вся суть проекта в работе с двумя частотами 37,5 и 40. Максимум что можно - это выкинуть 12. Но пока смысла не вижу, от нее только Манчестер работает, на основные автоматы она не завязана. Все клоки глобальные. 37,5 и 40 заведены на входы частоты, 12 - на "быстрый вход".
|
|
|
|
|
Sep 7 2012, 12:15
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 26-01-11
Из: Свердловская область, г. Каменск-Уральский
Пользователь №: 62 487

|
Да, куски можно считать независимыми. Переход с частоты на частоту происходит через двойную буферизацию (два последовательных триггера с новой частотой). Вроде бы переходов не очень много и не в критичных местах, тоесть не должно быть пропусков и затыков автомата. на Моделировании без анализа метосостояния (а по другому и не получится) все работает. Переходы идут широкими синалами, т.е никаких выбрасов быть не должно. Если не поподет на первом такте - не страшно. Логик-лок регионов в данной ПЛИС нет, если вы их имели ввиду. Поэтому реализовывать в виде отдельных разведенных нетлистов не получится. Теоретически есть возможность фиксировать расположение логических ячеек, но я с такими вещами не работал, и не думаю, что у меня получится лучше чем у фитера.
|
|
|
|
|
Sep 7 2012, 17:49
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(Кирилл Лубнин @ Sep 7 2012, 16:15)  Да, куски можно считать независимыми. Переход с частоты на частоту происходит через двойную буферизацию (два последовательных триггера с новой частотой). То есть данные получаем в регистре на одной частоте, а записываем в регистр на другой без доплогики? Но если частота передатчика больше, то приемник не всегда будет хватать данные, а если наоборот, то данные могут захватываться приемником в некоторых случаях два раза. Наиболее интересная ситуация, когда частота записи и считывания примерно совпадут по времянке и запишется в регистр только часть данных (если это не однорзрядный сигнал), в этом случае сигнал на выход пойдет неправильным. Может Вы все таки используете что-то подобное fifo с записью на одной частоте, а считыванием на другой с использованием кода Грея?
|
|
|
|
|
Sep 7 2012, 18:46
|
Участник

Группа: Участник
Сообщений: 31
Регистрация: 26-01-11
Из: Свердловская область, г. Каменск-Уральский
Пользователь №: 62 487

|
Вот тут крепко подумать надо. Вроде бы ничего такого нет все шины данных переходят вместе с сигналами записи, и при этом данные появляются на несколько тактов раньше записи т.е таких ситуаций с неполным защелгиванием быть не должно. Но на всякий случай еще раз проверю в понедельник. Да и при такой ситуации он бы вылетал постоянно, а не только после компиляции с изменениями. Там частоты близкие 40 и 37,5 они за 15/16 тактов полностью сходятся и расходятся.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|