Программатор для ПЛИС Xilinx на AT90USB162


Понадобился мне программатор для ПЛИС Xilinx. Как оказалось, готовые программаторы достаточно дороги и труднодоступны, а доступных для самостоятельного изготовления программаторов совсем мало. Решил сделать свой программатор, путем соединения трех Open source проектов.
Из доступных для повторения имелись проекты: www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter (копия программатора от Xilinx, довольно сложная и использующая CPLD).
Есть программатор на FT2232H, но у меня не было этой микросхемы.
Есть программатор FPGALink, использующий AT90USB162, которая у меня была (описание программатора на русском).
Этот программатор я собрал, но он не является полноценным программатором, а XSVF player'ом, и соответственно, не поддерживается программами IMPACT и ChipScope.
Есть проект XVCD, использующий FT232. Особенность этого программатора в том, что он использует стандарт плагинов XVC — «Xilinx Virtual Cable», и поддерживается вышеупомянутыми программами.
Однако и FT232 у меня не было, а покупать ее, разводить и делать под нее плату было лень.
Но ведь у меня уже есть программатор FPGALink, и поэтому возникла мысль сделать для него XVC плагин. Однако изучение протокола XVC и протокола FPGALink показало, что команды JTAG в этих проектах передаются по разному.
После этого я обратил внимание на адаптер opendous-jtag, рассчитанный на работу с OpenOCD. В этом адаптере тоже используется контроллер AT90USB162, и протокол связи контроллера с компьютером близок к тому, что требуется XVC. Однако протокол OpenOCD не позволяет передавать по JTAG «сырые» команды, как это нужно XVC. Поэтому мне пришлось написать свой плагин, а для этого объединить исходные коды проектов xvcd (связь с IMPACT), OpenOCD (низкий уровень работы с libusb), opendous-jtag (более высокий уровень работы с адаптером). Прошивка контроллера используется от opendous-jtag, её можно скачать здесь: code.google.com/p/opendous-jtag/downloads/list
Распиновка программатора:
PORTB.0 — TDI
PORTB.1 — TMS
PORTB.4 — TCK
PORTB.5 — TDO
Получившийся плагин был проверен с IMPACT и ChipScope — работает нормально. Работа проверялась на FPGA xc3s200 (Spartan-3) соединенной последовательно с памятью xcf01. В настройках программ нужно указать использование Cable Plug-in с настройками «xilinx_xvc host=localhost:2542 disableversioncheck=true»
Для устройства требуется драйвер libusb, его можно установить при помощи программы Zadig.
Исходный код, прошивка контроллера, и сама программа, скомпилированная под x86: opendous-jtag-xvc
- +5
- 04 апреля 2015, 00:56
- citizen
Комментарии (6)
RSS свернуть / развернуть