Полная версия этой страницы:
и снова EPM7128S
toweroff
Dec 24 2007, 22:03
В свойствах пинов стоит TTL. Питание ядра и IO - 5в
После двухдневной ловли глюков в железке (в симуляторе все ок, в железке - глючит), волею судеб тестером померил напругу выхода... МАМА! 3.6в !!!!!!!
И приплыли... Что делать не имею уже никакого понятия... Нада 5в чтобы было
Alex11
Dec 24 2007, 22:19
Читать описание, после чего или отключать нагрузку, или ставить резистор в +5.
aat_81
Dec 25 2007, 06:27
Так если мне не изменяет память то уровень логической еденицы в TTL уровне это 2.4 В, если плиска работает на микросхемы уровня TTL то все должно срабатывать.
Возможно большая нагрузка выхода по току. Сделать выход открытый коллектор и поставить pull-up.
toweroff
Dec 25 2007, 10:21
Цитата(ig_d @ Dec 25 2007, 09:42)

Возможно большая нагрузка выхода по току. Сделать выход открытый коллектор и поставить pull-up.
не, большой нагрузки там нет... в том-то и дело.
а где явно назначается, что пин open-drain? я нашел только Auto Open-Drain Pins on|off
dvladim
Dec 25 2007, 10:26
На 5-ти вольтовых семействах, выходные буфера, иногда, делали так: на n и n-канальных транзисторах. Поэтому лог. 0 был нормальным, а лог. 1 была = Vcc - V порога n-канального транзистора. Если нагрузка была небольшая, то нормально дотягивало до 4.2 В. Но при согласовании с TTL логикой проблем небыло, т.к. лог. 1 не хуже чем 2.4 В.
Stewart Little
Dec 25 2007, 13:48
Цитата(toweroff @ Dec 25 2007, 13:21)

я нашел только Auto Open-Drain Pins on|off
Не, это не из той оперы...
Используйте примитивы OPNDRN или TRI (они есть в библиотеке квартуса).
LordVader
Dec 25 2007, 14:10
Тоже такое наблюдал на епм7064. Выход не дотягивал до 5в. ТТЛ ело нормально, а вот Z80 отказался, пуллапом вылечилось.
DSIoffe
Dec 25 2007, 21:47
Цитата
Так если мне не изменяет память то уровень логической еденицы в TTL уровне это 2.4 В,
+1. Более того, на очень длинных высоких уровнях у 7000 можно наблюдать модуляцию соседними сигналами. Надо смириться с тем, что всё, что выше 2,4В - это логическая единица, и из этого исходить.
5В только через открытый сток, если позволяет быстродействие. А если нет - то буферы серии 74HCT или вроде того.
toweroff
Dec 25 2007, 22:52
Цитата(DSIoffe @ Dec 26 2007, 00:47)

+1. Более того, на очень длинных высоких уровнях у 7000 можно наблюдать модуляцию соседними сигналами. Надо смириться с тем, что всё, что выше 2,4В - это логическая единица, и из этого исходить.
5В только через открытый сток, если позволяет быстродействие. А если нет - то буферы серии 74HCT или вроде того.
Очень длинные - это сколько? У меня получается по трассе 50мм где-то, длительности /RD и /WR порядка 250нс. Эти сигналы пущены через 33 Ом от проца
Кстати... В корпусе TQFP100 EPM7128S должна греться? Как сильно?
DSIoffe
Dec 26 2007, 12:48
Цитата
Очень длинные - это сколько?

Не по месту, а по времени. Просто на долгой логической единице были хорошо видны всяческие перепады до сотен милливольт.
Греться должна, но не сильно, палец легко терпит.
toweroff
Dec 28 2007, 21:03
Ну пока всем челом бью, отпишусь что получилось

Попробую заодно приобщиться к верилогу, может и скомпилит более красиво...
toweroff
Jan 11 2008, 18:47
Итак... Подтяжки убрал совсем - фронты получаются жутко затяжными, а без них те 3.5в, выдаваемые максом, вполне катят для целевого девайса.
Целефой девайс - модуль с 3в флешами с трансмиттерами 3в -> 5в типа FST16211.
В "жесткой" логике (HC, AHC) все работает. Переписал все в макс (абсолютно тот же функционал)... и поехали в тундру...
Значицца что есть:
1) два регистра старшей части адреса (A15-A24, A0-A7), адреса A8-A14 выдает проц.
2) 8 8-разрядных регистров (попарно встречно-параллельных) для записи в/из модуля через три-буферы
3) три-буфер на шину данных проца
4) немного дополнительного незначительного функционала
Доступ к функционалу/модулю - через А15 проца. Фэнаутов на этом пине в максе 68
Все защелкивается по фронтам ALE, WR и RD
Имеем:
100% работающее чтение
иденты флешей читаются на ура
флеш стирается (команды жрет)
запись в тундре... доходит до некоего адреса в районе 7кб (всегда одного и того же и с разными модулями) и... ошибка записи в буфер (1 бит в единице)
Адрес никак не связан с установкой более старшего бита адреса (тут хоть было бы где копать)
Сверка записанной части и оригинала - 100%
Уточню, что софт проца НЕ менялся, т.е. все сигналы и вся логика работы сохранена. И еще что важно - сбой происходит в старшей части адресов процессора, регистры макса в этом не участвуют... кроме младшей части
Может будут у кого какие мысли по этому поводу?
toweroff
Jan 13 2008, 11:44
Притянул к +5 все адреса, идущие с ПЛИС, данные без подтяжек.
Пишется порядка 350-400 Кб, потом опять сбой.
Ставлю подтяжки на данные - вообще перестает что-либо записываться (CFI команды не распознаются флешой, все ID читаются как FF), при этом чтение работает 100%
Товарищи, кто-нибудь имел опыт работы с подтяжками на макс7к? Может их к нулю тянуть? и вообще надо ли?
Судя по тому, что девайс работает нестабильно и нестабильность меняется "от подтяжки к подтяжке", дело именно в этом

