Краткие сведения о языке описания цифровых схем Verilog — КиберПедия 

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Краткие сведения о языке описания цифровых схем Verilog

2021-03-18 106
Краткие сведения о языке описания цифровых схем Verilog 0.00 из 5.00 0 оценок
Заказать работу

Из вышесказанного следует, что Verilog - язык описания цифровых схем. Познакомимся с базовыми типами источников сигнала, используемыми в языке Verilog.

    Начнем изучение языка Verilog с понятия сигнал (signal). Сигналы – это электрические импульсы, которые передаются по проводам (wire) между логическими элементами схемы. Провода переносят информацию, не производя над ней никаких вычислений. В цифровой схеме сигналы важны для передачи двоичных данных. 

    Базовый тип источника сигнала в языке Verilog – это провод - wire. Таким образом, если у вас есть арифметическое или логическое выражение, вы можете ассоциировать результат выражения с именованным проводом и позже использовать его в других выражениях. Например, декларации однобитного провода в Verilog:

wire a; //назначить проводу сигнал a

Можно назначить однобитному проводу a другой сигнал, например, сигнал b:

wire b; //назначить проводу сигнал b
assign a = b; //подключение провода b к проводу a

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

wire a = b; //назначить сигналу a сигнал b

    Могут быть провода, передающие несколько бит:

wire [3:0] c; //это четыре провода

Провода, передающие несколько бит информации называются “ шина ”, иногда “вектор”. Назначения к шинам делаются так же:

wire [3:0] d; //назначить 4-х битной шине сигнал d
assign c = d; //всегда подключение одной шины к другой –шины d к шине с

    Количество проводов в шине определяется любыми двумя целыми числами, разделенными двоеточием внутри квадратных скобок.

wire [11:4] e; //восьмибитная шина e
wire [0:255] f;
//256-ти битная шина f

Из шины можно выбрать некоторые нужные биты и назначить другому проводу:

wire g; //назначить проводу сигнал g
assign g = f [2]; //назначить сигналу g второй бит шины f

Кроме того, выбираемый из шины бит может определяться переменной:

wire [7:0]; //восьми битная шина f
wire i = f [ k ]; //назначить сигналу “i” бит номер “k” из шины “f”

    Можно выбрать из сигнальной шины некоторый диапазон бит и назначить другой шине с тем же количеством бит:

wire [3:0] j = e[7:4];

Можно определить на языке Verilog массивы сигнальных шин:

wire [7:0] k [0:19]; //массив из двадцати 8-ми битных шин

    Рассмотрим другой тип источника сигнала, называемый регистр: reg. Его используют при поведенческом (behavioral) описании схемы (поведенческое описание будет рассмотрено позже). Если регистру постоянно присваивается значение комбинаторной (логической) функции, то он ведет себя точно как провод (wire). Если же регистру присваивается значение в синхронной логике, например, по фронту сигнала тактовой частоты, то ему будет соответствовать физический D-триггер или группа D-триггеров. Вспомним: D-триггер – это логический элемент способный запоминать один бит информации. В англоязычных статьях D-триггер называют flipflop.
Регистры описывают на языке Verilog так же, как и провода:

reg [3:0] m;
reg [0:100] n;

 

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

wire [1:0] p = m [2:1];

  Помни: Ранее надо описать (задать) p и m как регистры

Можно определить массив регистров, которые обычно называют “память” (R AM):

reg [7:0] q [0:15]; //память из 16 слов, каждое по 8 бит

    Применяется еще один тип источника сигнала – это integer. Он похож на регистр reg, но всегда является 32х битным знаковым типом данных. Например, объявим:

integer loop_count;

    Язык Verilog позволяет группировать логику в блоки. Каждый блок логики называется “модулем” (module). Модули имеют входы и выходы, которые ведут себя как сигналы wire.

При описании модуля сначала перечисляют его порты (входы и выходы):

module my_module_name (port_a, port_b, w, y, z);

А затем описывают направление сигналов:

input port_a;
output [6:0] port_b;
input [0:4] w;
inout y; //
двунаправленный сигнал, обычно используется

//только для внешних контактов микросхем

    Выход модуля может быть сразу декларирован как регистр reg, а не как провод wire:

output [3:0] z;
reg [3:0] z;

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

module my_module
(
input wire port_a,
output wire [6:0]port_b,
input wire [0:4]w,
inout wire y,
output reg [3:0]z
);

Теперь можно использовать входные сигналы, как провода wire:

wire r = w [1];

Можно делать постоянные назначения выходам, как функции от входов:

assign port_b = h[6:0];

    Заканчивается описание логики каждого модуля словом endmodule.

module my_module_name (input wire a, input wire b, output wire c);
assign c = a & b;
// c=a&b - логический элемент 2AND
endmodule

        

Представление постоянных сигналов или просто чисел на языке Verilog:

 

wire [12:0] s = 12; // 32-х битное десятичное число 12, которое будет “обрезано” до 13 бит
wire [12:0] z = 13’ d 12; //13-ти битное десятичное число 12
wire [3:0] t = 4' b 0101; //4-х битное двоичное число 0101
wire [3:0] q = 8' hA 5; //8-ми битное шестнадцатеричное число A5
wire [63:0] u = 64' hdeadbeefcafebabe; //64-х битное шестнадцатеричное число

    Примечание: Если не определить размер числа, то оно принимается по умолчанию 32-х разрядным. Это может быть проблемой при присвоении сигналам с большей разрядностью.

    Числа могут использоваться во всех арифметических и логических выражениях. Например, можно прибавить 1 к вектору (шине) aa:

wire [3:0] aa;
wire [3:0] bb;
assign bb = aa + 1;

 


Поделиться с друзьями:

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.012 с.