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

LR_1-2

.pdf
Скачиваний:
29
Добавлен:
15.04.2015
Размер:
540.86 Кб
Скачать

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

Описание системы как набора модулей выполняется - по схеме, которая должна быть предварительно составлена из базовых логических элементов, принятых в языке Verilog: and, nand, or, nor, xor, xnor, buf, not (И, И-НЕ, ИЛИ, ИЛИ-НЕ, исключающее ИЛИ, исключающее ИЛИ-НЕ, буферный элемент, отрицание НЕ). Строка описания каждого элемента содержит тип элемента, затем его обозначение на принципиальной схеме (не обязательно), затем в скобках через запятую имена всех выводов: вначале имя выхода, а затем – имена входов. Формат описания элементов имеет вид:

Тип

Обозначение

(

Выход

,

Вход 1

,

Вход 2

,

вход N

)

;

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

Проект мультиплексора 2 в 1 (Рис.2.1).

1) Проект мультиплексора в виде схемы. Схема (Рис.2.2) вводится в графическом редакторе,

как описано в работе 1.

 

 

 

 

 

 

 

 

2) Описание мультиплексора по логиче-

 

 

 

 

 

 

 

 

 

 

 

 

dd2

 

 

 

 

 

a

 

 

 

 

 

 

 

a

y2

 

 

скому уравнению (Пример 2.1). Первая строка

 

 

 

 

 

 

 

 

&

 

 

 

 

 

q

 

 

 

 

dd1

 

 

 

 

описания - комментарий, признак начала коммента-

 

 

 

 

 

 

 

 

b

 

s

 

 

 

 

 

 

dd4

 

рия – две косые черты. Номера строк указаны как

 

 

 

 

 

 

 

 

 

 

s

 

 

 

 

 

 

 

 

 

 

 

1

q

комментарий.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dd3

 

 

 

 

Заголовок описания - строка 2, содержит

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

 

ключевое слово «module», затем имя модуля и спи-

 

 

 

 

 

 

 

 

 

 

 

&

y3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сок всех портов в круглых скобках. Конец данной, и

q a s b s

 

 

y1

 

 

 

 

 

 

 

 

 

 

всех последующих строк и операторов - точкой с

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

запятой. Имя модуля должно совпадать с именем

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 2.1. Мультиплексор 2 в 1

 

 

файла, расширение которого *.v.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Описание портов – строки 3,4. После ключе-

вого слова «input», через запятую, перечисляются входные порты, а после слова «output» - все выходные порты. Перечисления заканчиваются точкой с запятой. Двунаправленные порты (если есть) перечисляются после слова «inout».

В примере типы сигналов не указаны, все сигналы по умолчанию будут назначены как однобитовые типа «wire». Входы и двунаправленные сигналы всегда должны иметь тип wire. Выходы комбинационных схем обычно принимают

Рис. 2.2. Схема проекта «mux_sch.gdf» как тип wire. Если сигналы должны иметь другие параметры (тип и

разрядность), то после описания портов приводится дополнительное описание типов сигналов. Описание схемы - строка 5. Ключевое слово «assign» означает непрерывное назначение сигнала.

Значение сигнала q заново вычисляется каждый раз, когда изменяется хотя бы один из сигналов (a,b,s). Для записи логических уравнений использованы поразрядные операторы И, ИЛИ, НЕ. Завершение описания – строка 6, ключевое слово «endmodule», после которого не должно быть никаких знаков препинания.

3)Описание мультиплексора как набора модулей (пример 2.2). Описание составлено по схеме

(Рис. 1). Элементы схемы имеют обозначения dd1 – dd4, а внутренние узлы y1 – y3. Строки 1 - 4 повторяют пример 2.1. В строке 5 описаны внутренние сигналы схемы типа «wire», которые потребовалось ввести, чтобы впоследствии описать функции всех логических элементов. Строка 6 описывает инвертор, обозначенный на схеме как «dd1», его выходной сигнал «у1», а входной - «s». В строках 7-9 описаны остальные элементы схемы.

