74164 Serial-in Parallel-out Shift Register Vhdl

15 views
Skip to first unread message
Message has been deleted

Natalya Smithhisler

unread,
Jul 8, 2024, 5:58:05 AM7/8/24
to portiodeha

The number of individual data latches required to make up a single Shift Register device is usually determined by the number of bits to be stored with the most common being 8-bits (one byte) wide constructed from eight individual data latches.

Shift Registers are used for data storage or for the movement of data and are therefore commonly used inside calculators or computers to store data such as two binary numbers before they are added together, or to convert the data from either a serial to parallel or parallel to serial format. The individual data latches that make up a single shift register are all driven by a common clock ( Clk ) signal making them synchronous devices.

74164 serial-in parallel-out shift register vhdl


Download File https://vittuv.com/2yMODi



Also, the directional movement of the data through a shift register can be either to the left, (left shifting) to the right, (right shifting) left-in but right-out, (rotation) or both left and right shifting within the same register thereby making it bidirectional. In this tutorial it is assumed that all the data shifts to the right, (right shifting).

The effect of each clock pulse is to shift the data contents of each stage one place to the right, and this is shown in the following table until the complete data value of 0-0-0-1 is stored in the register. This data value can now be read directly from the outputs of QA to QD.

This shift register is very similar to the SIPO above, except were before the data was read directly in a parallel form from the outputs QA to QD, this time the data is allowed to flow straight through the register and out of the other end. Since there is only one output, the DATA leaves the shift register one bit at a time in a serial pattern, hence the name Serial-in to Serial-Out Shift Register or SISO.

The SISO shift register is one of the simplest of the four configurations as it has only three connections, the serial input (SI) which determines what enters the left hand flip-flop, the serial output (SO) which is taken from the output of the right hand flip-flop and the sequencing clock signal (Clk). The logic circuit diagram below shows a generalized serial-in serial-out shift register.

The Parallel-in to Serial-out shift register acts in the opposite way to the serial-in to parallel-out one above. The data is loaded into the register in a parallel format in which all the data bits enter their inputs simultaneously, to the parallel input pins PA to PD of the register. The data is then read out sequentially in the normal shift-right mode from the register at Q representing the data present at PA to PD.

This data is outputted one bit at a time on each clock cycle in a serial format. It is important to note that with this type of data register a clock pulse is not required to parallel load the register as it is already present, but four clock pulses are required to unload the data.

The final mode of operation is the Parallel-in to Parallel-out Shift Register. This type of shift register also acts as a temporary storage device or as a time delay device similar to the SISO configuration above. The data is presented in a parallel format to the parallel input pins PA to PD and then transferred together directly to their respective output pins QA to QD by the same clock pulse. Then one clock pulse loads and unloads the register. This arrangement for parallel loading and unloading is shown below.

The PIPO shift register is the simplest of the four configurations as it has only three connections, the parallel input (PI) which determines what enters the flip-flop, the parallel output (PO) and the sequencing clock signal (Clk).

Similar to the Serial-in to Serial-out shift register, this type of register also acts as a temporary storage device or as a time delay device, with the amount of time delay being varied by the frequency of the clock pulses. Also, in this type of register there are no interconnections between the individual flip-flops since no serial shifting of the data is required.

These universal shift registers can perform any combination of parallel and serial input to output operations but require additional inputs to specify desired function and to pre-load and reset the device. A commonly used universal shift register is the TTL 74LS194 as shown below.

Universal shift registers are very useful digital devices. They can be configured to respond to operations that require some form of temporary memory storage or for the delay of information such as the SISO or PIPO configuration modes or transfer data from one point to another in either a serial or parallel format. Universal shift registers are frequently used in arithmetic operations to shift data to the left or right for multiplication or division.

In the next tutorial about Sequential Logic Circuits, we will look at what happens when the output of the last flip-flop in a shift register is connected directly back to the input of the first flip-flop producing a closed loop circuit that constantly recirculates the data around the loop. This then produces another type of sequential logic circuit called a Ring Counter that are used as decade counters and dividers.

