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

литература / 1kamkin_a_s_vvedenie_v_logicheskoe_proektirovanie_apparatury

.pdf
Скачиваний:
0
Добавлен:
13.05.2026
Размер:
874.66 Кб
Скачать

А.С. Камкин. Введение в логическое проектирование аппаратуры. Конспект лекций. 2012.

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

А.С. Камкин (kamkin@ispras.ru)

Аннотация. Курс представляет собой краткое введение в логическое проектирование цифровой аппаратуры, в частности, в язык описания аппаратуры Verilog. Его цель — познакомить студентов с методами описания и логического моделирования цифровых схем, подготовить фундамент для возможной специализации в области функциональной верификации аппаратуры. В курсе рассматриваются основные математические формализмы, используемые при проектировании аппаратуры (схемы из функциональных элементов, абстрактные и структурные автоматы), и то, как эти формализмы представляются на языке Verilog. Курс читается в рамках спецсеминара «Верификация и валидация программ» и рассчитан на студентов 3 курса.

Оглавление

 

Лекция 1

«Схемы без памяти»......................................................................................................

1

Введение .....................................................................................................................................

1

Схемы из функциональных элементов ....................................................................................

3

Представление схем на языке Verilog......................................................................................

4

Лекция 2

«Схемы с памятью».......................................................................................................

8

Введение .....................................................................................................................................

8

Абстрактный автомат ................................................................................................................

8

Структурный автомат ................................................................................................................

9

Триггеры ...................................................................................................................................

10

Описание схем с памятью на языке Verilog ..........................................................................

11

Лекция 3

«Примеры проектирования на языке Verilog»..........................................................

14

Лекция 4

«Дискретно-событийное моделирование»................................................................

17

Введение ...................................................................................................................................

17

Дискретно-событийное моделирование аппаратуры ...........................................................

17

Лекция 1 «Схемы без памяти»

 

Введение

 

Цифровой аппаратурой называются устройства, в которых (с логической точки зрения, со стороны пользователя) входная и выходная информация представляется в дискретной форме, а обработка информации осуществляется с помощью дискретных преобразований. Примерами цифровой аппаратуры являются счеты, арифмометры, калькуляторы, микропроцессоры, процессоры цифровой обработки сигналов и другие устройства. Как правило, если речь идет о цифровой электронике, под дискретным представлением информации понимается двоичное представление. Есть и исключения, например, троичная ЭВМ «Сетунь» (Н.П. Брусенцов, МГУ, 1959 г.). Оппозицию цифровой аппаратуре составляет так называемая аналоговая аппаратура. К этому классу относятся радио, пленочные фотоаппараты, аналоговые компьютеры и другие. Аналоговая аппаратура в курсе не рассматривается, поэтому в дальнейшем (для краткости) будем называть цифровую (электронную) аппаратуру просто аппаратурой.

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

1

А.С. Камкин. Введение в логическое проектирование аппаратуры. Конспект лекций. 2012.

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

Различают следующие основные этапы процесса проектирования аппаратуры:

1.Поведенческое проектирование (уровень архитектуры).

2.Детальное проектирование (уровень регистровых передач).

3.Логический синтез (уровень логических вентилей).

4.Физический синтез (уровень транзисторов).

Основным средством поведенческого проектирования (первый этап) являются языки программирования высокого уровня (C/C++) и языки системного проектирования (SystemC, SystemVerilog). Результатом этого этапа, помимо уточнения требований и создания соответствующей документации, является программный эмулятор разрабатываемой аппаратуры. Важно отметить, что такие эмуляторы используются для верификации в качестве эталонных моделей.

На втором этапе с использованием языка описания аппаратуры (Verilog, VHDL) предельно точно описывается логическая структура и функционирование устройства. Широко распространенным подходом, применяемым при построении аппаратуры, является синхронизация подсистем с помощью так называемого синхроимпульса (тактового сигнала), который передается во все модули устройства и управляет пересылками сигналов внутри модулей и между ними. Такое описание называется моделью уровня регистровых передач

