Программирование ПЛИС фирмы Lattice Semiconductor в составе смешанной JTAG-цепочки средствами пакета LSC ispVM System 18.0 и САПР серии Lattice Diamond при помощи кабеля ispDOWNLOAD Cable
Не пользующаяся популярностью в российской инженерной среде американская корпорация Lattice Semiconductor, базирующаяся в штате Орегон, является одним из ведущих производителей на мировом рынке программируемых логических микросхем. Разработки фирмы начинались с микросхем типа GAL (программируемая матричная логика, ПМЛ), в которые впоследствии была внедрена функция внутрисхемного программирования (In-System-Programming, ISP). Кристаллы ПМЛ с поддержкой ISP представлены семействами ispGAL, имеющими группу из пяти специальных выводов, предназначенных для конфигурации. Технология внутрисхемного программирования позволила изменять содержимое логических матриц микросхемы ПМЛ без ее демонтажа. Иными словами, осуществлять программирование микросхем не на программаторах, а непосредственно в устройстве.
Интерфейс внутрисхемного программирования, разработанный фирмой Lattice Semiconductor, имел оригинальный патентованный протокол, получивший название Proprietary Lattice ISP [4]. Кроме кристаллов ispGAL компания применяла интерфейс ISP в ранних сериях ПЛИС с архитектурой CPLD (ispLSI 1000, ispLSI 1000E, ispLSI 2000, ispLSI 2000E). Этот интерфейс позволял работать со множеством микросхем (кристаллов), объединенных в конфигурационную цепочку. Включение режима внутрисхемного программирования в интерфейсе ISP осуществлялось путем подачи низкого уровня сигнала на входы ispEN. Сигналы SCLK и MODE подавались с загрузочного кабеля, подключенного к технологическому разъему, на все кристаллы одновременно при помощи параллельного соединения. Тракт данных в конфигурационной цепочке представлял собой последовательное соединение выходов SDO и входов SDI микросхем. При этом вход SDI первой микросхемы соединялся с контактом SDI технологического разъема, а выход SDO последней микросхемы — с контактом SDO этого разъема.
Со второй половины 1990-х гг. для внутрисхемного программирования различными производителями интегральных схем массово применяется диагностический последовательный интерфейс JTAG [1]. Разработчики корпорации Lattice Semiconductor также стали использовать стандарт JTAG для организации внутрисхемного программирования в своих изделиях, назвав такой режим конфигурации ispJTAG. Этот интерфейс состоит из четырех или пяти логических сигналов: TCK, TMS, TDI, TDO и TRST (необязательный). Уровни сигналов интерфейса JTAG не регламентированы и зависят от технологических особенностей микросхем. Вопросы организации взаимодействия в объеме одного устройства логических микросхем с различными уровнями сигналов, например выходов на 3,3 В с входами на 5 и 1,5 В, широко отработаны и в этой статье не рассматриваются.
Для обеспечения внутрисхемного программирования сигналы интерфейса JTAG могли выводиться на общий технологический разъем, используемый совместно с интерфейсом Lattice ISP, при этом образовывались две параллельные конфигурационные цепочки кристаллов. Первая цепочка состояла из микросхем, поддерживающих протокол Lattice ISP (например, ispLSI 1032E, 2032, 2128), а вторая цепочка — из компонентов, использующих для конфигурации JTAG (рис. 1). Детальное описание взаимодействия конфигурационных цепочек из ранних серий ПЛИС фирмы Lattice Semiconductor с кристаллами, имеющими интерфейс JTAG, описано в [4].

Рис. 1. Схема объединения микросхем корпорации Lattice Semiconductor в две параллельные конфигурационные цепочки
В качестве технологического разъема для внутрисхемного программирования предлагается рассмотреть штыревой соединитель IDC-10/BH-10 (ответная часть), с одним удаленным контактом, играющим роль ключа. Разводка технологического разъема для программирования ПЛИС Lattice Semiconductor показана на рис. 2: вид со стороны отверстий соединителя IDC-10.

