Проектирование схем электрических принципиальных с использованием микросхем памяти в программной среде Multisim 12.0

№ 10’2015
PDF версия
В Multisim реализовано большое количество функций для профессионального проектирования микроэлектронных устройств, ориентированных на самые современные средства моделирования. Одна из таких функций — имитация работы микросхем памяти. В статье рассматриваются общие аспекты моделирования схем микроэлектронных устройств с использованием микросхем памяти. Представлен пример проектирования схемы, имитирующей подключение микросхемы памяти к микроконтроллеру в среде Multisim.

Введение

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

Последняя версия Multisim, являющейся современной программой моделирования электронных цепей, представляет виртуальную лабораторию, включающую обширные библиотеки электронных компонентов. Они предоставляют возможность инженеру проверить, удовлетворяет ли спроектированное устройство требованиям технического задания, когда используются реальные компоненты с характеристиками, отличающимися от идеальных. В составе Multisim имеется библиотека микросхем памяти, которая представлена в виде двух подразделов: RAM (рис. 1а) и ROM (рис. 1б).

Библиотека микросхем памяти Multisim, подраздел

Рис. 1. Библиотека микросхем памяти Multisim, подраздел:
а) RAM;
б) ROM

 

Разработка электрических схем с использованием микросхем памяти в программной среде Multisim

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

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

Микросхемы памяти библиотеки компонентов Multisim

Микроэлектронная память широко применяется в современной электронной аппаратуре самого различного назначения. В Multisim в распоряжении разработчиков электронных устройств имеются следующие микросхемы памяти (таблица).

Таблица. Микросхемы памяти библиотеки компонентов Multisim

Подраздел библиотеки

Микросхемы

Функция

RAM

НМ1-65642-883, НМ1-65642В-883, НМ1-65642С-883, НМ4-65642-883, НМ4-65642В-883

8К×8 асинхронная статическая

НМ6116А120

2К×8

ROM

27С12812L/12P/15L/15P/17L/17P/20L/20P/25L/25P

16К×8 EPROM

27C25612L/12P/15L/15P/20L/20P

32К×8 EPROM

27С6412L/12P/15L/15P/17L/17P/20L/20P/25L/25P

16К×8 EPROM

27С64E200-883/E250-883/E350-883/Q200-883/Q250-883/Q350-883

65536-Bit UV Erasable PROM (стираемая и программируемая многократно память)

Микросхемы RAM (рис. 2) с байтовой организацией объемом 2К×8 и 8К×8 имеют 8 двунаправленных выводов данных (D0–D7), 11 или 13 адресных входов (А0–А10 или А0–А12). Вход WE (W) определяет характер обращения: если на нем установлена 1, то осуществляется чтение из выбранной ячейки, при WE = 0 в ячейку будет записана информация. Вход CS (E1, E2) активизирует микросхему памяти: когда на входе CS установлена 1, она выключена, при CS = 0 допускается любое обращение к памяти. Нулевой сигнал на входе OE (G) разрешает работу выходной шины данных микросхемы. В базе данных Multisim также представлены микросхемы EPROM (рис. 3): 32K×8, 8K×8, 16К×8. Такие микросхемы в рабочем режиме допускают только считывание информации. Выводы микросхем аналогичны микросхемам RAM, кроме вывода PGM, отвечающего за программирование.

Микросхемы RAM объемом

Рис. 2. Микросхемы RAM объемом:
а) 2К×8;
б) 8К×8

Микросхемы ЕРROM объемом

Рис. 3. Микросхемы ЕРROM объемом:
а) 32К×8;
б) 8К×8;
в) 16К×8

Добавление микросхемы памяти в проект Multisim

Рассмотрим процесс моделирования схем с применением микросхем памяти на примере микросхемы НМ6116 А120 — ОЗУ с организацией 2К×8. Для чего создадим при помощи команды основного меню «Файл/Новый/Создать схему» новый проект в Multisim и добавим в рабочее поле программы символ этой микросхемы.

Выбор компонентов из базы данных для последующего их размещения в рабочей области программы производится в окне «Выбор компонента». Данное окно можно открыть командой основного меню «Вставить/Компонент».

