XILINX Parallel Cable III

Elcat выслал свой проект программатора XILINX Parallel Cable III.

Ссылка на проект.

Исходный ДШ.

С комментарием:

Сия девайсина проверялась только со средой Xilinx WebPACK ISE. Будет ли работать с чем-то другим не гарантирую. Плата сделана не на той стороне, потому при печати смотрите внимательно на надписи, возможно придётся отзеркалить.

 

Вдарим плисами по ардуинам господа!  crazy

Xilinx Platform Cable USB

Издавна Xilinx-овские ПЛИСы славились тем что ISE прошивает их и отлаживают только через фирменные программаторы. На любых прочих, был большой костыль.

Самым распространенным в кругах любителей является “Xilinx Parallel Cable III”, как не сложно догодаться, это няшка для LPT порта. Видимо по этой самой причине, производитель выкладывает его схему прямо в ДШ.

Вроде не сложный совсем, но у меня этих портов нету, и шьет он далеко не все серии Xilinx’ов.

При этом никаких простых полноценных отладчиков с переферийным сканированием через USB я не знаю.

Так как я давно и очень основательно готовлюсь к освоению сего класса микросхем, как-то года 2-3 тому назад закупил китайскую подделку под “Xilinx Platform Cable USB”, т.к. оригинайный Platfom Cable стоит зачастую 300 баксов. Работоспособность китайского с новыми версиями среды разработки Xilinx ISE вызывала у меня опасения. Наконец дошли руки, расчихлил.

Естественно внутри неоригинальная плата и более простая плисина, нежели чем в оригинале

Как всегда…. чтобы прошить одну плисину, нужна другая плисина crazy Вообще странная тенденция… STM-ки прошивает STM-ка, Меги прошивает Мега. Xilinx’ы на общем фоне решили “выебнутся”, и помимо ПЛИСины впихнули на плату еще и монструозный МК от Cypress, хотя одной плисины помощьнее вполне хватило-бы.

Но в целом схемотехнический дизайн нормальный, без особых нюансов. Почти как в оригинале. Что не может не радовать.

 

Плата оригинала за 287,00 € выглядит так:

 

Подключенный таргет определяет, прошивает, и даже в принципе на адекватных скоростях JTAG интерфейса.

Так-что в принципе годная вещь, можно использовать. На Xilinx ISE 14.7 самой последней сборки, работает.  К тому-же как я вижу он несколько подешевел за эти годы на али-экспрессе, сейчас китайцы просят за него около 25$.

Кстати, насколько мне известно, это единственный прошивальщик который китайцам удалось скопировать. Все последующие фирменные программаторы китайцам оказались неподвластны, насколько я знаю.

Elcat как-то обещал дать платку какого-то программатора, если пришлет на почту, добавлю в этот пост. Наверное речь шла о девайсе на базе FT2232H работающий как SVF Player.

.

PS. Для прошивки второго неотъемлемого компонента вычислительной платы BGM121, едет Segger J-Link EDU. Будет любопытно вскрыть его и посмотреть что внутри.

VHDL 3

Дорисовал функционал таймеров в ПЛИСине. Решил пока не реализовывать загрузку констант по SPI, в принципе пока для первой редакции их можно прошивать сразу в ПЛИСину на этапе сборки.

Вообщем получилось нечто следующее:

Сигналы:

  • Pump_out – накачка на транзистор.
  • MCU_clock_38_4mhz – тактовая частота с МК.
  • Vsens – уровень с компаратора высокого напряжения.
  • Pulse_sens_in – уровень с компаратора анодного импульса.
  • Clear_charge_out – управление сбросом заряда в аналоговой цепи.
  • Adc_start_out – сигнал для старта АЦП в МК.

VHDL Кодом блока Impulse_control я вас пожалуй утруждать не буду, его всегда можно посмотреть тут. Весь нужный функционал вроде реализовал и занял он около 30% кристалла.

Симуляция работы показывает адекватные результаты:

 

Осталось развести плату. Благо это будет легко. Любой сигнал может быть посажен на любую ножку кроме питания, программирования и основной тактовой частоты.

Вывод: Плисины не так уж и страшны, как кажется на первый взгляд. cool

VHDL 2

Посмотрел значит я на комменты к прошлой записи, и понял, что ничо никому нихрена не ясно…

Значит будем “прояснять”. Как пример, привожу код таймера который будет управлять накачкой. Занимает 22 макроячейчки в XC9500XL. В целом в коментах все описано, но основная суть сего таймера в:

Если напряжение меньше порога (лог.1 на входе Low_voltage), отсчитывать заданное время подачи импульса на транзистор(задается битовым значением на входах pulse_time[0..7]). По началу и завершению периода накачки выдать сигнал-уведомление work_timer, для дальнейшего анализа.

Этот небольшой код, генерирует вот такую партянку из логических элементов конфигурация которых в последствии прошиваются в ПЛИС:

При виде которой, у меня возникает только одна единственная ассоциация: Ебипетская сила!   diablo

По результатам симуляции можно видеть что код работает хорошо:

Осталось дело за малым, накодить второй модуль, который будет управлять цепочкой сброса заряда в аналоговой цепи, управлять стартом АЦП внутри МК, и считывать от МК по SPI конфигурацию параметров работы таймеров.

VHDL

Начал потихоньку изучать программирование ПЛИСов, чтобы можно было обеспечить необходимую скорость управления аналоговой частью, но т.к. рисовать схемой нужный функционал, это несколько “топорно”, сижу изучаю VHDL.

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

 

В первом приближении, поражает синтез кусочка кода, в огромные наборы логики. Как пример 16-ти разрядный счетчик с проверкой условия: