to designing counters using verilog code
TRANSCRIPT
![Page 1: To designing counters using verilog code](https://reader034.vdocuments.net/reader034/viewer/2022052210/58edb2281a28ab7f3d8b4583/html5/thumbnails/1.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052210/58edb2281a28ab7f3d8b4583/html5/thumbnails/2.jpg)
Truth Table: Up down counter:
Up counter:
![Page 3: To designing counters using verilog code](https://reader034.vdocuments.net/reader034/viewer/2022052210/58edb2281a28ab7f3d8b4583/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052210/58edb2281a28ab7f3d8b4583/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052210/58edb2281a28ab7f3d8b4583/html5/thumbnails/5.jpg)
#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](https://reader034.vdocuments.net/reader034/viewer/2022052210/58edb2281a28ab7f3d8b4583/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052210/58edb2281a28ab7f3d8b4583/html5/thumbnails/7.jpg)
endmodule
![Page 8: To designing counters using verilog code](https://reader034.vdocuments.net/reader034/viewer/2022052210/58edb2281a28ab7f3d8b4583/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052210/58edb2281a28ab7f3d8b4583/html5/thumbnails/9.jpg)
#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](https://reader034.vdocuments.net/reader034/viewer/2022052210/58edb2281a28ab7f3d8b4583/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052210/58edb2281a28ab7f3d8b4583/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052210/58edb2281a28ab7f3d8b4583/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052210/58edb2281a28ab7f3d8b4583/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022052210/58edb2281a28ab7f3d8b4583/html5/thumbnails/14.jpg)
#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](https://reader034.vdocuments.net/reader034/viewer/2022052210/58edb2281a28ab7f3d8b4583/html5/thumbnails/15.jpg)