to designing counters using verilog code

15
Experiment No:9 Aim: To Implement counters. NAME: Shyamveer Singh SECTION: E1207 REG N0: 11205816 ROLL NO: B-54

Upload: bharti-airtel-ltd

Post on 22-Jan-2018

300 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: To designing counters using verilog code

Experiment No:9 Aim: To Implement counters. NAME: Shyamveer Singh SECTION: E1207

REG N0: 11205816 ROLL NO: B-54

Page 2: To designing counters using verilog code

Truth Table: Up down counter:

Up counter:

Page 3: To designing counters using verilog code

Theory: An up counter simply counts from 0 to 9. We can use this circuit to make , This circuit can also be used to make a digital clock. Both Synchronous and Asynchronous counters are capable of counting “Up” or counting “Down”, but their is another more “Universal” type of counter that can count in both directions either Up or Down depending on the state of their input control pin and these are known as Bidirectional Counters.

Bidirectional counters, also known as a up down counter.

PROGRAMME CODES

4bit up counter: module fbuc(clk,reset,q); input clk,reset; output [3:0]q;

reg [3:0]q;

always@(clk)

begin if(reset) q=0; else if(reset==0&&q<15) q=q+1; end endmodule

Page 4: To designing counters using verilog code

reset = 1;clk = 0;

// Wait 100 ns for global reset to finish #10; reset = 0;clk = 1; #10; reset = 0;clk = 0; #10; reset = 0;clk = 1; #10; reset = 0;clk = 0; #10; reset = 0;clk = 1; #10; reset = 0;clk = 0; #10; reset = 0;clk = 1; #10; reset = 0;clk = 0; #10; reset = 0;clk = 1; #10; reset = 0;clk = 0; #10; reset = 0;clk = 1;

Page 5: To designing counters using verilog code

#10; reset = 0;clk = 0; #10; reset = 0;clk = 1; #10; reset = 0;clk = 0; #10; reset = 0;clk = 1; #10;

// Add stimulus here

end

endmodule // Initialize Inputs

reset = 1;clk = 0;

// Wait 100 ns for global reset to finish #10; reset = 0;clk = 1; #10; reset = 0;clk = 0; #10; reset = 0;clk = 1; #10;

Page 6: To designing counters using verilog code

reset = 0;clk = 0; #10; reset = 0;clk = 1; #10; reset = 0;clk = 0; #10; reset = 0;clk = 1; #10; reset = 0;clk = 0; #10; reset = 0;clk = 1; #10; reset = 0;clk = 0; #10; reset = 0;clk = 1; #10; reset = 0;clk = 0; #10; reset = 0;clk = 1; #10; reset = 0;clk = 0; #10; reset = 0;clk = 1; #10;

// Add stimulus here

end

endmodule

4bit down counter module fbdc(clk,reset,q); input clk,reset; output [3:0]q;

reg [3:0]q;

always@(clk)

begin if(reset)

q=15;

else if(reset==0&&q>0) q=q-1; end

Page 7: To designing counters using verilog code

endmodule

Page 8: To designing counters using verilog code

reset = 1;clk = 0;

// Wait 100 ns for global reset to finish #10; reset = 0;clk = 1; #10; reset = 0;clk = 0; #10; reset = 0;clk = 1; #10; reset = 0;clk = 0; #10; reset = 0;clk = 1; #10; reset = 0;clk = 0; #10; reset = 0;clk = 1; #10; reset = 0;clk = 0; #10; reset = 0;clk = 1; #10; reset = 0;clk = 0;

Page 9: To designing counters using verilog code

#10; reset = 0;clk = 1; #10; reset = 0;clk = 0; #10; reset = 0;clk = 1; #10; reset = 0;clk = 0; #10; reset = 0;clk = 1; #10; reset = 0;clk = 0; #10;

reset = 0;clk = 1; #10;

// Add stimulus here

end

endmodule

Page 10: To designing counters using verilog code

4b Up down counter

module fbudc(clk,reset,up,dn,q); input clk,up,dn,reset; output [3:0]q; reg [3:0]q; always@(clk) begin if (reset) q=0; else if(up)

q=q+1;

else if(dn)

q=q-1; end

endmodule

Page 11: To designing counters using verilog code

clk = 0; reset = 1; up = 1; dn = 0;

// Wait 100 ns for global reset to finish #10; clk = 1; reset = 0; up = 1; dn = 0; #10; clk = 0; reset = 0; up = 1; dn = 0; #10; clk = 1; reset = 0; up = 1; dn = 0; #10; clk = 0;

Page 12: To designing counters using verilog code

reset = 0; up = 1; dn = 0; #10; clk = 1; reset = 0; up = 1; dn = 0; #10; clk = 0; reset = 0; up = 1; dn = 0; #10; clk = 1; reset = 0; up = 1; dn = 0; #10; clk = 0; reset = 0; up = 1; dn = 0; #10; clk = 1; reset = 0; up = 1; dn = 0; #10; clk = 0; reset = 0; up = 1; dn = 0; #10; clk = 1; reset = 0; up = 1; dn = 0; #10; clk = 0; reset = 0; up = 1; dn = 0; #10; clk = 1; reset = 0; up = 1; dn = 0; #10;

Page 13: To designing counters using verilog code

clk = 0; reset = 0; up = 1; dn = 0; #10; clk = 1; reset = 0; up = 1; dn = 0; #10; clk = 1; reset = 0; up = 0; dn = 1; #10; clk = 0; reset = 0; up = 0; dn = 1; #10; clk = 1; reset = 0; up = 0; dn = 1; #10; clk = 0; reset = 0; up = 0; dn = 1; #10; clk = 1; reset = 0; up = 0; dn = 1; #10; clk = 0; reset = 0; up = 0; dn = 1; #10; clk = 1; reset = 0; up = 0; dn = 1; #10; clk = 0; reset = 0; up = 0; dn = 1;

Page 14: To designing counters using verilog code

#10; clk = 1; reset = 0; up = 0; dn = 1; #10; clk = 0; reset = 0; up = 0; dn = 1; #10; clk = 1; reset = 0; up = 0; dn = 1; #10; clk = 0; reset = 0; up = 0; dn = 1; #10; clk = 1; reset = 0; up = 0; dn = 1; #10; clk = 0; reset = 0; up = 0; dn = 1; #10; clk = 1; reset = 0; up = 0; dn = 1; #10; clk = 0; reset = 0; up = 0; dn = 1; #10;

// Add stimulus here

end

endmodule

Page 15: To designing counters using verilog code