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