4)Поведенческое описание мультиплексора – это алгоритм функционирования (Пример 2.3),

описывается оператором непрерывного условного присваивания (Строка 5).

11

Задание 2.1. Иерархический проект мультиплексора 2 в 1.. Для сравнения параметров устрой-

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

//Пример 2.1.

1

щий символы различных описаний, входы которых соединены парал-

лельно.

 

module mux_var1 (a, b, s, q);

//2

 

1) Создайте проект мультиплексора, в котором ввод проекта

input

a, b, s;

//3

(как в работе 1) выполнен в виде схемы (Рис.2.2), файл которой имеет

output

q;

//4

имя «mux_sch.gdf». После компиляции создайте символ.

assign q = a & s | b & ~s;

//5

2) Создайте проект для структурного описания мультиплексора

endmodule

//6

по логическому уравнению. Для этого командой «File/New» создайте

 

 

 

//Пример 2.2

1

новый текстовый файл, а командой «Save As» запишите его с именем

«mux_var1» и расширением «.v». Расширение файла определяет вызов

module mux_var2 (a, b, s, q);

//2

транслятора с языка Verilog. Проект, описанный

на языке Verilog,

input

a, b, s;

//3

компилируется подобно проекту в виде схемы.

Введите описание,

output

q;

//4

приведенное в примере 2.1, укажите данный файл как ведущий ко-

wire y1, y2, y3;

//5

мандой «File/Project/Set Project To Current File». Выполните компиля-

not dd1 (y1, s);

//6

цию, выбирая из пункта меню «Processing» временное моделирование

and dd2 (y2, a, s);

//7

«Timing SNF Extractor». Создайте символ командой «File/Create De-

and dd3 (y3, b, y1);

//8

fault Symbol».

 

or dd4 (q, y2, y3);

//9

 

3) Создайте проект и символ с именем «mux_var2», используя

endmodule

//10

пример 2.2.

 

//Пример 2.3.

1

4) Создайте проект и символ с именем «mux_var3», используя

пример 2.3.

 

module mux_var3 (a, b, s, q);

//2

 

5) Создайте иерархический проект для сравнения работы про-

input

a, b, s;

//3

ектов, описанных разными способами. В схемном редакторе создайте

output

q;

//4

файл верхнего уровня иерархии с именем «mux.gdf», разместите на

assign q=s?a:b;

//5

схеме ранее созданные символы и подайте на них одни и те же вход-

endmodule

//6

ные сигналы (Рис. 2.3), укажите данный файл как ведущий командой

 

 

 

«File/Project/Set Project To Current File». Выполните компиляцию, выбирая из пункта меню «Processing»

временное моделирование «Timing SNF Extractor».

6)Для моделирования разработанной схемы запустите сигнальный редактор командой «MAX+plus II / Waveform Editor» (Рис. 2.4), сохраните открывшийся файл с именем проекта командой

«Save As».

7)Для выбора контрольных точек установите курсор в столбец «Name» и сделайте щелчок правой кнопкой. В открывшемся меню выберите «Enter Nodes from SNF», а в окне нажмите кнопку «List»,кнопку «=>», и кнопку «OK». В результате все терминалы схем будут выбраны в качестве контрольных точек, для которых будут изображены временные диаграммы.

8)Создайте входные тестовые сигналы, для которых несложно предсказать выходные сигналы и

Рис.2.3. Схема иерархического проекта

однозначно определить правильность функционирования устройства. Для мультиплексора следует подать на входы «a» и «b» различные сигналы, а на адресный вход «s» - переключающий сигнал, частота коммутации которого ниже, чем у сигналов «a» и «b».

12

Выберите сигнал «a», нажмите кнопку 12-Clock (см. рис. 1.6), нажмите «ОК». На вход «а» будет подан синхросигнал, у которого длительности импульса и паузы определяет шаг координатной сетки, устанавливаемый из меню «Options/Grid Size» (например, 50 нс), при этом период сигнала «Clock» равен удвоенной величине шага сетки (100нс).

Выберите сигнал «b», нажмите кнопку 12-Clock, установите множитель «Multiplied By» равным