(RTL, register transfer level).

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

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

Нас, прежде всего, будет интересовать логическое (функциональное) проектирование

аппаратуры, которое охватывает первые три этапа. Особое внимание мы будем уделять проектированию на уровне регистровых передач и немного на уровне вентилей (gate-level design). Результатом логического проектирования является исполнимая модель (другими словами, программа), которую можно выполнять в специальной среде имитационного моделирования (симуляторе).

Всвоей работе мы будем использовать следующие инструменты:

1.Icarus Verilog (http://sourceforge.net/projects/iverilog) — Verilog-симулятор.

2.GTKWave (http://sourceforge.net/projects/gtkwave) — визуализатор диаграмм сигналов.

2

А.С. Камкин. Введение в логическое проектирование аппаратуры. Конспект лекций. 2012.

Домашнее задание. Установить указанные выше инструменты на домашний компьютер. Проще это сделать под Linux. Если вы привыкли работать в Windows, можете установить виртуальную машину VirtualBox (https://www.virtualbox.org).

Схемы из функциональных элементов

Различают схемы без памяти (комбинационные схемы) и схемы с памятью

(последовательные схемы). Одной из математических моделей комбинационных схем являются схемы из функциональных элементов (СФЭ). Другими моделями являются контактные схемы (C. Shannon, 1937) и двоичные решающие диаграммы (C. Lee, 1959). По сути, указанные формализмы являются разными способами представления функций алгебры логики (ФАЛ). Напомним определение СФЭ.

Определение. Базисом называется непустое множество функций алгебры логики.

Определение. Схемой из функциональных элементов (СФЭ) в базисе B называется размеченный ориентированный граф без циклов, в котором

1)вершины, являющиеся истоками, помечены символами переменных и называются входами (разным вершинам соответствуют разные переменные);

2)каждая вершина, в которую входит k 1 дуг, помечена функцией из базиса B, зависящей от k переменных (такие вершины называются функциональными элементами или вентилями);

3)некоторые вершины выделены как выходы (входные вершины могут быть и выходными).

Определение. Сложностью СФЭ называется число входящих в нее ФЭ.

Часто в качестве базиса используют { , , }. Соответствующие ФЭ называются

дизъюнктором (вентиль ИЛИ), конъюнктором (вентиль И) и инвертором (вентиль НЕ).

Графически вентили изображаются следующим образом (стандарт ANSI).

 

OR

Дизъюнкция (ИЛИ)

 

 

 

 

AND

Конъюнкция (И)

 

 

 

 

NOT

Отрицание (НЕ)

 

 

 

 

XOR

Сумма по модулю 2 (исключающее ИЛИ)

 

 

 

 

NOR

Стрелка Пирса (НЕ-ИЛИ)

 

 

 

 

NAND

Штрих Шеффера (НЕ-И)

 

 

 

 

XNOR

Эквиваленция (исключающее ИЛИ-НЕ)

 

 

 

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

Задание. Изобразить графически схемы, реализующие следующие функции:

1) мультиплексор 2-в-1 (if sel then out=in0 else out=in1);

3

А.С. Камкин. Введение в логическое проектирование аппаратуры. Конспект лекций. 2012.

2) мультиплексор 4-в-1.

Домашнее задание. Изобразить графически схемы, реализующие следующие функции:

1)демультиплексор 1-в-2 (if sel then out0=in else out1=in);

2)демультиплексор 1-в-4.

Представление схем на языке Verilog

Общая информация о языке

Язык Verilog был создан Филом Мурби (Phil Moorby) в 1983-1984 гг. в фирме Automated Integrated Design Systems (с 1985 г. Gateway Design Automation) как язык описания аппаратуры. (В 1990 г. Gateway Design Automation была куплена Cadence Design Systems.) Verilog, как и VHDL, относится к классу языков известных как HDL (hardware description languages). Язык Verilog часто сравнивают с языком программирования C, а VHDL — с языком Ada, в виду сходства некоторых синтаксических конструкций. Язык стандартизован в IEEE (стандарты IEEE 1364—{1995,2001,2005}). Имеется объектно-ориентированное расширение SystemVerilog (по большому счету, это новый язык, для которого Verilog является подмножеством).

