RTL Design/Verilog 연습
비동기식 카운터 (Asynchronous counter)
유로 청년
2024. 7. 11. 21:44
1. Asynchronous MOD 16 up counter, T Flip-Flop
< Source code >
// Behavioral modeling of T Flip Flop
module t_flip_flop (
input t,
input clk, enable, reset,
output reg q );
always @(negedge clk or posedge reset) begin
if(reset) q = 0;
else if(enable) q = (t)? ~q : q;
else q = q;
end
endmodule
// Asynchronous up counter MOD 10
module Asynchronous_Up_Counter_MOD_10_T_Flip_Flop(
input clk, enable, reset,
output [3:0] result );
t_flip_flop t_flip_flop_0 (1, clk, enable, reset, result[0]);
t_flip_flop t_flip_flop_1 (1, result[0], enable, reset, result[1]);
t_flip_flop t_flip_flop_2 (1, result[1], enable, reset, result[2]);
t_flip_flop t_flip_flop_3 (1, result[2], enable, reset, result[3]);
endmodule
< Simulation >
< RTL analysis >
< Synthnesis >
2. Asynchronous MOD 16 down counter, T Flip-Flop
< Source code >
// Behavioral modeling of T Flip Flop
module t_flip_flop (
input t,
input clk, enable, reset,
output reg q );
always @(posedge clk or posedge reset) begin
if(reset) q = 0;
else if(enable) q = (t)? ~q : q;
else q = q;
end
endmodule
// Asynchronous MOD 16 Down counter
module Asynchronous_Down_Counter_MOD_16__T_Flip_Flop(
input clk, enable, reset,
output [3:0] result );
t_flip_flop t_flip_flop_0 (1, clk, enable, reset, result[0]);
t_flip_flop t_flip_flop_1 (1, result[0], enable, reset, result[1]);
t_flip_flop t_flip_flop_2 (1, result[1], enable, reset, result[2]);
t_flip_flop t_flip_flop_3 (1, result[2], enable, reset, result[3]);
endmodule
< Simulation >
< RTL analysis >
< Synthnesis >