Для того чтобы добавить микросхему памяти в рабочее поле проекта, необходимо в левой верхней части окна «Выбор компонента» в поле «Раздел» выбрать из списка библиотеку MCU. Выбор библиотеки из списка производится щелчком левой кнопки мыши по строке с ее названием. Ниже поля «Раздел» находится поле «Семейство», в котором таким же способом задается семейство микросхем памяти выбранной библиотеки (в нашем случае это RAM). В поле «Компонент» отображаются все микросхемы выбранного семейства. Выбор микросхемы производится посредством выделения при помощи левой кнопки мыши строки с ее названием. После того как выбор компонента сделан, его условное графическое обозначение отобразится в поле предварительного просмотра «Символ (ANSI)». Для того чтобы разместить выбранную микросхему памяти на схеме, нужно в окне «Выбор компонента» нажать кнопку ОК. После чего данное окно будет закрыто, а символ компонента — прикреплен к курсору мыши, при помощи которого следует поместить символ в необходимое место на схеме (щелкнуть в нужном месте схемы левой кнопкой мыши).

Добавление микросхемы микроконтроллера в проект Multisim

Рассмотрим работу с микросхемой НМ6116 А120 на примере ее подключения к микроконтроллеру 8051. Микроконтрол-лер 8051 работает с внешней памятью данных емкостью до 64 кбайт, построенной на одной или нескольких микросхемах статической памяти. Внутренняя память программ микроконтроллера может быть расширена за счет подключения микросхем внешней памяти программ.

Микроконтроллер 8051 — это 8‑битный однокристальный микроконтроллер, который имеет следующие аппаратные характеристики:

  • 128 байт внутреннего ОЗУ;
  • четыре двунаправленных побитно настраиваемых 8‑разрядных порта ввода/вывода данных;
  • два 16‑разрядных таймера-счетчика;
  • встроенный тактовый генератор;
  • адресация 64К памяти программ и 64К памяти данных;
  • две линии запросов на прерывание от внешних устройств;
  • интерфейс для последовательного обмена данными с другими устройствами.

Выводы микроконтроллера х51 имеют следующее назначение (рис. 4):

  • Vss — общий;
  • Vcc — питание;
  • XTAL1, XTAL2 — входы для подключения кварцевого резонатора;
  • RЕSЕT — вход общего сброса микроконтроллера;
  • P—SE—N — разрешение внешней памяти программ, выдается только при обращении к внешнему ПЗУ;
  • ALE — строб адреса внешней памяти;
  • E—A — отключение внутренней програм-мной памяти;
  • Р0–Р3 — порты ввода/вывода данных, предназначенные для обмена информацией с различными внешними устройствами, а также для выполнения специализированных функций, таких как подключение внешней памяти программ и данных, программирование внутреннего ПЗУ. Линии портов Р0.0–Р3.7 двунаправленные, то есть могут работать как на ввод, так и на вывод информации независимо друг от друга. Каждый порт может адресоваться как побайтно, так и побитно, по конкретным физическим адресам.
Назначение выводов микроконтроллера 8051

Рис. 4. Назначение выводов микроконтроллера 8051

Для того чтобы добавить данную микросхему в рабочее поле проекта, необходимо в программе Multisim в меню «Вставить» выбрать пункт «Компонент», в результате чего откроется окно «Выбор компонента». В левой верхней части окна находится меню «Раздел», в котором из выпадающего списка выбирают нужную библиотеку компонентов базы данных Multisim. В нашем случае необходимо выбрать пункт MCU. В поле «Семейство» расположены все группы семейств микросхем выбранной библиотеки. Нам следует выбрать пункт 805х, а в поле «Компонент» — пункт 8051 (рис. 5). Чтобы разместить выбранный компонент на схеме, надо в окне «Выбор компонента» нажать кнопку ОК, после чего данное окно будет закрыто, а символ компонента прикреплен к курсору мыши, при помощи которого требуется поместить компонент в нужное место на схеме. При размещении микроконтроллера х51 в рабочем поле проекта откроется окно мастера MCU «Создатель MCU — шаг 1 из 3». Работа мастера состоит из трех шагов, на первом из них (рис. 6) пользователю будет предложено выбрать директорию размещения проекта и создать для него рабочую папку. Для этого необходимо указать «Путь доступа к рабочей области для этого MCU» и «Название рабочей области». После того как соответствующие поля заполнены, нажмите кнопку «Далее», в результате будет открыто очередное окно мастера «Создатель MCU — шаг 2 из 3» (рис. 7). На втором шаге мастер предложит определить следующие установки проекта:

  • «Тип проектирования» («Стандартный» или «Использовать внешний Hex-файл») — выберите второй параметр, если у вас уже есть готовый hex-файл, в противном случае установите стандартный тип проектирования;
  • «Язык программирования» (С или ассемблер);
  • «Инструменты ассемблера/компилятора»;
  • «Название проекта» (вводится вручную).
  • После установки всех параметров необходимо нажать кнопку «Далее», в результате откроется третье окно мастера «Создатель MCU — шаг 3 из 3» (рис. 8). В данном окне посредством установки переключателя в нужную позицию необходимо произвести выбор одного из параметров:
  • «Начать с пустого проекта»;
  • «Добавить исходный файл».

