Напишите программу модуля T триггера на языке Verilog
module Ttrig (T,Q); //указываем имя входа и выхода , к-ые будут в модуле
input wire T; // указываем вход
output reg Q; // указываем выход
initial Q = 0; // устанавливаем по умолчанию выход в "0"
always @ (posedge T) // отслеживание Входа переход из "0" //в "1" ПО ПЕРЕДНЕМУ ФРОНТУ
begin Q = ~Q; // инверсия выхода, из предыдущего состояние в будущее
end
endmodule // конец модуля
На языке Verilog реализуйте 8- разрядный счетчик
module CNTR (clk, out);
input clk;
output [3:0] out;
reg [7:0] tact;
reg [3:0] out;
always@(posedge clk)
begin tact=tact+1;
out=tact[7:4];
end
endmodule
На языке Verilog реализуйте 32- разрядный счетчик
module CNTR (clk, out);
input clk;
output[3:0] out;
reg[31:0]tact;
reg[3:0]out;
always@(posedge clk)
begin
tact=tact+1;
out=tact[31:28];
end
endmodule
На языке Verilog реализуйте 16- разрядный счетчик
module CNTR (clk, out);
input clk;
output[3:0] out;
reg[15:0]tact;
reg[3:0]out;
always@(posedge clk)
begin
tact=tact+1;
out=tact[15:12];
end
endmodule
На языке Verilog реализуйте делитель частоты на базе счетчика
module del ( input clk, output clk _out);
reg [7:0] cnt;
always @ (posedge clk)
if (cnt = = 199) cnt<= 0;
else cnt<= cnt + 1;
assign clk_out = ( cnt = = 0 ) ? 1 : 0;
endmodule
Реализуйте таймер на 5 секунд на языке Verilog
module timer (clk, clk _out);
input clk;
output clk _out;
reg [25:0] cnt;
always @ (posedge clk)
if (cnt==250 000 000) cnt<=0;
else cnt<=cnt+1;
endmodule
Реализуйте таймер на 6 секунд на языке Verilog
module timer (clk, clk_out);
input clk;
output clk_out;
reg [25:0] cnt;
always @ (posedge clk)
if (cnt==300 000 000) cnt<=0;
else cnt<=cnt+1;
endmodule
Напишите программу 10 разрядного ШИМ на языке Verilog
|
|
module pwm (in, clk, out);
input[9:0] in;
input clk;
output out;
reg [9:0] cnt=0;
always@ (posedge clk)
cnt<=cnt+1;
assign out = (in>cnt)?1:0;
endmodule
Напишите программу сдвигового кольцевого регистра и обеспечьте медленную индикацию данных с определенным временем задержки на языке Verilog.
module shift _ register _ with _enable
(input clock, input resetn, input in, input enable, output out, output reg [17:0] data);
always @ (posedge clock or negedge resetn)
begin
if (! resetn)
data<= 18'b10_0000_0000_0000_0000;
else if (enable)
data<= { in, data [17:1] };
end
assign out = data [0];
endmodule
Перечислите основные и часто используемые ключевые слова программного языка Verilog
Verilog HDL — это язык описания аппаратуры, используемый для описания и моделирования электронных систем. Язык Verilog был создан в 1984 (по некоторым источникам в 1985) году в фирме Automated Integrated Design Systems (позднее переименованной в Gateway Design Automation). Синтаксис Verilog очень похож на синтаксис языка C, что упрощает его освоение. Препроцессор Verilog очень похож на препроцессор языка C, и основные управляющие конструкции «if», «while» и др. подобны одноимённым конструкциям языка C.
Ключевыми словами начинаются предопределенные идентификаторы, используемые для определения языковых конструкций. Все ключевые слова прописываются только строчными буквами. В документе ключевые слова прописываются полужирным курсивом. Ниже приведен список ключевых слов языка Verilog.
|
|
Always | event | Or | strong1 |
And | for | Output | supply0 |
Assign | force | Parameter | supply1 |
Begin | forever | Pmos | table |
Buf | fork | Posedge | task |
bufif0 | function | Primitive | time |
bufif1 | highz0 | pull0 | tran |
Case | highz1 | pull1 | tranif0 |
Casex | if | Pullup | tranif1 |
Casez | initial | Pulldown | tri |
Cmos | inout | Rcmos | tri0 |
Deassign | input | Reg | tri1 |
Default | integer | Release | triand |
defparam | join | Repeat | trior |
Disable | large | Rnmos | trireg |
Edge | macromodule | Rpmos | vectored |
Else | medium | Rtran | wait |
End | module | rtranif0 | wand |
Endcase | nand | rtranif1 | weak0 |
endmodule | negedge | Scalared | weak1 |
endfunction | nmos | Small | while |
endprimitive | nor | Specify | wire |
endspecify | not | Specparam | wor |
Endtable | notif0 | Strength | xnor |
Назовите основные типы сигналов или данных в программном языке Verilog
Данные в языке Verilog предназначены для сохранения состояний (регистры) и для передачи состояний между моделируемыми объектами (цепи). В языке Verilog данные могут принимать одно из четырех возможных состояний:
1 – представляет лог 1 или значение «истинно» (true)
0 – представляет лог 0 или значение «ложно» (false)
z – представляет состояние высокого импеданса
x – представляет неизвестное лог состояние
|
|
Цепи объявляются по следующим синтаксическим правилам: nettype [drive_strength] [expand_range] [delay] <list_of _variables>;
nettype – тип цепи, может принимать значения wire, wand, wor, tri и т.д.; drive_strength – определяет «мощность» источника (драйвера); expand_range – определяет разрядность цепи, по умолчанию цепь одноразрядная;
delay – определяет задержку распространения по цепи в установленных временных единицах или иначе указывает задержку от момента назначения состояния цепи до его фактического установления;
list_of_variables– список объявляемых переменных, разделяемых запятой.
Регистры определяются иначе:
reg [range] <list_of_reg_variables>;
reg – ключевое слово; range – определяет разрядность регистровой переменной, по умолчанию регистр одноразрядный; list_of_reg_variables – список объявляемых регистровых переменных, разделяемых запятой. Ключевые слова, определяющие тип цепи:
Дата добавления: 2018-06-01; просмотров: 1740; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!