Рис. 2. Разъем IDC-10 загрузочного кабеля для конфигурации ПЛИС Lattice Semiconductor
Со времен IBM PC персональные компьютеры, серверы и рабочие станции оборудовались периферийным интерфейсом параллельного порта — LPT. В настоящее время этот интерфейс вытеснила шина USB, но при необходимости он может быть добавлен в конфигурацию компьютера при помощи установки адаптеров расширения стандарта PCI или PCI express. Краткое описание интерфейса LPT-порта приведено в [5].
Взаимодействие с программируемыми кристаллами по интерфейсам Lattice ISP и JTAG через порт LPT реализовано исключительно программным способом, наподобие работы с портами GPIO современных микроконтроллеров. Драйвер, входящий в состав САПР, путем обращения к регистрам адаптера LPT формирует на выводах порта последовательность логических сигналов, соответствующую протоколу обмена с конфигурационной цепочкой ПЛИС. Сигналы Lattice ISP и JTAG могут быть получены из сигнальных линий LPT порта при помощи буферов-повторителей. Большинство схем сопряжения с интерфейсами внутрисхемного программирования через параллельный порт построены на микросхемах КМОП серий 74HC/74HCT/74AHC/74AHCT, а именно 74HC125, 74HCT125, 74HC244, 74HCT244 и им подобных.
Соответствие сигналов интерфейсов Lattice ISP и JTAG сигнальным линиям и контактам разъема LPT-порта для загрузочного кабеля ПЛИС корпорации Lattice Semiconductor приведено в таблице. За основу взят вариант функциональной схемы фирменного кабеля ispDownload Cable, приведенный в [3].
Разъем DB-25M |
Сигнал Lattice ISP или JTAG, формируемый или анализируемый LSC ispVM System |
|
Контакт |
Цепь |
|
1 |
STROBE# |
N.C. |
2 |
DATA(0) |
SDIN / TDI |
3 |
DATA(1) |
SCLK / TCK |
4 |
DATA(2) |
MODE / TMS |
5 |
DATA(3) |
ispEN |
6 |
DATA(4) |
RESET |
7 |
DATA(5) |
Включение режима JTAG (опциональный) |
8 |
DATA(6) |
Соединен с 12, 13 |
9 |
DATA(7) |
N.C. |
10 |
ACK# |
SDOUT / TDO |
11 |
BUSY |
N.C. |
12 |
PE |
Соединен с 8, 13 |
13 |
SELECT |
Соединен с 8, 12 |
14 |
AUTO_LF# |
N.C. |
15 |
ERR# |
VCC sense |
16 |
INIT# |
N.C. |
17 |
SELECT_IN# |
N.C. |
18 |
GND |
GND |
19 |
GND |
GND |
20 |
GND |
GND |
21 |
GND |
GND |
22 |
GND |
GND |
23 |
GND |
GND |
24 |
GND |
GND |
25 |
GND |
GND |
Согласно таблице соответствия сигнальных линий LPT линиям интерфейсов Lattice ISP или JTAG можно построить различные устройства сопряжения персонального компьютера или рабочей станции с конфигурируемыми ПЛИС. Большинство таких схем используют логические элементы BUFT типа *125 (отечественные аналоги — ЛП8). На рис. 3 приведена принципиальная схема загрузочного кабеля, аналогичного ispDownload Cable. Предлагаемая схема построена на двух микросхемах 74HC125 (1564ЛП8), содержащих по четыре элемента BUFT каждая.
Питание микросхем загрузочного кабеля осуществляется от устройства, содержащего конфигурируемые ПЛИС, через контакт 4 технологического разъема. При использовании в цепях внутрисхемного программирования логических сигналов с уровнем 5 В на этот контакт допустимо подать напряжение питания с номиналом 5 В. Однако для подключения к микросхемам, использующим сигналы с уровнями 3,3 и 2,5 В, на контакт 4 технологического разъема следует подать питание от источника с номиналом 5 В через кремниевый диод (например, 1N4001, 4148 или им подобные). В таком случае падение напряжения на двух последовательно включенных диодах составит 1,2–1,4 В, что обеспечит питание микросхем D1 и D2 загрузочного кабеля напряжением 3,6–3,8 В. Выходные логические уровни микросхемы D1 при таком напряжении питания будут соответствовать уровням LVCMOS33 и не повредят входные каскады цепей ISP или JTAG программируемых микросхем. Дополнительная защита от перегрузки по току как со стороны ISP/JTAG, так и со стороны LPT обеспечена последовательно включенными согласующими резисторами. Номиналы этих резисторов выбирают из расчета обеспечения надежной защиты при устойчивом согласовании логических сигналов. Согласование особенно актуально со стороны LPT из-за большой длины интерфейсного кабеля. Падение скорости распространения сигналов, вносимое последовательными резисторами, ничтожно по сравнению с низкой скоростью вывода данных в порт LPT, в силу чего им можно пренебречь.
При подключении загрузочного кабеля к порту LPT компьютера или рабочей станции, а также к целевому устройству, содержащему ПЛИС, следует обеспечить надежное соединение корпусов устройств и выполнять соединения при снятом напряжении питания. Эта рекомендация обусловлена отсутствием опережающего соединения цепей GND в разъемах IDC-10 и DB25. Внешний вид загрузочного кабеля, созданного на основе аналогичного изделия фирмы SET, показан на рис. 4.

