Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Sb97585

.pdf
Скачиваний:
6
Добавлен:
13.02.2021
Размер:
863.34 Кб
Скачать

МИНОБРНАУКИ РОССИИ

––––––––––––––––––––––––––––––––––––––––––––––––––––

Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им. В. И. Ульянова (Ленина)

–––––––––––––––––––––––––––––––––––––––––––

В. С. АНДРЕЕВ Д. Н. БУТУСОВ Т. И. КАРИМОВ

ОСНОВЫ ПРОЕКТИРОВАНИЯ ЦИФРОВЫХ СИСТЕМ

Учебно-методическое пособие

Санкт-Петербург Издательство СПбГЭТУ «ЛЭТИ»

2018

1

УДК 004.312.001.2(07) ББК З 973.26–02я7

А65

Андреев В. С., Бутусов Д. Н., Каримов Т. И.

А65 Основы проектирования цифровых систем: учеб.-метод. пособие. СПб.: Изд-во СПбГЭТУ «ЛЭТИ», 2018. 30 с.

ISBN 978-5-7629-2410-8

Содержит описание методики разработки цифровых устройств на основе двух распространенных аппаратных платформ: микроконтроллеров AVR, ARM, Arduino и ПЛИС. Лабораторные работы даны в порядке возрастания сложности, от знакомства с аппаратными платформами до создания законченного цифрового устройства. Каждая из лабораторных работ содержит постановку задачи, указания к выполнению и тестовые задания по вариантам. Предложены варианты заданий на курсовое проектирование.

УДК 004.312.001.2(07) ББК З 973.26–02я7

Рецензент– к. т. н., ведущ. спец. науч.-произв. фирмы«Модем» А. С. Гудков.

Утверждено редакционно-издательским советом университета

в качестве учебно-методического пособия

ISBN 978-5-7629-2410-8

© СПбГЭТУ «ЛЭТИ», 2018

2

ПРЕДИСЛОВИЕ

Подавляющее большинство цифровых устройств (ЦУ) сегодня является программируемым, и их разработка в большей степени сводится к написанию программного обеспечения, нежели к схемотехническому проектированию. Навыки разработки ЦУ сегодня востребованы не только в сфере проектирования электроники. Тенденция к интеграции ПЛИС и процессоров (что можно наглядно иллюстрировать на примере процессора Intel Xeon), распространение компактных одноплатных компьютеров типа Raspberry Pi, развитие мобильных устройств и Интернета вещей (IoT) постепенно уменьшает разрыв между программистами и разработчиками электроники.

С помощью простой в освоении среды и модульной платформы Arduino можно в кратчайшие сроки развертывать полноценные интеллектуальные IoT-системы. Мощные микроконтроллеры STM32 делают возможным построение портативных многофункциональных систем, медицинских и измерительных устройств миниатюрного размера с запущенной на них операционной системой реального времени. Программирование этих контроллеров мало чем отличается от программирования персональных компьютеров. Для ПЛИС, напротив, коды пишутся на специальных языках описания аппаратуры. При этом ПЛИС позволяют решать задачу не программным (в командах процессора) а аппаратным образом на уровне логических вентилей. По производительности такое устройство на задачах с естественным параллелизмом может в тысячи раз превосходить процессор общего назначения.

3

ВВЕДЕНИЕ

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

Микроконтроллеры (МК) – миниатюрные компьютеры на одной интегральной схеме, содержащие одно или несколько процессорных ядер, память (ОЗУ, ПЗУ) и средства ввода-вывода. Главная область применения микроконтроллеров – встраиваемые системы управления, где имеют значение их миниатюрные размеры и низкая стоимость. В неактивном («спящем») режиме энергопотребление микроконтроллеров может составлять единицы микроватт, что актуально для устройств с автономным питанием.

Вто же время МК могут быть достаточно мощными и применяться там, где требуется высокая производительность.

Цифровые сигнальные процессоры (англ. Digital Signal Processor,

DSP) – специализированные микропроцессоры, архитектура которых оптимизирована для решения задач цифровой обработки сигналов. Алгоритмы цифровой обработки сигналов требуют выполнения большого количества математических операций, таких как сложение и умножение и арифметические аппаратные блоки MAC (англ. Multiplier-Accumulator) позволяют осуществлять две эти операции за один такт. Многие DSP поддерживают векторизацию, т. е. выполнение одной и той же операции над несколькими байтами данных.

Одноплатные компьютеры (англ. Single Board Computer, SBC) – мик-

