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

МПСиС / lab_m1_vt_vt_ampsis_230100.62_niy06

.pdf
Скачиваний:
71
Добавлен:
18.02.2017
Размер:
3.26 Mб
Скачать

Лабораторная работа № 4 Отладка проекта устройства

с микропрограммным управлением на учебном стенде

Лабораторное задание

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

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

Описание учебного стенда и базового проекта

Учебный стенд представляет собой плату, на которой размещены программируемая логика и устройства ввода/вывода (рис.1). На задней и боковой сторонах платы установлены разъёмы для подключения источника питания, инструментального компьютера, монитора, дополнительных устройств ввода/вывода и т.д. Слева расположен переключатель для выбора одного из двух режимов программирования, который, для удачной загрузки в ОЗУ ПЛИС, должен быть в положении RUN.

На рис.2 представлена упрощенная структура стенда. Центральное место на плате занимает программируемая логическая интегральная схема фирмы Altera Cyclone II EP2C20F484C7N. Загрузка ОЗУ ПЛИС производится при помощи инструментального компьютера, кабеля программирования и ПО Quartus. Для подключения стенда к инструментальному компьютеру достаточно соединить соответствующим кабелем порт USB Blaster платы и USB-вход компьютера.

49

Рис.1. Внешний вид учебного стенда

Рис.2. Структура учебного стенда

Базовый проект для ПЛИС реализован в графическом виде

(BasicProject.bdf) и состоит из двух основных блоков: InputModule и OutputModule (рис.3), которые предназначены для ввода данных от кнопок, переключателей и клавиатуры и вывода данных на светодиоды и семисегментные индикаторы соответственно. Для сохранения работо-

50

способности базового проекта необходимо сохранять без изменений все входные подключения модуля InputModule и все выходные подключе-

ния, и вход clk модуля OutputModule.

Рис.3. Модули ввода/вывода

На стенде установлен генератор базовой тактовой частоты 50 МГц. С выхода Freq[0..31] можно снимать тактовые частоты с делителя базовой частоты (Freq[0] – 25 МГц, Freq[1] – 12,5 МГц и т.д.).

По шине Switch[0..9] передается состояние десяти переключателей, расположенных на плате снизу. Логическая «1» соответствует состоянию «Включено», логический «0» – «Выключено».

По шине KeyBoardBus[3..0] передается код нажатой клавиши с клавиатуры (используются шестнадцатеричные цифры от 0-9 и A-F). Каждое нажатие клавиши сопровождается логической «1» на сигнале

KeyPressed.

Сигналы Buton0, Button1 и Buton2, Button3 отображают состоя-

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

Шины HEX_0[3..0], HEX_1[3..0], HEX_2[3..0], HEX_3[3..0] пред-

назначены для передачи информации на четыре семисегментных индикатора, расположенных на плате. HEX_0 соответствуют крайнему правому индикатору, HEX_1 – второму справа и т.д. Управление отдельными сегментами реализовано в модуле OutputModule и ориентировано на отображение шестнадцатеричных цифр, т.е. при HEX_0[3..0] = 0000 на крайнем правом индикаторе будет отображен символ нуля, а при

HEX_0[3..0] = 1111 – символ F. Сигналы hex_0_off, hex_1_off, hex_2_off

и hex_3_off отвечают за горение семисегментных индикаторов. Если

51

hex_0_off выставить в единицу, индикатор HEX_0 погаснет. С остальными по аналогии.

С помощью шин LedRed[9..0] и LedGreen[7..0] можно управлять линейками светодиодов, расположенных на плате. Например, подача «1» на LedGreen[0] активирует крайний справа светодиод.

Пример проектирования

На рис.3 приведен пример схемы устройства с микропрограммным управлением, дополненной аппаратными модулями ввода/вывода. Данная схема имеет четыре входных порта (clk – тактовый сигнал, reset – сигнал начальной установки, KB – код нажатой клавиши, KP – индикатор нажатой клавиши) и один выходной порт (Indicator – коды для семисегментных индикаторов).

Модули ввода/вывода описаны на Verilog HDL, их листинги представлены на рис.4 и 5 соответственно. Из приведенных описаний видно, что оба модуля имеют регистровую память, адресуемую при помощи шины PortID.

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

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

В табл.1 представлен пример программы, реализующей сложение двух 4-разрядных чисел.

Требования к отчету

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

52

 

 

 

 

 

 

 

 

 

 

DataInput

 

 

 

 

 

 

 

 

 

 

 

 

 

clk

 

 

 

 

 

 

 

DataIn[3..0]

 

 

 

 

 

 

 

clk

DataOut[3..0]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

reset

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

reset

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

KB[3..0]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

KB[3..0]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

KP

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

KP

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PortID[0]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PortID

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PortRead

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PortRead

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

inst2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Controller

 

 

 

 

 

 

clk

 

 

 

INPUT

 

 

clk

 

 

 

 

 

 

 

DataOut[3..0]

reset

 

 

 

VCC

 

 

 

 

 

clk

DataOut[3..0]

 

 

 

 

 

 

 

INPUT

 

 

reset

 

 

 

 

PortID[2..0]

KB[3..0]

 

 

 

VCC

 

 

 

 

 

reset

PortID[2..0]

 

 

 

 

 

 

 

INPUT

 

DataIn[3..0]

 

 

 

 

PortWrite

KP

 

 

 

VCC

 

 

 

 

 

DataIn[3..0]

PortWrite

 

 

 

 

 

 

 

INPUT

 

 

 

 

 

 

 

