Psoc. глава 2.

PSoC – Как начать работать

Для работы понадобятся:

1. Среда разработки, именуемая «PSoC Designer».
2. Программатор с соответствующим софтом.
3. И конечно же – ваше целевое устройство

Обо всем этом речь пойдет ниже. Существует более простой, но и более дорогостоящий путь – купить готовый отладочный набор, в который обычно входят:
– программирующее устройство (с функциями отладки и эмуляции);
– отладочная («оценочная») плата (Evaluation Board) с установленной микросхемой PSoC, периферией (кнопки, индикаторы и т.д.) и небольшим макетным полем;
– компакт-диск со всей необходимой документацией и софтом.
На сайте Cypress вы найдете большой выбор таких наборов, а также программаторов и отладочных плат по отдельности. Дистрибуцией продукции этой фирмы в России занимается компания «Макро Групп».

Про то, что не следует вначале углубляться в дебри технического описания, я уже говорил. Установите сперва среду разработки «PSoC Designer». Все сразу станет наглядно. В том смысле, что поигравшись с расстановкой модулей и их межсоединениями, быстро создается впечатление о возможностях конфигурирования кристалла.

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

Основной источник информации, которым вам придется пользоваться – это, конечно же, справка по Модулям Пользователя (вызывается из PSoC Designer-а, хотя файлы *.html и *.pdf можно найти в соответствующих папках, расположенных в разделе . PSoC DesignerDataStdum). Наконец, если вы желаете досконально изучить внутренности PSoC – то читайте Техническое Руководство (Technical Reference Manual, или сокращенно TRM). Этот документ появится в папке . PSoC DesignerDocumentation после установки PSoC Designer-а, но лучше скачать его последнюю версию с сайта Cypress.

Наконец, чтобы лучше понять работу блоков с переключаемыми конденсаторами (SCB), обязательно прочитайте документ AN2041 – «Understanding Switched Capacitor Analog Blocks».

PSoC Designer

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

Установка программы проблем обычно не вызывает. Вместе с программой утановится и комплект справочной документации. С текстами на ассемблере можно начинать работать сразу, а вот для использования компилятора «C» требуется ввести лицензионный ключ, который является платным. Можно установить версию 4.1 и в образовательных целях использовать ключ WR99228-2hYQLB, применявшийся на конкурсе PSoC Design Contest–2003.

Но не стоит возлагать на компилятор «C» больших надежд – и код он генерирует не очень хороший, и слишком много в нем всяких неприятных заморочек (в частности, будьте осторожны со смешиванием различных типов данных в математических выражениях – иногда бывает полезнее разбить сложное выражение на несколько простых). В связи с этим появился новый компилятор – HI-TECH C, предусматривающий работу в трех режимах: «урезанном» «Lite» (неограниченное бесплатное использование), оценочном «Evaluation» (45 дней бесплатного пользования) и полнофункциональном «PRO».

Еще Cypress выпустила альтернативу PSoC Designer-у – среду разработки PSoC Express. Этот продукт предназначен, так сказать, для «чайников» – предполагается, что можно создавать устройства на базе PSoC без написания кода.

Программаторы

Здесь есть несколько альтернатив.

1. Те, кто собирается заниматься разработкой устройств профессионально, могут купить фирменные отладочные модули разных ценовых категорий и с разными возможностями. Я лично использую ICE Cube, хотя иногда предпочитаю описанные ниже варианты.

