Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
POPOVA.pdf
Скачиваний:
406
Добавлен:
11.04.2019
Размер:
816.46 Кб
Скачать

Литература

1.Поляков А.К. Языки VHDL и Verilog в проектировании цифровой аппаратуры. -

М.: СОЛОН-Пресс, 2003. - 313 с.

2.Стешенко В.Б. EDA. Практика автоматизированного проектирования радиоэлектронных устройств. - М.: Нолидж, 2002. - 766 с.

3.Угрюмов Е.П. Цифровая схемотехника. - СПб.: БХВ-Петербург, 2002. - 528 с.

4.Попова Т.В. Основы логического проектирования интегральных схем. - М.: МИ-

ЭТ, 2002. - 91 с.

5.Автоматизация проектирования БИС / Под ред. Г.Г. Казеннова: В 6 кн. - Кн. 2: Савельев П.В., Коняхин В.В. Функционально-логическое проектирование БИС. - М.: Выс-

шая школа, 1990. - 156 с.

6.Киносита К., Асада К., Карацу О. Логическое проектирование СБИС. - М.: Мир, 1988. - 308 с.

7.Clifford E. Cummings. Correct Methods For Adding Delays To Verilog Behavioral

Models.

Sunburst

Design,

Inc

2001.

http://www.sunburst-

design.com/papers/CummingsHDLCON1999_ BehavioralDelays_Rev1_1.pdf

 

8. Mentor

Graphics

ModelSim

 

Verilog/PLI

Technology

notes

http://model.com/support/technotes.asp?id=103

 

 

 

 

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Приложение 1. Ключевые слова и символы языка Verilog,их названия, назначения, форматы

<разрядность>′<основание> <число> - формат записи целого числа, в котором разрядность определяет количество бит под представление числа, а основание определяет выбранную систему счисления:

b или B - двоичную, d или D - десятичную,

h или H - шестнадцатеричную, о или О - восьмеричную.

Десятичные числа могут быть записаны без указания разрядности и основания.

x, z - символы для обозначения неопределенного и высокоимпедансного состояния, указываются вместо цифры в числах; например: 4b1x01.

integer <имя величины или перечень имен через запятую>; - объявление целых величин.

real <имя величины или перечень имен через запятую>; - объявление действительных величин.

parameter <имя параметра> = <численное значение параметра>; - объявление параметра.

input <имя порта или перечень имен через запятую>; - объявление портов как входов. output <имя порта или перечень имен через запятую>; - объявление портов как выхо-

дов.

inout <имя порта или перечень имен через запятую>; - объявление порта как двунаправленного элемента.

wand <имена входов и выхода через запятую>; - объявление объединения выходов как монтажного И.

wor <имена входов и выхода через запятую>; - объявление объединения выходов как монтажного ИЛИ.

supply 0 <имя узла подключения заземления>; - объявление узла подключения источника заземления.

supply 1 <имя узла подключения источника питания>; - объявление узла подключения источника питания.

wire <имя порта или перечень имен через запятую>; - назначение данным типа цепь (назначается также по умолчанию).

reg <имя порта или перечень имен через запятую>; - назначение данным типа "регистр"; обязательно назначается данным, определяемым в блоках always и initial.

[N2:N1] <имя порта или перечень имен через запятую>; - объявление портa векторной величиной; N2 - старший разряд.

always @ (<имя переменной 1> or <имя переменной 2> or…) - блок always; запись означает, что следующее за ней действие выполняется при изменении хотя бы одной переменной из списка (называется списком чувствительности) до тех пор, пока процесс моделирования не будет остановлен директивами $finish или $stop. Вместо or может использоваться запятая. Блок always работает только с данными типа reg.

always # <T> <оператор> - одна из форм блока always, применяется при изменении одной переменной.

# <T> - признак задержки, где Т может быть целым, действительным числом или функцией.

posedge, negedge - ключевые слова для обозначения перехода сигнала из 0 в 1 и из 1 в 0 соответственно; применяются в списке чувствительности блока always.

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

initial begin

 

- блок инициализации, с помощью которого осущест-

<группа операторов>

