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

 
 
> Как наколдовать констрейны на интерфейс к NAND флеш, Альтера
novartis
сообщение May 5 2014, 04:45
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845



Здравствуйте.
Есть проект с плис Альтеры, к плис подключается нанд-флеш.
Интерфейсные ноги такие:
flash_ALE : out std_logic := '0';
flash_CE_n : out std_logic := '1';
flash_CLE : out std_logic := '0';
flash_DQio : inout std_logic_vector(7 downto 0) := (others => 'Z');
flash_RE_n : out std_logic := '1';
flash_WE_n : out std_logic := '1';

Флешка работает в асинхронном режиме. Максимальная частота дергания ног RE и WE - 50МГц.
На частоте 100МГц организованы циклограммы работы с флешкой.
Ниже прикрепил иллюстрации из даташита.

Сигналы ALE, CLE, CE_n выставляются заблаговременно до начала работы и снимаются через несколько тактов после окончания работы, думаю здесь можно не копать, констрейнами не обвешивать.

Пока пытаюсь рассмотреть этап записи данных.
При записи данных flash_DQio выставляются как выходные сигналы, а внутри флешки защелкиваются по нарастающему фронту flash_WE_n.
Наружу клок никакой не идет.
Длина проводников на печатной плате составляет от 50мм до 100мм, как я понимаю это десятые доли наносекунд, и их можно не учитывать.
Я никак не соображу какие констрейны прописать для этих сигналов flash_DQio и flash_WE_n.


Ну и аналогичная проблема при чтении данных из флешки.
При чтении данных flash_DQio выставляются как входные сигналы, внутри флешки выдача данных начинается через 16нс после прихода спадающего фронта flash_RE_n.
Поэтому внутри плис после формирования спадающего фронта ожидаем данные через два такта частоты 100МГц.
Какие здесь нужно описать констрейны, и нужно ли, ведь все учитывается циклограммой работы?


Прикрепленное изображение
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
novartis
сообщение May 11 2014, 11:58
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845



Цитата
Цитата
Циклограмма работы с нанд-флеш сейчас отшлифована до идеала, все с хорошим запасом, там где требуется 7нс на предустановку данных на линии, я выставляю за 20нс и тому подобное.


Ой, это на частоте 50МГц? И какой при этом получится hold slack ? Хотя, скорее, на 25МГц, тогда правильно.

Не понял о каких мегагерцах вы говорите, я хотел сказать следующее: перед тем как щелкнуть передним фронтом WE, т.е. произвести запись данных, по даташиту требуется, чтобы данные на шине были установлены заблаговременно, минимум за tDS = 7 нс для Timing Mode = 5. Я выдерживаю 20нс. После подъема фронта WE также необходимо подержать данные в неизменном состоянии минимум tDH = 5 нс для Timing Mode = 5. Я держу 20нс. Это касается и записи данных, и при задании команды, и при установке адреса. Все с большим запасом, чем требует даташит.

Цитата
Констрейны для записи, может быть, можно и ограничить set_false_path и упаковкой всего в регистры, а для чтения лучше сделать по-нормальному.
потребуются create_generated_clock для RE_n,
set_clock_latency для него же с описанием задержки в PCB(она больше 1 нс),
два set_input_delay между RE_n и DQ для описания t_REA и t_RHOH и
set_multicyle_path для входных регистров(так как они защёлкиваются клоком с частотой выше RE и пропуском тактов).

Меня это все вообще пока в ступор вводит. В голове каша.
Поэтому решил убрать все констрейны.
Задержки внутри кристалла для ALE,CLE,WE,RE,CE,DQio почти одинаковы и составляют 5-6нс. Это в ТаймКвесте смотрел через Report Path.
И мне кажется, что если задержки одинаковые, тогда и констрейны никакие не нужны.


Цитата
Пытаться читать через 20 нс после опускания RE_n неправильно, к 16 нс задержки во flash нужно ещё добавить 1.3 нс в PCB и примерно 6 нс в буферах FPGA, в результате промахиваемся. Хотя работать может, так как 16 нс - это максимум.

Немного не так вы поняли. На том же сигналтапе видно, что между фронтами RE имеется 3 такта частоты по 10нс.
Получается так - опустили RE, через 3 такта подняли RE, через такт защелкнули данные DQ с входа плис в регистр.
Нарисовал картинку, вроде все получается как надо и запас получился 8нс.

Прикрепленное изображение


На этом рисунке принял следующее: задержка внтури кристлла 6нс, задержки на pcb 2нс.

Или я в чем то ошибаюсь?


Цитата
Из сигналтапа следует, что данные всё-таки были неправильно записаны.

Да, но из этой страницы данные читаются много много раз (1000 раз), и как я написал, неправильное чтение может проявиться пару раз на эти 1000, а может вообще не проявиться. Значит в флешке записаны правильные данные.


Может это все таки помехи какие?
Go to the top of the page
 
+Quote Post
Timmy
сообщение May 11 2014, 14:00
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(novartis @ May 11 2014, 15:58) *
Немного не так вы поняли. На том же сигналтапе видно, что между фронтами RE имеется 3 такта частоты по 10нс.
Получается так - опустили RE, через 3 такта подняли RE, через такт защелкнули данные DQ с входа плис в регистр.
Нарисовал картинку, вроде все получается как надо и запас получился 8нс.

Прикрепленное изображение


На этом рисунке принял следующее: задержка внтури кристлла 6нс, задержки на pcb 2нс.

Или я в чем то ошибаюсь?
Может это все таки помехи какие?

В таком случае у вас с циклограммой всё в порядке, и на столь низкой частоте можно обойтись констрейнами по совету des00. Но, обязательно надо запаковать всё в IO регистры. Подозреваю, что управляшки не пакуются в IO регистры потому, что формируются комбинаторной логикой, тогда надо переписать код, чтобы этого не было. Комбинаторное формирование управляшек может приводить к глитчам, которые запросто вызовут нестабильное чтение данных. С этим следует разобраться в первую очередь. Максимальная частота снижается потому, что IO регистры принудительно размещаются далеко от основной корки. Для решения этого вопроса можно, например, добавить в критические пути ещё один слой регистров.
Go to the top of the page
 
+Quote Post



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

 


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


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