Модули, пример “Hello World”

Основной сущностью языка Verilog является модуль. Модуль описывает часть схемы, решающую некоторую задачу. У модуля есть интерфейс (входные и выходные сигналы) и реализация (способ вычисления значений выходных сигналов по значениям входных сигналов). Ниже приведено описание интерфейса модуля mux4_1 (мультиплексора 4-в-1).

// начало

определения модуля (имя

и список интерфейсных сигналов)

module mux4_1(out, in0, in1, in2,

in3, sel);

output

out;

//

одноразрядный выход

input

in0, in1, in2, in3; //

одноразрядные входы

input

[1:0] sel;

//

двухразрядный вход

...

 

 

 

// конец определения модуля

 

 

endmodule

/* mux4_1 */

 

 

Как правило, каждый модуль определяется в отдельном файле, имя которого совпадает с именем модуля. В качестве расширения имени файла обычно используется *.v или *.vl. Приведенный выше модуль логично определить в файле mux4_1.v.

Рассмотрим пример простейшего модуля на языке Verilog, осуществляющего вывод на экран строки “Hello World”.

//модуль верхнего уровня не имеет интерфейсных сигналов

//(список в скобках можно опустить)

module hello_world;

initial begin // начало блока инициализации $display(“Hello World”); // вывод строки на печать

end // конец блока инициализации

//блоков инициализации может быть несколько

//конец определения модуля

endmodule /* hello_world */

Синтезируемое подмножество языка

Подмножество языка Verilog, состоящее из конструкций, допускающих представление в форме элементарных логических вентилей и триггеров, называется синтезируемым подмножеством. Очевидно, что конструкция $display() не является синтезируемой.

4

А.С. Камкин. Введение в логическое проектирование аппаратуры. Конспект лекций. 2012.

Логические значения и операции над ними

В языке Verilog используется 4-значная логика. Возможны следующие логические значения:

0 – логический нуль;

1 – логическая единица;

X – неопределенное значение;

Z – высокий импеданс.

Логические значения {0,1,X} вместе с операциями над ними образуют сильную трехзначную логику Клини (0 & X = X & 0 = 0; 1 & X = X & 1 = X).

Использование логического значения Z в выражении приводит к такому же результату, что и при использовании значения X (например, 1 & Z = X). Другими словами, Z — это частный, но особо выделенный случай неопределенного значения.

Над логическими значениями определены следующие операции:

& — И;

| — ИЛИ;

^ — исключающее ИЛИ;

~ — НЕ;

~& — НЕ-И (только в редуцированной форме: ~&v, v — вектор);

~| — НЕ-ИЛИ (только в редуцированной форме: ~|v, v — вектор);

~^ — исключающее НЕ-ИЛИ.

Сравнение ==, != (X если хотя бы один из операндов X или Z), ===, !==.

Следует заметить, что данные операции можно применять и для многоразрядных сигналов (в этом случае операция осуществляется поразрядно).

При моделировании на уровне логических вентилей можно использовать соответствующие модули: buf(out, in), not (для buf и not можно задавать несколько выходов, вход должен быть один), and(out, in1, in2), or, xor, nor, nand, xnor (можно задавать более двух входов).

Многоразрядные константы

В языке Verilog используется следующий формат многоразрядных (числовых) констант:

разрядность система_счисления значение . В значении для наглядности можно использовать незначащий символ _. Примеры констант приведены ниже.

4’b1001

64’h0

16’b1010_0101_1111_0000 16’hDEAD

Задание. Чему равно значение выражения:

2’bZX^2’bZX (2’bXX);

4’b01XZ&4’bXZX1 (4’b0XXX).

