Если необходимо, чтобы выделяемые временные интервалы на диаграммах своими границами точно устанавливались на деления сетки времени (см. пункт 27), следует предварительно нажать кнопку "Snap to Grid" на вертикальной панели инструментов.

32. 

Подпись: 

Рис. 9. Сформированные временные диаграммы входных узлов

Выбрать в главном меню "File\Save".

1.6. Моделирование проектируемого устройства

33.  Выбрать в главном меню "Tools\Simulator Tool" ("Инструменты\Параметры симулятора"). В появившемся окне "Simulator Tool" (рис. 10) в списке "Simulation mode:" ("Режим моделирования:") выбрать строку "Timing" ("Временной").

При установке режима "Functional" ("Функциональный") в результате моделирования будут получены идеальные временные диаграммы сигналов выходных узлов без учета реальных аппаратных задержек, что может быть полезно на предварительных этапах проектирования. В режиме "Временной" будут получены диаграммы с задержками сигналов, определяемыми числом элементов на пути распространения сигнала и выбранным типом микросхемы. Кроме того, в режиме "Временной" симулятором обнаруживаются так называемые "Glitches" ("Выбросы") – не обусловленные логикой проекта двукратные и более перепады логического уровня за короткие промежутки времени.

Щелкнуть по кнопке с тремя точками справа от поля "Simulation input:" ("Входные данные для моделирования:"), указанной на рис. 10 вертикальной белой стрелкой. Убедиться в том, что в поле занесено имя подготовленного файла временных диаграмм "*.vwf".

НЕ нашли? Не то? Что вы ищете?

На панели "Simulation period" ("Период моделирования") включить радио-кнопку "Run simulation until all vector stimuli are used" ("Моделировать, пока все входные сигналы не будут использованы"), указанную верхней горизонтальной стрелкой на рис. 10.

На панели "Simulation options" ("Параметры моделирования") установить "галочку" в строке "Automatically add pins to simulation outputs waveforms" ("Автоматически включать выходные узлы в результирующие временные диаграммы"), указываемую нижней горизонтальной стрелкой.

Подпись: 

Рис. 10. Окно установки параметров симулятора

Установка указанного выше свойства обеспечит автоматическое добавление в исходный файл "*.wvf" всех существующих выходных узлов с их диаграммами. Это свойство не следует включать, если вы хотите наблюдать диаграммы только части выходных узлов. В этом случае их необходимо ввести вручную. Остальные свойства на панели "Simulation options" обеспечивают следующее:

·  "Check outputs" ("Контроль выходных диаграмм") – побуждает симулятор сравнивать сформированные разработчиком ожидаемые диаграммы выходных сигналов с диаграммами, получаемыми в результате моделирования;

·  "Setup and hold time violation detection" ("Обнаружение нарушений времени предустановки и времени удержания") – контролирует процесс моделирования на наличие нарушений параметров "время предустановки" и "время удержания" и сообщает о них в окне сообщений;

·  "Glitch detection" ("Обнаружение выбросов") – контролирует процесс временного моделирования на наличие выбросов и сообщает о них в окне сообщений;

·  "Overwrite simulation input file with simulation results" ("Обновление входного файла "*.vwf" c добавлением результатов моделирования") – включает режим обновления файла временных диаграмм.

34.  Закрыть окно "Simulator Tool".

35.  Выбрать в главном меню "Processing\Start Simulation" ("Процессы\Запуск моделирования"). На экране появится окно "Simulation Report" ("Отчет о моделировании"), а в окне состояния процесса начнет отражаться объем выполнения процесса моделирования. После завершения моделирования на экране появится информационное окно с сообщением о завершении процесса. Его следует закрыть, щелкнув по кнопке "OK".

Подпись: 

Рис. 11. Окно отчета о моделировании с разделом временных диаграмм

Если моделирование завершилось успешно, то на экране останется окно "Simulation Report", представленное на рис. 11. Окно состоит из двух частей: левой – "Report Window Contents" ("Содержание окна отчета"), в которой можно выбрать требуемый раздел отчета о моделировании, и правой – "Report Window Section" ("Демонстрационная секция отчета"), в которой представлено содержание выбранного раздела отчета. По умолчанию в демонстрационной секции представлен раздел "Simulator\Simulation Waveforms" ("Симулятор\Диаграммы моделирования"). Если раздел оказался неподключенным, например если симулятор запускался из окна "Simulator Tool", его следует подключить, выбрав соответствующую строку в списке "Содержание окна отчета".

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

1.7. Измерение временных задержек

36.  Установить "Master Time Bar" ("Главный временной маркер", далее просто главный маркер) на логический фронт входных сигналов, соответствующий моменту времени 200 нс, как это показано на рис 11. Для этого щелкнуть требуемое количество раз по одной из кнопок "Master Time Bar Arrows" ("Кнопки перемещения главного маркера"), указанных на рис. 11 вертикальной белой стрелкой.

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

