Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2017-авг-19 01:08

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: 2014-май-26 15:57 
Не в сети

Зарегистрирован: 2014-май-26 15:20
Сообщения: 1
Здравствуйте! У меня есть "пара" вопросов к опытным пользователям микросхемы 1636РР2У, либо к разработчикам. Работаю на оборонку, сам недавно пришел на предприятие и впервые работаю с этой ПЗУ. И после прочтения спецификации вопросов стало еще больше.
Конкретнее работа в параллельном режиме.
Суть:
1. В табл.2 указано что для записи необходимо се=0 we=0 oe=1, но как следует дальше, все таки необходимо произвести стробирование we и ce, и по спаду записывать адреса, а по фронту записывать данные, причем по таблице5 на программирование 4 цикла: 555 АА, 2АА 55, 555 А0, РА РD. Но если смотреть на диаграмму, то я не заметил там идущих подряд этих циклов(рис13, рис14), причем судя по диаграмме, по сути там идет только 555 A0, PA PD. Вопрос: Так как же все таки организовать программирование в параллельном режиме?
2. После завершения последовательности программирования необходимо следить за статусными битами или ждать паузу максимального времени программирования ипроверять данные, а потом только переходить к записи следующего байта в следующую ячейку. Вопрос: А можно не ждать эту паузу(300мкс), а сразу приступать к программированию следующей ячейки без проверки тех данных которые записались в предыдущую ячейку? а то 300 мкс - довольно таки долгая пауза.
3. То же самое что и 2 вопрос, только в байпасе. можно ли программировать друг за другом ячейки не выжидая паузу для проверки правильно ли записан байт, а только после завершения операции программирования всех ячеек прочитать с целью проверки весь массив данных который был записан. А то если заходить в байпас, записывать байт в байпасе, потом выходить из байпаса чтобы перейти в режим чтения - это будет гораздо дольше стандартной операции программирования, и тогда я не вижу смысл байпаса.

Объясните, пожалуйста, начинающему специалисту, как правильно организовать программирование в параллельном режиме и желательно по рабоче-крестьянски :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2014-май-27 09:45 
Не в сети

Зарегистрирован: 2009-май-29 16:09
Сообщения: 590
Откуда: АО "ПКК Миландр"
sergey01 писал(а):
Здравствуйте! У меня есть "пара" вопросов к опытным пользователям микросхемы 1636РР2У, либо к разработчикам. Работаю на оборонку, сам недавно пришел на предприятие и впервые работаю с этой ПЗУ. И после прочтения спецификации вопросов стало еще больше.
Конкретнее работа в параллельном режиме.
Суть:
1. В табл.2 указано что для записи необходимо се=0 we=0 oe=1, но как следует дальше, все таки необходимо произвести стробирование we и ce, и по спаду записывать адреса, а по фронту записывать данные, причем по таблице5 на программирование 4 цикла: 555 АА, 2АА 55, 555 А0, РА РD. Но если смотреть на диаграмму, то я не заметил там идущих подряд этих циклов(рис13, рис14), причем судя по диаграмме, по сути там идет только 555 A0, PA PD. Вопрос: Так как же все таки организовать программирование в параллельном режиме?
2. После завершения последовательности программирования необходимо следить за статусными битами или ждать паузу максимального времени программирования ипроверять данные, а потом только переходить к записи следующего байта в следующую ячейку. Вопрос: А можно не ждать эту паузу(300мкс), а сразу приступать к программированию следующей ячейки без проверки тех данных которые записались в предыдущую ячейку? а то 300 мкс - довольно таки долгая пауза.
3. То же самое что и 2 вопрос, только в байпасе. можно ли программировать друг за другом ячейки не выжидая паузу для проверки правильно ли записан байт, а только после завершения операции программирования всех ячеек прочитать с целью проверки весь массив данных который был записан. А то если заходить в байпас, записывать байт в байпасе, потом выходить из байпаса чтобы перейти в режим чтения - это будет гораздо дольше стандартной операции программирования, и тогда я не вижу смысл байпаса.

Объясните, пожалуйста, начинающему специалисту, как правильно организовать программирование в параллельном режиме и желательно по рабоче-крестьянски :)


1. Да в таблице истинности для записи правильнее было указывать фронт (передний из нуля в единицу и для записи данных и для записи адреса). Командная последовательность программирования по таблице 5 состоит из 4 циклов записи, на временной диаграмме показаны два последних цикла записи командной последовательности программирования (это разные понятия). Цикл записи на параллельной шине это не тоже самое что последовательность программирования.
2. В новой версии спецификации или руководства по эксплуатации необходимо следить за статусными битами, причём статусные биты гарантируют более информативное отслеживание входа в режим программирования и выхода из него. Ожидание паузы худший вариант, а не проверять биты, не ждать паузу и непрерывно писать нельзя. Следующая операция программирования не начнётся пока не завершена предыдущая.
3. Ответ тот же выжидать паузу не обязательно, но статусные биты проверять обязательно до окончания программирования. Выходить из режима bypass не нужно для чтения данных. Если не выполняется любая внутренняя операция в любом режиме стандартный или bypass ячейки доступны для чтения.