This document discusses shift registers, which are digital circuits used to store and transfer data. A shift register consists of flip-flops connected in a linear fashion so that data is shifted from one flip-flop to the next on each clock cycle. Shift registers can be configured for serial-in serial-out, serial-in parallel-out, parallel-in serial-out, or parallel-in parallel-out data transfer. Common applications include communications, temporary storage, and time delay devices. The document also provides examples of shift register implementations using MSI logic chips.Read less

Shift registers are digital circuits composed of flip-flops that can shift data from one stage to the next. They can be configured for serial-in serial-out, serial-in parallel-out, parallel-in serial-out, or parallel-in parallel-out data movement. Common applications include converting between serial and parallel data, temporary data storage, and implementing counters. MSI shift registers like the 74LS164 and 74LS166 provide 8-bit shift register functionality.Read less

The internal structure of LED dot matrix displays have already been discussed in Lab 12 and is not going to be repeated here. Two 88 LED matrices are used in this experiment. The similar rows (cathodes) of both are connected together so that there are 8 combined rows in total, whereas the columns are driven separately, and hence there are 16 columns altogether. The combined current of all the LEDs in each row sinks through a darlington-pair transistor array inside an ULN2803 IC. The 16 column lines (anodes) are driven by the outputs of two shift registers (74HC595) with current limiting resistors (220 ?) in series, as shown below.

The microcontroller pins used for driving these signals for 74HC595 and CD4017 are shown below. A 10K pot is connected to RA0 pin of PIC18F2550 microcontroller that will control the speed of the scrolling message on the LED matrix display.

Now lets talk about the scrolling effect. We will also define a display buffer for storing the bit information of 168 LEDs in the matrix. It would be an integer array (16-bit) of size 8 (for 8 rows). The content of this array is what displays on the matrix. The picture below shows the bit values of the buffer for blank display, i.e., all LEDs are turned off.

Now lets consider the case of displaying a message that scrolls from right to left. For displaying a character on the matrix, you need to switch among the rows very fast while feeding the column lines with appropriate logic levels (character specific) for each active row. If you want to move the character from right to left, you have to shift the column values for all rows in to left direction with an appropriate amount (Shift Step). Once the character has been shifted sufficiently, you can start feeding the column values of next character in the message. In each shift, you need to update the display buffer. The formula for updating the DisplayBuffer that would create scrolling effect from right to left is,

The value of ShiftAmount must be increased sequentially up to 8, after which the 88 character is fully loaded in to the display buffer. Then, ShiftAmount restarts from 1 again and starts loading the next character from the right, while the display buffer itself shifts left. This continues until all the characters in the message are loaded.

I constructed your circuit using the 18f2550 pic and used the scrolLED.hex file to replicate your results. However, the first row showed a very faint version of the last row and rows 2 through 8 showed the correct scrolling sign of rows 1 through 7. I checked the circuit at least 3 times and could not find a problem. Do you have any idea what is wrong?

Good work and more grease to your elbow. The Tutorials have been so helpful and valuable especially for me. I say THANK YOU. Please, i have designed the scroll display circuit with 16f1847 and it worked perfectly well. But how do i change the text to be displayed in the default message. I have tried modifying the code given but the display has been null. Please what or how can i change the default code without connecting to a computer system.

Good day sir, am intrested on your scrolling text massage on led 8&40, but the problem is that i want to replace the pic16f1847 to pic18f2550, if it can, can u write the source code and hex file and circuit diagram for me, and i will also like you to make the text on led after displayed at end, the text will fly and comes up and dwon and pus for some secons. thanks i nee your reply on my email, chekwub...@yahoo.com

Your project is so nice and I make it from scratch using PIC16F877A and test your code with small modified to remove ghosting led and now work fine.
But I would like to scroll up and down and more Animation if possible.

Hi Sir. Thanks for your great work. sir,you seem not to answer the question why the matrix does not display the character correctly, even though it is scrolling well,when simulated on proteus.I am also experiencing the same challenge.pls,help out sir.

b1e95dc632
Reply all
Reply to author
Forward
0 new messages