рокомпьютеры, собранные на одной печатной плате, на которой также размещены ЦПУ, память, устройства ввода–вывода, цепи питания и другие необходимые компоненты. Строго говоря, микрокомпьютер не является прямой альтернативой упомянутым выше типам вычислительных устройств. Одноплатные компьютеры – это вычислительные системы, построенные на базе МК, DSP или специализированных процессоров, выпускающиеся серийно в форм-факторе печатных плат с размещенными на них необходимыми пери-

4

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

ПЛИС и системы на кристалле. Программируемая логическая инте-

гральная схема (ПЛИС – англ. field-programmable gate array, FPGA, или programmable logic device, PLD) – электронный компонент, используемый для создания цифровых интегральных схем. В отличие от обычных цифровых микросхем логика работы ПЛИС не закладывается в них при изготовлении, а задается самим разработчиком. Программы для ПЛИС пишутся на так называемых языках описания аппаратуры: Verilog, VHDL, AHDL и др. Основным преимуществом ПЛИС является то, что они предоставляют возможность реализовать специализированные вычислительные архитектуры, которые могут быть в тысячи раз эффективнее CPU и GPU по времени выполнения и в сотни раз по энергопотреблению.

Специализированные заказные микросхемы. Для работы в условиях специальных воздействий либо в случае больших серий целесообразным решением является создание специализированных заказных микросхем (англ. application-specific integrated circuit, ASIC). На таких микросхемах, часто со-

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

5

Лабораторная работа 1. ПЛАТФОРМА ARDUINO: ЗАГРУЗКА СКЕТЧЕЙ, ЦИФРОВОЙ ВВОД–ВЫВОД

Цель работы – ознакомление со средой разработки Arduino, написание и загрузка программы, реализующей ввод и вывод цифровых данных.

Порядок выполнения работы

1. Создание скетча

Программа, написанная в среде Arduino IDE, называется скетч. Скетч пишется в текстовом редакторе на языке С. В любой программе Arduino есть две обязательные функции setup() и loop(). При включении питания или перезагрузке микроконтроллер начнет выполнять скетч, сначала вызвав функцию setup(), а потом циклически повторяя функцию loop(). Таким образом, функция setup() выполняется один раз при загрузке приложения;

вней инициализируются данные, режимы работы портов ввода–вывода и других устройств микроконтроллера. Цикл loop() выполняется бесконечно. Один раз загрузив скетч, мы записываем его в память микроконтроллера. Чтобы изменить загруженный скетч, обновленный код программы требуется скомпилировать и загрузить еще раз.

Перед загрузкой скетча требуется задать необходимые параметры среды

вменю Инструменты Порт. В ОС Mac последовательный порт может обо-

значаться как dev/tty.usbserial-1B1 или /dev/tty.USA19QW1b1P1.1. В ОС

Windows порты могут обозначаться как COM1, COM2 и так далее. В ОС Linux порты могут обозначаться как /dev/ttyUSB0, /dev/ttyUSB1.

Для выбора платформы требуется указать в меню Инструменты Пла-

та: Название платы наименование используемой вами платы (например Uno

или Nano).

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

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

6

void setup()

{

// set the switch pin to be an input

pinMode(2,

INPUT);

pinMode(8, OUTPUT);

// set the red LED pin to be an output

}

 

 

void

loop() {

 

// read the switch input:

 

if (digitalRead(2) == HIGH) {

 

// if the switch is closed:

}

digitalWrite(8, LOW);

// turn on the red LED

 

 

else {

 

 

// if the switch is open:

// turn off the red LED

}

digitalWrite(8, HIGH);

 

 

}

 

 

В вариантах заданий на лабораторную работу предлагается усложнить этот пример. Для осуществления задержек по времени используйте функции delay, millis или таймер, задействовав библиотеку TimerOne.

2. Сборка примера на макетной плате

Пример сборки приведен на рис. 1. К цифровому входу 2 платы Arduino

подключается кнопка. Дополнительно к пину 2 подключается согласующий

резистор, обеспечивающий напряже-

 

ние низкого уровня в момент, когда

 

кнопка разомкнута. В противном

 

случае схема будет работать неста-

 

бильно. Светодиод необходимо под-

 

ключить через токоограничительный

 

резистор ~220 Ом, чтобы он не пере-

 

горел. Можно использовать резистор

 

большего номинала, но при этом све-

Рис. 1. Сборка на макетной плате

тодиод будет гореть менее ярко.

для выполнения лабораторной работы 1

3. Загрузка скетча

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

После загрузки скетча плата автоматически перезагружается, что позволяет увидеть результат работы программы.

7

Варианты заданий

1.Кнопка с памятью. Нажатие на кнопку включает светодиод, повторное нажатие выключает. Длительное удержание кнопки (больше 1с) не приводит к переключению светодиода.

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

3.«Налобный фонарик». Имитация режимов работы налобных фонари-

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

