Η διάταξη προγραμματιζόμενων πυλών πεδίου (συχνά συντομεύεται ως FPGA) είναι ένα ηλεκτρονικό στοιχείο που χρησιμοποιείται για την κατασκευή αναδιαμορφώσιμων ψηφιακών κυκλωμάτων. Αυτό σημαίνει ότι μια FPGA διαφέρει από μια λογική πύλη, επειδή μια λογική πύλη έχει μια σταθερή λειτουργία. Αντίθετα μια FPGA έχει απροσδιόριστη λειτουργία κατά τη στιγμή της κατασκευής της. Πριν η FPGA χρησιμοποιηθεί σε ένα κύκλωμα πρέπει να προγραμματιστεί, δηλαδή να επαναδιαμορφωθεί.

Τα FPGA είναι ολοκληρωμένα κυκλώματα που ανήκουν στην κατηγορία των προγραμματιζόμενων λογικών διατάξεων ή PLD. Οι FPGA είναι οι πιο υψηλές επιδόσεις, οι πιο ευέλικτες αλλά και οι πιο ακριβές από τους τύπους PLD. Ένα μειονέκτημα των FPGAs σε σύγκριση με άλλα PLDs είναι ότι δεν θυμούνται το σχεδιασμό τους όταν αφαιρείται η τροφοδοσία. Επομένως, ένα FPGA χρειάζεται ένα ξεχωριστό τσιπ μνήμης διαμόρφωσης που κρατά το σχέδιο του FPGA. Όταν η τροφοδοσία επιστρέφει στην FPGA, ένα σταθερό τμήμα της FPGA διαβάζει τη διαμόρφωση από το τσιπ μνήμης διαμόρφωσης. Αφού διαμορφωθεί η FPGA θα είναι σε θέση να κάνει τη λειτουργία που της δόθηκε από το σχέδιο.

Ένα FPGA διαφέρει από έναν μικροεπεξεργαστή ή μικροελεγκτή. Μια FPGA στη βασική της μορφή δεν μπορεί να εκτελέσει λογισμικό. Μόνο όταν η FPGA λάβει μια διαμόρφωση που περιέχει μια αρχιτεκτονική επεξεργαστή έχει τη δυνατότητα να εκτελέσει λογισμικό.

Οι κατασκευαστές FPGA παρέχουν λογισμικό μηχανικής για Windows και μερικές φορές για Linux, για την ανάπτυξη σχεδίων για FPGA. Ο σχεδιασμός γράφεται συνήθως σε αναγνώσιμα από τον άνθρωπο αρχεία υπολογιστή που ονομάζονται Γλώσσα Περιγραφής Υλικού (HDL). Οι πιο δημοφιλείς είναι η VHDL και η Verilog. Οι γλώσσες περιγραφής υλικού είναι σε μεγάλο βαθμό συγκρίσιμες με τις γλώσσες προγραμματισμού. Αλλά η πρόθεση των HDLs είναι να σχεδιάζουν ψηφιακά λογικά κυκλώματα ενώ οι γλώσσες προγραμματισμού σχεδιάζουν λογισμικό.

Το λογισμικό σχεδιασμού FPGA πρέπει να μεταφράσει τον αφηρημένο κώδικα HDL στα λογικά στοιχεία που είναι διαθέσιμα στην επιλεγμένη FPGA. Αυτό ονομάζεται λογική σύνθεση. Στη συνέχεια, γίνεται μια διαδικασία τοποθέτησης και δρομολόγησης για την τοποθέτηση των λογικών στοιχείων στην FPGA. Το αποτέλεσμα είναι ένα αρχείο bit που μπορεί να προγραμματιστεί στην FPGA ή στη μνήμη διαμόρφωσης. Αυτό γίνεται συνήθως με έναν προγραμματιστή USB συνδεδεμένο στη θύρα JTAG της FPGA.

Επειδή το FPGA είναι ένα ολοκληρωμένο κύκλωμα, ο κατασκευαστής του FPGA μπορεί να αποφασίσει να προσθέσει άλλα κοινώς χρησιμοποιούμενα στοιχεία ολοκληρωμένου κυκλώματος. Αυτά τα σταθερά εξαρτήματα ονομάζονται πυρήνες. Πρόκειται για παράδειγμα για ελεγκτές Ethernet ή ακόμη και για μια πλήρη αρχιτεκτονική επεξεργαστή. Για διάφορα τμήματα της αγοράς, όπως η άμυνα, η ιατρική, οι επικοινωνίες και η ρομποτική, ο κατασκευαστής FPGA προσπαθεί να προσθέσει το πιο πολύτιμο σύνολο αυτών των πρόσθετων πυρήνων.