Несмотря на то, что Altium Designer поставляется с огромными библиотеками компонентов по-прежнему остается необходимость создания в нем своих схемных компонентов. Особенно это актуально для крупных микросхем с большим количеством выводов и атрибутов выводов. Это могут быть FPGA, микроконтроллеры, процессоры, чипы памяти и т.д. Здесь я представлю свою технологию генерации схемных компонентов экстрагируя информацию из PDF файлов.

Возьмем для примера даташиты на микроконтроллеры Kinetis, скажем серию K66. Нет труда извлечь схемные компоненты этих микроконтроллеров из многочисленных референс-дизайнов предоставляемых фирмой производителем. К счастью многие из них представлены в формате Altium Designer. Скачиваем отсюда архив «Hexiwear-Design-Files», находим там схему, а в ней вот такое представление компонента:

(Кликнуть для увеличения)


Здесь схемный компонент микроконтроллера разбит на несколько логических частей, так как было удобно автору схемы. Остается только завидовать профессионализму автора, но обычно такое скупое представление компонента затрудняет понимание работы схемы, а в последствии и поиск ошибок.

Микроконтроллер на своих выводах может поддерживать до 7-и альтернативных функций. Ошибись схемотехник в назначении функции хотя бы одного вывода и плату придется мучительно тюнинговать вручную после изготовления или даже выкинуть, если корпус — BGA.

Поэтому такой компонент мы не можем позаимствовать. Он к тому же представлен только для одного корпуса, а корпуса могут быть и другие, с другой распиновкой.
Не лучше обстоят дела и у компонентов микроконтроллеров, найденных в сторонних библиотеках. В них также не указываются альтернативные функции.

Я нашел выход в автоматизации генерации компонентов из pdf даташитов.

Шаг 1

Определяем какими таблицами в даташите представлена распиновка. Для K66 она представлена в виде такой таблицы простирающейся на несколько листов.


(Кликнуть для увеличения)


Это удобное представление. В этой таблице сразу сведены и номера выводов и названия всех их функций. Но скажем, для микроконтроллеров STM32 ситуация будет сложнее, там есть отдельно таблица соответствия номеров выводов их базовым названиям и таблица соответствия базовых названий и всех альтернативных функций. Это тоже несложно решаемо.

Шаг 2

Из PDF файла переносим таблицы в MS Excel. Я использовал для этого программу Adobe Acrobat. У нее существует бесплатная триальная версия.

Получаем таблице в Excel такого вида:


(Кликнуть для увеличения)


Шаг 3

Экспортирую таблицу из Excel в текстовый файл где поля таблицы разделены символом табуляции (0x09).

Шаг 4

Полученный нами файл таблицы наполнен всяческим мусором, унаследованным от форматирования в PDF файле. Это и ненужные переносы строк, и пробелы, и другие ненужные символы.

Поэтому я написал программу в Delphi которая импортирует файл и фильтрует мусор.


(Кликнуть для увеличения)


В окне программы указывается путь к файлу альтернативных функций портов (это экспортированная из Excel наша таблица), указывается тип корпуса микросхемы (список заполнен в программе на Delphi вручную), указывается директория и файл куда будет сконвертирована таблица в формат пригодный для последующего импорта в Altium (это должен быть файл с расширением .csv). Сепаратором для csv файла должна быть запятая. А разделяющий функции символ может быть произвольный, такой чтобы удобно читались перечисления функций в описании вывода.

Все правильно настроив нажимаем «Выполнить».

После успешного выполнения увидим в закладке «Выходная таблица для Altium» таблицу, предназначенную для обработки скриптом Altium Designer. Таблица сохранена в указанном ранее csv-файле.


(Кликнуть для увеличения)


Шаг 5.
Открываем Altium Designer. Открываем библиотеку схемных компонентов где хотим создать новый компонент. Щелкаем последовательность DXP > Run Script. Указываем путь к скрипту ImportPins.PRJSCR. Появляется такое окно:


(Кликнуть для увеличения)
.

В нем щелкаем RunImportPins. В появившемся диалоге указываем путь к нашему csv файлу и щелкаем Update Mapping. Получаем окно со следующим содержанием.



Щелкаем Execute и в окне редактора схемного компонента получаем изображение всех выводов с присвоенными им названиями и номерами:


(Кликнуть для увеличения)


Все! Работа сделана.

Может показаться, что это немного не то, что ожидалось от обещанной автоматизации. Но на самом деле точное соответствие номеров и названий выводов это самая ответственная и тяжелая работа при разработке схемных компонентов.

Далее можно вполне быстро отредактировать длину выводов, расположить их по полю, нарисовать контуры, разделить на функциональные группы и т.д. Это рутинная легкая работа, которая не приведет к фатальным ошибкам. Далее в редакторе футпринтов также без проблем сделать корпус микросхемы используя имеющиеся визарды. Поскольку корпуса у микроконтроллеров достаточно типовые.

Репозиторий проекта находится здесь.

В директории Pin_builder_MK66 находятся все файлы для повторения шагов и их результаты, описанные в этой статье. Там же исходные файлы конвертера на Delphi. В директории Import_pins_Altium_script находится проект скрипта для Altium Designer.

В файле FunctionsMapping.xlsx содержится исходная таблица, экспортированная из даташита.
csv файл для конвертации называется MK66FN2M0VLQ18.csv
Поделиться с друзьями
-->

Комментарии (3)


  1. zloiMOZG
    30.04.2017 00:45

    Прикольно:)
    Хотя я обычно средствами самого экселя фильтрую скопированное из таблицы. Потом генерирую массивом нужное кол-во пинов, иногда даже расставляя их, и затем из таблицы экселя просто копирую в SCHLIB List.


  1. atd
    30.04.2017 19:42

    Очень круто, спасибо! Надо будет испробовать в следующий раз.

    У самого была идея «полной» автоматизации, но руки не дошли (а точнее, испугался сложности). А такой полу-автоматический метод сильно лучше, чем ничего.


  1. AVI-crak
    30.04.2017 23:36

    Получается слишком много мусора в альтернативных функциях пина чипа. Ошибка может возникнуть при «верном» назначении альтернативы в ошибочной конфигурации периферийного узла. Это когда периферийный компонент имеет несколько точных конфигураций назначений пинов, которые нельзя смешивать.
    Визуально всё будет в порядке, кроме седого программиста.
    В данном случае имеет смысл оставить базовое название вывода, а вариант альтернативной функции закодировать в названии внешней сети. Чипы имеют до 1000 выводов, и каждое соединение необходимо обрабатывать в ручном режиме. Если эту операцию невозможно исключить — то нужно хоть немного упростить.

    Фрагмент пдф файла имеет верное и логичное исполнение, и этот стиль необходимо использовать.