Выбор микроконтроллера 8051 в библиотеке MCU программы Multisim

Рис. 5. Выбор микроконтроллера 8051 в библиотеке MCU программы Multisim

Окно мастера «Создатель MCU — шаг 1 из 3»

Рис. 6. Окно мастера «Создатель MCU — шаг 1 из 3»

Окно мастера «Создатель MCU — шаг 2 из 3»

Рис. 7. Окно мастера «Создатель MCU — шаг 2 из 3»

Окно мастера «Создатель MCU — шаг 3 из 3»

Рис. 8. Окно мастера «Создатель MCU — шаг 3 из 3»

Выберите первый пункт, если у вас уже есть на диске компьютера подготовленный файл .hex. В противном случае выберите второй пункт.

При этом в поле «Имя исходного файла» необходимо прописать название файла .asm, в который в процессе проектирования будет вноситься код программы инициализации микроконтроллера. После того как переключатель установлен в нужную позицию, нажмите на кнопку «Закончить».

После того как работа с мастером MCU завершена, в проект будет добавлена еще одна вкладка для ввода текста программы инициализации микроконтроллера. В меню «Микроконтроллеры» находятся команды для обеспечения написания и отладки программы с учетом особенностей разрабатываемого устройства.

Параметры размещенного на схеме символа микроконтроллера при необходимости можно редактировать в окне 805х (рис. 9), которое можно открыть с помощью двойного щелчка левой кнопки мыши по уже размещенному в рабочем поле программы символу компонента. Код программы инициализации микроконтроллера вводится на вкладке «*.asm».

Окно настроек параметров микроконтроллера 8051

Рис. 9. Окно настроек параметров микроконтроллера 8051

Особенности подключения микросхем памяти к микроконтроллеру

Внутренняя память программ микроконтроллера может быть расширена за счет подключения внешней памяти программ, которая представляет собой одну или несколько микросхем. Обычно в таком случае используются микросхемы памяти с байтовой организацией. С точки зрения программиста есть только один вид памяти программ, чей объем составляет сумму объема внутренней памяти программ микроконтроллера и внешней памяти программ. Тот факт, что в микроконтроллере он образуется комбинацией массивов, которые находятся на кристалле и вне его в соотношении внутренняя память/внешняя память программ, для программиста незаметен. Арифметико-логическое устройство микроконтроллера автоматически выбирает байт данных из соответствующего массива согласно его адресу. Когда сигнал E—A микроконтроллера равен единице, работает и внутренняя, и внешняя память программ. При этом микроконтроллер реализует цикл обращения к внешней памяти программ лишь в случае, если необходимый адрес выходит за пределы внутреннего сегмента памяти программ.

Внешняя память данных микроконтроллера формируется при помощи подключения дополнительных микросхем ОЗУ и может иметь емкость до 64 кбайт. Пространства внутренней и внешней памяти данных не пересекаются, поскольку доступ к ним выполняется с помощью разных команд. Для работы с внешней памятью данных существуют специальные команды MOVX, которые не влияют на внутреннюю память данных микроконтроллера. Таким образом, в системе могут одновременно присутствовать внутренняя память данных и внешняя память данных. Обращение к ячейкам внешней памяти данных реализуется только с использованием косвенной адресации по содержимому регистров R0 и R1 активного банка регистров (команды типа MOV @Ri) или по содержимому регистра специальных функций DPTR (команды типа MOV @DPTR). Команды MOVX @Ri, A и MOVX A, @Ri формируют 8‑разрядный адрес, выдаваемый через порт Р0. Команды MOVX @DPTR, A и MOVX A, @DPTR формируют 16‑разрядный адрес, чей младший байт выдается через порт Р0, а старший — через порт Р2. Затем линии порта Р0 используются как шина данных, через которую байт данных принимается из внешнего ОЗУ при чтении или выдается в него при записи. В 1 и 2 тактах машинного цикла при обращении к внешней памяти на линиях P0 активизируется адресная информация А0–А7 при высоком уровне сигнала ALE, а затем на этих же линиях появляется сигнал D0–D7 (при низком уровне сигнала ALE).