2. Программатор на базе USB-микросхемы CY7C64113 можно изготовить самому, воспользовавшись материалами на сайте Cypress (с некоторого момента материалы стали недоступны, так что здесь оставляю их копии (схема, прошивка с исходниками и программное обеспечение, все в архиве 1,54 МБ).

Этот продукт называется Invention Board, и в свое время он бесплатно рассылался для всех желающих принять участие в конкурсе электронных разработок на базе PSoC. На плате дополнительно установлена микросхема CY8C27443-24PVI, а сама плата оформлена в виде 28-выводного модуля для втыкания его в панельку, причем нумерация выводов у платы и у микросхемы совпадают. Предусмотрена возможность как программирования встроенной микросхемы PSoC, так и использования платы в качестве внешнего программатора (для так называемого внутрисистемного программирования – «ISSP»). С этой целью на плате есть пять контактных площадок для подпайки специального разъема. Питание плата получает от USB-порта компьютера, но может запитываться и от отлаживаемого устройства (выбирается джампером). Недостаток этого программатора – в поддержке микросхем исключительно 27-й серии (CY8C27xxx). К тому же, отсутствуют возможность программирования 8-выводных чипов CY8C27143, которые из-за отсутствущего входа Reset требуют специального вхождения в режим программирования.

3. Простейший программатор, подключаемый к LPT порту компьютера, предлагает собрать Ajithalayam из Индии. Его устройство выполнено на основе буферной микросхемы CD4050 (отечественный аналог К561ПУ4) и поддерживает практически все семейство PSoC, включая серию CY8C29xxx. Здесь есть режим Power-On Mode, что дает возможность программировать все 8-выводные микросхемы. Материалы по его программатору (разработано три модификации) можно взять здесь (zip-архив 134 кБ). На основе его «программатора 3-го типа» я разработал свой вариант. У меня добавились панелька под корпус DIP8 и контакты для быстрого макетирования.

4. Вполне возможно, что некоторые изготовители универсальных программаторов уже ввели в свои изделия поддержку PSoC. Если вам что-нибудь известно, присылайте ссылки и свои отзывы, я размещу эту информацию у себя на сайте.

Например, «Фитон» предлагает программаторы «ChipProg+» (интерфейс LPT) и «ChipProg-48» (интерфейс USB) на базе микросхем загружаемой логики, что позволяет расширять список программируемых устройств без аппаратных доработок. В настоящий момент уже поддерживаются серии CY8C24xxx, CY8C27xxx и CY8C29xxx.

Целевое устройство

Если вы собираетесь «прошивать» микросхемы PSoC через ISSP (т.е. не вынимая их из устройств), то предусмотрите на своей плате соответствующий коннектор, а при разработке устройств не используйте ножки P1[0] и P1[1] – они задействованы в процедуре программирования! В крайнем случае к ним может быть подключен кварц, не мешающий программированию. Но при подсоединенном программаторе (если у последнего не предусмотрен перевод линий в высокоимпедансное состояние) кварц может не запуститься – потребуется всякий раз после прошивки расчленять коннектор ISSP (из положения можно выйти, включив на период отладки режим внутреннего тактового генератора). Более подробно о реализации ISSP рассказано в документе AN2014 – «Design for In-System Serial Programming (ISSP)».

Для исследования функционирования PSoC, проверки идей, отладки отдельных узлов, а также всего устройства целиком, я использую свой вариант отладочной платы, которую назвал «Psoctronic». На ней, кроме 28-выводной микросхемы PSoC, расположены 2-х строчный ЖК-дисплей, четыре кнопки, коннектор для подключения RS-232 и ряд контактов, дублирующий выводы портов микросхемы. Материалы по этой плате находятся здесь.

PSoC. Глава 2. UART

Передача данных

Для тех, кто вообще не в курсе — сегодня мы будем заниматься передачей данных. Если говорить сугубо об информационных технологиях то тут существует бесчисленное множество способов передачи данных (Ethernet, Wi-fi, blue-tuth IPv4/IPv6 , FTP, http, https, ssl, usb перечислять можно долго). Каждый из таких способов называется протоколом. Говоря своими словами, протокол передачи данных — это, некоторое соглашение о том каким способом будут передаваться данные. Некоторые из них реализованы на высоком уровне некоторые на более низком, а некоторые вообще существуют как абстрактные понятия (Существует даже специальная модели стеков протоколов, в которых на определённых уровнях решаться конкретные задачи). Так вот UART это один из таких протоколов. На UART’те базируется ещё одни знаменитый протокол RS-232, интерфейсы RS-232 это COM порты. Обычно, передаваемой единицей информации, для определённого протокола, является пакет, пакет данных (или кадр, или batch). Который в свою очередь тоже жестко протоколирован. Вспомните что, когда мы говорим о передачи данных по сети (кстати это протокол IPv4 (Internet Protocol версии 4)), мы оперируем такими выражениями как » отправленные пакет”, ”потерянные пакетов». Пакет данных обычно состоит из головы, тела (той части, в которой и находятся передаваемые данные), и хвоста.

То есть, сначала по каналу передачи к получателю поступают служебные данные, информирующие его о сущности поступаемых данных, потом сами данные, потом хвост, уведомляющий получателя о благополучном завершении передачи пакета. К счастью к той модели UART’та которую мы будем реализовывать, применима политика минимализма. Голова составляет всего 1бит, данные 8бит (один байт), и хвост 1 или 2 байта.

UART Технические данные

Данные через UART передаются по двум линиям связи. Это TX (Transmitted) передающая линия и RX (Received) принимающая линия. Каждая из линий принимает по одному биту в равные промежутки времени. Существует ряд общепринятых скоростей передачи данных 300; 600; 1200; 2400; 4800; 9600; 19200; 38400; 57600; 115200; 230400; 460800; 921600. Эти величины имеют размерность bps (bit per second) количество передаваемых бит в секунду. Стоит заметить, что в число передаваемых бит в секунду входят также служебные биты. Допустим один байт, на скорости 9600, будет передаваться не 8/9600 секунд как хотелось бы, а 11/9600 учитывая биты начала пакета и конца. Исходя из того что некоторые модели UART не предусматривают способов синхронизации частот, то частоты передачи данных обменивающихся сторон должны быть изначально оговорены. Одной из наших задач будет синхронизация COM порт компа, и UART микроконтроллера на одной из вышеприведенных скоростей (хотя, принципе можно перенастроить UART на любую желаемую частоту). Модули UART обычно имею буферы памяти, нужные в том случае когда принимающие устройство не успевает обрабатывать поступающие данные.

Некоторое аспекты Desiner’а которое ещё небыли освещены

Маркировка

Иногда может показаться, что выбор расположения цифрового или аналогового блока дизайнер проводит случайным образом. Что бы понять, что происходит, стоит рассмотреть маркировку блоков в дизайнере более подробно. Каждый блок имеет имя состоящие из 3-х букв и 2-х цифр. Например — ASC12.

  1. Первая буква — обозначат принадлежность к аналоговой или цифровой подсистеме контроллера. A — для аналоговых, D — цифровых.
  2. Вторая буква – обозначает деление аналоговых или цифровых блоков на подгруппы. Для аналоговых блоков происходит деление на C (continious time block) и S (switch capacitor block). Постоянные и переменные блоки. В постоянных блоках реализуются такие вещи как компараторы, программируемые операционные усилители и.т.д. В переменных, такие как АЦП, ЦАП’ы. Для цифровых блоком, на B (basic block) и C (communication block). В бейсиках могут находиться Таймеры, широтно-импульсные модуляторы. В блоках передачи информации такие модули как UART, который мы будем рассматривать в дальнейшем.
  3. Третья буква — означает вид архитектуры реализации блока. Бывают буквы A,B,C,D. Но обсуждение этого выходит за рамки статьи.
  4. Две последние цифры — означают строку и столбец, в котором находиться блок.

То есть при выборе того или иного модуля микроконтроллера дизайнер подбирает за нас, подходящие для него расположение.
Если случилось, так что вам не понравилось расположение модуля по умолчанию. Вы всегда можете перенести блок кнопками:

Мультиплексоры

Мультиплексор, представляет из себя устройство задачей которого является перенаправление сигнала одного из входов (мультиплексоры имеют несколько входов и один выход) на выход. Исходя из установленного состояния прибора. На схемах он обычно обозначается трапецией. Наш случай не исключение.

Левым кликом по мультиплексору можно задать одно из возможных состояний.

Встретить мультиплексор (Multiplexer или Mux) можно и в даташитах, и пугается при этом не стоит. Он выполняет абсолютно такую же функцию.

Пример 3. Transmitted Data. (Часть 1. inception)

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

Задачи: Послать и принять данные на ПК.

Дополнительное АО и ПО: Нам понадобиться кабель RS-232.

Ход работы.

Долго не думая, заходим в папу Digital Comm и выкидываем на схему UART. Модуль занимает два цифровых блока, один для RX принимающая линия, второй для TX, передающая линию. Выходы этих блоков были соединены с определёнными портами, специально отведенными для транспортировки данных. Port_2_7 для выхода, Port_1_6 для входа. Теперь для синхронизации СОМ порта ПК и нашего модуля UART надо определиться с частотой передачи данных. Допустим, мы выбрали частоту в 19200 bit per second. В даташитах было сказано, что модуль должен работать на частоте в 8-мь раз большей, чем скорость передачи данных. Вроде всё просто. У нас есть SysClk это та частота, которую генерирует наш IMO (internal main ocilator) и есть VC (variable clock) — благодаря которым мы можем делить число SysClk на некоторые степени двойки. Теперь решаем небольшую задачку по математике.

Читайте также  Магнитные пластиковые карточки

BitRate — 19 200
SysClk — 24 000 000
VC — ?

Необходимая нам частота должна быть в 8-мь раз больше, значит, прибор должен работать на 19 200 * 8
Составляем неравенство 24 000 000 / VC = 19 200 * 8. Выражаем VC = 24 000 000 / (19 200 * 8) = 156.25.

Остаток 0.25 не так важен, и на передачу данных не повлияет. Выставляем в глобальных ресурсах VC3 Divider — 156 и VC3 Source — SysClk/1. Подключаем наш UART на эту рабочую частоту.

Всего 3 строчки кода понадобиться нам для отправки данных, это UART_Start(UART_PARITY_NONE); для запуска модуля, UART_PutString(buf); для отправки и UART_PutChar(‘n’); для вставки разделяющего символа. Для большего понимания приведу код прошивки.

Теперь надо проверить включён и работает ли на вашем компьютере com-порт. Для windows 7 -> правой кнопкой Мой Компьютер -> диспетчер устройств -> и мы должны видеть следующую картину.


Если этого не случилось com порт скорее всего отключен, и включить его следует в BIOS.

Выставляем настройки СОМ порта как показано на скриншоте.

Теперь надо прослушать ком порт и понять получаем мы какие-нибудь данные с микроконтроллера или нет. Для этого есть программы, называемые снифферами и терминалами. Мне, например, понравились Hyper Terminal и COM Port Toolkit. В статье я буду использовать 2е и приведу ниже архив для скачки. Next -> Next -> Next программа установлена. Запускаем прогу. Подключаем микроконтроллер к компу. Подаем питание. И если всё было сделано правильно, получим примерно следующий результат.


Не стоит беспокоиться о том, что данные, которые мы получаем, нам не понятны. Сейчас мы всего лишь убеждаемся в их наличии.

*Transmitted Data. (Часть 2. C#)

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

Теперь, когда мы убедились в том, что данные благополучно поступают на наш компьютер. Настало время в них разобраться и написать небольшой клиент для обработки поступающих данные. Клиент будет состоять из двух частей. Части обработки информации и графического интерфейса. Писать клиент будем на C#.

я работаю Visual Studio 2012 Express, у в других студиях интерфейс может отличаться, но принцип останется прежним

Запускаем любой Visual Studio с поддержкой C#. File -> New Project -> Visual C# -> Windows Forms Application. Сразу даём ему имя нашему проекту (у меня Client) и путь для создания. Сразу перед нами должен появится дизайнер окна и панель инструментов Toolbox (Если Toolbox’а не видно, то его нужно добавить через меню View). Из него вытягиваем на форму два Label’а и одни TextBox. Форматируем их так, что бы получилось примерно следующие окно.

Теперь понадобиться создать класс для коммуникации. В закладке Project меню Add Class. Затем даёте имя файлу (у меня Com) и студия автоматически создаст за вас каркас класса.
Выглядит это примерно так:

теперь в класс нужно добавить, поля данных.

на некоторые из полей студия начнёт ругаться, а именно на TextBox и SerialPort. А произойдёт это по тому, что к файлу не подключены нужные пространства имён. Для этого в самом верху файла нам надо подключить два пространства имён:

Конструктор с параметром, в который будет выводиться информация.

Создаём функцию для обработки полученных данных, она будет вызываться каждый раз кода, поступают какие либо данные на ком порт.

Некоторые строчки этой функции могут казаться не понятными, и досконально рассматривать мы их не будем. Скажу только что прототип функции заранее оговорен и должен принимать следующий вид private void received(object sender, SerialDataReceivedEventArgs e) (за исключением названий переменных и функции разумеется). А строка textBox.Invoke((MethodInvoker) delegate < textBox.Text = value; >); просто записывает данные в наш текст бокс в потокобезопастной манере.

Осталась пара мелочей. Функция, которая запускает поток на просушку порта.

Строчка port.DataReceived += new SerialDataReceivedEventHandler(received); подписывает, описанную нами ранние функцию, на событие поступления данных.
Полный вид файла для взаимодействия с ком портом имеет следующий вид.

Последний штрих это в конструкторе класса нашей формы создать объект класса Com и передать ему указатель на TextBox.

PSoC 5.Введение. Создание проекта.

Всем привет.
Фирма Cypress занимается выпуском микросхем памяти, интерфейсов USB и пр. Меня заинтересовали микроконтроллеры этой фирмы, или как они более точно называются PSOC (programming system on chip) т.е. программируемая система на кристалле.
Полное описание PSOC приводить не буду, для этого есть другие ресурсы. Подобная система помимо ядра микроконтроллера того или иного семейства содержит аналоговую периферию (ОУ, трансимпедансный ОУ, ЦАП с выходом по току и напряжению, компаратор, фильтры, SAR ADC а также дельта-сигма АЦП), цифровую периферию (счетчики, таймеры, генератор случайных чисел), а также элементы ПЛИС (простейшую логику И ИЛИ НЕ).Кроме того, подобная система содержит все необходимы и привычные для микроконтроллеров коммуникационные интерфейсы, такие как USART, I2C, SPI, USB UART,USB MIDI, RS-232, CAN, LIN и пр.)интерфейс дисплеев и индикаторов. Система на кристалле (в дальнейшем мы ее так будем называть)существует в нескольких вариантах: PSOC 1-на базе ядра М8 (8 разрядные МК), PSOC 3 и PSOC 5 на основе ядер 8051 и Cortex M3 а также PSOC 5LP усовершенстованный 5. Планируется выпуск PSOC 7 на основе ядра Cortex M4.
Сам я пишу и работаю с STM32F103, поэтому посчитал целесообразным приобрести такую плату для решения своих задач в более ускоренном темпе или же нестандартных задач или таких задач когда тебя трясут за горло и говорят о том что проект нужен еще вчера…
Важно отметить, в принципе на этом позиционирует сам Cypress, что подобные изделия легко конфигурировать и они защищены от реверс инжениринга, поскольку структуру самого проекта «зашитого» в систему невозможно и /или сложно считать.
Приобрел я летом плату на основе микросхемы PSOC 5 фирмы Cypress, на одноименном сайте скачал софт PSOC Creator 2.1. Скачивается с официального сайта только после регистрации, устанавливается легко без каких либо проблем. PSOC Creator предназначен для 3 и 5, для 1 свой отдельный софт. Основа софта GCC, плюс API функции. Для PSOC 3 есть компилятор от Keil он платный как я понял (не интересовался поэтому этот вопрос требует прояснения). Для 5-го бесплатный.
Запускаем программу, создаем проект просто выбрав тип системы. Появляется такое вот окно представленное на рисунке 1

Отмечены цифрами 1-древо проекта с файлами *.с и *.h, под цифрой 2 собственно слой на котором размещены те элементы которые вы собираетесь использовать. Они размещаются в панели справа и выбираются в зависимости от того что вам нужно. Далее необходимо соединить их между собой для этого воспользуемся соответствующим значком что расположен справа от размещенных нами элементах. Внизу цифра 3 расположена консоль она позволяет контролировать ошибки не только те которые вы допускаете в ходе программирования но и те которые вы допускаете в файле верхнего слоя (файл TopDesign.cysch), производится ссылки на конкретные «ляпы» — будь то не соединение, или перепутан вход или выход. Т.е. система контролирует пользователя и ошибиться не просто.
Следующий этап — подключения выводов и настройка входа выхода.
Подключаем ОУ PGA_1 на схеме для этого справа найдем вкладку Ports & Pins выберем аналоговый вход установим его напротив входа ОУ и соединим.
Получим следующий рисунок 2.

Обратите внимание на панель подключения пинов. Много разных типов для цифровых входов выходов, вплоть до изменения типа CMOS или TTL.
Откроем панель настройки ОУ Здесь вы можете установить усиление выбрать опорный сигнал, посмотреть зависимость усиления необходимую вам от частоты. Затем жмете кнопку ОК и Apply и получаете настроенный ОУ. А рядом имеется кнопка даташит. Нажав ее вы получаете полное описание вашей API функции.Там указаны функции необходимые для запуска выбранного модуля притом можно проводить настройку как вручную так и с помощью встроенных библиотечных функций.
Выход ЦАПа можно также аналоговый подключаем его к выходу.
Рассмотри АЦП их в данном контроллере три два SAR один дельта сигма (можно проверить если больше выдает ошибку) первые АЦП 12 разрядные 630кSps, дельта сигма АЦП 16 разрядный, но его можно настроить до 20 разрядного пробовал — работает.
Настроим АЦП SAR рисунок 3. Я думаю что тут будет все понятно.

Все подключили и настроили. Теперь надо соединить выводы проекта с физическими выводами. Для этого зайдем в панель под номером 1 дважды щелкнем на файл Design002.cydwr откроется окно.

Где изображен собственно корпус с выводами, а также куча вкладок под ним позволяющие подключать и настраивать соответствующую периферию, тактирование, прерывания.

Справа панель с подключенными нами выводами — теперь их надо подключить к проекту. Как это сделать? Да проще простого выбрав их в соотвествующем выпадающем списке (но все таки читайте даташит. ). Или перетащив мышкой.
Код пока не писал. Нажимаем F6 происходит компиляция проекта длящейся 10 секунд.
Если все верно то получим такой результат.
Flash used: 3248 of 262144 bytes (1,2%).
SRAM used: 272 of 65536 bytes (0,4%).
— Build Succeeded: 12/11/2012 21:40:02 —

Еще вам расскажу про собственно отладочную плату, и как ее прошить. И если получиться, покажу как работает мой самый простой проект.
С уважением.

Программируемые системы на кристалле.

Часть 2. Графический генератор приложений PSoC Express

Продолжаем рассказ о программируемых системах на кристалле PSoC Cypress. В данной статье вы познакомитесь с новым графическим редактором приложений PSoC Express. Даже если вы никогда в жизни не программировали микроконтроллеры и никогда не сталкивались с PSoC, вам может быть интересен и полезен данный материал, поскольку по его прочтении вы сможете делать несложные электронные устройства на базе микроконтроллера, не читая при этом его описание и не зная ни одного языка программирования.

Для начала вкратце напомним о том, что такое PSoC, и чем он полезен. Микросхема PSoC (Programmable System on Chip) компании Cypress является микроконтроллером с встроенным массивом аналого-цифровых ресурсов. Благодаря этому внутри PSoC можно реализовать обработку как аналоговых, так и цифровых сигналов. Обычно эти микросхемы используются в промышленной автоматике, охранных системах, бытовой и автоэлектронике.

В рамках данной статьи мы специально не будем углубляться в архитектуру PSoC (см. «КиТ» 4’2005), а также в тонкости программирования. Более того, мы попробуем сделать несколько электронных устройств, практически не вникая в характеристики элементной базы. Это стало возможным благодаря появлению нового программного обеспечения PSoC Express (на момент написания статьи — версии 1.1).

PSoC Express (PSoC Express Лого)

PSoC Express — бесплатно распространяемый генератор приложений, или, говоря проще, программа, которая позволяет создавать электронные устройства, используя только графический интерфейс. Пакет PSoC Express доступен для скачивания на сайте производителя (http://www.cypress.com/psocexpress), и может работать без каких-либо аппаратных средств.

Весь процесс проектирования условно можно разделить на 3 этапа:

  1. Выбор из библиотеки элементов, которые обеспечивают входные данные:
    • Датчики температуры (микросхемы Maxim, Fairchild, National);
    • Терморезисторы с задаваемыми характеристиками;
    • Цифровой вход (Pull Up, Pull Down, High Z);
    • Входные напряжения в диапазонах 0–2,6 В, 0–5 В, 0–12 В, 0–31 В;
    • Потенциометры;
    • Кнопки, переключатели;
    • Тахометры (импульсы с датчика скорости).
  2. Выбор из библиотеки элементов, которые обеспечивают выходные данные:
    • Аналоговые выходы 0–Uпит.
    • Зуммеры;
    • Ключи 10 мА (5 В), 5 А (5 В), 5 A (12 В), 10 А (48 В);
    • ШИМ 10 мА (5 В), 5 А (5 В), 5 A (12 В), 10 А (48 В);
    • Реле 5 В, 12 В, 24 В, 48 В;
    • Светодиоды (в том числе мигающие и с регулируемой интенсивностью);
    • Электродвигатели 3,3–48 В, 1–10 А (в том числе с регулируемой скоростью вращения).
  3. Задание функции зависимости выходных сигналов от входных. Делается это либо посредством логических выражений (If… Then… Else…), либо с помощью таблицы соответствия.
Читайте также  Операционные системы реального времени

После выполнения операций в соответствии с этими этапами пользователь может произвести программную симуляцию проекта. Убедившись в правильности сделанных построений, можно перейти в окно «BOM/Schematic» для получения полной информации о своем проекте. В результате этого действия программа PSoC Designer сгенерирует:

  1. BOM (Bill Of Materials) — полный список компонентов, использованных в проекте.
  2. Полное техническое описание на проект.
  3. Принципиальная схема на проект.
  4. Файл прошивки для микросхемы PSoC.

Теперь остается купить в магазине электронные компоненты согласно полученному списку, запаять их на плате по полученной принципиальной схеме и записать файл прошивки в микросхему PSoC (об этом подробно рассказывается в конце статьи). Все. Электронное устройство готово и при включении питания исправно заработает. При этом, заметьте, не потребовалось знания языков программирования Си или ассемблер, как впрочем и полного описания на PSoC.

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

Предположим, мы хотим сделать устройство, управляющее скоростью вращения вентилятора в зависимости от температуры по следующему закону:

Нажмем на иконку Input. В результате раскроется каталог устройств (рис. 1), разрешенных для установки на входе нашего изделия. В верхней части список термодатчиков разных производителей. Выберем, к примеру, LM20 фирмы National Semiconductors. В правой части каталога можно просмотреть техническое описание и схему подключения для соответствующего элемента. Температурный датчик LM20 позволяет проводить измерения в диапазоне температур –55. +130 °C. Внутри PSoC реализован программный алгоритм, преобразующий данные с термодатчика в 16-битное целое число с дискретностью температуры 0,1 °C. Это означает, что значение температуры 117,9 °C будет сохранено во внутреннем регистре PSoC как 1179. Итак, нажав «ОК», добавляем датчик температуры в наш проект. Видим, что на рабочем столе «Design» появилась соответствующая иконка с именем Input_1.

Шаг 2. Нажимаем на иконку Output. В раскрывшемся окне мы видим каталог устройств, разрешенных для установки на выходе нашего изделия. Спустившись в нижнюю часть каталога, можно увидеть двигатели разных типов. Выберем электродвигатель с номинальным рабочим напряжением 12 В и номинальным током 4 А. Управляющим элементом для двигателя служит MOSFET. (FAN —> Brushless DC —> Speed Control —> External Drive Fet —> 12V 2-/3-Wire). В результате на рабочем столе появится вторая иконка, обозначенная как Output_1.

Шаг 3. Теперь необходимо задать связь между вентилятором и датчиком температуры, то есть определить функцию Output_1 = Output_1(Input_1). Нажимаем правой кнопкой мыши на иконку Output_1 и в раскрывшемся окне выбираем Transfer Function. Функция преобразования (Transfer Function) бывает трех видов:

  • Priority Encoder;
  • Status Encoder;
  • Table Lookup.

Не вдаваясь в ненужные пока подробности, выбираем первый тип (Priority Encoder). Эта функция позволяет задавать связь в форме логических условий: if (условие) then (действие).

Условие и действие нам необходимо задать. Рядом с окном Priority Encoder (рис. 2) открылось небольшое окно Expression Assistant — проще говоря, подсказка, с помощью которой можно увидеть имена переменных, которые могут участвовать в логическом выражении.


Рис. 2

Для каждой переменной присутствует необходимый комментарий. В частности, нажав в окне Expression Assistant строку Input_1, в комментарии мы увидим надпись «Scale Factor: 10». Это коэффициент масштабирования, о котором шла речь при описании свойств датчика температуры. Таким образом, если мы хотим указать температуру 30 °C, в логическом выражении мы должны написать 300, для температуры 70 °C нужно написать 700, а для температуры 110 °C — 1100. Итак, заполняем таблицу Priority Encoder следующим образом.

Заметьте, что в последней строке в качестве условия стоит «1», логическая единица. Это означает, что если ни одно из предыдущих условий выполнено не было, будет принято последнее. Таким образом можно уберечь себя от ошибки в случае неопределенных состояний.

Все! На этом процесс проектирования закончен. Все остальное — это задача PSoC Express. Последнее, что мы можем сделать — это перейти на вкладку «Simulation» и проверить работу вентилятора во всем диапазоне температур (рис. 3).


Рис. 3

Шаг 4. Нажмите кнопку «Built». В этот момент PSoC Express начинает создавать пакет файлов для вашего проекта, в том числе файл прошивки (*.hex) для микросхемы PSoC. Во время этого процесса вам будет предложено выбрать наиболее подходящий тип корпуса микросхемы PSoC. По окончании процесса PSoC Express создает документы:

  • BOM;
  • DataSheet;
  • Schematic.

BOM (Bill Of Materials) — полный список компонентов, использованных в проекте. На все компоненты приводится также номер в каталоге Digikey, с помощью которого на сайте www.digikey.com можно посмотреть краткое описание и розничную цену на данный компонент.

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

Фактически PSoC Express создает принципиальную схему (рис. 4), согласно которой вы должны осуществить стыковку всех компонентов устройства.



Рис. 4

Итак, что мы имеем? Список компонентов, схему и загрузочный код для PSoC Cypress. Мы создали законченное электронное устройство — терморегулятор, пользуясь только графическим интерфейсом.

Электронный ограничитель скорости

Это еще один пример создания готового электронного изделия с помощью графического генератора приложений PSoC Express. Предположим, что устройство, которое мы хотим разработать, подключено к мотору или вращающемуся валу, с которого выходит сигнал с частотой, пропорциональной скорости вращения. Наша задача состоит в том, что бы при превышении заданной предельной скорости вращения подать определенный звуковой сигнал. Попробуем сгенерировать такой звуковой сигнал с помощью зуммера. Таким образом, когда скорость вращения превышает предельный порог, предположим, 6000 об/мин, зуммер начинает пищать.

Шаг 1. Запускаем PSoC Express и нажимаем иконку Input. В раскрывшемся каталоге выбираем самое нижнее значение(Speed —> Tachometer).В техническом описании на этот элемент видим, что он способен работать с частотами 300–25000 Гц (или об/мин).

Шаг 2. Нажимаем иконку Output, и выбираем в каталоге зуммер на 5 В и 100 мА (Audio —> Buzzer —> 5V, 100mA drive). В результате на рабочем столе появится вторая иконка, обозначенная «Output_1».

Шаг 3. Нажимаем правой кнопкой мыши на иконку Output_1, и в раскрывшемся окне выбираем Transfer Function. Выбираем тип функции Status Encoder, и попадаем в уже знакомое из предыдущего примера окно. Для того чтобы правильно задать функцию связи выхода с входом, заполняем таблицу Status Encoder следующим образом.

Перейдя на вкладку «Simulation» (рис. 5), мы опять можем проверить правильность своих действий, меняя частоту оборотов и отслеживая состояние зуммера.


Рис. 5

Шаг 4. Нажимаем кнопку «Built». В результате получаем полный список комплектующих, техническое описание, схему и файл прошивки.

Итак, мы сделали еще одно электронное устройство, затратив на это минимум времени и имея минимум знаний. Остается лишь рассмотреть один немаловажный вопрос — как загрузить прошивочный файл (*.hex) в микросхему PSoC Cypress?

Есть 2 варианта:

Вариант 1. Приобрести один из отладочных наборов, предлагаемых компанией Cypress. Подробный обзор таких наборов приведен в первой части публикации. Замечу лишь, что самое удобное — начать с набора CY3210miniprog стоимостью 860 руб. В составе набора кроме программатора есть 2 микросхемы PSoC Cypress, и последние не придется приобретать отдельно. Но если вы твердо решили обойтись минимумом средств, можете попробовать другой вариант.

Вариант 2. Программатор для PSoC можно сделать самому. К счастью, Cypress держит открытым протокол программирования и схему программатора (рис. 6). Все необходимое всегда можно найти в Интернет по адресу http://www.macro-peterburg.ru/cypress/PSoC/PSoC_programmator.html.


Рис. 6

В заключение хочется отметить, что графический генератор приложений PSoC Express — это наиболее простой способ начать работу с программируемыми системами на кристалле, даже если до этого момента вы никогда не работали с микроконтроллерами вообще. PSoC Express очень хорошо подходит для постановки лабораторных работ в вузах и помощи студентам в освоении современной элементной базы. Для опытных пользователей существует более мощный и одновременно более сложный пакет PSoC Designer, позволяющий перейти на более детальный уровень проектирования, но требующий значительных знаний по программированию.

Design by GAW.RU

Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

  • Главная
  • Рубрикация
  • Указатель А — Я
  • Порталы
  • Произвольно
  • Журнал
  • Редакторам
    • Ссылки сюда
    • Связанные правки
    • Загрузить файл
    • Спецстраницы
    • Версия для печати
    • Постоянная ссылка
    • Сведения о странице
    • Цитировать страницу
    • Читать
    • Просмотр
    • История

PSoC (Programmable System-on-Chip)

PSoC (англ. Programmable System-on-Chip — программируемая система-на-чипе ) — представляет собой семейство микроконтроллеров интегральных схем от компании Cypress Semiconductor. Эти чипы включают в себя ядро процессора и массивы смешанных сигналов, конфигурируемые интегрированными аналоговыми и цифровыми периферийными устройствами.

Содержание

  • 1 История
  • 2 Описание
    • 2.1 Настраиваемые аналоговые и цифровые блоки
    • 2.2 Программируемая маршрутизация и межсоединения
  • 3 Серии
    • 3.1 Bluetooth с низким энергопотреблением (BLE)
  • 4 Средства разработки
    • 4.1 PSoC Designer
    • 4.2 PSoC Creator
  • 5 Внешние ссылки
    • 5.1 Официальная документация PSoC
    • 5.2 Другие

История

В 2002 году Cypress начала коммерческие поставки PSoC 1. [1] В целях содействия PSoC, Cypress стала спонсором «PSoC Design Challenge» в журнале Circuit Cellar в 2002 и 2004. [2]

В апреле 2013 года , Cypress выпустила четвертое поколение PSoC 4. PSoC 4 имеет 32-битный ARM Cortex-M0 CPU, с программируемыми аналоговыми блоками (операционные усилители и компараторы), программируемыми цифровыми блоками (PLD на основе UDBs), программируемой маршрутизацией и гибкий GPIO (путь любой функции к любому выводу), последовательный блок связи (для SPI, UART, I²C), счетчик, ШИМ блок, таймер и многое другое. [3]

Также PSoC, используя ёмкостный датчик, управляет сенсорным колесом прокрутки на Apple iPod.

В 2014 году Cypress расширила семейство PSoC 4 путем интеграции Bluetooth Low Energy радио вместе с PSoC 4-M0 на основе Cortex SoC в едином монолитном кристалле.

Описание

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

  • цифровые блоки основного типа для построения таймеров, счетчиков, ШИМ (Basic);
  • цифровые блоки для построения коммуникационных периферийных узлов UART, SPI, IRDA (Comm);
  • аналоговые блоки для построения усилителей, компараторов и других линейных устройств (CT);
  • аналоговые блоки на переключаемых конденсаторах для построения фильтров, ЦАП, АЦП (SCA, SCB).

PSoC имеет три отдельных пространства памяти: выгружаемого SRAM для данных, флэш — памяти для инструкций и фиксированных данных, а также регистры ввода / вывода для управления и доступа к конфигурируемым логическим блокам и функциям. Устройство создается с использованием SONOS технологии.

PSoC напоминает ASIC : блокам может быть назначен широкий спектр функций связанных между собой на чипе. В отличие от ASIC, нет никакого специального производственного процесса, необходимо просто создать пользовательскую конфигурацию — запустить код , который создается с помощью PSoC Designer Cypress (для PSoC 1) или PSoC Creator (для PSoC 3/4/5) IDE .

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

PSoC наиболее близко напоминает микроконтроллер в сочетании с PLD и программируемым аналогом. Код выполняется для взаимодействия с заданными пользователем периферийными функциями ( так называемые «компоненты»), используя автоматически сгенерированные API — интерфейсов и обработки прерываний. PSoC Designer или PSoC Creator генерируют код конфигурации запуска.

Настраиваемые аналоговые и цифровые блоки

Используя настраиваемые аналоговые и цифровые блоки, разработчики могут создавать и изменять встраиваемые приложения смешанных сигналов. Цифровые блоки являются автоматами, настроеные с помощью блоков регистров. Есть два типа цифровых блоков, цифровые строительные блоки (DBBxx) и цифровые коммуникационные блоки (DCBxx). Только коммуникационные блоки могут содержать последовательные пользовательские модули ввода / вывода, такие как SPI, UART и т.д.

Каждый цифровой блок считается 8-битным ресурсом, который разработчики могут настроить с использованием предварительно встроенных цифровых функций или пользовательских модулей (UM), или путем объединения блоков, превратить их в 16-, 24- или 32-разрядные ресурсы.

Есть два типа аналоговых блоков. Блоки непрерывного времени (CTB) состоят из схемы ОУ и обозначены как ACBxx где хх является 00-03. Другой тип — блоки переключающей головки (SCB), которые позволяют протекать сложным аналоговым сигналам и обозначаются ASCxy где х строка и у столбец аналогового блока. Разработчики могут модифицировать и персонализировать каждый модуль в любую конструкцию.

Читайте также  Как найти проводку в стене?

Программируемая маршрутизация и межсоединения

Гибкая маршрутизация PSoC массивов смешанных сигналов позволяет разработчикам направлять сигналы в и из контактов ввода / вывода более свободно, чем со многими конкурирующими микроконтроллерами. Глобальные шины позволяют мультиплексирование сигнала и выполнение логических операций. Cypress предполагает, что это позволяет разработчикам менять конструкцию и делать улучшения легче и быстрее и с меньшим количеством модернизаций печатных плат, чем подход цифрового логического затвора или конкурирующих микроконтроллеров с фиксированным количеством функциональных контактов.

Серии

Существуют четыре различных семейств устройств, каждый из которых основан вокруг другого ядра микроконтроллера:

  • PSoC 1 — CY8C2xxxx серия — M8C ядро.
  • PSoC 3 — CY8C3xxxx серия — 8051 ядро.
  • PSoC 4 — CY8C4xxxx серия — ARM Cortex-M0 . Ядро [4]
  • PSoC 5 / 5LP — CY8C5xxxx серия — ARM Cortex-M3 сердечник.

Bluetooth с низким энергопотреблением (BLE)

Начиная с 2014 года, Cypress начал предлагать PSOC 4 BLE устройства со встроенным Bluetooth с низким энергопотреблением (Bluetooth Smart). Это может быть использовано для создания связанных продуктов, улучшая использование аналоговых и цифровых блоков. [5] Пользователи могут добавлять и настраивать BLE модуль непосредственно в PSoC разработчике. Cypress также обеспечивает полный BLE стек по лицензии MindTree как с периферической так и с центральной функциональностью. [6]

Средства разработки

PSoC Designer

Это первое поколение программного обеспечения IDE для разработки, отладки и программирования PSOC 1 устройства. Оно представило уникальные особенности, включая библиотеку предварительно охарактеризованных аналоговых и цифровых периферийных устройств в среде проектирования drag-and-drop, которые затем могут быть настроены на конкретные потребности разработки за счет использования динамически создаваемых библиотек API кода.

PSoC Creator

PSoC Creator является вторым поколением программного обеспечения IDE для разработки, отладки и программирования PSoC 3/4/5 устройств. IDE разработки с простым в использовании графическим редактором дизайна помогают сформировать мощную аппаратно / программную среду совместного проектирования. PSoC Creator состоит из двух основных строительных блоков. Программа, которая позволяет пользователю выбрать, настроить и подключить существующие схемы на чипе и компоненты, которые являются эквивалентом периферийных устройств на микроконтроллерах. То, что делает PSoC интригующим является возможность создавать собственные приложения конкретных периферийных устройств на аппаратном уровне. Cypress выпускает пакеты компонент несколько раз в год. Пользователи PSoC могут получить новые периферийные устройства для их существующего оборудования без расходов или необходимости покупать новое оборудование. PSoC Creator также предоставляет большую свободу в назначении периферийных устройств ввода / вывода.

UDB. Что же это такое?

В комментариях к моей статье про управление RGB светодиодами средствами блока UDB микроконтроллеров PSoC фирмы Cypress было высказано мнение, что неплохо бы в начале статьи кратко рассказать, что такое вообще UDB. Как я уже отметил в статье, про UDB кратко не написать, но можно просто перевести фирменную документацию на него, чтобы познакомить отечественного читателя со столь мощным средством для реализации микропрограммных функций.

Но прежде, давайте рассмотрим, что вообще такое PSoC. PSoC — это набор семейств микросхем фирмы Cypress для реализации систем на кристалле. Разные семейства имеют разное процессорное ядро (для PSoC 3 это MCS-51, для PSoC 4 — Cortex M0, для PSoC 5LP — Cortex M3, а для PSoC 6 — сразу два: Cortex M0+ и Cortex M4) и набор программируемой логики. Причём логика эта не чисто цифровая, есть там и аналоговые вещи. Кроме набора различных АЦП, там присутствуют также аналоговые коммутаторы. Можно даже программно связывать ножки через аналоговые цепи, правда, сопротивление у цепи будет измеряться килоомами. Есть внутри PSoC и операционные усилители, которые можно программно коммутировать, а значит — строить на них разные аналоговые блоки.

Кстати, PSoC’и можно питать любым напряжением от 2.7 до 5.5 вольт. То есть не нужно думать о каких-то стабилизаторах ни при батарейном питании, ни при питании от USB.

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

И вот здесь часто возникает некоторое недопонимание. Многие разработчики привыкли к тому, что Программируемые Логические Интегральные Схемы (ПЛИС) бывают двух видов: CPLD и FPGA. Поэтому многие, кто слышал про PSoC, считают, что там кроется некая CPLD-шка, которую можно программировать на языке Veriolg. По факту — и да, и нет. Некоторое количество PLD (без «C», просто PLD) там действительно есть, и на Verilog их программировать действительно можно. Но реально, эти PLD входят в состав блоков UDB. И именно UDB является основным элементом программируемой логики, реализованной в PSoC. Этот блок чрезвычайно самобытен и предоставляет просто широчайшие возможности для разработчика. Рассмотрим рисунок из фирменной документации, поясняющий суть использования блоков UDB.

Так как я изучал всё на примере семейства PSoC 5LP, переводить буду документацию именно на него. Но перед тем, как начать, скажу пару слов про цену этих контроллеров. Если зайти на Ali Express и посмотреть на макетные платы для них, возникает грустное ощущение. Прямо скажем, по сравнению с STM32-DISCOVERY они ещё ничего, а вот на фоне макеток STM32F103C8T6 дороговаты. В первую очередь, это связано с тем, что на фирменных макетках всегда стоит не один, а два таких контроллера. Функции JTAG реализуются на PSoC 5LP, даже если целевой контроллер и PSoC 4 (у последнего обычно нет порта USB).

Но и поделив цену на два, всё равно получаем, что она выше, чем у сходного по процессорному ядру STM32F103. Тем не менее, если мы добавим к тому самому STM32 снаружи ещё и даже самую простенькую CPLD, то суммарная цена уже выйдет в пользу PSoC. А ещё добавим потерянные ножки на связь этих двух корпусов (у PSoC же все связи внутри). А ещё цену квадратных сантиметров платы. Вот и получается, что, если нужно работать только с процессорным ядром, в PSoC действительно нет необходимости. Если же нужно какой-то функционал вынести на микропрограммный или аппаратный уровень — тут нужен именно PSoC. На нём система выйдет дешевле и проще.

На самом деле, у меня есть маниакальная идея попробовать сделать аппаратную поддержку ядра нашей ОСРВ МАКС. Для этого я изучил методику разработки Bare Metal приложений под Altera V SoC (увы, выяснилось, что особенность архитектуры там такая, что ОС можно замедлить, но нельзя ускорить — одиночные запросы к аппаратуре там идут с бешеной латентностью). Для этого же я начал осваивать и PSoC. До разгона ядра ещё не дошёл (есть только общие мысли), но сама идея программирования UDB мне жутко понравилась. Само собой, я теперь заинтересован в том, чтобы донести эту идею до максимального числа отечественных программистов. Поэтому приступаем к переводу соответствующей части фирменной документации Cypress, посвященной UDB. Нумерацию глав и рисунков сохраняем в соответствии с оригинальным документом.

UDB. Что же это такое? Часть 1

21. Универсальные цифровые блоки

В этой главе мы рассмотрим, как универсальные цифровые блоки (англ. Universal Digital Blocks, UDB) позволяют разрабатывать программируемые цифровые периферийные функции. Архитектура UDB обеспечивает баланс между гранулярностью конфигурации и эффективной реализацией. UDB состоят из комбинации нескоммутированной логики, схожей с программируемой логической матрицей (ПЛМ, англ. PLD), структурированной логики (операционные автоматы, далее — Datapath) и гибкой схемы трассировки.

21.1 Особенности

21.2 Блок Схема

Рисунок 21-1 показывает UDB в виде конструкции, содержащей два базовых логических блока PLD, Datapath и функции управления, статуса, тактирования и сброса.


Рисунок 21-1. Блок схема UDB.

21.3 Как это работает

Основными компонентами UDB являются:

  • PLD (2). На входы этих блоков подаются данные из трассировочных ресурсов. В них реализуется комбинационная логика и защелкивание данных, что позволяет реализовать конечные автоматы, управлять операциями блока Datapath, настраивать входные условия и управлять выходами.
  • Datapath. Этот блок содержит динамически программируемое АЛУ, четыре регистра, два буфера FIFO, компараторы и генерацию условий.
  • Управление и статус (Status and Control). Эти модули предоставляют механизм взаимодействия микропрограмм центрального процессора (ЦП, англ. CPU) и синхронизации с операциями UDB. Регистры управления воздействуют на внутренние элементы, а регистры статуса считывают состояние внешних элементов.
  • Управление тактированием и сбросом (Clock and Reset Control). Эти модули обеспечивают выбор и включение тактирования, а также выбор сброса внутри UDB.
  • Объединение сигналов в цепочку (Chaining Signals). PLD и Datapath имеют сигналы, которые позволяют связывать соседние блоки в цепочку для создания функций с более высокой разрядностью.
  • Трассировочный канал (Routing Channel). UDB соединены с трассировочным каналом через программируемые коммутационные матрицы для связи между блоками в рамках одного UDB и для связи с другими UDB в массиве.
  • Интерфейс системной шины (Sysytem Bus Interface). Все регистры и ОЗУ в каждом UDB проецируются на системное адресное пространство, и доступ к ним можно получить как при помощи центрального процессора, так и через прямой доступ к памяти (англ. Direct Memory Access, DMA) в виде 8-битных и 16-битных данных.

21.3.1. PLD

В каждом UDB есть две PLD «12С4». Блоки PLD, показанные на рисунке 21-1, можно использовать для реализации конечных автоматов, обработки данных ввода/вывода и для создания табличной логики (англ. Lookup Table, LUT). Кроме того, PLD можно настроить для выполнения арифметических функций, установки последовательности Datapath и генерации статуса. Общая логика может быть синтезирована и спроецирована на блоки PLD. Этот раздел содержит обзор архитектуры PLD.

PLD имеет 12 входов, которые передают информацию на 8 конъюнктивных термов в массиве AND. В каждом конъюнктивном терме можно выбрать прямой (true, Т) или инверсный (complement, С) вход. Выход конъюнктивных термов идет на вход массива OR. Буква ‘C’ в 12С4 показывает, что термы OR постоянны для всех входов, а каждый вход OR может получить программный доступ к любому конъюнктивному терму. Такая структура обеспечивает максимальную гибкость и гарантирует, что все входы и выходы могут быть перемещены.


Рисунок 21-2. Структура PLD 12С4.

21.3.1.1 Макроячейки PLD

Архитектура макроячеек показана на рисунке 21-3. Выход управляет трассировочным массивом и может быть защелкнут или комбинационным. Для защелкивания используется D-триггер с прямым или инверсным входом либо T-триггер с высоким или низким входным уровнем. Выходной триггер может быть установлен или сброшен при инициализации или асинхронно при нормальной работе, по внешнему сигналу из трассировочного канала.


Рисунок 21-3. Архитектура макроячейки.

Регистр макроячейки PLD «только для чтения»
Помимо управления трассировочным массивом, выходы макроячеек обеих PLD спроецированы на адресное пространство в виде 8-битного регистра «только для чтения», доступ к которому можно получить при помощи CPU или DMA.


Рисунок 21-4. Регистр макроячейки PLD «только для чтения».

21.3.1.2 Цепь переносов PLD

PLD связаны вместе в адресации UDB. Как показано на рисунке 21-5, вход цепи переносов «selin» пробрасывается из предыдущего UDB в цепи, через каждую макроячейку в обеих PLD, после этого направляется на следующий UDB в виде выхода цепи переносов «selout». Для поддержки эффективного размещения арифметических функций, генерируются специальные конъюнктивные термы (PT), которые используются в макроячейках совместно с цепочкой переносов.


Рисунок 21-5. Цепь переносов PLD и входы специальных конъюнктивных термов.

21.3.1.3 Конфигурация PLD

Каждая PLD предстает перед CPU или DMA в виде ОЗУ с 16-битным доступом. Массив AND имеет 12×8×2 бит или 24 байта для программирования, а массив OR имеет 4×8 бит или 4 байта для программирования. Кроме того, каждая макроячейка имеет один байт конфигурации, итого, 32 байта конфигурации на каждую PLD. Так как каждый UDB имеет 2 PLD, всего конфигурация каждого UDB занимает 64 байта.

В следующий раз мы будем рассматривать Операционные автоматы (Datapaths).