МАРСОХОД

Open Source Hardware Project

Очередная версия программы mbftdi

Некоторые наши читатели жаловались, что нашим программатором mbftdi не получается запрограммировать Альтеровские микросхемы ПЛИС серии EPM70xxS.

Мы занялись этим вопросом и даже приобрели несколько экземпляров Altera EPM7032S-10N, чтобы исследовать проблему.

Программирование epm7032s с помощью программатора MBFTDI

Мы сделали простую макетку с этой микросхемой для наших опытов.

Действительно, версия нашей программы mbftdi 1.0 не программировала чип. А почему?

 

Конечно, скорее всего, дело не в железе программатора, а в интерпретации SVF файла, который генерирует для чипа Altera Quartus II.

Проведя несколько дней с дебагом, мы поняли, что необходимо правильно обрабатывать команды ENDDR и ENDIR в SVF файле. Эти изменения были сделаны. Почему-то для микросхем EPM7032S оказалось принципиально важно, чтобы после загрузки команды в регистр IR контроллер JTAG-TAP переходил в состояние IRPAUSE, а не сразу в IDLE.

Сейчас мы сделали очередную улучшенную версию программы MBFTDI версии 1.1. С ее помощью теперь можно программировать микросхемы 7000й серии.

Взять программу можно на нашем сайте в разделе загрузки: icon Программатор USB mbftdi, Версия 1.1 (186.06 Кбайт)

Кроме этого, мы разместили проект на GitHub: по ссылке https://github.com/marsohod4you/MBFTDI-SVF-Player

Возможно вы заметили в самом низу страниц нашего сайта появился значек GitHub - это и есть ссылка на исходники проекта MBFTDI.

К сожалению в этой бочке меда есть и ложка дегтя. С программированием микросхемы epm7032s осталось несколько странных странностей, которые пока мы не смогли разгадать.

Первая странность состоит в том, что при проверке silicon id возникает ошибка в одном бите. SVF файл для программирования чипа генерируется средой Altera Quartus II. В этом файле содержатся все команды которые нужно записать в TAP контроллер микросхемы через JTAG интерфейс. Наша программа MBFTDI просто исполняет эту последовательность команд. Некоторые команды SVF просто на запись, но некоторые на запись и чтение и проверку прочитанного. Так вот при чтении silicon id возникает ошибка и всегда только в одном бите (а всего их десятки). Как такое может быть не понятно. Более того, эта ошибка не влияет на программирование - если ее пропустить, то дальнейшее программирование происходит успешно. Я покажу, где происходит ошибка - вот фрагмент SVF файла для 7032S:


!CHECKING SILICON ID
SIR 10 TDI (01E);
RUNTEST 53 TCK;
SDR 237 TDI (100000000000000000000000000000000800000000000000000000000000);
SIR 10 TDI (012);
RUNTEST 53 TCK;
SIR 10 TDI (016);
RUNTEST 53 TCK;
SDR 80 TDI (84210842108421084210);
SIR 10 TDI (01A);
RUNTEST 53 TCK;
SDR 80 TDI (84210842108421084210);
SIR 10 TDI (03A);
RUNTEST 153 TCK;
SIR 10 TDI (022);
RUNTEST 53 TCK;
SDR 16 TDI (FFFF) TDO (414C) MASK (FFFF);
SIR 10 TDI (016);
RUNTEST 53 TCK;
SDR 80 TDI (42108421084210842108);
SIR 10 TDI (03A);
RUNTEST 153 TCK;
SIR 10 TDI (022);
RUNTEST 53 TCK;
SDR 16 TDI (FFFF) TDO (5241) MASK (FFFF);
SIR 10 TDI (016);
RUNTEST 53 TCK;
SDR 80 TDI (21084210842108421084);
SIR 10 TDI (03A);
RUNTEST 153 TCK;
SIR 10 TDI (022);
RUNTEST 53 TCK;
SDR 16 TDI (FFFF) TDO (0010) MASK (0018);
SIR 10 TDI (016);
RUNTEST 53 TCK;
SDR 80 TDI (10842108421084210842);
SIR 10 TDI (03A);
RUNTEST 153 TCK;
SIR 10 TDI (022);
RUNTEST 53 TCK;


Во время чтения silicon id успешно читаются слова 414С и 5241, но не читается 0010. Если 0010 исправить на 0000, то все вообще проходит гладко. Неприятно конечно, что проблема не решена полностью, но выяснить достоверно причину пока не удалось.

Сейчас программа MBFTDI не останавливается по первой ошибке проверки TDO ответа. Это позволяет продолжать программирование микросхем серии 7000S.

Интересно, что SVF файл так же содержит команды для проверки записанного, так вот она проходит успешно - ни одной ошибки раздела Verify в ответе TDO больше нет.

Вторая странность заключается в том, что после программирования микросхем серии EPM70xxS микросхема не включается сама, но нужно ее выключить и включить заново. С микросхемами серии MAX II такого нет. Я думаю, что просто Quartus II не дописывает в SVF каких-то команд для вывода микросхемы epm7032s в рабочий режим после программирования.

Всякие свои вопросы связанные с этими проблемами я выложил в форуме Альтеры http://www.alteraforum.com/forum/showthread.php?t=33096, но пока ответа нет.

У меня просьба. Если у кого-то из Вас есть микросхемы серий epm7xxxS, пожалуйста попробуйте прошить их с новой программой и програматором MBFTDI. Напишите, что у Вас получилось.

 

Комментарии  

0 #2 Сергей 12.12.2011 19:36
ПЛИС EPM7128SLC84-15 - прошилась. сообщения во время прошивки.
-----------------------------------
!CHECKING SILICON ID
compare TDO failed at 6
Expect buffer:
00 00 00 00 00 00 10 00 00
Compare buffer:
FF FF FF FF FF FF FF FF FF
Mask buffer:
00 00 00 00 00 00 18 00 00
error on check answer
-----------------------------------
!BULK ERASE
-----------------------------------
!PROGRAM
-----------------------------------
!VERIFY
compare TDO failed at 3
Expect buffer:
FF FF FF EF FF FF FF FE 80
Compare buffer:
FF FF FF FF FF FF FF FF FF
Mask buffer:
FF FF FF FF FF FF FF FE 80
error on check answer
0 #1 Xeon 12.12.2011 05:18
Попробовал...вс ё получилось, микросхема прошилась. Вот текст выданный MBFTDI:
----------------------
!CHECKING SILICON ID
compare TDO failed at 0
Expect buffer:
10 00 00 00 00
Compare buffer:
01 BF FF 0F 07
Mask buffer:
18 00 00 00 00
error on check answer
-----------------------------------
!BULK ERASE
-----------------------------------
!PROGRAM
-----------------------------------
!VERIFY
compare TDO failed at 1
Expect buffer:
FF BF FF FE 80
Compare buffer:
FF FF FF FF FF
Mask buffer:
FF FF FF FE 80
error on check answer

Добавить комментарий


Защитный код
Обновить


GitHub YouTube Twitter
Вы здесь: Начало Статьи о разном Очередная версия программы mbftdi