FDR: D flip-flop with synchronous Reset
![]() |
FDR is a D-type flip-flop with a synchronous active-high reset (R). The Q output is loaded on the low-to-high transition of the clock (C) input. If R is asserted, Q is loaded with 0; it is otherwise loaded with the data on the D input. |
Verilog
module FDR(
input R, D, C,
output reg Q);
always @(posedge C)
if(R)
Q <= 0;
else
Q <= D;
endmodule
VHDL
library IEEE;
use IEEE.std_logic_1164.all;
entity FDR is
port (
R, D, C : in std_logic;
Q : out std_logic);
end entity FDR;
architecture A of FDR is
begin
process (C) is
begin
if rising_edge(C) then
if R = '1' then
Q <= '0';
else
Q <= D;
end if;
end if;
end process;
end architecture A;
Testbench
DUT {
module FDR(input R, D, C; output Q)
create_clock C
[R, D, C] -> [Q]
}
[1, 1, .C] -> [0]; // reset
[0, 1, .C] -> [1];
[0, 0, .C] -> [0];
[0, 1, .C] -> [1];
[1, 1, .C] -> [0]; // reset