Байт адреса, выдаваемый через порт Р0, фиксируется во внешнем регистре по спаду сигнала ALE. В рассмотренном далее примере в качестве регистра-защелки мы будем использовать микросхему 74LS373N, где информация фиксируется по спаду сигнала на ее входе ENG, в качестве которого и используется сигнал ALE микроконтроллера.

Через порт Р2 микроконтроллера выводится старший байт адреса (разряды А8–А15) внешней памяти программ и данных. Для каждого из битов порта Р3 имеется ряд альтернативных функций. Сигналы стробов записи (WR) и чтения (RD) внешней памяти формируются на линиях Р3.6 и Р3.7 соответственно. При выполнении операции чтения из внешнего ОЗУ микроконтроллер вырабатывает управляющий сигнал RD, при записи — сигнал WR. Альтернативные функции всех портов реализуются только в том случае, если в надлежащий разряд фиксатора-защелки порта записана логическая 1, иначе на соответствующем выводе будет присутствовать 0.

В нашем примере будет рассмотрен процесс расширения внутренней памяти данных микроконтроллера 8051 за счет внешней памяти (микросхема НМ6116 А120). На рис. 10 представлен фрагмент схемы, на котором наглядно продемонстрирован данный пример. Для доступа к микросхеме НМ6116 А120 (на схеме DD3) необходимо подать на ее входы OE и CS логический ноль. Нарушение этого условия приведет к тому, что микросхема будет находиться в состоянии хранения, в котором выходы принимают z‑состояние. Вход WE определяет характер обращения: если на нем установлена 1, то осуществляется чтение из выбранной ячейки; если на входе WE ноль — в ячейку производится запись.

Демонстрационная схема с использованием микроконтроллера и микросхемы памяти

Рис. 10. Демонстрационная схема с использованием микроконтроллера и микросхемы памяти

Микросхема НМ6116 А120 имеет восемь выводов данных (D0–D7), по которым осуществляется одновременная запись в микросхему всех 8 бит в выбранную ячейку памяти или чтение 8 бит из ячейки. Комбинация сигналов на адресных входах А0–А10 задает адрес ячейки памяти, к которой необходимо обратиться.

Вход CS активизирует микросхему памяти. В случае, когда на этом входе установлена 1 — микросхема выключена; если на входе CS ноль — можно производить запись/чтение информации. Нулевой сигнал на входе OE включает выходные буферы микросхемы памяти на пропускание информации по линиям данных, единичный сигнал переводит эти линии в серое состояние, то есть отключает находящиеся внутри микросхемы ячейки от ее ножек.

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

Выводы микроконтроллера Р0.0–Р0.7 предназначены для ввода/вывода информации с шины данных. Помимо этого, в первый момент обращения к памяти по этим же линиям выводится адрес А0–А7 и одновременно устанавливается в 1 сигнал на выходе ALE. Спустя два периода тактового генератора ALE сваливается в 0, и через несколько наносекунд адресная информация пропадает с линий порта Р0, предоставляя возможность вести по ним обмен данными.