37. 

Подпись: 

Рис. 12. Окно создания штрихового маркера

Увеличить, если требуется, временной масштаб. Для этого щелкнуть по кнопке "Zoom Tool" ("Изменение масштаба") на вертикальной панели инструментов (на кнопке изображена лупа со знаком "±"). Далее, поставив курсор мыши в то место на поле временных диаграмм, которое предполагается сделать центральным, щелкнуть необходимое количество раз левой кнопкой. Если необходимо уменьшить масштаб – следует щелкнуть правой кнопкой мыши. Отключить кнопку изменения масштаба, щелкнув по кнопке "Selection Tool" (кнопка на вертикальной панели инструментов с изображением курсора мыши в виде стрелки).

38.  Щелкнуть правой кнопкой мыши по движку главного маркера (см. рис. 11). В контекстном меню выбрать строку "Insert Time Bar…" ("Установить маркер…", далее – штриховой маркер). В появившемся окне "Insert Time Bar" (рис. 12), не меняя параметров, щелкнуть по кнопке "OK". В месте установки главного маркера появится штриховой маркер (маркеры будут наложены друг на друга).

39.  Однократно щелкнуть по кнопке перемещения главного маркера вправо. Он перейдет на следующий по времени логический фронт, то есть фронт изменения функции "y". У движка штрихового маркера, оставшегося на старом месте, появится число, обозначающее его смещение по времени относительно главного маркера (-10 ns), как это изображено на рис. 13. Это смещение, очевидно, равно задержке между фронтами входных сигналов "x1" и "x2", на которых установлен штриховой маркер, и фронтом функции "y", на котором установлен главный маркер.

40.  Выбрать в главном меню "File\Save Project" ("Файл\Записать проект").

1.8. Извлечение информации о назначении выводов

41.  Выбрать в главном меню "Tools\Compiler Tool" ("Инструменты\Управление компилятором"). В окне "Compiler Tool" щелкнуть по кнопке "Report". На экране появится окно "Compilation Report" ("Отчет компилятора"), представленное на рис. 14. В левой секции окна "Report Window Contents" ("Содержание окна отчета") щелкнуть по кнопке у строки "Fitter" ("Компоновщик"), указываемой на рис. 14 белой стрелкой. В

Подпись: 

Рис. 13. Измерение временной задержки с помощью маркеров

появившемся списке разделов компоновщика выбрать строку "Fitter Summary" ("Общие сведения компоновщика").

В правой секции окна отчета компилятора появятся общие данные, из которых наибольший интерес представляют последние две строки:

·  "Total macrocells …" – всего задействовано макроячеек (элементарных логических блоков);

·  "Total pins …" – всего задействовано выводов (выводов ввода/вывода, включая выводы программирования).

42.  В списке разделов компоновщика выбрать строку "Pin-Out File" ("Файл выводов"). В правую секцию окна отчета компилятора загрузится файл с информацией о назначениях, сделанных компилятором всем выводам микросхемы.

Выводы, носящие имена (Pin name), присвоенные компилятором, а не разработчиком, имеют следующее назначение:

·  GND+ – неиспользуемый входной вывод, он должен быть подключен к "земле" (gnd);

·  VCCINT – предопределенный вывод питания, должен быть подключен к питанию (vcc), например+3,3 В;

·  VCCIO - предопределенный вывод питания, должен быть подключен к питанию (vcc);

·  TDI, TMS, TCK, TDO – предопределенные выводы для подключения тестирующих сигналов стандарта JTAG или устройства программирования микросхемы в системе (на плате);

·  GND – предопределенный вывод подключения к "земле", должен быть подключен к общему проводу (gnd);

·  GND* - неиспользуемый вывод ввода/вывода, может быть не подключен или подключен к "земле" (gnd); такое подключение улучшает помехоустойчивость устройства.

В столбце "Loc." указаны номера выводов микросхемы.

Обозначение LVTTL (low voltage TTL) в столбце "I/0 Standard" ("Стандарт ввода/вывода") означает, что уровень логической единицы - +3,3 В/+2,5 В, а уровень логического нуля – 0 В.

Подпись: 

Рис. 14. Окно отчета компилятора

2. Язык AHDL

В практике разработки цифровых устройств находят применение несколько языков описания аппаратуры. Наиболее распространенными являются универсальные языки VHDL [6] и Verilog [4, 5]. Они могут быть использованы для проектирования, документирования и моделирования устройств различного уровня сложности и поддерживаются пакетами САПР большинства производителей электронных компонент и инструментальных средств проектирования. Другой тип языков, таких, например, как ABEL фирмы Xilinx или AHDL [2] фирмы Altera, является менее универсальным как в отношении своих возможностей, так и в отношении поддержки различными САПР. Эти языки обычно базируются на использовании аппаратных технических решений конкретного производителя микросхем и поддерживаются лишь его программным обеспечением.

В настоящем приложении приводятся основные сведения о языке описания аппаратуры AHDL фирмы Altera.

2.1. Структура текстового описания устройства

Описание цифрового устройства (модуля) на языке AHDL представляется в текстовом файле с расширением *.tdf (text design file – текстовый конструкторский файл). Файл содержит следующие разделы.

1. Предварительный раздел. Содержит вспомогательные операторы include, constant и др. Раздел в оригинальном описании названия не имеет. Все, что находится в этом разделе, считается расположенным за пределами разделов. Начинается с началом файла, заканчивается перед ключевым словом subdesign. Раздел не является обязательным.

2. Интерфейсный раздел (subdesign section). Содержит объявления входных и выходных портов (выводов) данного модуля. Начинается ключевым словом subdesign, за которым следует имя данного модуля. Такое же имя (без учета расширения) должно быть у рассматриваемого конструкторского файла. За именем располагается тело раздела, заключенное в круглые скобки. Раздел является обязательным.

3. Раздел переменных (variable section). Содержит объявления:

·  узлов (внутренних линий);

·  именованных буферов и триггеров, входящих в данный модуль;

·  именованных экземпляров модулей низкого уровня, описанных в других конструкторских файлах и используемых в данном проекте в качестве компонентов;

·  конечных автоматов, используемых в модуле;

·  псевдонимов конечных автоматов.

Раздел начинается ключевым словом variable, заканчивается перед ключевым словом begin, начинающим логический раздел. Раздел не является обязательным.

4. Логический раздел (logic section). Содержит описание проекта. Описание состоит из логических уравнений и логических операторов. Раздел начинается ключевым словом begin, заканчивается ключевым словом end и точкой с запятой. Раздел является обязательным.

Пример: содержание конструкторского файла "example_00.tdf".

% == предварительный раздел (эта строка – комментарий )== %

include "modul_01.inc";

constant def_addr = h"ff";

% =========== интерфейсный раздел ================ %

subdesign example_00

(

ina[7..0],addr[7..0],clk :input;

outa[7..0] :output;

)

% =========== раздел переменных ================== %

variable

a :node;

m1 :modul_01;

% =========== логический раздел =================== %

begin

m1.clk = clk;

m1.reset = vcc;

m1.adr[7..0] = addr[7..0];

m1.in[7..1] = ina[7..1];

a = not ina[0];

m1.in[0] = a;

if (addr[7..0] == def_addr) then

outa[7..0] = gnd;

else

outa[7..0] = m1.out[7..0];

end if;

end;

2.2. Алфавит

Алфавит языка AHDL (набор символов, используемых для создания синтаксических конструкций) содержит:

·  латинские буквы a..z (прописные и строчные буквы не различаются), предназначенные для создания имен переменных и других объектов проекта;

·  арабские цифры 0..9, предназначенные для создания числовых констант и имен переменных;

·  знаки препинания и разделители (запятая, точка с запятой, пробел, переход на новую строку, табуляция), предназначенные для отделения элементов синтаксических конструкций друг от друга;

·  специальные символы (представлены в табл. 2.1).

Таблица 2.1

Специальные символы языка AHDL

СИМВОЛ

НАЗВАНИЕ

НАЗНАЧЕНИЕ

ПРИМЕР

_

ПОДЧЕРКИВАНИЕ

СОЗДАНИЕ ИМЕН ПЕРЕМЕННЫХ И Т. П.

bus_a

-

ТИРЕ

ЗНАК МИНУС В ВЫРАЖЕНИЯХ

10 - 3

/

ПРЯМОЙ СЛЕШ

В ИМЕНАХ ПЕРЕМЕННЫХ И Т. П.

dec/mult

--

ДВА ТИРЕ

НАЧАЛО ОДНОСТРОЧНОГО КОММЕНТАРИЯ

-- после загруз.

%

ПРОЦЕНТ

НАЧАЛО И КОНЕЦ МНОГОСТРОЧНОГО КОММЕНТАРИЯ

% модуль сумматора %

( )

КРУГЛЫЕ СКОБКИ

В ВЫРАЖЕНИЯХ, ФУНКЦИЯХ, ВРЕМЕННЫХ ГРУППАХ И ДР. ОПЕРАТОРАХ

a=b and (c or x) (a, adr[2..0], c)

[ ]

КВАДРАТНЫЕ СКОБКИ

УКАЗАНИЕ ИНДЕКСОВ НАЧАЛЬНОГО И КОНЕЧНОГО ЭЛЕМЕНТОВ ГРУППЫ (ШИНЫ)

data[7.. 0]

' '

ОДИНОЧНЫЕ КАВЫЧКИ