вляется моделирование; включает в себя группу опе-

end

 

раторов, которые будут выполняться с момента старта

 

 

моделирования.

initial <оператор> - частный случай блока initial для одного оператора.

begin [: <имя

- операторные скобки, в которые за-

блока>]

ключается группа операторов; при-

..............................

меняется в конструкциях always, ini-

...

tial и др.

end

 

 

или

 

 

begin ... end

 

 

module <имя модуля> (<список портов>); - формат первой строки базовых, головного и субмодулей.

endmodule - ключевое слово, завершающее описание модуля.

<имя модуля> <имя экземпляра модуля> (<список портов>); - описание экземпляра модуля или обращение к модулю нижнего уровня из модуля верхнего уровня (ссылка на внутренний модуль).

(. <имя порта в модуле> (<имя порта в экземпляре модуля>),...)); - список портов при использовании прямого назначения (применяется при описании экземпляра модуля).

`timescale <N1> [ns или ps] / <N2> [ps или ns] - первая строка тестового модуля. N1 - масштабный коэффициент, соответствующий числам с символом #; N2 - точность моделирования.

module <имя модуля>_tb - формат записи для обозначения тестового модуля; tb (TestBench) - обязательная составная часть имени тестового модуля.

<ключевое слово> <имя> (<список выходов> <список входов>); - формат для описания встроенных примитивов.

Перечень ключевых слов:

and - ЛЭ И; один выход и несколько входов; nand - ЛЭ И-НЕ; один выход и несколько входов; or - ЛЭ ИЛИ; один выход и несколько входов;

nor - ЛЭ ИЛИ-НЕ; один выход и несколько входов;

xor - ЛЭ исключающее ИЛИ; один выход и несколько входов; xnor - ЛЭ исключающее ИЛИ-НЕ; один выход и несколько входов; buf - буферный элемент; один вход и несколько выходов;

not - ЛЭ НЕ; один вход и несколько выходов.

assign <имя переменной> = (операторы Verilog); значение переменной вычисляется заново каждый раз при изменении хотя бы одного оператора в правой части; конструкция

работает только с переменными типа wire.

 

 

if (<условие>)

- оператор условного перехода; вычис-

<1-й

опера-

ляется условие, и в зависимости от ре-

тор>

 

зультата

выполняется

либо

первый

else

 

оператор (если результат - истина), ли-

<2-й

опера-

бо второй (ложь); если используется

тор>;

 

группа операторов, то она заключается

 

 

в операторные скобки begin ... end.

case ({объединяемые ве-

- оператор выбора (разно-

личины})

 

 

видности

casex,

casez);

<условие1>: <оператор1>;

операторы выполняются в

……………….

 

зависимости от

условия;

default: <оператор>;

условие является

числен-

endcase

 

 

ной величиной;

в default

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

указывается неучтенная в условиях ситуация; несколько операторов заключаются в операторные скобки. Допускается вложенность операторов if и case: if ... case или case ...

if.

<условное логическое выражение> ? <истинно> : <ложно>; - оператор ветвления;

запись y = s ? x : r означает что если s - истинно, то y = x, иначе y = r.

while (<условие>) - оператор цикла; следующие за while операторы выполняются, пока заданное условие истинно.

for (<инициализация переменной>;<условие продолжения>;<увеличение переменной>) - оператор цикла; дает возможность инициализировать, проверять и увеличивать индексную переменную явным способом.

repeat (<условие>) - оператор цикла с заданным числом повторений.

forever <установка> <оператор>; - оператор вечного цикла; вычисления повторяются до конца моделирования.

$display[<ключевой символ формата>] (<строки>, <выражения>, <переменные>); - директива для вывода результатов моделирования; по умолчанию $displayd.

$monitor - формат аналогичен $display; в отличие от $display вывод формируется при любом изменении переменных.

$finish - директива для обозначения окончания моделирования.

$stop - директива приостанавливает моделирование и переводит систему в интерактивный режим.

PDF created with FinePrint pdfFactory Pro trial version http://www.fineprint.com

Соседние файлы в предмете Программирование логических интегральных схем