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

литература / kondratenko_yu_p_mokhor_v_v_sidorenko_s_a_verilog_hdl_dlya_m

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

62

Verilog-HDL для моделирования и синтеза цифровых электронных схем

Рис. 3.6. Блок-диаграмма для сумматора восьмиразрядных беззнаковых целых чисел

Ниже приведен Verilog-код, полученный в результате автоматической трансляции блок-диаграммы, представленной на рис. 3.6.

//---------------------------------------------------

//Title : Adder_8bit

//Design : Verilog_book

//Author : serh_syd

//Company : NPK_SIGNAL

//--------------------------------------------------

//File :

Учебное§ 3. Синтезпособиеструктурных моделей цифровых устройств

63

 

// c:\My_Designs\Verilog_book\compile\Adder_8bit.v

 

 

 

 

// Generated : Thu Jul 18 17:03:06 2002

 

 

// From :

 

 

 

// c:\My_Designs\Verilog_book\src\Adder_8bit.bde

 

 

// By : Bde2Verilog ver. 2.01

 

 

//

 

 

 

//---------------------------------------------------

 

 

 

// Description :

 

 

// Simple adder for 8-bit unsigned numbers

 

 

//

 

 

 

//---------------------------------------------------

 

 

 

// synopsys translate_off

 

 

`ifdef _VCP

 

 

`else

 

 

 

`define library(a,b)

 

 

`endif

 

 

 

// synopsys translate_on

 

 

// ----------

Design Unit Header ----------

 

 