СОЗДАНИЕ ИМЕН ПЕРЕМЕННЫХ И ДР. ОБЪЕКТОВ В КАВЫЧКАХ (QUOTED NAMES)

'register1'

'8086'

" "

ДВОЙНЫЕ КАВЫЧКИ

ОБОЗНАЧЕНИЕ СТРОКОВЫХ КОНСТАНТ, ИМЕН ФАЙЛОВ И ЧИСЛОВЫХ КОНСТАНТ С ОДНИМ ИЗ НЕДЕСЯТИЧНЫХ ОСНОВАНИЙ

"display"

"decoder. inc"

b""

.

ТОЧКА

ОБОЗНАЧЕНИЕ ПОРТОВ В ПРИМИТИВАХ ИЛИ МОДУЛЯХ

reg1.clk

add. data[7.. 0]

..

ДВЕ ТОЧКИ

РАЗДЕЛЕНИЕ ГРАНИЦ ИНДЕКСОВ ГРУППЫ

ind[3.. 0]

:

ДВОЕТОЧИЕ

ОБЪЯВЛЕНИЕ ПОРТОВ, УЗЛОВ И ИМЕНОВАННЫХ МОДУЛЕЙ

clk : input;

reg1[3.. 0] : dff;

=

РАВНО

ОБОЗНАЧЕНИЕ ОПЕРАЦИИ ПРИСВАИВАНИЯ

a = b and c;

=>

СТРЕЛКА

ЭЛЕМЕНТ ОПЕРАТОРОВ CASE И TRUTH TABLE

when 7 => gnd

+

ПЛЮС

ОПЕРАЦИЯ СЛОЖЕНИЯ

5 + 4

==

ДВА ЗНАКА РАВНО

ОПЕРАЦИЯ СРАВНЕНИЯ "РАВНО"

if a[3..0]==h"f"

!

ВОСКЛИЦАТЕЛЬНЫЙ ЗНАК

ОБОЗНАЧЕНИЕ ЛОГИЧЕСКОЙ ОПЕРАЦИИ NOT (НЕ)

a = !b

!=

ВОСКЛИЦАТЕЛЬНЫЙ ЗНАК И ЗНАК РАВНО

ОПЕРАЦИЯ СРАВНЕНИЯ "НЕ РАВНО"

if a[3..0]!=h"0"

ЗНАК БОЛЬШЕ

ОПЕРАЦИЯ СРАВНЕНИЯ "БОЛЬШЕ"

if

a[3.. 0]>h"7"

>=

ЗНАК БОЛЬШЕ ИЛИ РАВНО

ОПЕРАЦИЯ СРАВНЕНИЯ "БОЛЬШЕ ИЛИ РАВНО"

if

a[3.. 0]>=h"7"

ЗНАК МЕНЬШЕ

ОПЕРАЦИЯ СРАВНЕНИЯ "МЕНЬШЕ"

if

a[3.. 0]<h"3"

<=

ЗНАК МЕНЬШЕ ИЛИ РАВНО

ОПЕРАЦИЯ СРАВНЕНИЯ "МЕНЬШЕ ИЛИ РАВНО"

if

a[3.. 0]<=h"3"

&

АМПЕРСАНД

КРАТКОЕ ОБОЗНАЧЕНИЕ ОПЕРАЦИИ AND (И)

c = a & b;

!&

ВОСКЛИЦАТЕЛЬНЫЙ ЗНАК И АМПЕРСАНД

КРАТКОЕ ОБОЗНАЧЕНИЕ ОПЕРАЦИИ NAND (И – НЕ)

c = a!& b;

$

ДОЛЛАР

КРАТКОЕ ОБОЗНАЧЕНИЕ ОПЕРАЦИИ XOR (ИСКЛЮЧАЮЩЕЕ ИЛИ)

c = a $ b;

!$

ВОСКЛИЦАТЕЛЬНЫЙ ЗНАК И ДОЛЛАР

КРАТКОЕ ОБОЗНАЧЕНИЕ ОПЕРАЦИИ NXOR (ИСКЛЮЧАЮЩЕЕ ИЛИ - НЕ)

c = a!$ b;

#

ФУНТ

КРАТКОЕ ОБОЗНАЧЕНИЕ ОПЕРАЦИИ OR (ИЛИ)

c = a # b;

!#

ВОСКЛИЦАТЕЛЬНЫЙ ЗНАК И ФУНТ

КРАТКОЕ ОБОЗНАЧЕНИЕ ОПЕРАЦИИ NOR (ИЛИ - НЕ)

c = a!# b;

?

ЗНАК ВОПРОСА

ЭЛЕМЕНТ ОБОЗНАЧЕНИЯ ТЕРНАРНОЙ ОПЕРАЦИИ

a>b? c#d:c&d

2.3. Ключевые слова

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8