Работа микроконтроллера с внешней памятью данных выполняется следующим образом. Получив команду обращения к внешней памяти, микроконтроллер выводит по линиям порта Р2 старшие 8 бит адреса, а по линиям порта Р0 — младшие. Одновременно он устанавливает в 1 сигнал на выходе ALE. После того как эта логическая единица поступает на вход ENG микросхемы регистра, информация с входов регистра D0–D7 напрямую поступает на его выходы Q0–Q7, соединенные с младшими 8 линиями шины адреса микросхемы памяти А0–А7. Спустя некоторое время ALE устанавливается в 0. Перепад из 1 в 0 на входе ENG микросхемы 74LS373N приводит к защелкиванию в регистрах выходов Q0–Q7 поступающей на них информации, и защелкнутые младшие 8 бит адреса остаются неизменными на выходах Q0–Q7 до следующего цикла обмена с внешней памятью. Старшие биты адреса А8–А10, выводимые через порт Р2, также не изменяются до завершения текущего цикла работы с внешней памятью. Поскольку адрес А0–А7 запомнен в регистре, он убирается с выводов порта Р0, и эти выводы из адресных выводов превращаются в выводы данных. Когда микроконтроллер записывает данные во внешнюю память, записываемый байт данных выводится им на линии порта Р0.0–Р0.7, при этом сигнал на выходе Р3.6 (W——R) устанавливается в 0. Появление логического нуля на входе WE соответствующей микросхемы памяти приводит к записи в нее байта, поданного на ее входы D0–D7. При чтении данных на выходе микроконтроллера Р3.6 (W——R) устанавливается логическая единица, которая передается на вход WE соответствующей микросхемы памяти, что приводит к чтению из нее байта информации. Временные диаграммы чтения и записи данных в микросхему внешней памяти данных представлены на рис. 11. На диаграммах указаны следующие динамические характеристики при частоте 12 МГц:

  • tRLRH— длительность сигнала R—D– — от 400 нс;
  • tWLWH— длительность сигнала W——R — от 400 нс;
  • tLLAX— время задержки снятия адреса относительно заднего фронта ALE — от 48 нс;
  • tRLDV— задержка появления данных относительно R—D– — до 150 нс;
  • tRHDZ— максимальное время задержки снятия данных относительно заднего фронта сигнала R—D– — до 97 нс;
  • tLLDV— время между задним фронтом ALE и появлением на шине данных — до 517 нс;
  • tAVDV— время между установкой адреса и появлением на шине данных — до 585 нс;
  • tLLWL— время между задним фронтом ALE и задним фронтом R—D– или W——R — от 200 до 300 нс;
  • tAVWL— время между установкой адреса и задним фронтом R—D– или W——R — от 203 нс;
  • tWHLH— время между снятием сигнала R—D– или W——R и передним фронтом нового сигнала ALE — от 43 до 123 нс;
  • tQVWX— время предустановки данных относительно заднего фронта сигнала W——R — от 23 нс;
  • tQVWH— время между установкой данных на шине и передним фронтом сигнала W——R — от 433 нс;
  • tWHQX— время задержки снятия данных относительно переднего фронта сигнала W——R — от 33 нс;
  • tRLAZ— время между задним фронтом сигнала R—D– и снятием адреса с шины — до 12 нс.
Временные диаграммы чтения и записи данных

Рис. 11. Временные диаграммы чтения и записи данных:
а) цикл чтения данных из микросхемы внешней памяти;
б) цикл записи данных в микросхему внешней памяти

Создание схемного проекта с использованием микросхем памяти

Добавим в рабочее поле программы дополнительные компоненты схемы: регистр, «землю», питание. Кварцевый резонатор и конденсаторы, используемые для тактирования микроконтроллера, в данном случае в схему можно не добавлять, поскольку тактирование эмулируется программно. Однако если вы будете разрабатывать проект до его логического конца, то есть до изготовления печатной платы, элементы придется добавить.

Для того чтобы добавить микросхему регистра в рабочее поле проекта, необходимо открыть окно «Выбор компонента» и в его левой верхней части в поле «Раздел» выбрать из списка библиотеку TTL. Ниже поля «Раздел» находится поле «Семейство», в котором необходимо выбрать пункт 74LS_IC. В поле «Компонент» выберите микросхему 74LS373N и нажмите кнопку ОК. Для того чтобы добавить «землю» и питание, выберите в окне «Выбор компонента» в поле «Раздел» библиотеку Sources, в поле «Семейство» пункт POWER_SOURCES, а в поле «Компонент» — GROUND (для добавления «земли») и DC_POWER (для добавления питания).

Соединим при помощи проводников все добавленные в проект компоненты так, как показано на рис. 10. В заключение в свойствах микроконтроллера на вкладке «Параметры» в поле «Встроенная внешняя RAM» необходимо указать объем подключенной внешней памяти данных (рис. 12), в нашем случае это 2 кбайт.

Окно свойств микроконтроллера, вкладка «Параметры»

Рис. 12. Окно свойств микроконтроллера, вкладка «Параметры»