4.Диммер. Нажатие на кнопки переключает режимы яркости светодиода: выключен – уровень 1 – … уровень N (максимальный) – выключен. Для управления яркостью светодиода используйте ШИМ.

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

иснова переключается на красный. Следующее включение возможно только при окончании таймаута (например 10 с).

6.Гирлянда. Осуществляется режим бегущего огня. Необходимо подключить к плате еще 2–3 светодиода.

Лабораторная работа 2. ПЛАТФОРМА ARDUINO: АНАЛОГОВЫЙ ВВОД–ВЫВОД, СОМ-ПОРТ

Цель работы – модифицировать проект, созданный в лабораторной работе 1 таким образом, чтобы управление светодиодом осуществлялось командами с компьютера, а также с помощью потенциометра, расположенного на макетной плате (рис. 2).

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

Для организации работы порта UART служит функция Serial.begin(). Единственным параметром функции является скорость передачи данных (обычно равная 9600 бод).

8

Рис. 2. Вид макетнойплаты для выполнения лабораторной работы 2

Для записи значения в порт используются следующие функции:

Serial.write() записывает в порт данные в двоичном виде.

Serial.print() может иметь много значений, но все они служат для вывода информации различного типа в удобной для пользователя форме.

Serial.println() делает то же, что и

Serial.print(), но после вывода информации посылает символ переноса на следующую строку.

Проверить состояние буфера позволяет функция Serial.avaliable(), которая возвращает количество байт в буфере. Чтобы прочитать эти байты, необходимо воспользоваться функцией Serial.read().

Пример использования функций:

INT VAL = 0;

VOID SETUP() { SERIAL.BEGIN(9600);

}

VOID LOOP() {

IF (SERIAL.AVAILABLE() > 0) {

VAL = SERIAL.READ();

IF (VAL=='H') DIGITALWRITE(13,HIGH); IF (VAL=='L') DIGITALWRITE(13,LOW);

}

}

Использование встроенного в среду Arduino IDE монитора COM-порта имеет некоторые ограничения. Так, при отправке данных с платы на COMпорт вывод можно организовать в произвольном формате, а при отправке с ПК передача символов происходит в соответствии с таблицей ASCII.

Порядок выполнения работы

1.Откройте проект, созданный при выполнении лабораторной работы 1.

2.Измените код в соответствии с индивидуальным заданием на лабораторную работу.

3.Загрузите код в память микроконтроллера. Для проверки корректности работы вашего кода необходимо, чтобы на компьютере работала терминальная программа, принимающая данные от COM-порта. Для ее вызова из среды Arduino выберите в меню Сервис Монитор порта.

9

4.Поставьте на плату потенциометр с номиналом от 1 кОм (10 кОм, 100 кОм и т. д.).

5.Организуйте управление режимами свечения светодиода с помощью потенциометра в соответствии с заданием.

Варианты заданий

1.Включение светодиода осуществляется отправкой символа T (true) на Arduino, выключение – отправкой F (false). При этом светодиод мигает, а частота его мигания задается потенциометром.

2.Аналогично п.1, но потенциометр задает яркость свечения. Для управления яркостью используйте ШИМ.

3.Потенциометр задает яркость светодиода в режиме реального времени, как если бы светодиод был подключен непосредственно через потенциометр. Раз в секунду Arduino отсылает на ПК уровень напряжения. По командам T и F режим оповещения об уровне напряжения включается и отключается.

4.Потенциометр задает режим работы светодиода: левое положение ручки задает режим «непрерывное свечение», среднее – «мигание с малой частотой», правое – «мигание с высокой частотой». В момент перехода в другой режим контроллер отсылает соответствующее сообщение на компьютер. По командам T и F режим оповещения об уровне напряжения включается и отключается.

5.По команде с компьютера контроллер переходит либо в режим управления яркостью светодиода с помощью потенциометра, либо в режим управления частотой мигания.

Контрольные вопросы

1.Какое максимальное напряжение может быть достигнуто на ползунке потенциометра номиналом 1, 10, 100 кОм, если голубой резистор имеет номинал 10 кОм, а напряжение на шине «+» 3,3 В?

2.Если АЦП имеет 1024 уровня (в диапазоне от 0 до 3,3 В), то какому уровню соответствует напряжение, рассчитанное в п. 1?

Лабораторная работа 3. ПЛАТФОРМА ARDUINO: ПОДКЛЮЧЕНИЕ ШИЛДОВ И МОДУЛЕЙ

Цель работы – приобретение навыков аппаратного и программного подключения модулей расширения к платам Arduino.

Шилд (англ. – Shield) это специальная плата, устанавливающаяся на платформу Arduino (как правило, используется типоразмер Uno), реализую-

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]