140 likes | 152 Views
Learn about sequential logic registers and how they are used in digital circuits. This tutorial covers the basic concepts, processes, and examples of using registers in VHDL.
E N D
Tutorial 2 Sequential Logic
Registers • A register is basically a D Flip-Flop • A D Flip Flop has 3 basic ports. D, Q, and Clock
Registers • Registers are edge sensitive to the clock • On a rising edge of the clock, the output of the flip flop (Q) takes on the value of the input (D). This is known as ‘clocking in’. • When it’s NOT the rising edge of the clock, Q doesn’t change even if D does • A register is often considered the most basic block of memory, because the value of D is stored in the register until the next clock cycle
Sequential Circuits • A sequential circuit is any digital design that has registers in it
Processes • In VHDL, sequential logic is described in a process process(clk) begin if rising_edge(clk) q <= d; end if; End process; • The rising_edge (or falling_edge) statement is a key word. Anything assignments in this “if” block is registered.
Processes • In a process, inside an ‘if rising_edge’ block, all assignments are registered • This means that on an assignment statement, everything to the LEFT of the <= is the output of a DFF and everything to the RIGHT is the input to a DFF
Processes • The previous example described a DFF. Let’s describe something else. If rising_edge(clk) then a <= b; c <= a; end if; • What does the hardware look like?
Processes • Let’s mix it up a bit If rising_edge(clk) then a <= b; c <= b; end if • What does the hardware look like?
Processes • Let’s put some combinational logic between those registers! If rising_edge(clk) then a <= b and c; d <= a and b; end if; • What does the logic look like?
Processes • Registers can also feed back on themselves Process (clk) if rising_edge(clk) then a <= b or c; d <= a xor d; end if; end process; • What does this hardware look like?