Рис. 4. Внешний вид загрузочного кабеля для ПЛИС фирмы Xilinx
При рассмотрении принципиальной электрической схемы, показанной на рис. 3, нетрудно заметить ее сходство со схемой загрузочного кабеля для ПЛИС фирмы Xilinx, рассмотренной в [5]. Проанализировав различия в этих принципиальных схемах, можно сформулировать порядок переделки кабеля для ПЛИС Xilinx в загрузочный кабель для ПЛИС Lattice Semiconductor. Переделка заключается в следующих действиях:
- Контакт LPT.5 вывести через свободный буфер *125 (постоянно открытый) на вывод технологического разъема IDC.6 — сигнал ispEN через RS = 100 Ом.
- Контакт LPT.6 подключить на вход данных буфера *125, отсоединив от управляющего входа этого буфера; на управляющий вход этого буфера подать низкий уровень — «0», выход буфера отсоединить от сигнала TDO и подключить к контакту технологического разъема IDC.7 — сигналу RESET через RS = 100 Ом.
- Установить Pull-Up-резисторы RPU = 10кОм на контакты LPT.5 и LPT.6.
- Отсоединить контакт LPT.11, оставив неподключенным N.C.
- Отсоединить контакт LPT.13 от выхода буфера *125 сигнала TDO и подключить к связке LPT.8-LPT.12;
- Подключить контакт LPT.10 (через имеющийся в схеме резистор 51 Ом) к выходу буфера *125 сигнала TDO.
- Выводы 1, 4, 10 микросхемы D1 отсоединить от резистора и соединить с нулем. Все буферы, пропускающие сигналы TCK/TMS/TDI/TDO, должны быть включены постоянно, а не включаться сигналом ispEN. Это позволяет программировать микросхемы в режиме JTAG.
После описания аппаратных средств сопряжения компьютера или рабочей станции с конфигурируемой ПЛИС рассмотрим пошаговую методику загрузки конфигурационной последовательности при помощи программного пакета ispVM System в устройство, содержащее ПЛИС различных производителей. Предлагается рассмотреть JTAG-цепочку из четырех микросхем фирм Xilinx, Lattice-Semiconductor и Altera. Схема соединения разъема JTAG с четырьмя ПЛИС в объеме целевого устройства представлена на рис. 5.
В непосредственной близости к разъему JTAG установлены подтягивающие и токоограничительные резисторы. Подтягивающие резисторы имеют сопротивление 10 кОм и предназначены для поглощения наводок, вызванных электромагнитными помехами, а также для удержания устойчивых логических уровней на цепях JTAG при отсутствии кабеля, подключаемого к разъему. Последовательные резисторы обеспечивают согласование линий и защиту от перегрузок по току. Фильтрующая RC-цепь на линии TCK заимствована из схемы, рекомендованной в [2].
Для программирования ПЛИС ispGDX80VA в режиме JTAG используется дополнительный сигнал, разрешающий функционирование JTAG-интерфейса — EPEN. Подтягивающий резистор на линии EPEN обеспечивает включение JTAG при использовании загрузочных кабелей, не формирующих этот сигнал.
Нумерация кристаллов в составе JTAG-цепочки начинается от того кристалла, вход TDI которого подключен к разъему JTAG. Рассмотрим пример загрузки конфигурации во вторую микросхему цепочки — ispGDX80VA. Предположим, что в САПР Lattice Diamond или LSC ispLEVER Classic ранее создан проект реализации в кристалле этой ПЛИС требуемых функций, и в результате имплементации получен некоторый конфигурационный файл umsi_p_u17.jed. Работа с интерфейсом JTAG в САПР фирмы Lattice Semiconductor традиционно возложена на программный пакет ispVM System. Чтобы запустить ispVM System из навигатора проекта ispLEVER Classic, в верхнем меню Tools следует выбрать пункт ispVM System, отмеченный фирменным логотипом в форме литеры L (рис. 6).
Необходимо отметить, что программный пакет ispVM System доступен в дистрибутиве для отдельной установки без САПР, но на момент написания статьи в автономной версии пакета отсутствовал драйвер загрузочных кабелей для 64-разрядных операционных систем Microsoft Windows. Тем не менее такой драйвер существует и устанавливается в составе 64-разрядной версии САПР Lattice Diamond. Таким образом, для использования ispVM System на 64-разрядной ОС Microsoft Windows следует параллельно установить Lattice Diamond.
В открывшемся окне LSC ispVM System в первую очередь необходимо проверить настройки загрузочного кабеля, доступные из меню Options (рис. 7). Выбор в меню пункта Cable and I/O Port Setup… откроет окно настроек загрузочного кабеля (рис. 8). Для работы с JTAG-цепочкой следует убедиться, что выход ispEN загрузочного кабеля установлен в «логическую единицу». Для этого должен быть установлен параметр ispEN/BSCAN Pin Connected и выбран пункт Set High. При использовании LPT-порта, доступного по адресу, отличному от 378h, можно выбрать базовый адрес порта в поле Port Setting. Для работы с рассмотренным ранее загрузочным кабелем должен быть задан тип кабеля LATTICE. Убедившись в верности настроек, нажимаем OK.
Для использования указанных настроек необходимо в меню Options установить пункт AutoScan Options в состояние Custom Scan (рис. 9).
Далее можно выполнить сканирование JTAG-цепочки, для чего нужно нажать на кнопку Scan. В рабочей области появится таблица, строки которой соответствуют кристаллам в JTAG-цепочке (рис. 10).
Задание конфигурационного файла для программирования ПЛИС в ispVM System осуществляется в окне Device Information. Для открытия этого окна необходимо выбрать строку таблицы, соответствующую программируемой микросхеме, после чего нажать на кнопку Edit Device, либо нажать на клавишу «пробел», либо выделить строку двойным щелчком левой кнопки мыши. Окно Device Information для второй микросхемы рассмотренной JTAG-цепочки показано на рис. 11.
Конфигурационный файл назначается нажатием на кнопку Browse, через оригинальный диалог открытия файла Open Data File. По умолчанию будет открыта папка с тем проектом, который был открыт в САПР ispLEVER Classic в момент запуска ispVM System. Файл конфигурации второй ПЛИС создан и сохранен в папке текущего проекта ispLEVER Classic, поэтому в диалоге открытия файла выбираем umsi_p_u17.jed (в других проектах название файла будет иным) и нажимаем «Открыть» (рис. 12). В результате в поле Data File будет указан абсолютный путь к конфигурационному файлу. Неудобство этой настройки заключается в том, что абсолютный путь в большинстве случаев приходится устанавливать заново при переносе проекта с одной системы на другую.
Параметр Operation описывает действия, осуществляемые с выбранным кристаллом при запуске процесса конфигурации JTAG-цепочки. По умолчанию установлен следующий порядок: стирание, запись, верификация (Erase, Program, Verify). Выпадающий список позволяет выбрать иной порядок действий.
В поле Part Description можно задать текстовое описание кристалла. В рассматриваемом примере введена строка описания Data Switch. Заполненное окно конфигурации для второй микросхемы показано на рис. 13. После проверки правильности настроек нажимаем OK.
Для неопознанных микросхем других производителей в составе JTAG-цепочки следует указать длину регистра команд (Instruction Register Length). Если этого не сделать, то при нажатии на кнопку GO будет выдано сообщение о невозможности выполнения операции (рис. 14).
Длина регистра команд микросхемы может быть задана путем импорта BSDL-файла (расширение *.bsd) в окне конфигурации кристалла путем нажатия на кнопку Imoprt…. В открывшемся диалоге следует указать BSDL-файл для неопознанного кристалла (необходимо выбрать тип файлов BSD).
В рассмотренной JTAG-цепочке первая и третья микросхемы основаны на кристалле XC95144XL фирмы Xilinx. Файлы BSDL для кристаллов фирмы Xilinx могут быть заимствованы из САПР Xilinx ISE Design Suite либо загружены с сайта компании в разделе support→download→device models [6]. BSDL-файл для кристалла XC95144XL в корпусе TQFP-100 расположен в папке с установленным пакетом Xilinx ISE Design Suite 14.4 по адресу <…\ISE_DS\ISE\xc9500xl\data > и называется xc95144xl_tq100.bsd (рис. 15).
Четвертая микросхема в JTAG-цепочке представлена ПЛИС фирмы Altera на кристалле EPM7032S архитектуры CPLD. Файл 7032ST44.BSD был загружен с сайта фирмы Altera [7].
Формат BSDL-файлов — текстовый, благодаря чему файлы *.bsd могут быть прочитаны и отредактированы в текстовом редакторе.
В результате импорта параметров в таблице будет указана длина регистров команд для неопознанных при первом сканировании кристаллов. Окончательная конфигурация JTAG-цепочки показана на рис. 16.
Загрузка конфигурации и выполнение всех действий с кристаллами JTAG-цепочки, указанных в таблице, запускается по нажатию на кнопку GO либо сочетанием клавиш Ctrl+G. При этом запускается процесс обмена данными с микросхемами и отображается таймер выполнения операции (рис. 17). Успех выполнения действий, определенных в таблице, для каждого кристалла отображается зеленым сигналом в колонке Status.
Для ускорения дальнейшей работы настройку конфигурации JTAG-цепочки можно сохранить в файл *.xcf. Для этого нужно воспользоваться стандартным меню File→Save As… (рис. 18). В открывшемся диалоге задаем имя файла, например kit_test_lattice. После нажатия «Сохранить» в выбранной папке будет создан файл kit_test_lattice.xcf. После этого при запуске ispVM System из САПР ispLEVER Classic будет выполняться автоматическая загрузка конфигурации цепочки из файла kit_test_lattice.xcf.
Конфигурация цепочки ПЛИС компании Lattice Semiconductor старого образца по фирменному протоколу Lattice ISP осуществляется аналогичным способом, за исключением настройки кабеля и режима сканирования. Сигнал ispEN/BSCAN в окне настройки загрузочного кабеля необходимо установить в положение Set Low и использовать режим сканирования Mix Scan.
- 1-2013. IEEE Standard for Test Access Port and Boundary-Scan Architecture.
- Руководство по разработке устройств, пригодных для тестирования и внутрисистемного программирования. JTAG Technologies. June 2008.
- ispDOWNLOAD Cable For Programming Lattice ISP Devices. Lattice Semiconductor Corp. June 2000.
- Using Proprietary Lattice ISP Devices. Lattice Semiconductor Corp. 2001.
- Борисенко Н. В. Программирование ПЛИС фирмы Xilinx в составе смешанной JTAG-цепочки средствами САПР Xilinx ISE Design Suite 14.4 при помощи кабеля Parallel Download Cable III // Компоненты и технологии. 2013. № 7
- Раздел Device Models в меню Download на сайте xilinx.com
- http://www.altera.com/download/board-layout-test/bsdl/bsdl.html /ссылка утрачена/