Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1

ТЕМА: Нужно ли стирать ячейки UFM перед записью?

Нужно ли стирать ячейки UFM перед записью? 12 года 5 мес. назад #1033

  • barmaley
  • barmaley аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 4
  • Спасибо получено: 0
Здравствуйте, уважаемые Юрий и Николай. Хотелось бы Вас поблагодарить за ваш сайт. Очень помогает.
У меня к Вам вопрос: Нужно ли стирать ячейки UFM перед записью?
Описание проблемы. Возникла идея загружать программу в ufm память через UART , который уже находится в ПЛИС.
После заливки программы с ПК верхнего уровня дается команда на "перезагрузку" после чего начинает работать ВАШ AVR микроконтоллер с урезанной системой команд, который крутит ту прогамму , которую мы дистанционно и загружаем в UFM . В момент загрузки UFM сигналы микроконтроллера , управляющие считыванием из Ufm отключаются и UFM памятью управляет модуль "загрузчика" После "перезагрузки" производится мультиплецирование управляющих линий на AVR. Загрузка UFM предполагается блочной,т.е. одним блоком 512 16-ти разрядных слов. Адрес ячеек памяти инкрементируется автоматически по приходу последующих 2-х байтов данных
Изучение pdf не дало ответа на вопрос нужно ли перед записью в UFM стирать сектора . Вот цитата из "альтеровского документа":

When the UFM sector is erased, it has 16-bit locations all filled with FFFF. Each UFM
storage bit can be programmed no more than once between erase sequences. You can
write to any word up to two times as long as the second programming attempt at that
location only adds 0s. 1s are mask bits for your input word that cannot overwrite 0s in
the flash array. New 1s in the location can only be achieved by an erase. Therefore, it is
possible for you to perform byte writes since the UFM array is 16 bits for each
location.
С английским у меня не очень. Вот перевод полученный с помощью Google:

Когда UFM сектор стирается, он имеет 16-битное размещение до адреса FFFF. Каждый хранящийся бит UFM может быть запрограммирован не чаще одного раза между удалением последовательности. Вы можете записать любое слово в два раза больше тех пор, пока вторая попытка программирования в том, что место только добавляет 0s. 1s являются масками битов для входного слова, которые не могут переписаться в 0s массива флэш-памяти. Новые 1s в том месте, может быть достигнуто только путем стирания. В связи с этим возможность выполнять запись, поскольку байт массива UFM 16 бит для каждого место.
Вот , вот это все и смущает!!!!
Помогите пж-ста. Заранее, спасибо...
Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Нужно ли стирать ячейки UFM перед записью? 12 года 5 мес. назад #1036

1. Мой, вольный перевод - Процедура стирания действует на весь сектор и переводит все его биты(512*16) в состояние "1".
Процедура записи действует на каждое отдельное слово (16 бит) и способна изменять его биты только из "1" в "0".
Проще говоря, если в секторе нужно изменить хотя-бы 1 бит из "0" в "1", то придется стирать весь сектор.

2. Не очень понятна сама идея, зачем такие сложности?, почему нельзя программировать программатором?
В 240-м максе и с урезанным процессором места "под завязку" , можно , конечно взять чип побольше .

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Нужно ли стирать ячейки UFM перед записью? 12 года 5 мес. назад #1037

  • barmaley
  • barmaley аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 4
  • Спасибо получено: 0
Спасибо, Вам большое, за ответ!!! Теперь , вроде -бы, все прояснилось. Извиняюсь, что не полностью раскрыл тему.
На самом деле - это маленькая подзадача, лишь часть проекта (Подстанционный контроллер присоединения ). Нужен такой "изврат" чтобы загружать в ПЛИС (она у нас - EPM1270T144I5) логический модуль, который обрабатывает входные дискреты и выдает выходные, в соответствии с алгоритмом логического модуля. Сама ПЛИС-ка управляет двумя АЦП AD7657BSTZ . Оссциллограмы приведены на рис. во вложении. (Cуммарно 12 каналов , мы используем 8: 4 канала измерения напряжения(3 фазы и U0) и 4 токовых(3фазы и I0)), имеет протокол обмена типа HandShake (рукопожатие ) с микро-PC.
На микро-PC крутится Линукс. Драйвер перерасчитывает сырые измерения и передает по сети на машину -клиент данные (АНАЛОГОВЫЕ ЗНАЧЕНИЯ) по протоколу IEC61850 -9.2 . Чтобы разгрузить микро-РС решено было сделать лог. модуль на самой ППЛИС, а загружаться он должен по rs-232 ( не выводить же JTAG на морду конроллера).. Идею подсмотрел на сайте we.easyelectronics.ru/KT3012/kastomnaya-proshivka-plis.html (спасибо автору). Но, только зачем делать перобразователь UART-JTAG? , когда можно сделать все внутри ПЛИС.....
Вот почему нельзя программировать программатором (у наладчиков их нет :) ).Да и наладчики на подстанции - в боевых условиях точно по JTAG -У ВЫЖГУТ чего-нибудь).
В перспективе предполагается грузить модуль по Ethernet. Поскольку, в нашей конторе нет специалистов , способных разработать свой родной компилятор. То решено было за основу взять компилятор AVR (Ну, в общем, тут Вы очень помогли!!!! Спасибо Вам еще раз. Все работает!!!!). Теперь осталось, правильно написать загрузчик . Модуль UART взял с сайта www.fpga4fun.com/SerialInterface.html .
Для отладки присобачил LCD индикатор.
Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
Время создания страницы: 0.116 секунд
Работает на Kunena форум