Добавим в схемный проект виртуальный двухканальный осциллограф и подсоединим его к цепи сигнала ALE (рис. 13), что позволит на экране графического дисплея наблюдать за изменением формы этого сигнала в процессе моделирования схемы. Для добавления осциллографа необходимо нажать на одноименный значок на панели инструментов «Приборы» и разместить его пиктограмму с помощью мыши в нужном месте на схеме. Двухканальный осциллограф имеет два входа (канал А и В) и может отображать осциллограммы двух сигналов одновременно. Каждый канал имеет сигнальный вход и контакт заземления. В программе Multisim осциллограф заземлен по умолчанию, поэтому контакт заземления можно не использовать.

Подключение виртуального двухканального осциллографа к демонстрационной схеме

Рис. 13. Подключение виртуального двухканального осциллографа к демонстрационной схеме

Лицевая панель прибора открывается двойным щелчком левой кнопки мыши по его пиктограмме на схеме. В нижней части лицевой панели расположена панель управления, предназначенная для настройки отображения измеряемого сигнала (рис. 14). Установим на ней деление временной шкалы, равное одному машинному циклу, то есть 1 мкс. Выберем по оси Y цену деления для каналов А и В, примем ее равной 5 В.

Лицевая панель виртуального двухканального осциллографа

Рис. 14. Лицевая панель виртуального двухканального осциллографа

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

Более подробно работа с виртуальным осциллографом была рассмотрена в [5].

Разработка программы тестирования внешней памяти

Написание кода программы инициализации микроконтроллера выполняется на вкладке «*.asm» схемного проекта. Открыть эту вкладку можно следующим образом. Выделите при помощи левой кнопки мыши на панели разработки на вкладке «Структура» в дереве проектов строку «*.asm» и щелкните по ней два раза левой кнопкой мыши. Код программы вводится вручную с клавиатуры в рабочем поле открывшейся вкладки (рис. 15). Для наглядной демонстрации разработанной схемы введем следующий код программы:

$MOD51           // подключение микроконтроллера х51
mov dptr,#09h    // загрузить в регистр-указатель число 09h
mov a,#03h       // загрузить в аккумулятор число 03h
movx @dptr, a    // переслать в ячейку внешней памяти
                 // с адресом 09h число 03h
mov r0,#0ch      // загрузить в регистр r0 число 0сh
mov a,#1dh       // загрузить в аккумулятор число 1dh
movx @r0, a      // переслать в ячейку внешней памяти
                 // с адресом 0сh число 1dh
mov r1,#11h      // загрузить в регистр r1 число 11h
mov a,#05h       // загрузить в аккумулятор число 05h
movx @r1, a      // переслать в ячейку внешней памяти
                 // с адресом 11h число 05h
movx a,@r0       // переслать содержимое ячейки внешней памяти
                 // с адресом 0сh в аккумулятор
END
Код программы инициализации микроконтроллера на вкладке «*.asm» схемного проекта работы с внешней памятью данных

Рис. 15. Код программы инициализации микроконтроллера на вкладке «*.asm» схемного проекта работы с внешней памятью данных

В коде программы используются команды пересылки: в аккумулятор байта из внешнего ОЗУ (movx a,@ri), в аккумулятор байта из расширенного внешнего ОЗУ (movx a,@dptr), во внешнее ОЗУ из аккумулятора (movx @ri, a), в расширенное внешнее ОЗУ из аккумулятора (movx @dptr, a). Необходимо отметить, что в системе команд микроконтроллера х51 адреса для режима косвенной адресации могут быть взяты только из регистров R0, R1, DPTR.

Моделирование схемы и трансляция программного кода

После того как в рабочей области проекта собрана схема, а на вкладке «*.asm» введен код программы, можно запускать моделирование. Процесс моделирования начинается кнопкой «Пуск», которая находится на панели инструментов «Моделирование». Данную панель можно добавить в проект командой меню «Вид/Панель инструментов». Также для запуска моделирования можно воспользоваться функциональной клавишей на клавиатуре F5. В результате, если компилятор в листинге программы не обнаружит ошибок, на диске вашего компьютера в рабочей папке проекта будут созданы следующие файлы:

  • *.hex— файл машинного кода;
  • *.asm— файл с ассемблерным кодом программы;
  • *.lst— файл листинга программы.