Длительность WR 120нс, данные выставляются на флеш через 22нс после начала WR и снимаются через то же время после окончания. В даташите на флеш - минимальное время удержания данных после окончания WR - 0(!) нс, т.е. мои данные гарантированно будут висеть при переходе 0-1 сигнала записи
Время удержания данных при записи - мин 45нс, что с лихвой выполняется (120-22) ~ 100нс
LordVader
Jan 13 2008, 12:57
toweroff, попробуйте на все выходы вашей CPLDшки поставить slow slew rate (в квартусе - assignments editor). Вдруг вы не в той степи ищете.
toweroff
Jan 13 2008, 13:04
Цитата(LordVader @ Jan 13 2008, 15:57)

toweroff, попробуйте на все выходы вашей CPLDшки поставить slow slew rate (в квартусе - assignments editor). Вдруг вы не в той степи ищете.
Спасибо, попробую... Знать бы еще, что это за параметр

Specifies the low-to-high or high-to-low transitions on output pins. This parameter is available for Cyclone III and Stratix III devices only.
О как
LordVader
Jan 13 2008, 14:34
[img]
Цитата(toweroff @ Jan 13 2008, 16:04)

Спасибо, попробую... Знать бы еще, что это за параметр

Страница 21 даташита на max7000:
====
Slew-Rate Control
The output buffer for each MAX 7000E and MAX 7000S I/O pin has
an adjustable output slew rate that can be configured for low-noise
or high-speed performance. A faster slew rate provides high-speed
transitions for high-performance systems. However, these fast
transitions may introduce noise transients into the system. A slow
slew rate reduces system noise, but adds a nominal delay of 4 to 5 ns.
In MAX 7000E devices, when the Turbo Bit is turned off, the slew
rate is set for low noise performance. For MAX 7000S devices, each
I/O pin has an individual EEPROM bit that controls the slew rate,
allowing designers to specify the slew rate on a pin-by-pin basis.
====
Как это выглядит в квартусе:
Нажмите для просмотра прикрепленного файла
toweroff
Jan 13 2008, 14:56
Заработала паразитина

Но только на одном типе флешей... с другими пока швах.. буду бодаться дальше
MaslovVG
Jan 14 2008, 08:50
Просмотрел ветку и возник вопрос. А там ли вы копаете?
На этих частотах имеет принципиальное значение разводка платы.
Наличие последовательных резисторов между FPGA и длинными проводниками.
подключение питания. Имею печальный опыт разработки нискольких устройств на EPM7128S
пришлось пару раз полностью переразводить плату. Хорошо хоть макеты делались на коленке.
А вообще сначала читать
Говард Джонсон Мартин Грехем "Конструирование высокоскоростных цифровых устройств. Начальный курс черной магии"
toweroff
Jan 14 2008, 11:11
Цитата(MaslovVG @ Jan 14 2008, 11:50)

Просмотрел ветку и возник вопрос. А там ли вы копаете?
На этих частотах имеет принципиальное значение разводка платы.
Наличие последовательных резисторов между FPGA и длинными проводниками.
подключение питания. Имею печальный опыт разработки нискольких устройств на EPM7128S
пришлось пару раз полностью переразводить плату. Хорошо хоть макеты делались на коленке.
А вообще сначала читать
Говард Джонсон Мартин Грехем "Конструирование высокоскоростных цифровых устройств. Начальный курс черной магии"
как раз на этих частотах (4МГц) не так уж и принципиальна разводка, на мой взгляд. Однако, на всякий случай, после проца WR и RD идут через 33 Ом резисторы
На эпюрах, кстати, никакого искажения сигнала не наблюдается
LordVader
Jan 14 2008, 14:08
Цитата(toweroff @ Jan 14 2008, 14:11)

