

















Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Verilog short notes with examples
Typology: Study notes
1 / 25
This page cannot be seen from the preview
Don't miss anything!


















TKK “Laitteistokuvauskielinen digitaalisuunnitelu” Syksy-
TKK “Laitteistokuvauskielinen digitaalisuunnitelu” Syksy-
TKK “Laitteistokuvauskielinen digitaalisuunnitelu” Syksy-
wire N_SUM, CARRY1, CARRY2;
HALFADD u1(A, B, N_SUM, CARRY1); HALFADD u2(.B(N_SUM), .A(CIN), .SUM(SUM), .CARRY(CARRY2)); or u3(CARRY, CARRY2, CARRY1);
endmodule
Similar to a signal definition
The or is a built in gate primitive within Verilog
TKK “Laitteistokuvauskielinen digitaalisuunnitelu” Syksy-
always @(A or B) begin if ((A == 1) | (b == 1)) Z_OR <= 1; else Z_OR <= 0; end endmodule
If output is generated in a sequential statement block it must be of a register type.
Sensitivity list.
All sequential statements are enclosed by a begin and an end (unless there is only one statement in the branch)
TKK “Laitteistokuvauskielinen digitaalisuunnitelu” Syksy-
TKK “Laitteistokuvauskielinen digitaalisuunnitelu” Syksy-
1 is the width of the bus ' is the base indicator b is binary z is value
TKK “Laitteistokuvauskielinen digitaalisuunnitelu” Syksy-
TKK “Laitteistokuvauskielinen digitaalisuunnitelu” Syksy-
TKK “Laitteistokuvauskielinen digitaalisuunnitelu” Syksy-
greater than, < less than, >= greater than or equal, == logical equality
TKK “Laitteistokuvauskielinen digitaalisuunnitelu” Syksy-
TKK “Laitteistokuvauskielinen digitaalisuunnitelu” Syksy-
integer I; . . for (I = 0; I < 4; I = I + 1) begin Z <= I; end
TKK “Laitteistokuvauskielinen digitaalisuunnitelu” Syksy-
while ($time < 800) begin @(negedge CLK); A <= B; end
TKK “Laitteistokuvauskielinen digitaalisuunnitelu” Syksy-
function integer COUNT; input [7:0] IN_BUS; integer I; begin COUNT = 0; for ( I= 0; I < 8; I = I + 1) if (! IN_BUS[I]) COUNT = COUNT + 1; end endfunction
Function calls: wire [2:0] COUNT_B = COUNT(BUS); if (COUNT(BUS) == 0 )
Return type. Default is reg
Function name
Function name is the return value name
TKK “Laitteistokuvauskielinen digitaalisuunnitelu” Syksy-
task CLOCK; input [31:0] NUMBER; begin repeat (NUMBER) @(negedge CLK); end endtask
TASK calls CLOCK (counter)
Visible from the calling function