Непрерывное присваивание

Комбинационные схемы обычно определяются с помощью конструкции непрерывного присваивания:

wire out;

assign out = in1 & in2;

5

А.С. Камкин. Введение в логическое проектирование аппаратуры. Конспект лекций. 2012.

wire out = in1 & in2;

В операторе непрерывного присваивания можно задавать величину задержку:

wire

out;

 

 

 

assign #10 out =

in1

&

in2;

assign

out = #10

in1

&

in2;

wire

#10 out;

 

 

 

assign

out = in1

& in2;

Пример. Тактовый генератор.

assign clk = #10 ~clk;

Пример. Штрих Шеффера (вентиль НЕ-И).

module nand(out, in0, in1); output out;

input in0, in1;

assign out = ~(in0 & in1); endmodule /* nand */

Для задания единицы измерения времени используется директива `timescale единица /точность . Допускаются следующие значения {1 | 10 | 100} {s | ms | us | ns | ps}.

Пример. Использование директивы `timescale.

`timescale 10ps/1ps

assign #1.23 out = in1 & in2; // задержка 12 ps

Пример. Мультиплексор 4-в-1.

module mux4_1(out, in0,

in1, in2,

in3, sel0, sel1);

output

out;

 

 

 

 

input

in0, in1, in2,

in3;

 

input

sel1,

sel0;

 

 

 

assign

out =

(~sel1

&

~sel0 &

in0) |

 

 

(~sel1

&

sel0 &

in1) |

 

 

( sel1

&

~sel0 &

in2) |

 

 

( sel1

&

sel0 &

in3);

endmodule /* mux4_1 */

Операции над битовыми массивами

val[i] — доступ к элементу;

val[i2:i1] — получение подмассива;

{val1, ..., valn} — конкатенация;

n{val} — повторение ({val, …, val}).

Инстанцирование модулей

Инстанцирование модулей рассмотрим на следующем примере.

module testbench; reg clk;

wire [7:0] data;

count target(

.clk(clk),

.data(data)

);

initial begin clk = 1'b0;

6

А.С. Камкин. Введение в логическое проектирование аппаратуры. Конспект лекций. 2012.

#10;

clk = 1'b1;

...

end

endmodule /* testbench */

Домашнее задание. Опишите на языке Verilog следующие модули:

1)8-битный сумматор.

2)демультиплексор 1-в-4.

7

А.С. Камкин. Введение в логическое проектирование аппаратуры. Конспект лекций. 2012.

Лекция 2 «Схемы с памятью»

Введение

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

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

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

Абстрактный автомат

Определение. Абстрактным автоматом называется четверка S, X, Y, T , где:

S – множество состояний;

X – множество входных символов (стимулов);

Y – множество выходных символов (реакций);

T S X Y S – отношение переходов.

Определение. Автомат с выделенным начальным состоянием s0 называется инициальным. Определение. Если отношение переходов конечно, автомат называется конечным.

Определение. Автомат называется детерминированным, если для любой пары переходов (s1, x1, y1, s1') и (s2, x2, y2, s2') из равенства (s1, x1) = (s2, x2) вытекает равенство (y1, s1') = (y2, s2').

Другими словами, для детерминированного автомата существует функциональные зависимости результирующего состояния (s') и реакции (y) от исходного состояния (s) и

стимула (x): : S X S (функция переходов) и : S X Y (функция выходов). В дальнейшем будем рассматривать только детерминированные инициальные конечные автоматы, называя их просто автоматами.

Автомат функционирует в дискретном времени t = 0, 1, 2, ... Обозначим, через s(t), x(t) и y(t) состояние автомата, подаваемый стимул и выдаваемую реакцию в момент времени t. Тогда, функционирование автомата описывается следующими уравнениями (*):

s(0) = s0;

s(t+1) = (s(t), x(t)); y(t) = (s(t), x(t)).

Следует сразу отметить, что различают два типа автоматов: автоматы Мили и автоматы Мура. В отличие от автоматов Мили, функционирование которых описывается уравнениями (*), в автоматах Мура функция выходов зависит только от текущего состояния (**):

8

А.С. Камкин. Введение в логическое проектирование аппаратуры. Конспект лекций. 2012.

s(0) = s0;

s(t+1) = (s(t), x(t)); y(t) = (s(t)).

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

Существует множество способов описания конечных автоматов. Наиболее известными являются графический и табличный методы. В первом из них автомат представляется графом переходов – ориентированным графом, вершинами которого являются состояния, а дугами – переходы (каждая дуга помечается стимулом и реакцией). В табличном способе автомат представляется в форме таблиц (двух или одной):

:X\S

s1

...

sn

 

:X\S

s1

...

sn

 

X\S

s1

...

sn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1

s11

...

sn1

 

x1

y11

...

yn1

 

x1

s11/y11

...

sn1/yn1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

...

...

...

...

 

...

...

...

...

 

...

...

...

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xm

s1m

...

snm

 

xm

y1m

...

ynm

 

xm

s1m/y1m

...

snm/ynm

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Описание абстрактного автомата соответствует этапу поведенческого проектирования, на котором определяется функциональность устройства.

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

Структурный автомат

Если абстрактный автомат является лишь абстрактной моделью реагирующей системы, то в структурном автомате учитывается кодирование состояний, входных и выходных символов, а также его внутреннее устройство на уровне структурных схем.

Определение. Структурным автоматом (структурных схемой автомата) называется конечный автомат, в котором состояния, стимулы и реакции представлены в форме двоичных векторов, заданы типы элементов памяти для хранения состояния, функции переходов и выходов реализованы в форме комбинационных схем (КС).

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

Структурный автомат можно представить состоящим из двух частей: (1) элементов памяти и

(2) комбинационной схемы.

9

А.С. Камкин. Введение в логическое проектирование аппаратуры. Конспект лекций. 2012.

x1(t) xn(t)

...

 

 

...

...

...

s1(t)

sk(t)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s1

...

sk

 

 

 

КС

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s1(t+1)

 

sk(t+1)

 

 

...

...

 

 

 

 

...

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y1(t)

 

ym(t)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Функция (s1(t+1), ..., sk(t+1)) называется функцией возбуждения памяти автомата (она зависит от типов и элементов памяти и, вообще говоря, не обязана совпадать с функцией переходов ); сигналы (s1(t), ..., sk(t)) образуют обратную связь от памяти к комбинационной схеме.

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

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

Триггеры

В общем случае возможны разные типы элементов памяти — триггеры. Триггеры бывают синхронными и асинхронными. Некоторые разновидности триггеров, например, RS-триггеры, допускают как синхронное, так и асинхронное исполнение. Триггер называется синхронным, если его работа управляется тактовым сигналом (обозначаемым C или CLK от англ. clock).

Тактовый сигнал

Фронты тактового сигнала разбивают непрерывное время на дискретный набор интервалов, называемых тактами. Фронтом называется изменение уровня сигнала с низкого на высокий

(положительный фронт, positive edge) или с высокого на низкий (отрицательный фронт, negative edge). Для простоты будем считать, что схемы работают по положительному фронту, то есть входные сигналы считываются при высоком уровне тактового сигнала и игнорируются при низком уровне.

Самыми распространенными типами элементов памяти являются D-, RS- (SR-) и JKтриггеры. D-триггеры (от англ. delay) являются синхронными, RS- (от англ. reset/set) и JRтриггеры (от англ. jump/kill) могут быть как синхронными, так и асинхронными. Ниже представлены таблицы переходов для данных типов триггеров.

D\T

0

1

 

RS\T

0

1

 

JK\T

0

1

0

0

0

 

00

0

1

 

00

0

1

1

1

1

 

01

1

1

 

01

0

0

 

 

 

 

10

0

0

 

10

1

1

 

 

 

 

 

 

 

 

11

1

0

10