Программа инициализации микроконтроллера пишется на языке программирования asm51. Это язык ассемблера, специально предназначенный для написания программ для микроконтроллеров семейства х51. Написанная программа транслируется с помощью ассемблера asm51, в результате чего будут получены hex-файл для загрузки в память программ и листинговый файл с кодами команд и адресами расположения этих кодов. В том случае, если в ходе компиляции кода программы инициализации микроконтроллера обнаружены ошибки, они будут отмечены компилятором в файле листинга. При этом hex-файл не будет сгенерирован до тех пор, пока не устранены ошибки. Отчет о возможных ошибках в программе Multisim отображается в нижней части рабочего проекта в окне «Блок информации» на вкладках «Результаты» и «Моделирование». Отладка программы выполняется командой меню «Микроконтроллеры/MCU 8051 U?/ Просмотр отладки» (рис. 16). Состояние памяти можно просмотреть при помощи команды меню «Микроконтроллеры/MCU 8051 U?/ Просмотр памяти» (рис. 17). В нашем случае нас интересует состояние внешней памяти данных (поле XRAM).

Окно отладки кода программы инициализации

Рис. 16. Окно отладки кода программы инициализации

Состояние аккумулятора и внешней памяти данных после выполнения программы инициализации микроконтроллера

Рис. 17. Состояние аккумулятора и внешней памяти данных после выполнения программы инициализации микроконтроллера

Проанализируем работу демонстрационной схемы, представленной на рис. 13. На вкладке «main.asm» (рис. 15) при помощи команды movx были даны указания программе инициализации микроконтроллера записать во внешнюю память данных следующие значения: 03h,1dh, 05h, после чего при помощи этой же команды дано указание переслать содержимое ячейки внешней памяти с адресом 0сh в аккумулятор.

После запуска моделирования мы можем проверить правильность работы программы. Результат выполнения программы (состояние регистров и памяти) представлен на рис. 17. В окне XRAM отображено состояние внешней памяти данных (в ячейке с адресом 09h число 03h, в 0сh — число 1dh, в 11h — число 05h), в аккумуляторе записано двоичное число 00011101, которое соответствует полученному из внешней памяти шестнадцатеричному числу 1dh. Таким образом, можно сделать вывод, что разработанная схема и программа действуют правильно, поскольку в указанных в коде программы ячейках внешней памяти данных отображаются заданные числа. Верно было выполнено и чтение из внешней памяти данных.

После запуска моделирования на экране графического осциллографа будет виден процесс генерации сигнала ALE (рис. 18).

Изменение формы сигнала ALE в процессе моделирования схемы

Рис. 18. Изменение формы сигнала ALE в процессе моделирования схемы

При написании кода программы для микроконтроллера х51 необходимо владеть синтаксисом языка программирования asm51. Система команд микроконтроллеров х51 насчитывает 111 базовых команд, которые разделены по функциональному признаку на пять групп: команды передачи данных, арифметических операций, логических операций, передачи управления и операций с битами. Описание наиболее распространенных ошибок трансляции ассемблерного кода в программной среде Multisim и система команд asm51 были рассмотрены в [6].

Литература
  1. NI Circuit Design Suite — Getting Started with NI Circuit Design Suite, National Instruments, January 2012.
  2. Лебедев О. Н. Микросхемы памяти и их применение. М.: Радио и связь, 1990.
  3. Шегал А. А. Применение программного комплекса Multisim для проектирования устройств на микроконтроллерах. Екатеринбург, издательство Уральского университета, 2014.
  4. 8051 CROSS ASSEMBLER USER’S MANUAL, MetaLink Corporation Chandler, Arizona.
  5. Колесникова Т. Работа с виртуальными приборами в программной среде NI Circuit Design Suite — Multisim 12.0. Часть 2 // Компоненты и технологии. 2014. № 2.
  6. Колесникова Т. Программирование микроконтроллеров в программной среде NI Circuit Design Suite — Multisim 12.0 // Компоненты и технологии. 2014. № 6.
  7. Магда Ю. С. Микроконтроллеры серии 8051: практический подход. М.: ДМК-Пресс, 2008.
  8. P80CL580; P83CL580. Low voltage 8‑bit microcontrollers with UART, I2C and ADC. DATA SHEET, Philips Semiconductors, 1997.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *