Компоненты и технологии, № 2'2004 Компоненты
51-е ядро + 4 порта ввода-вывода + + программируемая логика +
+ USB + LCD = uPSD
Такому решению позавидовал бы сам Клайв Синклер — создатель легендарного ZX Spectrum. В 80-е годы для создания шедевра требовалась обвязка логическими элементами, дополнительная микросхема порта ввода-вывода, микросхемы обеспечения внешних интерфейсов (RS-232, например), постоянная и оперативная память и многое другое, что, несомненно, выливалось в размеры платы и энергопотребление. В наше время выбор очевиден: uPSD от STMicroelectronics.
Игорь Лепихин
Зтот микроконтроллер сочетает в себе не только все вышеописанные составляющие, но и многое другое, например, контроллер символьного ЖКИ или контроллер USB-шины. Во что же перерос ZX Spectrum в наши дни? Ответ прост — в кассовые аппараты. Во-первых, там не требуется высокой производительности, а, следовательно, распространенное 51-е ядро идеально справится с несложной кассовой арифметикой. Во-вторых, для управления принтером и прочими внешними устройствами нужен порт ввода-вывода, а значит, дополнительные порты uPSD будут незаменимы. В-третьих, о микроконтроллерах без встроенной постоянной и оперативной памяти уже давно как-то несолидно разговаривать. В-четвертых, если касса работает в составе большого PoS-терминала, то USB-интерфейс для обмена данными с ним будет также весьма полезен. Наконец, встро-
■ НННН
8032
CODE:
W/UART
WDOGTMR
128К or 256KByte MAIN FLASH
енный ЖКИ-контроллер просто необходим, так как информацию все равно придется выводить на экран. И, так, что же представляет собой uPSD.
1. Серии uPSD
uPSD — это целое семейство так называемых программируемых системных устройств, выпускаемых компанией STMicroelectronics. Все эти устройства объединяет то, что в их состав входят блоки Flаsh-па-мяти, «внешнее» ОЗУ и блок ПЛИС. Отличаются микросхемы наличием и количеством тех или иных интерфейсов, объемом памяти, наличием или отсутствием USB-контроллера и ЖКИ-контроллера, а также оптимизацией конвейера команд. Серия uPSD 32хх — это именно та серия, которая сейчас находится в массовом производстве. В основе серии лежит стандартное ядро 8032 со временем выполнения команды 12 тактов. uPSD32хх содержат два банка Flash-памяти, микросхемы uPSD325х и uPSD323х также содержат контроллеры USB и ЖКИ. uPSD33хх отличается от 32-й серии лишь двумя особенностями: наличием конвейера команд и встроенным JTAG-отладчиком. Ядро 8032 с конвейером команд называется Turbo 8032, а сам микроконтроллер получил название TurboPSD. JTAG делает возможным применение дешевого эмулятора, что немаловажно для небольших проектов. Сейчас в разработке находится новая серия устройств uPSD, точнее — серия устройств TurboPSD — uPSD34хх. У нее настолько оптимизирован конвейер команд, что операции в этом 51-м ядре выполняются максимум за 4 такта. Это при том, что программно и аппаратно все uPSD являются совместимыми (включая и совместимость pin-to-pin). Таким образом, начав разработку на uPSD3234, можно в дальнейшем без труда перейти на более совершенный uPSD3434 путем простой замены микроконтроллера на плате.
Компоненты и технологии, № 2'2004
2. Структура uPSD
Микроконтроллеры uPSD состоят из двух частей (рис. 1).
Первая часть — это микроконтроллерная часть. Состоит она из микропроцессорного ядра 8032, которое на 100% совместимо с системой команд 80С51. А дальше стандартный 51-й контроллер: оперативная память размером 256 байт для формирования стека и системных регистров. Микроконтроллерная часть uPSD так же, как и любой другой 51-й контроллер, имеет 5 портов ввода-вывода, именуемых P0.x — P4^, а также другие стандартные устройства. Адресация и обращение к портам и стандартным устройствам 51-го семейства остается таким же. То есть программа, написанная для стандартного контроллера 80С51, может быть полностью перенесена на uPSD без каких-либо изменений. Порты ввода-вывода «0» и «2» помимо портов ввода-вывода общего назначения служат также линиями мультиплексной шины адреса/данных, через которую можно подключить внешнюю постоянную и оперативную память размером до 4 кбайт. Для управления этой памятью также имеются внешний сигнал PSEN, RD, WR, ALE, RESET. Порт «4» совмещает свои выводы с 5-канальным PWM-таймером. Основной достопримечательностью здесь является пятый таймер, для которого можно программировать как период, так и ширину импульса, что бывает просто незаменимо для систем управления шаговыми двигателями.
Периферийные интерфейсы также представлены в микроконтроллерной части uPSD. Естественно, есть многоканальный UART, благодаря которому можно соединяться со всем, чем угодно (потому что любое устройство UART поддерживает). Основной достопримечательностью здесь является синхронный двухпроводной I2C. Интерфейс приобретает все большую популярность, отличается высокой скоростью передачи данных, и несмотря на это, 8-разрядные контроллеры почему-то страдают отсутствием I2C, из-за чего приходится организовывать программный интерфейс, что неудобно, особенно принимая во внимание 8-разрядную производительность. USB-хост тоже можно отнести к внешним интерфейсам, хотя ставить его в один ряд с UART как-то не солидно. И все же, 8-разрядный uPSD имеет встроенный USB-хост. Вот некоторые его параметры:
• Полная совместимость со спецификацией USB 1.1.
• Наличие встроенного SIE (Serial Interface Engine), FIFO (First In First Out) и трансивера.
• Поддержка низкоскоростного протокола (до 1,5 Мбит/с).
• Поддерживает контрольные стоповые точки и контрольные точки прерываний.
• Частота USB-хоста должна быть 6 МГц (при этом частота процессора должна быть 12, 24 или 36 МГц).
Несомненно, наличие USB-хоста делает
возможным проектирование устройств, управляемых ПК и прочими решениями hi-tech без использования внешних USB-трансиверов. Например, кассовый аппарат, имеющий
Port3,UART, Intr, Timers, I2C
Port 1, Timers and 2nd UART and ADC
I Port З I I Port 1
8032 Core
I2C
2 UARTs
3 Timer/Counters
Interrupt I I 256 Byte SRAM |
MCU MODULE ,,
Port A PWM
4
Channel
ADC
PWM
5
Channels
8032 Internal Bus
Reset Logic LVD&WDT
A0-A15 RD, PSEN WR, ALE
PSD MODULE
Page Register Decode PLD
512Kb Main Flash
128Kb
Secondary
Flash
16Kb
SRAM
PSD Internal Bus
D0-D7
Bus
Interface
Reset
Port 0,2 Ext. Bus
JTAG ISP
CPLD- 16 MACROCELLS
PortC, JTAG, PLD I/O and GPIO
Port A &B, PLD I/O and GPIO
VCC, GND
XTAL
Port D GPIO
Dedicated
Pins
Рис. 1
USB-хост, может стать частью любого PoS-терминала, соединенного через Ethernet-хост с глобальной сетью. Согласитесь, очень удобно для налогового инспектора в Москве проверить содержимое Flash-памяти кассового аппарата в Магадане.
Микроконтроллерная часть содержит очень быстрый для своей 8-разрядной структуры аналого-цифровой преобразователь. Здесь в АЦП, как и в АЦП многих контроллеров, используется мультиплексный последовательный принцип преобразования. Четыре канала АЦП по очереди мультиплексируются к одной схеме сравнения. Встроенный ЦАП шаг за шагом генерирует 8-разрядное число от 0 до 255, с которым сравнивается принятое преобразованное аналоговое значение. Тактовый сигнал АЦП равен 6 МГц, при этом время преобразования с одного канала всего 10,69 мкс. Согласитесь, очень неплохо для 8-разрядного контроллера 51-й серии.
uPSD содержит набор таймеров, включая неоднозначно-оцениваемый «сторожевой» таймер. На самом деле, несмотря на в основном негативную оценку «сторожевой собаки» (watchdog), этот таймер имеет принципиальное значение при поиске неполадок и ошибок в программном обеспечении. Сторожа можно отключить, записав в регистр WDKEY значение 55H, но если этого не сделать, то через определенное время этот таймер сгенерирует сигнал RESET, после чего будет выполнена процедура обработки прерывания ON_RESET, расположенная по нулевому адресу в программной памяти. Таким образом, если все идет нормально, то программа должна перезаписывать этот таймер, и никто ничего не почувствует. Если же что-то пошло не так, «зависло» какое-нибудь устройство, или просто в программе появилась
фатальная ситуация в виде бесконечного цикла или чего-нибудь подобного, то «сторож» сгенерирует RESET, и все начнется заново. Можно также организовать отлов ошибки с помощью чтения того или иного регистра. Windows, наверное, была бы самой надежной и безотказной операционной системой, если бы фирма Microsoft использовала такой принцип отлова ошибок.
Система прерываний организована точно так же, как и в любом другом микроконтроллере. Каждое внутреннее устройство имеет свое прерывание (UART, ADC, I2C, Timers), плюс два внешних источника (INT0 и INT1). Как обычно, прерывания имеют приоритеты. Самый высший, нулевой приоритет имеет прерывание INT0, а самый низший — прерывание второго таймера. Особняком стоит прерывание RESET. В оригинальном описании микроконтроллера RESET вообще не декларируется как прерывание, хотя на самом деле это не так. Прерывание ON_RESET происходит в одном из двух случаев: либо это низкий уровень на входе сигнала /RESET микроконтроллера, либо действие «сторожевого таймера». При этом выполнение программы прерывается, и она начинает заново выполняться с нулевого адреса. Сигнал /RESET может также генерироваться USB-модулем, что также относится к внутреннему сбросу микроконтроллера.
Немаловажной деталью является наличие в uPSD супервизора питания, который отслеживает уровень напряжения питания и переключает микроконтроллер на батарейку. Это очень важная деталь, так как внешние супервизоры питания используются довольно часто, чтобы предотвратить потерю данных в памяти при скачках или пропадании питания. Здесь же никакой дополнительной мик-
е
Компоненты и технологии, № 2'2004
росхемы не требуется. Батарейка подключается напрямую к микроконтроллеру, который для этого имеет специальные выводы.
Подробное описание микроконтроллер-ной части можно посмотреть на сайте STMicroelectronics. Но uSPD не был бы столь популярным, если бы не другая его часть, которая кардинально отличает его от других многочисленных клонов 51-го ядра.
3. Программируемая системная часть микроконтроллера uPSD
Повторюсь, что микроконтроллер uPSD состоит из двух частей: микроконтроллерной части и программируемой системной части (рис. 1). Микроконтроллерная часть — это обвешанный периферией 51-й контроллер — и не более того. Вторая же часть представляется более интересной. Структура программируемой системной части представлена на рис. 2. Но сначала вернемся к рис. 1 и ответим на вопрос, что же такое программируемая системная часть uPSD? Внешним интерфейсом микроконтроллерной части, помимо портов и последовательных каналов, является также система внутренних шин, а именно:
• 8-разрядная двунаправленная шина данных;
• 16-разрядная однонаправленная шина адреса;
• сигнал /RESET для формирования сброса модуля при сбросе всего микроконтроллера;
• сигнал PSEN для выборки Flash-памяти (имеет также пиновый интерфейс);
• сигнал ALE для выборки PSD-модуля в целом (имеет также пиновый интерфейс);
• сигналы RD и WR для обращения к оперативной памяти (имеет также пиновый интерфейс).
Таким образом, PSD-модуль представляет собой не что иное, как внешний модуль микроконтроллера 51-го семейства. Действительно, это так: даже обращения к регистрам и оперативной памяти PSD-модуля происходит «внешними» командами, такими как MOVX. Теперь посмотрим на рис. 2.
Давайте разберем подробно, как работает этот модуль. Кстати, для разработки uPSD существует специальный пакет под названием PSDSoft Express. Он распространяется совершенно бесплатно, и сейчас доступна для скачивания версия 8.0.
Итак, в PSD-модуле существует два банка Flash-памяти и один банк оперативной статической памяти, объем которых зависит от конкретного изделия uPSD-семейства. В соответствии с фирменным описанием, один банк Flash-памяти используется для хранения программного кода, а другой — для хранения долгосрочных данных (штрихкодов, например — менять их приходится не так часто, но все же приходится). Оперативная память, понятно, должна использоваться для хранения временных данных, стека, специальных регистров и т. д. Несмотря на «очевидность» своего предназначения, uPSD позволяет хранить в оперативной памяти и исполняемый код. Только надо следить, чтобы код не наложился на стек. Эти три банка памяти надо как-то переклю-
ADDRESS/DATA/CONTROL BUS
WR.., RD..., PSN..., ALE, RESET..., А0Л15^
BUS
Interfate
GLOBAL CONFIG. & SECUimY
PLD
INPUT
CLKIN -(PD1)
PAGE
REGISTER
EMBEDDED
ALGORITHM
FLASH DECODE PLD (DPLD)
SECTOR
SELECTS
1 OR 2 MBIT PRIMARY FLASH MEMORY
Ґ
256 KBIT SECONDARY NON-VOLATILE MEMORY (BOOT OR DATA)
SRAM SELECT
PERIP I/O MODE SELECTS
64 КВГТ BATTERY BACKUP SRAM
CSIOP
RUNTIME CONTROL AND I/O REGISTERS
FLASH ISP CPLD 2 EXT CS TO PORT D
J 16 OUTPUT MACROCELLS
PORT А, В & С I
20 INPUT MACROCELLS
MACROCELL FEEDBACK OR PORT INPUT
PLD, CONFIGURATION & FLASH MEMORY LOADER
JTAG
SERIAL
CHANNEL
POWER
MANGMT
UNIT
|PC2)
PORT
С
PROG.
PORT
Рис. 2
чать между собой, и при этом они не должны пересекаться в адресном пространстве. За все это отвечают декодирующая ПЛИС и страничный регистр. На стадии проектирования необходимо задать предназначение банков памяти. Для каждого банка это задается отдельно, это может быть:
• Program Space only (для хранения исполняемого кода) — в этом случае данный банк Flash-памяти будет откликаться на сигнал PSEN и отвечать многозначительным молчанием на все попытки чтения и записи (сигналы RD и WR).
• Data Space only (для хранения данных) — это ситуация, обратная предыдущей. На PSEN данный банк Flash-памяти будет молчать, а на RD и WR — откликаться. Естественно, сигнал WR при простой команде записи никакой записи во Flash-память не вызовет.
• Both Data and Space (для хранения и данных и программы) — здесь банк Flash-памяти будет реагировать на все. Но здесь необходимо «правильно» расставить адреса, чтобы как-то предотвратить пересечение области данных и программ.
Банки Flash-памяти имеют названия «первичная» (большего объема) и «вторичная» (меньшего объема). Каждая из них поделена на секторы размером 32 кбайт (первичная) и 8 кбайт (вторичная). Для каждого блока памяти необходимо задать свое адресное пространство. uPSD имеет внутреннюю 16-разрядную шину адреса, а следовательно, без «ухищрений» может адресовать всего 64 кбайт памяти. Но у uPSD памяти в несколько раз больше, как быть в такой ситуации? Для адресации памяти выше 64 кбайт PSD-модуль имеет так называемый 8-разрядный страничный регистр, который в общем случае может использоваться для сегментирования Flash-памяти либо как обычный «внешний» регистр данных. Наиболее наглядный способ сегментации памяти приведем прямо здесь по пунктам:
• Выделяем биты 0, 1 и 2 страничного регистра под сегментацию адреса. Таким обра-
зом, получаем расширение адресной шины на 3 разряда, то есть имеем возможность адресовать 512 кбайт памяти.
• Первичная память будет занимать нижние 32 кбайт адресного пространства при участии всех восьми страниц.
• Вторичная память будет занимать верхние 32 кбайт адресного пространства.
Что же в итоге мы получили? К любому сектору первичной Flash-памяти обращение идет по адресам от 0H до 7FFFH, а номер сектора определяется значением первых трех битов страничного регистра. Таким образом, чтобы обратиться к третьему сектору по адресу 5H, надо сначала записать xxxxx101b в страничный регистр, а затем обращаться к адресу 5H первичной Flash-памяти. Если банки Flash-памяти были разделены по назначению (код отдельно, данные отдельно), то под оперативную память и память специальных регистров мы получаем адресное пространство в 32 кбайт, так как RAM и программная Flash реагируют на разные сигналы.
Такой изящный способ адресации возможен благодаря специальной декодирующей программируемой логике. Она служит для формирования дешифраторов адресов и формируется один раз при создании нового проекта. Декодирующая программируемая логика сделана по той же технологии, что и Flash-память, с тем лишь отличием, что количество циклов перезаписи — 1000. Этого вполне достаточно, чтобы проектировать систему, а когда все готово, то прошиваем — и дело с концом.
Помимо гибкого механизма распределения памяти при помощи декодирующей программируемой логики, PSD-блок добавляет еще 4 порта ввода-вывода общего назначения. Если порты микроконтроллерной части uPSD в большинстве своем делят свое прямое назначение с каким-нибудь дополнительным устройством, то порты PSD-блока суть настоящие порты ввода-вывода. Каждая линия каждого порта может быть сконфигурирована по-своему. Если ничего не менять, то эта линия так и останется GP I/O — портом вво-
Компоненты и технологии, № 2'2004
да-вывода общего назначения. Если же посмотреть на этот порт с точки зрения всех его возможностей, то становится понятно, что 74-я обвеска становится просто ненужной. Во-первых, выход порта можно «защелкнуть» триггерами всех «цветов и оттенков». При этом управляющие сигналы триггеров также конфигурируются под любую задачу. Наконец, для каждого сигнала порта, управляющего сигнала триггера порта можно задать логическое уравнение, в соответствии с которым эта линия порта работать и будет.
Вообще, в uPSD содержатся два типа программируемой логики. Одну мы только что обсудили, а вторая — это обычная программируемая логика общего назначения, точно такая же, как производит Altera, Atmel или Xylinx. Точно так же, как и в микросхемах названных производителей, для программируемой логики, встроенной в uPSD, записывается логическое уравнение, связывающее входные сигналы с выходными, либо выходные сигналы с внутренними состояниями процессора, либо все вместе, в общем, здесь нет предела для фантазии. Сначала надо задать логический узел — просто дать ему имя, и все. Затем с этим узлом можно делать все, что угодно — связывать с другими узлами, связывать с выходом порта, связывать с входом, связывать с внутренним состоянием и т. д. Порт ввода-вывода, как уже упоминалось выше, может иметь «защелку», таким образом, такие же уравнения прописываются как для управляющих сигналов «защелки», так и для линий данных триггера. Для задания логических уравнений доступны не все сигналы. Сигналы портов 51-го контроллера, а также внешней мультиплексной шины адреса/данных для построения логических уравнений не годятся. Действительно, ведь эти сигналы не имеют отношения к PSD-блоку, поэтому и не транслируются в него. Зато для построения доступны: 16-разрядная шина адреса и 8-разрядная шина данных, управляющие сигналы WR, RD, PSEN, ALE, /RESET, выходные сигналы страничного регистра, а также виртуальные линии, определенные пользователем. Как уже упоминалось, страничный регистр может использоваться не только для переключения страниц памяти, но и в качестве обычного регистра данных. Даже при использовании страничной адресации регистр может быть занят не полностью. Допустим, есть только 8 страниц, тогда используются 3 младших (обязательно) разряда страничного регистра, а пять разрядов свободны и могут быть использованы в качестве логических сигналов. Страничный регистр очень удобно использовать для формирования логических цепочек, исходными для которых являются внутренние состояния контроллера. Таким образом, записываем в страничный регистр необходимое для преобразования логическое значение, а порты PSD-модуля выдадут аппаратно преобразованное логическое значение. Можно сделать еще более сложную конструкцию: менеджер устройств. Тогда эти пять бит страничного регистра будут использоваться как данные для большого количества устройств, а каждому устройству
можно присвоить некоторый свободный адрес. Тогда, при обращении по этому адресу, на адресную шину будет выставляться адрес устройства, а дальше с помощью программируемой логики общего назначения можно сделать дешифратор адреса, единственным выходом которого будет строб данных, находящихся в страничном регистре. В общем, здесь также все произвольно, и ограничивается только лишь количеством примитивов, а их 3000, и макроячеек — их 20 входных и 16 выходных. Следует отметить, что линии ввода-вывода PSD-модуля могут также быть использованы в качестве внешних сигналов ChipSelect, которые тоже можно конфигурировать по своему усмотрению.
4. Программные и аппаратные средства разработки для uPSD
Все прелести микроконтроллера uPSD были бы бесполезны, если бы не было программной и аппаратной поддержки разработчика со стороны производителя. Начнем по порядку. Основным инструментом для работы с uPSD является программа PSDSoft Express, которая в данной статье уже упоминалась. Эта программа, написанная специалистами из STMicroelectronics, и служит для формирования структуры кристалла uPSD, программирования Flash-памяти и просмотра ее содержимого. Программа имеет очень приятный внешне и удобный для работы интерфейс, в котором пользователь шаг за шагом проходит все стадии формирования своего проекта. Сначала определяется тип кристалла, с которым придется работать, и предназначение банков памяти. После этого, из шаблона на экран выводится список выводов uPSD, где есть возможность задать тип каждого. Естественно, что порты ввода-вывода стандартного 51-го ядра могут принимать лишь два значения: либо это порт ввода-вывода, либо вывод какого-нибудь внутреннего устройства. Затем необходимо разметить память, указав перед этим, как ис-
пользовать те или иные разряды страничного регистра. После всего создаются «виртуальные» логические линии, и связываются друг с другом, с входами-выходами микроконтроллера и с внутренними состояниями. И все! Структура uPSD готова. На рис. 3 показан внешний вид PSDSoft Express.
У автора статьи после небольшой «прикидки» схемы на бумаге, формирование структуры кристалла заняло не более 10-15 минут. При выпуске серии нет необходимости проделывать все заново. PSDSoft Express умеет работать с проектами. Эта программа служит также для внутрисхемного программирования структуры кристалла и Flash-памяти. При этом используется JTAG-интерфейс (а в uPSD серии Turbo JTAG используется также и для внутрисхемной отладки) и готовые hex-файлы объектного кода. Подгружается каждый сегмент каждого блока Flash-памяти отдельно, в свое адресное пространство. PSDSoft Express можно бесплатно скачать по адресу http://www.st.com/stonline/products/ families/memories/psm/softfrm1.htm после заполнения регистрационной формы.
Для генерации hex-файла, в принципе, подойдет любой ассемблер или компилятор, поддерживающий 51-е ядро. Но здесь следует учитывать, что hex-файлы бывают разные, а PSDSoft Express использует интеловский стандарт с явным указанием адресов. Перед тем как использовать ассемблер или компилятор, обязательно проверьте, может ли он сгенерировать подобный файл или нет. А мы в свою очередь, дадим некоторые рекомендации.
Конечно же, наиболее мощный и всеми рекомендуемый пакет — это Keil uVision2. Этот программный продукт действительно является «шедевром» в огромном океане оболочек для 51-х ядер. А в действительности отличие его лишь в том, что он «знает» огромное количество контроллеров 51-го семейства, в том числе и uPSD. Более того, Keil умеет конвертировать код одного 51-го контроллера в другой с учетом архитектуры обоих. Конечно же, это конвертирование требует потом сущест-
Рис. 3
е
Компоненты и технологии, № 2'2004
венной доработки руками, но хоть что-то. Kei! содержит компилятор C/C++, который очень хорошо оптимизирован, в частности под uPSD. Интерфейс типа Visual C++ включает работу с проектами, поиск и замену по образцу, — словом, все то, что есть во всех современных оболочках. Не спорю, для 8-разрядного контроллера писать на языке высокого уровня— это роскошь, но для uPSD, с Keil и огромными объемами Flash-памяти, почему бы и нет? За «мощь» надо платить, поэтому полная версия стоит немалых денег, а ограниченная не позволяет создавать объектный код больше 2 кбайт.
Аналогичным продуктом, причем в несколько раз более дешевым, является практически аналогичная по структуре оболочка от французской фирмы Raisonance. Здесь все то же самое, но пакет от Raisonance не умеет конвертировать коды и «знает» меньше 51-х систем, но, тем не менее, очень хорошо «знаком» с uPSD. Обе программные оболочки позволяют использовать симуляцию кода с заданием входных сигналов и т. д. Обе программы могут работать в качестве оболочки для внутрисхемного эмулятора, что также является немаловажным.
Третьим испытанным программным продуктом является еще один аналог Keil, но только он совершенно бесплатен, правда при некотором условии, о котором рассказано ниже.
Аппаратные средства отладки тоже в большом количестве присутствуют для микроконтроллера uPSD. Одним из основных отладочных средств можно считать оценочный набор DK3200, производителем которого является STMicroelectronics. В принципе, для несложных задач этой платы вполне достаточно. На DK3200 установлен контроллер uPSD3234-40U6 — 80-выводной корпус TQFP, самый насыщенный по начинке. Программа PSDSoft Express ориентирована на работу именно с этой платой, так как плата предоставляет разработчику возможности полного контроля и анализа поведения контроллера. На плате помимо контроллера смонтированы символьный двухстрочный ЖКИ-дисплей, USB-слот, а также множество периферийных разъемов, часть из которых при помощи перемычек может подключать различные устройства контроллера друг к другу (например 5-й PWM-таймер ко входу АЦП), а другая часть, наиболее многочисленная, позволяет подключать на вход и на вы-
ход внешние устройства, анализировать состояние выводов микроконтроллера с помощью осциллографа или спектроанализатора— все выводы микроконтроллера, в том числе питание и земля, выведены на внешние разъемы. Внешний вид платы разработчика для иРвБ показан на рис. 4.
БК3200 стоит недорого, и, если ее купить, то можно обойтись и без программаторов, и без отладчиков. Если вместо микроконтроллера поставить «кроватку», то эту плату можно использовать и для серийного программирования иРвБ (меняй себе контроллеры в «кроватке»), а также как внутрисхемный эмулятор (шлейф с разъемом надо к ножкам припаять и эмулировать на здоровье), правда, с одной оговоркой. В 32-й серии иРвБ интерфейса 1ТЛО нет, поэтому приходится задействовать одно из прерываний устройств, встроенных в контроллер. Существует такой «программный» отладчик, написанный специально для иРвБ, и поставляется он бесплатно вместе с оболочкой КеД uVision2. Этот «эмулятор» использует прерывание нулевого канала ИЛИТ, что, конечно же, снижает его «эмуляци-онную» ценность. Во-первых, нельзя работать при запрещенных прерываниях, а иногда бывает просто необходимо это сделать. Во-вторых, нельзя полноценно использовать «сторожевой» таймер. Надо либо его запрещать вообще, либо следить, чтобы он во время отладки ничего вдруг не сбросил — будет крайне неприятно. Наконец, в-третьих, теряется один из основных интерфейсов — Ив-232, многока-нальность которого также бывает очень необходима. От всех этих недостатков спасают полноценные внутрисхемные эмуляторы.
Опять же, если использовать иРвБ как обычный 51-й контроллер, то подойдет любой эмулятор для этого семейства. Один из настоящих
внутрисхемников для uPSD, который активно продвигается на рынке — это EMUL-51 от компании Nohau. Это действительно чудо техники, которое поддерживает любые опции эмуляции. Среди них: прямое подключение к DK3200, трассировка с аппаратными точками останова, отладка C/C++ и ассемблерного кода и т. д. Стоит это все, соответственно, тоже немало. Но если есть возможность, конечно же, советуем приобретать этот эмулятор.
Второй продукт, который мы бы рекомендовали — это эмулятор ME3200 от фирмы Manley Electronics. Вместе с этим эмулятором и поставляется та самая бесплатная оболочка, о которой шла речь в части, посвященной программным средствам разработки. Программный пакет от Manley под названием MedWin может все то, что может Keil (за исключением экзотики, типа конвертации кода и т. д.), но бесплатен. Эмулятор от Manley под названием ME3200 может практически все, что может EMUL-51, но стоит в 30 раз дешевле.
5. Перспективы uPSD на российском рынке
Как уже упоминалось в начале статьи, существуют разные серии uPSD, и объединяют эти серии одно ядро и периферия. 32-я серия (uPSD32xx) — это стандартное 8032-ядро с производительностью 12 тактов на команду. 33-я серия (uPSD33xx) — это усовершенствованное 8032-ядро (собран конвейер команд, за счет чего существенно сокращено время выполнения инструкции), и к тому же 33-я серия снабжена отладочным модулем JTAG, что позволяет применять дешевые внутрисхемные эмуляторы. Наконец, 34-я серия (uPSD34xx), находящаяся в стадии разработки, представляет собой усовершенствованную 33-ю серию. Конвейер команд там настолько оптимизирован, что команды выполняются за 1-2 такта! Наверное, никто никогда и не думал, что 51-е ядро сможет работать с RISC-производительностью.
Применять эти микроконтроллеры можно где угодно: от дешевых игровых приставок и тамагочи до сложных кассовых аппаратов, многофункциональных счетчиков и охранных систем реального времени. 32-й uPSD подойдет для красивых детских игрушек, говорящих кукол и «умных» машинок, умеющих самостоятельно объезжать дверные косяки в квартирах. 33-я серия сможет стать полноценным сердцем и мозгом сложных кассовых аппаратов, которые должны уметь одновременно пробивать чек на термопринтере, считывать штрих-код и передавать данные на большой PoS-терминал для более детальной обработки. Наконец, 34-я серия может смело претендовать на системы реального времени, такие, как системы слежения, видеонаблюдения и прочие. Только представьте: 8-разрядное ядро с производительностью «Пентиума»! Это не бред! Посчитайте сами: 40 МГц и 1,5 такта на команду (а именно столько у uPSD34xx). Разве только «Пентиум-166» сможет опередить своего давнего-давнего прародителя...