PortRead

 

 

 

 

VCC

 

 

 

 

 

 

 

PortRead

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

inst

DataOutput

clk

clk Indicator[15..0] OUTPUT Indicator[15..0]

reset

Reset

PortWrite

DataOut[3..0] wr

Data[3..0]

PortID[1..0]

PortID[1..0]

inst1

Рис.4. Схема устройства с микропрограммным управлением, дополненная модулями ввода/вывода

53

Рис.5. Модуль ввода данных с шестнадцатеричной клавиатуры

Рис.6. Модуль вывода данных на семисегментный индикатор

54

Таблица 1

 

 

 

 

Пример микропрограммы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Действие

 

 

 

 

Микрокоманда

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

БП

ПП

ПН

S[3:0]

M

P0

ISR,

 

A

wr

adr[2:0]

v[3:0]

 

 

 

 

 

 

 

ISL

 

 

0

1→Рг2

0

0

0

0000

0

0

00

 

0

0

000

0010

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

DataInput-0→Рг1

0

0

0

0000

0

0

00

 

1

0

000

0001

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

Рг1–Рг2

0

0

0

0110

1

1

00

 

0

0

000

0000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

If R==0 PC=5

0

0

1

0000

0

0

00

 

0

0

000

0101

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

PC=1

1

0

0

0000

0

0

00

 

0

0

000

0001

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

DataInput-1→Рг1

0

0

0

0000

0

0

00

 

1

0

000

0001

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

Рг1→DataOutput-0

0

0

0

0000

0

0

00

 

0

0

000

1000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

Рг1→БРОН-0

0

0

0

0000

0

0

00

 

0

1

000

0000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

DataInput-0→Рг1

0

0

0

0000

0

0

00

 

1

0

000

0001

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

55

9

Рг1–Рг2

0

0

0

0110

1

1

00

 

0

0

000

0000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

56

Продолжение табл.1

Действие

 

 

 

 

Микрокоманда

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

БП

ПП

ПН

S[3:0]

M

P0

ISR,

 

A

wr

adr[2:0]

v[3:0]

 

 

 

 

 

ISL

 

10

If R==0 PC=12

0

0

1

0000

0

0

00

 

0

0

000

1101

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

PC=8

1

0

0

0000

0

0

00

 

0

0

000

1000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

DataInput-1→Рг1

0

0

0

0000

0

0

00

 

1

0

001

0001

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

Рг1→DataOutput-0

0

0

0

0000

0

0

00

 

0

0

000

1000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14

Рг1→БРОН-1

0

0

0

0000

0

0

00

 

0

1

001

0000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

DataInput-0→Рг1

0

0

0

0000

0

0

00

 

1

0

000

0001

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16

Рг1–Рг2

0

0

0

0110

1

1

00

 

0

0

000

0000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

17

If R==0 PC=3

0

0

1

0000

0

0

00

 

0

0

100

0011

 

 

 

 

 

 

 

 

 

 

 

 

 

 

18

PC=15

1

0

0

0000

0

0

00

 

0

0

000

1111

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19

15→Рг2

0

0

0

0000

0

0

01

 

0

0

000

0010

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Продолжение табл.1

 

Действие

 

 

 

 

Микрокоманда

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

БП

ПП

ПН

S[3:0]

M

P0

ISR,

 

A

wr

adr[2:0]

v[3:0]

 

 

 

 

 

 

 

ISL

 

 

20

15→Рг2

0

0

0

0000

0

0

01

 

0

0

000

0010

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

21

0

0

0

0000

0

0

01

 

0

0

000

0010

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

22

DataInput-1→Рг1

0

0

0

0000

0

0

00

 

1

0

001

0001

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

23

Рг1–Рг2

0

0

0

0110

1

1

00

 

0

0

000

0000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

24

If R==0 PC=29

0

0

1

0000

0

0

00

 

0

0

001

1101

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

25

 

0

0

0

0000

0

0

00

 

0

0

000

0100

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

26

1→Рг2

0

0

0

0000

0

0

00

 

0

0

000

0100

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

27

 

0

0

0

0000

0

0

00

 

0

0

000

0100

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

28

PC=15

1

0

0

0000

0

0

00

 

0

0

000

1111

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

57

29

БРОН-0→Рг2

0

0

0

0000

0

0

00

 

0

0

000

0110

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

58

Окончание табл.1

Действие

 

 

 

 

Микрокоманда

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

БП

ПП

ПН

S[3:0]

M

P0

ISR,

 

A

wr

adr[2:0]

v[3:0]

 

 

 

 

 

ISL

 

30

БРОН-1→Рг1

0

0

0

0000

0

0

00

 

0

0

001

0001

 

 

 

 

 

 

 

 

 

 

 

 

 

 

31

Рг1 +

0

0

0

1001

1

0

00

 

0

0

000

1000

Рг2→DataOutput-0

 

32

 

0

0

0

0000

0

0

00

 

0

0

000

0010

 

 

 

 

 

 

 

 

 

 

 

 

 

 

33

0→Рг2

0

0

0

0000

0

0

00

 

0

0

000

0010

 

 

 

 

 

 

 

 

 

 

 

 

 

34

0

0

0

0000

0

0

00

 

0

0

000

0010

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

35

 

0

0

0

0000

0

0

00

 

0

0

000

0010

 

 

 

 

 

 

 

 

 

 

 

 

 

 

36

PC=0

1

0

0

0000

0

0

00

 

0

0

000

0000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Соседние файлы в папке МПСиС