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

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






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