Рис. 2.4. Результат моделирования мультиплексоров

2, нажмите «ОК». На вход «b» будут поданы импульсы, период повторения которых в 2 раза больше, чем период сигнала «Clock».

Для сигнала «s» можно выбрать множитель 4, или более, например 5.

8) Запустите имитатор командой «MAX+plus II / Simulator», или кнопкой на панели инструментов. Время моделирования в программе «Waveform Editor» устанавливается из меню «File/End Time» и составляет по умолчанию 1 мкс.

Анализ результатов. Моделирование подтвердило правильность функционирования всех моделей мультиплексора: при s=1 имеем q = а, а при s=0 выход q = b. Анализ временных задержек сигналов для различных моделей выполнен при увеличенном масштабе по временной оси (кнопка 4 на рис. 1.6) позволяет сравнить модели по быстродействию. Начало измеряемого интервала отмечается перемещае-

a

 

 

 

 

мым маркером, а конец - указателем мыши..

 

 

 

q

 

Задание 2.2. Мультиплексор для коммутации шин. Создайте проект

b

 

 

 

 

 

 

 

 

мультиплексора для коммутации сигналов, передаваемых по 4-разрядным шинам

 

 

 

s

(Рис. 2.5) в виде поведенческого описания на основе примера 2.3. Сигналы «a,b,q»

 

Рис. 2.5.

необходимо описать как шины:

 

 

input

[3:0]

a, b;

Мультиплексор

 

input

s;

 

 

для шин

 

output [3:0]

q;

 

 

 

 

 

 

 

 

Разработайте тестовые сигналы, оцените результаты моделирования. Вы-

 

a

 

b

 

полните синтез схемы мультиплексора для шин.

4

 

4

 

 

 

Задание 2.3. АЛУ комбинационного типа. Создайте описание АЛУ

 

 

 

 

 

 

 

 

для заданных операций (Таблица 2.1), разработайте тестовые сигналы, приве-

сор

 

 

 

со

 

 

 

 

 

дите анализ результатов моделирования. АЛУ имеет 4-разрядные входы (a,b) и

 

ALU

 

 

 

 

 

2

 

 

 

 

 

 

выход (q); двухразрядный код операции (cop); выход переноса (co - Carry Out)

 

4

 

 

 

q

 

 

 

(Рис. 2. 6).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рассмотрим пример. Заданы коды операций: 0 – суммирование, 1 – вы-

 

 

 

 

 

 

 

 

 

Рис. 2.6. АЛУ

 

читание, 2 – поразрядная логическая операция «исключающее ИЛИ», 3 – по-

комбинационного типа разрядная логическая операция «И».

В описании АЛУ (Пример 2.4) строка 2 – заголовокимя описания и перечисление всех входов и выходов. В строке 3 описаны 4-разряднее входные векторы a,b, в строке 4 - 2- разрядный вектор кода операции (cop), а в строке 5 – выходной вектор (q) В строке 6 указан сигнал переноса (c_o), описание диапазона отсутствует, значит, этот сигнал – одноразрядный. Также отсутствует описание типов сигналов, следовательно, все сигналы по умолчанию имеют тип «wire», с которыми можно использовать только оператор непрерывного назначения с ключевым словом «assign», а также арифметические, логические операторы и оператор условного присваивания.

13

//Пример 2.4. АЛУ

1

module alu (a,b,cop,q, co);

input [3:0] a, b;

//3

input [1:0] cop ;

//4

output [3:0] q;

//5

output co;

//6

assign {co,q} =

 

(cop == 0) ? (a +b):

 

(cop==1)?( a -b):

 

(cop==2) ?

 

(a & b):(a ^ b);

//7

endmodule

//8

 

 

 

 

 

 

3

0

 

В строке 7 записан оператор условного

 

q :

 

 

 

 

 

 

+

 

 

a

присваивания, декодирующий код операции,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

содержащий вложенные условные операторы.

 

 

 

 

 

 

 

 

b

1 cop=0? 0

 

 

 

 