P.S. Все проблемы которые возникают у пользователей на данный момент связаны с тем подходом программирования, который Вы описывали, писать, ничего не ждать, не проверять, а в конце проверить всю матрицу, в результате не записанные ячейки, стирание всей матрицы и заново повторять весь процесс и так до бесконечности. И большинство вопросов сразу снимается после того как Вы начнёте работать с flash и попробуете все её режимы. Читать, писать, только изучив основательно можно принять для себя тот или иной подход, если строгие рекомендации про проверке статусных бит, записанной информации Вам не подходит. Просто читая спецификацию, без практических применений не понять всех особенностей работы.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2015-апр-09 14:31 
Не в сети

Зарегистрирован: 2015-апр-09 09:14
Сообщения: 3
Здравствуйте! У меня возникли проблемы при записи FLASH в параллельном режиме.
После отправки командной последовательности программирования байта процесс записи не заканчивается, при этом
опрос статусных бит показывает, что бит D6 постоянно переключается, бит D5 не устанавливается в единицу, даже если время программирования
давно вышло и бит D7 никогда не принимает значение, равное записанным данным.

Ниже прикреплена временная диаграмма. На ней время указано в отсчётах, частота отсчётов 40 МГц.


Вложения:
Программирование байта.PNG [9.92 КБ]
Скачиваний: 0
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2015-апр-10 14:21 
Не в сети

Зарегистрирован: 2009-май-29 16:09
Сообщения: 590
Откуда: АО "ПКК Миландр"
Anna писал(а):
Здравствуйте! У меня возникли проблемы при записи FLASH в параллельном режиме.
После отправки командной последовательности программирования байта процесс записи не заканчивается, при этом
опрос статусных бит показывает, что бит D6 постоянно переключается, бит D5 не устанавливается в единицу, даже если время программирования
давно вышло и бит D7 никогда не принимает значение, равное записанным данным.

Ниже прикреплена временная диаграмма. На ней время указано в отсчётах, частота отсчётов 40 МГц.

Чтобы правильно считывать статусные бита нельзя держать CE и OE постоянно в нуле а переключать в неактивное состояние, на диаграмме у Вас CE и ОE постоянно в нуле и не видно переключение на D6, а читается всё время 0x40.ещё непонятно зачем после командной последовательности проходит короткий импульс записи по WE. И в начале диаграммы перед командной последовательностью Вы читаете ячейку с адресом 2, что в ней хранилось до этого?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2015-апр-10 14:30 
Не в сети

Зарегистрирован: 2015-апр-09 09:14
Сообщения: 3
Хорошо. Получается, что для чтения статусных бит необходимо использовать временную диаграмму цикла чтения 2 (рис.12)? А для чего тогда применяется временная диаграмма цикла чтения 1?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2015-апр-10 14:45 
Не в сети

Зарегистрирован: 2015-апр-09 09:14
Сообщения: 3
Andrey писал(а):
Anna писал(а):
Здравствуйте! У меня возникли проблемы при записи FLASH в параллельном режиме.
После отправки командной последовательности программирования байта процесс записи не заканчивается, при этом
опрос статусных бит показывает, что бит D6 постоянно переключается, бит D5 не устанавливается в единицу, даже если время программирования
давно вышло и бит D7 никогда не принимает значение, равное записанным данным.

Ниже прикреплена временная диаграмма. На ней время указано в отсчётах, частота отсчётов 40 МГц.

Чтобы правильно считывать статусные бита нельзя держать CE и OE постоянно в нуле а переключать в неактивное состояние, на диаграмме у Вас CE и ОE постоянно в нуле и не видно переключение на D6, а читается всё время 0x40.ещё непонятно зачем после командной последовательности проходит короткий импульс записи по WE. И в начале диаграммы перед командной последовательностью Вы читаете ячейку с адресом 2, что в ней хранилось до этого?



В ячейке с адресом 2 хранилось 8'hFF. Я проверяю это до начала записи. Импульс записи по WE -это переход от процедуры записи к процедуре чтения. Тут, наверное, и есть косяк?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2015-апр-13 12:41 
Не в сети

Зарегистрирован: 2009-май-29 16:09
Сообщения: 590
Откуда: АО "ПКК Миландр"
Anna писал(а):
Andrey писал(а):
Anna писал(а):
Здравствуйте! У меня возникли проблемы при записи FLASH в параллельном режиме.
После отправки командной последовательности программирования байта процесс записи не заканчивается, при этом
опрос статусных бит показывает, что бит D6 постоянно переключается, бит D5 не устанавливается в единицу, даже если время программирования
давно вышло и бит D7 никогда не принимает значение, равное записанным данным.

Ниже прикреплена временная диаграмма. На ней время указано в отсчётах, частота отсчётов 40 МГц.

Чтобы правильно считывать статусные бита нельзя держать CE и OE постоянно в нуле а переключать в неактивное состояние, на диаграмме у Вас CE и ОE постоянно в нуле и не видно переключение на D6, а читается всё время 0x40.ещё непонятно зачем после командной последовательности проходит короткий импульс записи по WE. И в начале диаграммы перед командной последовательностью Вы читаете ячейку с адресом 2, что в ней хранилось до этого?



В ячейке с адресом 2 хранилось 8'hFF. Я проверяю это до начала записи. Импульс записи по WE -это переход от процедуры записи к процедуре чтения. Тут, наверное, и есть косяк?

Временная диаграмма 1 для чтения данных из памяти, переключающийся бит может переключаться только при чтении по временной диаграмме 2 с изменением CE или OE.
Лишний импульс записи на шине может привести к сбросу командной последовательности, его надо устранить. Ещё может быть установлена защита от записи, тогда запись также не начнётся. Непонятно почему тогда читается всё время 40h на шине данных, если в ячейке 2 значение FF.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB