Напишите синтаксис оператора цикла 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!