Оператор разделен символами перевода стро-

 

 

 

 

 

 

 

 

 

 

ки,

что не влияет на компиляцию. Сигнал,

co

 

 

q

 

 

 

 

 

 

 

 

формируемый оператором, записан как объе-

 

 

1 cop=1? 0

 

 

 

 

 

a b

 

 

 

 

 

динение сигналов переноса «c_o» и выходно-

 

 

 

 

 

 

 

 

 

 

 

го вектора «q», они записаны через запятую в

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 cop=2? 0

 

фигурных скобках. Результат - 5-разрядный

 

a b

 

 

 

вектор суммы, или разности, старший бит ко-

 

 

 

 

 

 

 

 

 

 

 

торого равен «1», если возникает перенос (см.

 

 

 

 

 

 

 

 

 

 

рис.

2.7). Для формирования признаков, за-

 

 

 

a b

 

a b

 

 

 

 

 

 

 

 

 

 

 

 

данных в таблице 2.1. в приведенную про-

Рис.2.7. К описанию АЛУ

 

Таблица 2.1

 

 

 

 

 

 

 

 

 

 

 

 

Бригада

1

2

3

4

5

6

7

8

9

10

11

12

00

add

add

add

add

add

add

add

add

add

add

add

add

01

nand

xor

or

and

xor

nand

and

or

xor

and

or

nand

10

sub

or

xor

or

and

or

or

nor

nxor

nxor

xor

xor

11

xor

nor

nand

nor

or

xor

nor

xor

or

or

and

or

Флаги

co,z

co,n

co,p

co,z

co,n

co,p

co,z

co,n

co,p

co,z

co,n

co,p

грамму необходимо добавить операторы. В строке 7 возможен другой вариант условного оператора:

 

 

 

assign

{p,c_o} = (cop < 2) ? (cop==0 ? (a +b):( a -b)): (cop==2 ? (a & b):(a ^ b));

 

 

 

3

0

//Пример 2.5. инкрементор

Задание 2. 4. Инкрементор. Создайте ие-

 

 

 

рархический проект инкрементора для сравнения

 

 

 

d

 

 

module incr (d,ci,q,co);//2

 

варианта, введенного в виде схемы в примере 1.4,

 

+

 

 

 

 

input [3:0] d;

//3

содержащей в каждом разряде полусумматор, и в

 

 

 

 

 

 

 

 

 

ci

 

 

 

 

 

input ci ;

//4

виде описания (Пример 2.5).

 

 

 

 

 

 

 

 

 

 

 

 

output [3:0] q;

//5

В операторе объединения, исходные векто-

 

 

 

 

 

 

 

co

 

q

 

 

 

 

 

 

output co;

//6

 

 

 

 

ры записываются в фигурных скобках через запя-

 

 

Рис.2.8.

 

 

assign {co,q} = d+ci;

//7

тую. Объединенный вектор может быть записан

 

Инкрементор

endmodule

//8

справа и слева от знака равенства в операторе

присваивания. Поведение схемы описывает всего

одна строка 7, структура данных показана на рис. 2.8.

Задание 2.5. Составьте орисание 4-разрядного сумматора ,используя исходные данные задания 1.5. После успешной компиляции создайте символ. Создайте иерархический проект сумматора, используя символ, созданный в задании 1.5.

Здание 2.6. Составьте иерархический проект формирователя признаков данных, используя данные задания 1.6.

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

1.Назовите области применения мультиплексоров и демультиплексоров.

2.Основные элементы структуры модуля описания на Verilog.

3.Типы сигналов.

4.Операторы присваивания «assign» и «always», особенности применения.

5.Поясните правила записи всех операторов, использованных в работе.

6.Способы структурного описания схем.

7.Особенности поведенческого описания.

8.Виды логических операторов

9.Синтаксис и применение оператора условного присваивания.

10.Какие элементы составляют структуру модуля на языке Verilog?

11.Параллельные и последовательные операторы.

12.Поясните использование сигналов в виде шин.

13.Создайте проект по заданию преподавателя.

14.По материалам работы составьте тестовую задачу.

14

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