FDP: D flip-flop with asynchronous Preset
FDP is a D-type flip-flop with an asynchronous active-high preset (PRE). If PRE is asserted, the Q output is set to 1. The data on the D input is otherwise loaded to the Q output on the low-to-high transition of the clock (C) input. |
Verilog
module FDP( input PRE, D, C, output reg Q); always @(posedge C or posedge PRE) if(PRE) Q <= 1; else Q <= D; endmodule
VHDL
library IEEE; use IEEE.std_logic_1164.all; entity FDP is port ( PRE, D, C : in std_logic; Q : out std_logic); end entity FDP; architecture A of FDP is begin process (C, PRE) is begin if PRE = '1' then Q <= '1'; elsif rising_edge(C) then Q <= D; end if; end process; end architecture A;
Testbench
DUT { module FDP(input PRE, D, C, output Q) create_clock C [PRE] -> [Q] // test async preset [PRE, D, C] -> [Q] // test sync clocking } [1] -> [1] // async preset [0, 0, .C] -> [0] [0, 1, .C] -> [1] [0, 0, .C] -> [0] [1] -> [1] // async preset