как раз на этих частотах (4МГц) не так уж и принципиальна разводка, на мой взгляд.
Роль может играть не столько частота, сколько фронты - если сабж даёт резкие фронты, то на них возникает звон, и флешка может этот звон схватить как несколько обращений, или просто проглючить.
Кстати, судя по тому, что вам помогло slow slew rate, так и есть.
MaslovVG
Jan 15 2008, 07:02
Цитата(LordVader @ Jan 14 2008, 18:08)

Роль может играть не столько частота, сколько фронты - если сабж даёт резкие фронты, то на них возникает звон, и флешка может этот звон схватить как несколько обращений, или просто проглючить.
Это как раз наиболее вероятно. Длительности фронтов на EPM128S менее 3 ns. При комутации на 16 разрядную шину по 30pF на каждом проводе на выводах питания проскакивают импульсы тока до 2А что на индуктивности вывода микросхемы формирует существенную помеху (осцилографом не наблюдаемую поскольку существует внутри корпуса микросхемы).
toweroff
Jan 15 2008, 12:52
Интересно... Отчего же тогда аналогичный модуль с такими же трансмиттерами 3.3-5в работает прекрасно?
Кстати, залепил на всю шину 33 Ом от альтеры... не помогло
И еще... При потреблении модулем в процессе записи ~200mA, процом 40mA, у макса turbo bit отключены... Какие необходимы емкости по питанию, в каком количестве?
Я "обнял" макса 8-ю керамиками по 0.1 и еще 47мкФ
Все защелкивается по фронтам ALE, WR и RD
Имеем:
100% работающее чтение
иденты флешей читаются на ура
////////////////////////////////////////////////////////////
Может данные по записи надо задержать.
lcell по данным поставить. Или если управляющие сигналы регистровые, вынести их в триггера
ячеек ввода вывода.
Наверно надо все же временные диаграммы записи и чтения просмотреть.
(Лачивые запись и чтение).
Насчеи 5 вольт непонятно.
Если среда 3 вольтовая, ведь можно i/o 7000S и от 3 вольт запитать.
Это ядро у него должно быть 5 вольт.
toweroff
Jan 15 2008, 14:38
Данные задерживаются при записи на 22нс, вполне достаточно.
Среда вся 5-вольтовая
По идентам и стиранию - сначала во флеш надо ЗАПИСАТЬ команду, потом читать статус или ответы. То есть механизм записи работает. Но глючит. Мой 30МГц осцилл к сожалению искажения показать не могет

Но сигналы RD и WR не искажаются точно, т.к. и по записи,и по чтению работают state machine по фронту rise каждого сигнала, и работают прочно
Цитата(toweroff @ Jan 15 2008, 17:38)

Мой 30МГц осцилл к сожалению искажения показать не могет

Но сигналы RD и WR не искажаются точно, т.к. и по записи,и по чтению работают state machine по фронту rise каждого сигнала, и работают прочно
Если все это на одной плате. длины проводников не больше 10 см. Да еще с последовательным согласованием. Уровни напряжений и фронты сигналов соответствуют ТУ на используемые кристаллы.
Наверно надо в проекте копаться.
(Как я понял аналог был только на рассыпухе.)
В каком пакете и на каком языке state machine описана. Моделирование посмотрите.
Сначало функциональное. Потом временное. Сравните результаты. Должно совпасть в пределе периода рабочего клока.
В квартусе посмотрите.
toweroff
Jan 15 2008, 15:04
Я ж говорю - ВСЕ работает
Есть модуль с флешами ST M29DW128F - работает на ура, пишется и читается
Есть модуль с флешами Spansion S29GL128N - запись сбоит. Иденты читаются, стирается, запись в районе 300кбайт, потом сбой
Цитата(toweroff @ Jan 15 2008, 18:04)

Я ж говорю - ВСЕ работает
Есть модуль с флешами ST M29DW128F - работает на ура, пишется и читается
Есть модуль с флешами Spansion S29GL128N - запись сбоит. Иденты читаются, стирается, запись в районе 300кбайт, потом сбой
Вам конечно виднее. Но модули то разнятся. Например по Access Time.
В документе посмотрел.
http://www.st.com/stonline/products/literature/an/12336.pdf
toweroff
Jan 15 2008, 16:38
Сейчас еще раз посмотрел на длительности RD и WR... 250нс
Там любой тормоз успеет корректно данные выставить и поймать (данные висят еще 22нс, судя по квартусу, после окончания WR). Тут действительно дело либо в уровнях (но все, что можно, "притянуто" к +5), либо в звоне (но все линии уже идут через 33 Ом)
Длины проводников <10см точно. Снизу практически везде, и под максом тоже, лежит полигон GND
Трассы преимущественно расположены сверху и снизу под 90 градусов друг к другу
toweroff
Jan 16 2008, 22:41
Итак, проблема решилась.
1. Slow Slew Rate - ON
2. Сигналы RD и WR для целевого модуля подал с ПЛИС, обеспечив дополнительную задержку
Всем спасибо!!!
Надеюсь, тема закрыта
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.