The register transfer level (RTL) is another design abstraction level that represents digital circuits at a higher level than previous abstractions. This once again improves readability of diagrams and schematics. The register transfer level focuses on digital circuits and their flows of binary signals (data) between registers, and the logical operations performed on those signals. Registers are functional units that contain some fast storage, and it will be explained later how they work. Therefore, the register transfer level primarily consists of functional units that either store data, or process them in a certain way, and communication channels that interconnect these functional units.
In digital integrated circuits, numerous functional units perform logical operations at the same time. In cases where functional units rely on input signals from previous components, they can only start processing when these previous components have completely finished their logic operations. As a subsequent functional unit has no information on the processing status of its previous components, almost all functional units must be synchronized by reliable external impulses. These external impulses are provided by a clock signal that oscillates between a high (1) and a low (0) voltage. A typical clock signal uses a square wave with a constant frequency. The clock signal is supplied to those functional units that require synchronization. Depending on the design of those units, these can become active at the rising edge of the clock signal, at the falling edge of the clock cycle, or during the intervals where the clock signal is high or low. The figure below shows a schematic representation of a clock signal.
A cycle refers to a single complete traversal of the signal: From the rising edge, through the phase where the voltage of the clock signal is high, over the falling edge, through the phase where the voltage of the clock signal is zero, until the start of the next cycle. The cycle time refers to the time the clock signal needs to traverse one complete cycle. The cycle time is chosen so that the slowest functional unit still has enough time to complete its operation. In today’s computer processors, cycle times are within the range of nanoseconds (billionth of a second). The clock frequency (also referred to as clock rate or clock speed) is the number of cycles the clock performs in one second. Therefore, in order to get the frequency, one second must be divided by the cycle time. With a cycle time of one nanosecond, the correspondent clock frequency is one gigahertz (GHz). Clock signals are produced by clock generator circuits. These usually rely on a crystal resonator that is combined with an amplifier circuit. Most integrated circuits require an external clock generator to provide the clock signal.
Combinational and Sequential Logic
Any functional unit consists of logic networks that are implemented from logic gates. A distinction is made between combinational logic functions and sequential logic functions.
1. Combinational Logic Functions
In a combinational circuit, the output is only determined by the logical function of their present input states (logic 0 or logic 1). As soon as the input change, all information about the previous inputs is lost, and the output is re-calculated. For that reason, combinational logic circuits have no memory. Combinational circuits are also known as time-independent and stateless circuits. Combinational logic is very commonly used in arithmetic logic units using digital adders or other circuits.
2. Sequential Logic Functions
In a sequential circuit, the output is dependent on both the present input states and the previous output state. For that reason, sequential Logic circuits have some form of memory built in. This is achieved by a feedback loop that connects the output back to the input. Sequential logic is most commonly used in registers. The following diagram summarizes both types of logic functions.
Combinational Functional Units (Multiplexers, Demultiplexers, Encoders, Decoders, Arithmetic Logic Units)