`timescale 1ps / 1ps

 

 

module Adder_8bit (X1, X2, Carry, Sum) ;

 

 

// ------------ Port declarations ---------

 

 

input [7:0] X1,X2;

 

 

wire [7:0] X1,X2;

 

 

output Carry;

 

 

wire Carry;

 

 

output [7:0] Sum;

 

 

wire [7:0] Sum;

 

 

// ----------- Signal declarations --------

 

 

wire NET1450, NET1462, NET1474, NET1486;

 

 

wire NET1498, NET1510, NET1522, NET1534;

 

 

wire NET1538, NET1553, NET1561, NET1565;

 

 

wire NET1573, NET1581, NET1589, NET1597;

 

 

wire NET1605, NET1653, NET1679, NET1687;

 

 

wire NET1695, NET1703, NET1711, NET1745;

 

 

 

 

 

64

Verilog-HDL для моделирования и синтеза цифровых электронных схем

 

 

 

wire NET1753, NET1761, NET1769, NET1775;

 

wire NET1783, NET1791, NET1799;

 

// -------- Component instantiations -------

 

DeMux U1

 

(

 

.X(X1),

 

.Y0(NET1534),

 

.Y1(NET1605),

 

.Y2(NET1653),

 

.Y3(NET1679),

 

.Y4(NET1687),

 

.Y5(NET1695),

 

.Y6(NET1703),

 

.Y7(NET1711)

 

);

 

Mux U11

 

(

 

.X(Sum),

 

.Y0(NET1745),

 

.Y1(NET1753),

 

.Y2(NET1761),

 

.Y3(NET1769),

 

.Y4(NET1799),

 

.Y5(NET1791),

 

.Y6(NET1783),

 

.Y7(NET1775)

 

);

 

Full_Adder U12

 

(

 

.Carry_In(NET1450),

 

.Carry_Out(NET1462),

 

.S(NET1753),

 

.X1(NET1605),

 

.X2(NET1553)

 

);

 

DeMux U2

 

 

Учебное§ 3. Синтезпособиеструктурных моделей цифровых устройств

65

(

.X(X2),

.Y0(NET1538),

.Y1(NET1553),

.Y2(NET1561),

.Y3(NET1565),

.Y4(NET1573),

.Y5(NET1581),

.Y6(NET1589),

.Y7(NET1597)

);

Full_Adder U3

(

.Carry_In(NET1462),

.Carry_Out(NET1474),

.S(NET1761),

.X1(NET1653),

.X2(NET1561)

);

Full_Adder U4

(

.Carry_In(NET1474),

.Carry_Out(NET1486),

.S(NET1769),

.X1(NET1679),

.X2(NET1565)

);

Half_Adder U5

(

.Carry(NET1450),

.S(NET1745),

.X1(NET1534),

.X2(NET1538)

);

Full_Adder U6

66

Verilog-HDL для моделирования и синтеза цифровых электронных схем

(

.Carry_In(NET1486),

.Carry_Out(NET1498),

.S(NET1799),

.X1(NET1687),

.X2(NET1573)

);

Full_Adder U7

(

.Carry_In(NET1498),

.Carry_Out(NET1510),

.S(NET1791),

.X1(NET1695),

.X2(NET1581)

);

Full_Adder U8

(

.Carry_In(NET1510),

.Carry_Out(NET1522),

.S(NET1783),

.X1(NET1703),

.X2(NET1589)

);

Full_Adder U9

(

.Carry_In(NET1522),

.Carry_Out(Carry),

.S(NET1775),

.X1(NET1711),

.X2(NET1597)

);

endmodule

Учебное§ 3. Синтезпособиеструктурных моделей цифровых устройств

67

3.5. Синтез простейших логических цепей

Заметим, что оператора включения модуля уже достаточно для описания на языке Verilog простейших цифровых устройств, состоящих из стандартных логических элементов. В состав языка Verilog входит набор стандартных модулей, реализующих основные логические операции, такие как and, or, not, xor и прочие, идентификаторы которых совпадают с названиями соответствующих операций. При этом следует обратить внимание, что выходной сигнал в списке интерфейса стандартных логических модулей размещен первым, а входные сигналы, соответственно, – на втором и третьем месте. Так, например, запись

and (A, B, C)

означает A = B and C, а не C = A and B.

Рассмотрим разработку функциональных моделей устройств на логическом уровне абстракции на примере простой логической цепи, представленной на рис. 3.7.

 

GATE00

 

 

X0

g

 

Y1

 

GATE01

j

X1

and

 

or

 

GATE04

 

 

 

 

 

X2

 

 

Y0

GATE02

 

and

 

GATE03

 

k

f

X3

 

or

nand

 

 

 

 

 

 

X4

Рис. 3.7. Логическая цепь

68

Verilog-HDL для моделирования и синтеза цифровых электронных схем

В данном устройстве присутствуют 5 входных сигналов (X0 X4), 2 выходных сигнала (Y0, Y1), а также 4 внутренних сигнала (g, k, j, f), которые предназначены для передачи информации между входящими в цепь логическими элементами. Текст Verilog-программы, реализующей данную цепь (рис. 3.7), приведен ниже:

//Заголовок модуля:

module Net001 ( X0,X1,X2,X3,X4,Y0,Y1 );

//Описания портов и внутренних сигналов модуля:

input X0,X1,X2,X3,X4;

// Входные сигналы модуля

output Y0,Y1;

// Выходные сигналы модуля

wire X0,X1,X2,X3,X4,Y0,Y1;

 

//Определение внутренних сигналов модуля, связывающих

//отдельные структурные компоненты:

wire k,j,f,g;

//Описание внутренней структуры модуля:

//Включение стандартного модуля and под именем GATE00: and GATE00 (Y1, X0,X1);

//Включение прочих стандартных модулей:

or GATE01 (j, Y1,X2); or GATE02 (k, X2,X3); nand GATE03 (f, k,X4); and GATE04 (Y0, f,j);

endmodule

Полный список стандартных логических элементов языка Verilog приведен на рис. 3.8.

Учебное§ 3. Синтезпособиеструктурных моделей цифровых устройств

69

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а) элемент И – модуль and

б) элемент И-НЕ – модуль nand

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

в) элемент ИЛИ – модуль or

г) элемент ИЛИ-НЕ – модуль nor

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

д) элемент Исключающее ИЛИ –

е) элемент Исключающее ИЛИ-НЕ –

модуль xor

модуль xnor

Рис. 3.8. Стандартные логические модули языка Verilog

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

wire Input0, Input2, Input3, Input3, Output0; and (Output0, Input0, Input1, Input2, Input3);

который осуществит операцию свертки по логической операции И всех разрядов входных сигналов.

70

Verilog-HDL для моделирования и синтеза цифровых электронных схем

Input0

Input1

Input2

Input3Output0

Рис. 3.9. Логическая цепь, состоящая из 3-х элементов И

Дополнительно, кроме перечисленных выше модулей, Verilog содержит шесть базовых логических элементов: buf, not, bufif1, bufif0, notif1, notif0.

Элементы buf и not (рис. 3.10) имеют один входной сигнал и произвольное число выходных сигналов. Входной сигнал всегда должен размещаться последним в списке портов оператора включения модуля. Эти блоки выполняют функцию разветвления сигналов. Кроме того, блок not осуществляет инверсию всех выходных сигналов.

а) элемент buf

б) элемент not

Рис. 3.10. Стандартные модули buf и not

Блоки bufif1, bufif0, notif1 и notif0 (рис. 3.11) отличаются от блоков buf и not наличием управляющего входа ctrl. Если на управляющем входе блока bufif1 или notif1 установлен низкий уровень сигнала, то, независимо от состояния второго входа, на выход блока поступает сигнал z. Блоки bufif0 и notif0 функционируют аналогичным образом, но с учетом инверсии сигнала ctrl.

Учебное§ 3. Синтезпособиеструктурных моделей цифровых устройств

71

ctrl

ctrl

а) элемент bufif1

б) элемент notif1

ctrl

 

ctrl

 

в) элемент bufif0

г) элемент notif0

Рис. 3.11. Стандартные модули bufif1, bufif0, notif1 и notif0

Таблица 3.1

Таблица истинности для модуля bufif1

Таблица 3.2

Таблица истинности для модуля bufif0

In

ctrl

0

1

x

z

 

 

 

 

 

 

 

0

 

z

0

L

L

1

 

z

1

H

H

x

 

z

x

x

x

z

 

z

x

x

x

In

ctrl

0

1

x

z

 

 

 

 

 

 

 

0

 

0

z

L

L

1

 

1

z

H

H

x

 

x

z

x

x

z

 

x

z

x

x

Таблица 3.3

Таблица истинности для модуля notif1

Таблица 3.4

Таблица истинности для модуля notif0

In

ctrl

0

1

x

z

 

 

 

 

 

 

 

0

 

z

1

H

H

1

 

z

0

L

L

x

 

z

x

x

x

z

 

z

x

x

x

In

ctrl

0

1

x

z

 

 

 

 

 

 

 

0

 

1

z

H

H

1

 

0

z

L

L

x

 

x

z

x

x

z

 

x

z

x

x