4.1. Реализация арифметической функции
Требуется реализовать арифметическую функцию двумя способами: табличным с использованием внутрикристальной блочной памяти и логическим в базисе библиотечных элементов и мегафункций САПР Quartus II.
Порядок выполнения работы:
1.Создать проект, используя команду File/New/Memory File/Memory Initialization File подготовить файл *.mif, содержимое которого соответствует значениям заданной функции (табл. 4.1) для трехразрядных аргументов, разрядность хранимых данных определяется видом реализуемой функции.
2.Подготовить исходный файл проекта, в который включить блок памяти, на адресные линии блока подать аргументы A и B, значения функции считывать из ячеек. Блок памяти необходимо инициализировать созданным файлом *.mif.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 4.1 |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Вариант |
|
Функция |
Вариант |
|
Функция |
Вариант |
|
Функция |
Вариант |
|
Функция |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
1 |
A + B*A |
3 |
|
A B * A |
5 |
|
|
|
|
|
7 |
|
|
|
|
|
|
|||
|
A B * A |
|
A B * A |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
2 |
|
|
|
4 |
|
|
|
6 |
|
|
|
|
|
8 |
|
|
|
|
|
|
|
A* B A |
|
A B * A |
|
A B * A |
|
|
|
|
|||||||||||
|
|
|
|
A B * A |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3.В этом же проекте реализовать заданную функцию с использованием библиотечных элементов, выполнить совместное моделирование устройств. Сравнить результаты работы схем на полном наборе входных данных, оценить временные характеристики преобразователей.
4.Добавить в проект элементы, обеспечивающие выдачу результатов на семисегментные индикаторы, выполнить имплементацию проекта, подключив входные сигналы к движковым переключателям, результаты работы наблюдать на светодиодных индикаторах.
4.2. Разработка устройства междоменной синхронизации
Устройство представляет собой буфер и работает по принципу FIFO. При обращении к нему по записи выполняется запись в первую свободную ячейку, при отсутствии свободных ячеек формируется сигнал «Буфер заполнен». Считывание выполняется из первой занятой ячейки с последующим сдвигом значений, содержащихся в буфере на одну позицию. Если все данные из буфера прочитаны, то вырабатывается сигнал «Буфер пуст». Тактирование обращений по чтению и записи осуществляется синхросигналами, отличающимися по частоте.
11
Варианты заданий
Вариант |
Объем |
Изменение |
Тактиро- |
Разрядность данных |
Вариант |
Объем |
Изменение |
Тактирова- |
Разрядность данных |
|
буфера, |
адресов |
вание |
|
|
буфера, |
адресов |
ние чтения |
|
|
чтения |
|
|
|
|||||
|
слов |
при записи |
|
|
слов |
при записи |
/записи |
|
|
|
/записи |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
10 |
↓ |
↓/↑ |
8 |
5 |
10 |
↑ |
↓/↑ |
11 |
|
|
|
|
|
|
|
|
|
|
2 |
11 |
↑ |
↓/↑ |
9 |
6 |
11 |
↓ |
↓/↑ |
10 |
|
|
|
|
|
|
|
|
|
|
3 |
12 |
↑ |
↑/↓ |
10 |
7 |
12 |
↓ |
↑/↓ |
9 |
|
|
|
|
|
|
|
|
|
|
4 |
13 |
↓ |
↑/↓ |
11 |
8 |
13 |
↑ |
↑/↓ |
8 |
|
|
|
|
|
|
|
|
|
|
Содержание отчета
Отчет по частям 4.1 и 4.2 должен содержать следующую информацию: задание на работу; исходные файлы проектов; RTL-описание, оценки по затратам оборудования; результаты моделирования в виде временных диаграмм с комментариями; описание результатов макетирования по части 1; выводы по работе.
Лабораторная работа 5 ПРОЕКТИРОВАНИЕ ПРОЦЕССОРНОЙ СНК
НА БАЗЕ SOFT-ЯДРА
Цель работы состоит в освоении маршрута проектирования микропроцессорной системы с использованием открытого кода процессорного soft-ядра и получении навыков управления индикацией в статическом и динамическом режимах.
Краткие теоретические сведения
Процессорное soft-ядро – это набор файлов, определяющих конфигурирование некоторой области кристалла таким образом, что в ней создается процессор определенного типа [3]. Выделяют ядра с закрытым кодом, в которых нельзя изменять архитектуру и отдельные элементы, и ядра с открытым кодом, который можно корректировать самостоятельно и интегрировать в описание проектируемого устройства на языках HDL.
Включение процессорного ядра в проект на ПЛИС. Включение в про-
ект процессора рассмотрим на примере открытого ядра MC8051 IP Core Oregano System по системе команд совместимого с микроконтроллерами
12
8051. Это ядро имеет особенности: немультиплексируемые порты вводавывода, внутреннюю оперативную память – 256 байт, средства для работы с внешними ПЗУ и ОЗУ по 64 Кбайт, а также настраиваемое количество таймеров/счетчиков и блоков последовательного интерфейса. Имена и назначение внешних контактов модуля ядра приведены в таблице.
|
Имя контакта |
|
Описание |
|
|
|
|
|
clk |
|
Тактовый сигнал |
|
reset |
|
Сброс |
|
rom_data_i |
|
Вход данных, считываемых из ПЗУ |
|
ram_data_i |
|
Вход данных для внутреннего ОЗУ |
|
int0_i , int1_i |
|
Входы внешних прерываний |
|
all_t0_i , all_t1_i |
|
Входы внешних таймеров/счетчиков |
|
all_rxd_i |
|
Вход последовательного порта |
|
p0_i, p1_i, p2_i, p3_i |
|
Входы портов Р0–Р3 |
|
p0_o,p1_o, p2_o, p3_o |
|
Выходы портов Р0–Р3 |
|
rom_adr_o |
|
Адрес ПЗУ |
|
ram_data_o |
|
Выход данных внутреннего ОЗУ |
|
ram_adr_o |
|
Адрес ОЗУ |
|
ram_wr_o |
|
Сигнал чтение (0) / запись (1) |
|
ram_en_o |
|
Сигнал выборки ОЗУ |
|
datax_i |
|
Вход данных внешнего ОЗУ |
|
datax_o |
|
Выход данных внешнего ОЗУ |
|
adrx_o |
|
Адрес внешнего ОЗУ |
|
wrx_o |
|
Разрешение записи внешнего ОЗУ |
|
Микропроцессорное ядро представлено следующими исходными файлами: |
||
декларации entity |
entity-name_.vhd |
||
архитектурные тела для модулей |
|||
с поведенческим описанием |
entity-name_rtl.vhd |
||
архитектурные тела для модулей |
|||
со структурным описанием |
entity-name_struc.vhd |
||
декларации конфигурации |
entity-name_rtl_cfg.vhd |
||
|
|
|
entity-name_struc_cfg.vhd |
Для включения процессора в графический проект требуется добавить в проект исходные файлы vhdl описаний за исключением файлов конфигураций *_cfg.vhd и создать символьный файл для языкового описания процессора, содержащегося в файле mc8051_core.vhd.
Память программ реализуется на встроенном блоке памяти при помощи мегафункции параметризованной ROM – lpm_rom. Разрядность данных устанавливается равной 8 бит, а разрядность адреса определяется объемом про-
13
граммы, загружаемой в память. При настройке модуля памяти в нее загружается исполняемый файл программы в hex-формате.
Подключение памяти программ к микроконтроллеру осуществляется в соответствии с назначением линий, приведенном в таблице.
Разработка устройства индикации. В несложных системах контроля и управления для отображения информации обычно используются простейшие устройства индикации – светодиоды и цифровые или знаковые индикаторы.
Светодиодный индикатор состоит из набора расположенных в определенном порядке и конструктивно объединенных светодиодов. Включая определенные комбинации светодиодов, можно формировать изображения цифр и некоторых символов. Индикаторы различаются типом соединения светодиодов (общий анод, общий катод), количеством отображаемых разрядов (од- но-, двухразрядные и т. д.), цветом. При управлении несколькими индикаторами можно выделить два режима: статический и динамический.
Статическая организация индикации предполагает постоянное подключение каждого индикатора к собственному источнику информации. Выводимые на индикаторы коды однократно записываются в регистры и сохраняются до тех пор, пока не потребуется их изменение. Фрагмент текста программы, обеспечивающей такой вывод информации, приведен в листинге 5.1. Вызов этого программного блока осуществляется только тогда, когда необходимо изменить выводимую на индикаторы информацию.
Рассмотренная реализация потребует использования 8 бит для вывода данных на семисегментный индикатор (ССИ) и n линий для управления регистрами n индикаторов. Количество выводов процессора, задействованных для управления записью, может быть минимизировано применением дешифратора.
Листинг 5.1. Вывод информации на индикацию со статическим управлением
mov |
p1,#0c0h |
; данные в регистр первого индикатора |
clr |
p3.0 |
; формирование импульса на линии записи |
setb |
p3.0 |
|
mov |
p1,#0f9h |
; данные в регистр второго индикатора |
clr |
p3.1 |
; формирование импульса на линии записи |
setb |
p3.1 |
|
mov |
p1,#0a4h |
; данные в регистр третьего индикатора |
clr |
p3.2 |
; формирование импульса на линии записи |
setb |
p3.2 |
|
mov |
p1,#0b0h |
; данные в регистр четвертого индикатора |
clr |
p3.3 |
; формирование импульса на линии записи |
setb |
p3.3 |
|
14
Для организации динамической индикации могут применяться как отдельные одноразрядные индикаторы, так и многоразрядные блоки. С использованием динамического режима можно управлять и отдельными сегментами.
Вмногоразрядных индикаторах все одноименные сегменты соединены вместе и имеют один общий вывод. Управление свечением какой-либо цифры осуществляется через общий вывод (анод или катод). При реализации динамического режима работы индикации отображаемая информация поступает на входы, подключенные ко всем элементам сразу. При этом сигнал включения активизирует одно определенное знакоместо синхронно с подачей отображаемой информации.
Всхеме (рис. 5.1), реализующей динамический режим для четырех индикаторов, выводимые коды выставляются на линии P1_o, на выходах 1 и 0 порта P3_o фиксируется адрес индикатора, на который выводятся данные, а на выходе 2 порта P3_o формируется сигнал разрешения выдачи, активный уровень которого подключает выходы порта P1_o к выбранному индикатору.
Рис. 5.1. Схемная реализация блока динамической индикации
Мультиплексор dmux1_4, разработан отдельно с использованием языковых средств описания аппаратуры и обеспечивает коммутацию выводимого кода на один из четырех семисегментных индикаторов.
Фрагмент программы, обеспечивающий вывод данных на первые два ССИ приведенной схемы, представлен в листинге 5.2.
15