Напишите синтаксис оператора цикла for и приведите пример Цикл с параметром общего вида описывается при помощи ключевого слова for.



 При описании устанавливаются:

• начальное значение параметра;

• условие выхода из цикла;

• оператор блокирующего присваивания, задающий изменение

параметра на каждой итерации.

 

В приведенном ниже примере

for (i = 0; i< 16; i = i+1)

begin

$display(”i= %d”, i);

end

i = 0 – начальное значение параметра;

• i< 16 – условие выхода;

• i = i + 1 – изменение параметра на каждой итерации (счетчик

итераций);

• $display (”i= %d”, i) – тело цикла.

Естественным языком эту алгоритмическую конструкцию можно записать так: «Начиная с i, равного нулю, и, пока i< 16, выполнять оператор $display, прибавляя к i по единице после каждой итерации».

Формальный синтаксис цикла с параметром представлен ниже:

for ( Начальное_Значение_Параметра;

Условие_Выхода;

Изменение_Параметра)

begin

Тело_Цикла;

end

Оператор for выполняет блок выражений в три этапа:

1) Инициализирует переменную цикла;2) Анализирует условное выражение, если результат равен нулю, то цикл завершается. Иначе выполняется блок выражений и переходит на третий этап; 3) Выполняет выражение модифицирующее переменную цикла и возвращается на второй этап. Это также оператор с предусловием.

for (<var_init_assign>; <condition>; <var_update_assign>)

[begin]

<statements>;

[end]

var_init_assign – выражение для инициализации переменной цикла (переменная должна быть объявлена заранее – обычно она имеет тип integer).

Регистр FIFO на Verilog

Input clk;

Input reset;

Input mosi;

Reg[7:0]fifo;

always@(posedgeclk)

if(reset)

fifo<=0;

else

begin

fifo[7]<=mosi;

for (i=6; i>-1; i=i-1)

fifo[i]<=fifo[i+1];

end

 

Напишите программу 8 разрядного ШИМ на языке Verilog

module pwm (in, clk, out);

input[7:0] in;

input clk;

output out;

reg [7:0] cnt=0;

always@ (posedge clk)

cnt<=cnt+1;

assign out = (in>cnt)?1:0;

endmodule

 

Напишите программу 7 разрядного ШИМ на языке Verilog

module pwm (in, clk, out);

input[6:0] in;

input clk;

output out;

reg [6:0] cnt=0;

always@ (posedge clk)

cnt<=cnt+1;

assign out = (in>cnt)?1:0;

endmodule

 

Напишите программу 4 разрядного ШИМ на языке Verilog

module pwm (in, clk, out);

input[3:0] in;

input clk;

output out;

reg [3:0] cnt=0;

always@ (posedge clk)

cnt<=cnt+1;

assign out = (in>cnt)?1:0;

endmodule

 

На языке Verilog реализуйте делитель частоты с 50 МГц до 1Гц

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

module del_clk (input clk,

output clk_out

);

reg [7:0] cnt;

always @ (posedge clk)

if (cnt = = 50000000) cnt <= 0;

else cnt <= cnt + 1;

assign clk_out = ( cnt = = 0 ) ? 1 : 0;

endmodule

 

На языке Verilog реализуйте делитель частоты с 50 МГц до 10кГц

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

module del_clk ( input clk,

output clk_out

);

reg [7:0] cnt;

always @ (posedge clk)

if (cnt = = 5000) cnt <= 0;

else cnt <= cnt + 1;

assign clk_out = ( cnt = = 0 ) ? 1 : 0;

endmodule

 

Перечислите арифметические и логические операторы и приведите пример

Тип Символы Выполняемая операция

Логические

! NOT
&& AND
|| OR

Арифметические

+ Сложение
- Вычитание
- 2’s complement
* Умножение
/ Деление
** Экспонента (*Verilog-2001)

Пример арифметического оператора:

module arif(in0, in1, out0, out1);
input [7:0] in0, in1;  //два входных 8-ми битных операнда
output [8:0] out0, out1;  //Выходы для арифметических операций имеют дополнительный 9-й бит переполнения
assign out0 = in0 + in1;
assign out1 = in0 – in1;
endmodule

Пример логического оператора:

module log(in0, in1, out0, out1, out2);
input [7:0] in0, in1; //два входных 8-ми битных операнда
output out0, out1, out2 ; //Выходы для булевых логических операций
assign out0 = in0 && in1;
assign out1 = in0  || in1;

assign out1 = !in0;
endmodule

 

Напишите операторы редукции и булевые логические операторы

Все операторы редукции являются унарными, и результатом всех операций является одноразрядное значение – 0, 1 или x.

Редукция

& Редуцированное AND
~& Редуцированное NAND
| Редуцированное OR
~| Редуцированное NOR
^ Редуцированное XOR
~^ или ^~ Редуцированное XNOR

Булевы логические операторы оперируют только с операндами типа boolean. Все бинарные логические операторы воспринимают в качестве операндов два значения типа boolean и возвращают результат того же типа.

Символ Назначение Использованиес типом real
{} Конкатенация (concatenation) Не допустимо
+ - * / Арифметические (arithmetic) Допустимо
% Модуль (modulus) Допустимо
>>= <<= Отношения (relational) Допустимо
! Лог отрицание (logical negation) Допустимо
&& Логическое И (logical and) Допустимо
|| Логическое ИЛИ (logicalor) Д
== Логравенство (logicalequality) Д
!= Логнеравенство (logicalinequality) Д
===  Идентичность (caseequality) НД
!=== Неидентичность (caseinecuality) НД
~ Побитинверсия (bit-wise negation) НД
& ПобитовоеИ (bit-wise and) НД
| Побитовое ИЛИ (bit-wiseor) НД
^ ПобисклИЛИ НД
?: Условный оператор (conditional) Д

Приоритет бинарных операций:

* / %                     Наивысший приоритет

+ - ! ~ (унарные), + - (бинарные), <<>><<<>>>, <<= >>=, == != === !==,& ~&,^ ^~ ~^, | ~|, &&, ||, ?: Нижайший приоритет

 


Дата добавления: 2018-06-01; просмотров: 562; Мы поможем в написании вашей работы!

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






Мы поможем в написании ваших работ!