[MUSIC] Today we start on the study of sequential circuits. Up to now we have only considered combinational circuits. If we don't take into account the gate delays, in a combinational circuit the value of the outputs only depends on the value of the inputs at the same time. Nevertheless, most digital systems specifications cannot be implemented by combinational circuits because the value of an output signal could be a function of the value of the input signals at the same time, but also a function of the value of the input signals at preceding times. Let us see an example: this is a vehicle access control system with the gate and with some request entrance "request device". The input signals in this system are an entrance request signal, the gate position (can be completely open or completely closed), and a signal generated by some type of sensor that indicates whether a vehicle is present or not within some area. And the output signals are the signals that control the motor. Then in this system, the values of the signals that control the motor, depend on the sequence of events, not only on the current value of the input signals. The sequence of events is the following: first, wait for an entrance request; then open the gate; wait for the gate reaching its upper position and stop the motor; wait for the vehicle out of the gate area, this area, and then close the gate; and wait for the gate reaching its lower position and stop the motor. And a new entrance request will not be attended until the sequence of events is completed. As a conclusion, some type of memory is necessary in order to implement this system. What is a sequential system then? We could say it's a digital system with memory, so that it is able to implement systems whose outputs depend on the inputs at the same time, at time t, the current time, but also at time t-1, t-2, and so on. In particular, they are able to generate sequences, and they are able to detect specific sequences. About generation and detection of sequences, let us see two very simple examples. How could we implement this first example? How could we implement a circuit that detects the sequence 1557? Well, a very simple and straightforward solution is given by the following "if then" construct: we just say that if the current value of the input x is 7 and the value of x at time t-1 is 5, and at time t-2, it was 5 also, and at time t-3, the value of x was 1, then the output y will be equal to "detected". And in the contrary case, the value of the output will be "not detected". So it's just a matter of storing the three preceding values of the input sequence and to take a decision, in function of those values, and in function of the current value. The other example is a circuit that continuously generates a sequence 011011011011 and so on. Once again, a straight forward solution is given by this "if then" construct: If the two preceding values were 1 1, then the new value of the sequence is 0; in in all other cases the new value of the sequence is 1. We just need two memory elements that store y at time t-2 and y at time t-1, and generate the current value of y according to the rule defined by this "if then" construct. Obviously those memory elements that store y(t-2) and y(t-1) must be initialized, for example with 0 1 if we want the sequence to start with the 0 1 values. How can we implement the circuit with memory? Consider a combinational circuit with input x and output y. Then connect the memory component in this way, so that on the one hand, the combinational circuit receives additional information stored within the memory, and on the other hand the combinational circuit is able to modify the contents of the memory. Thus the structure of the new circuit is this one: a combinational circuit, that receives two kinds of data: input values (x) and data, stored within the memory, that we will call "current state" of the sequential circuit. This combinational circuit, in turn, generates two kinds of data: output values (y) and a new value of the internal state that we will call the "next state" of the sequential circuit. This is the complete structure of a sequential circuit. A second basic concept: what does mean t, t-1, t-2, and so on? If we define t as being the current time, does t-1 means, t minus 1 second, or t minus 1 minute, ··· In order to synchronize the sequential circuit, and to give meaning to t, t-1 and so on, a clock signal must be generated. It is a square wave of this type, whose minimum and maximum values correspond to the 0 and 1 logic levels. Then, the positive edges of the square wave define those particular times that we call t, t-1, t-2, and so on. Actually, we could also choose the negative edges. Let us see some definitions in relation with the clock signals. This is positive edge. This is a negative edge. The time interval between two positive edges is called "cycle", and the duration of the cycle is called the period of the clock signal. The inverse of the period is the frequency. This is a positive pulse, and this is a negative pulse. Here, you can see some more definitions: a millisecond is a second divided by 1,000; microsecond: a second divided by 1,000,000; a nanosecond, a picosecond, ···, and the same definitions in the case of the frequency: 1 hertz is a frequency of 1 cycle per second; 1 kiloHertz is a frequency of 1,000 hertz; and so on (megaHertz, gigaHertz, teraHertz). Thus, in conclusion, we get the following structure: a combinational circuit, a memory (the way memories are implemented will be seen next week), external inputs, and external outputs; a current state stored within the memory and the next state computed by a combinational circuit. And an external clock signal that synchronizes the operations. Summary of this lesson. We have seen the need of other types of circuits. Apart from the combinational circuits, we have seen what a sequential circuit is and introduced two important concepts: internal state and synchronization signal. [BLANK_AUDIO]