The FPGA programming handbook: an essential guide to FPGA design for transforming ideas into hardware using SystemVerilog and VHDL
In today's tech-driven world, Field Programmable Gate Arrays (FPGAs) are the foundation of many modern systems. Transforming ideas into reality demands a deep dive into FPGA architecture, tools, and design principles. This FPGA book is your companion to mastering FPGA development with SystemVer...
Gespeichert in:
Hauptverfasser: | , |
---|---|
Format: | Elektronisch E-Book |
Sprache: | English |
Veröffentlicht: |
Birmingham, UK
Packt Publishing
April 2024
|
Ausgabe: | Second edition |
Schriftenreihe: | Expert insight
|
Schlagworte: | |
Online-Zugang: | DE-1050 DE-573 DE-91 DE-706 Volltext |
Zusammenfassung: | In today's tech-driven world, Field Programmable Gate Arrays (FPGAs) are the foundation of many modern systems. Transforming ideas into reality demands a deep dive into FPGA architecture, tools, and design principles. This FPGA book is your companion to mastering FPGA development with SystemVerilog and VHDL. In this edition, you will master both SystemVerilog and VHDL, gaining supreme versatility in FPGA design. These skills open doors to diverse opportunities and projects in the field. Move beyond theory with real-world projects, starting from LED control and progressing to advanced microcontroller applications, which are highly sought after in today's FPGA job market. You will journey from basic Boolean logic circuits to a resource-optimized calculator, showcasing your hardware design prowess. You will elevate your knowledge by designing a Video Graphics Array (VGA) controller, demonstrating your ability to synthesize complex hardware systems. You can use this handbook as your FPGA development guide, where you will master intricacies, ignite creativity, and emerge with the expertise to craft hardware circuits using SystemVerilog and VHDL. The FPGA Programming Handbook isn't just another technical manual; it's your exhilarating journey to master theory and practice, accelerating your FPGA design skills to soaring new heights |
Beschreibung: | 1 Online-Ressource (xxv, 521 Seiten) |
ISBN: | 9781805121206 |
Internformat
MARC
LEADER | 00000nam a2200000 c 4500 | ||
---|---|---|---|
001 | BV049841128 | ||
003 | DE-604 | ||
005 | 20250129 | ||
007 | cr|uuu---uuuuu | ||
008 | 240829s2024 xx o|||| 00||| eng d | ||
020 | |a 9781805121206 |9 978-1-80512-120-6 | ||
035 | |a (ZDB-221-PWD)9781805121206 | ||
035 | |a (OCoLC)1454742497 | ||
035 | |a (DE-599)BVBBV049841128 | ||
040 | |a DE-604 |b ger |e rda | ||
041 | 0 | |a eng | |
049 | |a DE-1050 |a DE-83 |a DE-706 |a DE-91 |a DE-573 | ||
100 | 1 | |a Bruno, Frank |e Verfasser |0 (DE-588)1240731310 |4 aut | |
245 | 1 | 0 | |a The FPGA programming handbook |b an essential guide to FPGA design for transforming ideas into hardware using SystemVerilog and VHDL |c Frank Bruno, Guy Eschemann |
250 | |a Second edition | ||
264 | 1 | |a Birmingham, UK |b Packt Publishing |c April 2024 | |
300 | |a 1 Online-Ressource (xxv, 521 Seiten) | ||
336 | |b txt |2 rdacontent | ||
337 | |b c |2 rdamedia | ||
338 | |b cr |2 rdacarrier | ||
490 | 0 | |a Expert insight | |
520 | |a In today's tech-driven world, Field Programmable Gate Arrays (FPGAs) are the foundation of many modern systems. Transforming ideas into reality demands a deep dive into FPGA architecture, tools, and design principles. This FPGA book is your companion to mastering FPGA development with SystemVerilog and VHDL. In this edition, you will master both SystemVerilog and VHDL, gaining supreme versatility in FPGA design. These skills open doors to diverse opportunities and projects in the field. Move beyond theory with real-world projects, starting from LED control and progressing to advanced microcontroller applications, which are highly sought after in today's FPGA job market. You will journey from basic Boolean logic circuits to a resource-optimized calculator, showcasing your hardware design prowess. You will elevate your knowledge by designing a Video Graphics Array (VGA) controller, demonstrating your ability to synthesize complex hardware systems. You can use this handbook as your FPGA development guide, where you will master intricacies, ignite creativity, and emerge with the expertise to craft hardware circuits using SystemVerilog and VHDL. The FPGA Programming Handbook isn't just another technical manual; it's your exhilarating journey to master theory and practice, accelerating your FPGA design skills to soaring new heights | ||
650 | 4 | |a Field programmable gate arrays / Computer-aided design | |
650 | 4 | |a Do-it-yourself work / Software | |
650 | 4 | |a Logic design | |
650 | 4 | |a Electronics | |
650 | 4 | |a Systems engineering | |
650 | 4 | |a Réseaux logiques programmables par l'utilisateur / Conception assistée par ordinateur | |
650 | 4 | |a Bricolage / Logiciels | |
650 | 4 | |a Structure logique | |
650 | 4 | |a Électronique | |
650 | 4 | |a Ingénierie des systèmes | |
650 | 7 | |a systems engineering |2 aat | |
700 | 1 | |a Eschemann, Guy |e Verfasser |0 (DE-588)1331342023 |4 aut | |
776 | 0 | 8 | |i Erscheint auch als |n Druck-Ausgabe |z 978-1-80512-559-4 |
856 | 4 | 0 | |u https://portal.igpublish.com/iglibrary/search/PACKT0007137.html |x Verlag |z URL des Erstveröffentlichers |3 Volltext |
912 | |a ZDB-23-DGG | ||
912 | |a ZDB-30-PQE | ||
912 | |a ZDB-221-PWD | ||
943 | 1 | |a oai:aleph.bib-bvb.de:BVB01-035181071 | |
966 | e | |u https://ebookcentral.proquest.com/lib/th-deggendorf/detail.action?docID=31302744 |l DE-1050 |p ZDB-30-PQE |q FHD01_PQE_Kauf |x Aggregator |3 Volltext | |
966 | e | |u https://portal.igpublish.com/iglibrary/search/PACKT0007137.html |l DE-573 |p ZDB-221-PWD |x Verlag |3 Volltext | |
966 | e | |u https://portal.igpublish.com/iglibrary/search/PACKT0007137.html |l DE-91 |p ZDB-221-PWD |q TUM_Paketkauf_2025 |x Verlag |3 Volltext | |
966 | e | |u https://portal.igpublish.com/iglibrary/search/PACKT0007137.html |l DE-706 |p ZDB-221-PWD |x Verlag |3 Volltext |
Datensatz im Suchindex
_version_ | 1822595943499825152 |
---|---|
adam_text | |
any_adam_object | |
author | Bruno, Frank Eschemann, Guy |
author_GND | (DE-588)1240731310 (DE-588)1331342023 |
author_facet | Bruno, Frank Eschemann, Guy |
author_role | aut aut |
author_sort | Bruno, Frank |
author_variant | f b fb g e ge |
building | Verbundindex |
bvnumber | BV049841128 |
collection | ZDB-23-DGG ZDB-30-PQE ZDB-221-PWD |
contents | Cover -- Copyright -- Contributors -- Table of Contents -- Preface -- Chapter 1: Introduction to FPGA Architectures -- Technical requirements -- What is an ASIC? -- Why an ASIC or FPGA? -- How does a company create a programmable device using an ASIC process? -- Introduction to HDLs -- Logical versus bitwise operations -- Creating gates using HDL -- Assign statement (SystemVerilog/Verilog) -- Assign statement equivalent (VHDL) -- Single line comments -- Multiline comments -- if statement -- Fundamental logic gates -- Logical NOT -- Logical AND -- Logical OR -- XOR -- More complex operations -- Introducing FPGAs -- Exploring the Xilinx Artix-7 and 7 series devices -- Combinational logic blocks -- Storage -- Clocking -- I/Os -- DSP48E1 -- Xilinx DSP core in 7 series devices -- ASMBL architecture -- Evaluation boards -- Nexys A7 100T (or 50T) -- Summary -- Questions -- Answers -- Further reading -- Chapter 2: FPGA Programming Languages and Tools -- Technical requirements -- Hardware -- Information on the Nexys A7 -- Software -- Hardware Description Languages (HDLs) -- SystemVerilog versus Verilog -- SystemVerilog versus VHDL -- Introducing Vitis and Vivado -- Vivado installation -- Design flow -- Design definition/specification -- Design entry/constraints -- Simulation -- Synthesis -- Implementation -- Running the example -- Loading the design -- Directory structure -- Testbench -- VHDL testbench -- Running a simulation -- Implementation -- Program the board -- Summary -- Questions -- Answers -- Challenge -- Further reading -- Chapter 3: Combinational Logic -- Technical requirements -- Creating FPGA designs -- How to create reusable code -- parameters and generics -- Understanding the basics of HDL design -- Introducing data types -- Creating arrays -- Querying arrays -- Assigning to arrays -- Handling multiple-driven nets Handling signed and unsigned numbers -- Adding bits to a signal by concatenating -- Casting signed and unsigned numbers -- Creating user-defined types -- Accessing signals using values with enumerated types -- Packaging up code using functions -- Creating combinational logic -- Handling assignment operators -- Incrementing signals -- Making decisions -- if-then-else -- Introducing the case statement (SystemVerilog) -- Using the conditional operator to select data -- Introducing the case statement (VHDL) -- Using custom data types -- Creating structures -- Creating unions (SystemVerilog) -- Project 2 -- Creating combinational logic -- Testbench -- Simulating using targeted testing -- Simulating using randomized testing -- Simulating using constrained randomization -- Implementing an LOD using the case statement (SystemVerilog) -- Controlling implementation using generate -- Designing a reusable LOD using a for loop -- Setting SELECTOR = DOWN_FOR -- Setting SELECTOR = UP_FOR -- Counting the number of ones -- Implementing an adder/subtractor -- Adder -- Subtractor -- Implementing a Multiplier -- Bringing it all together -- Adding a latch -- Summary -- Questions -- Answers -- Challenge -- Further reading -- Chapter 4: Counting Button Presses -- Technical requirements -- What is a sequential element? -- Clocking your design -- Looking at a basic register -- Creating a Flip-Flops using SystemVerilog -- Creating a flip-flop using VHDL -- When to use always @() for FF generation -- Using non-blocking assignments -- Registers in the Artix 7 -- How to retain state using clock enables -- Resetting the FF -- Project 3 -- Counting Button Presses -- Introducing the seven-segment display -- Detecting button presses -- Analyzing timing -- Looking at asynchronous issues -- Using the asynchronous signal directly -- Problem with push buttons Designing a safe implementation -- Switching to decimal representation -- Introducing the ILA -- What about simulation? -- Deep dive into synchronization -- Why use multiple clocks? -- Two-stage synchronizer -- Synchronizing control signals -- Passing data -- Summary -- Questions -- Answers -- Challenge -- Further reading -- Chapter 5: Let's Build a Calculator -- Technical requirements -- What is a state machine? -- Writing a purely sequential state machine -- Splitting combination and sequential logic in a state machine -- Designing a calculator interface -- Designing a Moore state machine -- Implementing a Mealy state machine -- Practical state machine design -- Project 4 -- Building a Simple Calculator -- Packaging for reuse -- Coding the top level -- Changing frequencies by using a PLL or MMCM -- Investigating the divider -- Building a non-restoring divider state machine -- Simulating the divider -- Sizing the intermediate remainder -- Project 5 -- Keeping cars in line -- Creating the state diagram -- Displaying our traffic lights -- Pulse width modulation -- Implementing delays with a counter -- Summary -- Questions -- Answers -- Challenge -- Extra challenge -- Further reading -- Chapter 6: FPGA Resources and How to Use Them -- Technical requirements -- What is a digital microphone? -- What is PDM? -- Project 6 -- Listening and learning -- Simulating the microphone -- Introducing storage -- Inferring, instantiating, or using the IP catalog to generate RAM -- Basic RAM types -- Using xpm_cdc for clock domain crossing -- Instantiating memories using xpm_memory -- Vivado language templates -- Using the IP catalog to create memory -- Capturing audio data -- Project 7 -- Using the temperature sensor -- Processing and displaying the data -- Smoothing out the data (oversampling) -- A deeper dive into FIFOs -- Constraints -- Generating our FIFO -- Summary Questions -- Answers -- Further reading -- Chapter 7: Math, Parallelism, and Pipelined Design -- Technical requirements -- Introduction to fixed-point numbers -- Project 8 -- Using fixed-point arithmetic in our temperature sensor -- Using fixed-point arithmetic to clean up the bring-up time -- Temperature conversion using fixed-point arithmetic -- What about floating-point numbers? -- Floating-point addition and subtraction -- Floating-point multiplication -- Floating-point reciprocal -- A more practical floating-point operation library -- A quick look at the AXI streaming interface -- Project 9 -- Updating the temperature sensor project to a pipelined floating-point implementation -- Fixed-to-floating-point conversion -- Floating-point math operations -- Float-to-fixed-point conversion -- Simulation -- Simulation environment -- Parallel designs -- ML and AI and massive parallelism -- Parallel design -- a quick example -- Summary -- Questions -- Answers -- Challenge -- Further reading -- Chapter 8: Introduction to AXI -- Technical requirements -- AXI streaming interfaces -- Project 10 -- Creating IP for Vivado using AXI streaming interfaces -- Seven-segment display streaming interface -- Developing the adt7420 IP -- Understanding the flt_temp core -- Introduction to the IP Integrator -- IP Integrator debugging -- Packaging the project -- AXI4 interfaces (full and AXI-Lite) -- Developing IPs -- AXI-Lite, full, and streaming -- Adding an unpackaged IP to the IP Integrator -- Summary -- Questions -- Answers -- Completed designs -- Further reading -- Chapter 9: Lots of Data? MIG and DDR2 -- Technical requirements -- Note on VHDL -- Project 11 -- Introducing external memory -- Introduction to DDR2 -- Generating a DDR2 controller using the Xilinx MIG -- Setting AXI parameters -- Setting memory options -- Defining the FPGA options Modifying the design for use on the board -- Introducing a few other external memory types -- QDR SRAM -- HyperRAM -- SPI RAM -- Summary -- Questions -- Answers -- Challenge -- Further reading -- Chapter 10: A Better Way to Display -- VGA -- Technical requirements -- Project 12 -- Introducing the VGA -- Defining registers -- Coding a simple AXI-Lite interface -- Generating timing for the VGA -- The VGA monitor timing generator -- Displaying text -- Requesting memory -- Testing the VGA controller -- Examining the constraints -- Summary -- Questions -- Answer -- Challenge -- Further reading -- Chapter 11: Bringing It All Together -- Technical requirements -- Investigating the keyboard interface -- Project 13 -- Handling the keyboard -- Testing the PS/2 -- Project 14 -- Bringing it all together -- Displaying PS/2 keycodes on the VGA screen -- Displaying the temperature sensor data -- Adding a custom character to the text ROM -- Displaying audio data -- Summary -- Questions -- Answers -- Challenge -- Further reading -- Chapter 12: Using the PMOD Connectors -- SPI and UART -- Technical requirements -- UART PMOD -- ACL2 PMOD -- Understanding Peripheral Modules (PMODs) -- PMOD Type 1 and 1A -- PMOD Type 2 and 2A -- PMOD Type 3 and 3A -- PMOD Type 4, 5, and 5A -- PMOD Type 6 and 6A -- PMOD Type 7 and 7A -- Introduction to Universal Asynchronous Receiver-Transmitter (UART) -- Bus interface -- Waveform -- Register interface -- RBR -- Receive Buffer Register -- THR -- Transmit Holding Register -- IER -- Interrupt Enable Register -- ISR -- Interrupt Status Register -- FCR -- FIFO Control Register -- LCR -- Line Control Register -- MCR -- Modem Control Register -- LSR -- Line Status Register -- MSR -- Modem Status Register -- SCRATCH -- Scratch Pad Register -- DLL, DLM -- Divisor Register LSB and MSB -- UART Implementation -- CPU Interface -- UART Core -- My UART origins |
ctrlnum | (ZDB-221-PWD)9781805121206 (OCoLC)1454742497 (DE-599)BVBBV049841128 |
edition | Second edition |
format | Electronic eBook |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>00000nam a2200000 c 4500</leader><controlfield tag="001">BV049841128</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20250129</controlfield><controlfield tag="007">cr|uuu---uuuuu</controlfield><controlfield tag="008">240829s2024 xx o|||| 00||| eng d</controlfield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9781805121206</subfield><subfield code="9">978-1-80512-120-6</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(ZDB-221-PWD)9781805121206</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)1454742497</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV049841128</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rda</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-1050</subfield><subfield code="a">DE-83</subfield><subfield code="a">DE-706</subfield><subfield code="a">DE-91</subfield><subfield code="a">DE-573</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Bruno, Frank</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)1240731310</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">The FPGA programming handbook</subfield><subfield code="b">an essential guide to FPGA design for transforming ideas into hardware using SystemVerilog and VHDL</subfield><subfield code="c">Frank Bruno, Guy Eschemann</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">Second edition</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Birmingham, UK</subfield><subfield code="b">Packt Publishing</subfield><subfield code="c">April 2024</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">1 Online-Ressource (xxv, 521 Seiten)</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">c</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">cr</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="490" ind1="0" ind2=" "><subfield code="a">Expert insight</subfield></datafield><datafield tag="520" ind1=" " ind2=" "><subfield code="a">In today's tech-driven world, Field Programmable Gate Arrays (FPGAs) are the foundation of many modern systems. Transforming ideas into reality demands a deep dive into FPGA architecture, tools, and design principles. This FPGA book is your companion to mastering FPGA development with SystemVerilog and VHDL. In this edition, you will master both SystemVerilog and VHDL, gaining supreme versatility in FPGA design. These skills open doors to diverse opportunities and projects in the field. Move beyond theory with real-world projects, starting from LED control and progressing to advanced microcontroller applications, which are highly sought after in today's FPGA job market. You will journey from basic Boolean logic circuits to a resource-optimized calculator, showcasing your hardware design prowess. You will elevate your knowledge by designing a Video Graphics Array (VGA) controller, demonstrating your ability to synthesize complex hardware systems. You can use this handbook as your FPGA development guide, where you will master intricacies, ignite creativity, and emerge with the expertise to craft hardware circuits using SystemVerilog and VHDL. The FPGA Programming Handbook isn't just another technical manual; it's your exhilarating journey to master theory and practice, accelerating your FPGA design skills to soaring new heights</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Field programmable gate arrays / Computer-aided design</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Do-it-yourself work / Software</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Logic design</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Electronics</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Systems engineering</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Réseaux logiques programmables par l'utilisateur / Conception assistée par ordinateur</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Bricolage / Logiciels</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Structure logique</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Électronique</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Ingénierie des systèmes</subfield></datafield><datafield tag="650" ind1=" " ind2="7"><subfield code="a">systems engineering</subfield><subfield code="2">aat</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Eschemann, Guy</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)1331342023</subfield><subfield code="4">aut</subfield></datafield><datafield tag="776" ind1="0" ind2="8"><subfield code="i">Erscheint auch als</subfield><subfield code="n">Druck-Ausgabe</subfield><subfield code="z">978-1-80512-559-4</subfield></datafield><datafield tag="856" ind1="4" ind2="0"><subfield code="u">https://portal.igpublish.com/iglibrary/search/PACKT0007137.html</subfield><subfield code="x">Verlag</subfield><subfield code="z">URL des Erstveröffentlichers</subfield><subfield code="3">Volltext</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">ZDB-23-DGG</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">ZDB-30-PQE</subfield></datafield><datafield tag="912" ind1=" " ind2=" "><subfield code="a">ZDB-221-PWD</subfield></datafield><datafield tag="943" ind1="1" ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-035181071</subfield></datafield><datafield tag="966" ind1="e" ind2=" "><subfield code="u">https://ebookcentral.proquest.com/lib/th-deggendorf/detail.action?docID=31302744</subfield><subfield code="l">DE-1050</subfield><subfield code="p">ZDB-30-PQE</subfield><subfield code="q">FHD01_PQE_Kauf</subfield><subfield code="x">Aggregator</subfield><subfield code="3">Volltext</subfield></datafield><datafield tag="966" ind1="e" ind2=" "><subfield code="u">https://portal.igpublish.com/iglibrary/search/PACKT0007137.html</subfield><subfield code="l">DE-573</subfield><subfield code="p">ZDB-221-PWD</subfield><subfield code="x">Verlag</subfield><subfield code="3">Volltext</subfield></datafield><datafield tag="966" ind1="e" ind2=" "><subfield code="u">https://portal.igpublish.com/iglibrary/search/PACKT0007137.html</subfield><subfield code="l">DE-91</subfield><subfield code="p">ZDB-221-PWD</subfield><subfield code="q">TUM_Paketkauf_2025</subfield><subfield code="x">Verlag</subfield><subfield code="3">Volltext</subfield></datafield><datafield tag="966" ind1="e" ind2=" "><subfield code="u">https://portal.igpublish.com/iglibrary/search/PACKT0007137.html</subfield><subfield code="l">DE-706</subfield><subfield code="p">ZDB-221-PWD</subfield><subfield code="x">Verlag</subfield><subfield code="3">Volltext</subfield></datafield></record></collection> |
id | DE-604.BV049841128 |
illustrated | Not Illustrated |
indexdate | 2025-01-29T15:02:20Z |
institution | BVB |
isbn | 9781805121206 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-035181071 |
oclc_num | 1454742497 |
open_access_boolean | |
owner | DE-1050 DE-83 DE-706 DE-91 DE-BY-TUM DE-573 |
owner_facet | DE-1050 DE-83 DE-706 DE-91 DE-BY-TUM DE-573 |
physical | 1 Online-Ressource (xxv, 521 Seiten) |
psigel | ZDB-23-DGG ZDB-30-PQE ZDB-221-PWD ZDB-30-PQE FHD01_PQE_Kauf ZDB-221-PWD TUM_Paketkauf_2025 |
publishDate | 2024 |
publishDateSearch | 2024 |
publishDateSort | 2024 |
publisher | Packt Publishing |
record_format | marc |
series2 | Expert insight |
spelling | Bruno, Frank Verfasser (DE-588)1240731310 aut The FPGA programming handbook an essential guide to FPGA design for transforming ideas into hardware using SystemVerilog and VHDL Frank Bruno, Guy Eschemann Second edition Birmingham, UK Packt Publishing April 2024 1 Online-Ressource (xxv, 521 Seiten) txt rdacontent c rdamedia cr rdacarrier Expert insight In today's tech-driven world, Field Programmable Gate Arrays (FPGAs) are the foundation of many modern systems. Transforming ideas into reality demands a deep dive into FPGA architecture, tools, and design principles. This FPGA book is your companion to mastering FPGA development with SystemVerilog and VHDL. In this edition, you will master both SystemVerilog and VHDL, gaining supreme versatility in FPGA design. These skills open doors to diverse opportunities and projects in the field. Move beyond theory with real-world projects, starting from LED control and progressing to advanced microcontroller applications, which are highly sought after in today's FPGA job market. You will journey from basic Boolean logic circuits to a resource-optimized calculator, showcasing your hardware design prowess. You will elevate your knowledge by designing a Video Graphics Array (VGA) controller, demonstrating your ability to synthesize complex hardware systems. You can use this handbook as your FPGA development guide, where you will master intricacies, ignite creativity, and emerge with the expertise to craft hardware circuits using SystemVerilog and VHDL. The FPGA Programming Handbook isn't just another technical manual; it's your exhilarating journey to master theory and practice, accelerating your FPGA design skills to soaring new heights Field programmable gate arrays / Computer-aided design Do-it-yourself work / Software Logic design Electronics Systems engineering Réseaux logiques programmables par l'utilisateur / Conception assistée par ordinateur Bricolage / Logiciels Structure logique Électronique Ingénierie des systèmes systems engineering aat Eschemann, Guy Verfasser (DE-588)1331342023 aut Erscheint auch als Druck-Ausgabe 978-1-80512-559-4 https://portal.igpublish.com/iglibrary/search/PACKT0007137.html Verlag URL des Erstveröffentlichers Volltext |
spellingShingle | Bruno, Frank Eschemann, Guy The FPGA programming handbook an essential guide to FPGA design for transforming ideas into hardware using SystemVerilog and VHDL Cover -- Copyright -- Contributors -- Table of Contents -- Preface -- Chapter 1: Introduction to FPGA Architectures -- Technical requirements -- What is an ASIC? -- Why an ASIC or FPGA? -- How does a company create a programmable device using an ASIC process? -- Introduction to HDLs -- Logical versus bitwise operations -- Creating gates using HDL -- Assign statement (SystemVerilog/Verilog) -- Assign statement equivalent (VHDL) -- Single line comments -- Multiline comments -- if statement -- Fundamental logic gates -- Logical NOT -- Logical AND -- Logical OR -- XOR -- More complex operations -- Introducing FPGAs -- Exploring the Xilinx Artix-7 and 7 series devices -- Combinational logic blocks -- Storage -- Clocking -- I/Os -- DSP48E1 -- Xilinx DSP core in 7 series devices -- ASMBL architecture -- Evaluation boards -- Nexys A7 100T (or 50T) -- Summary -- Questions -- Answers -- Further reading -- Chapter 2: FPGA Programming Languages and Tools -- Technical requirements -- Hardware -- Information on the Nexys A7 -- Software -- Hardware Description Languages (HDLs) -- SystemVerilog versus Verilog -- SystemVerilog versus VHDL -- Introducing Vitis and Vivado -- Vivado installation -- Design flow -- Design definition/specification -- Design entry/constraints -- Simulation -- Synthesis -- Implementation -- Running the example -- Loading the design -- Directory structure -- Testbench -- VHDL testbench -- Running a simulation -- Implementation -- Program the board -- Summary -- Questions -- Answers -- Challenge -- Further reading -- Chapter 3: Combinational Logic -- Technical requirements -- Creating FPGA designs -- How to create reusable code -- parameters and generics -- Understanding the basics of HDL design -- Introducing data types -- Creating arrays -- Querying arrays -- Assigning to arrays -- Handling multiple-driven nets Handling signed and unsigned numbers -- Adding bits to a signal by concatenating -- Casting signed and unsigned numbers -- Creating user-defined types -- Accessing signals using values with enumerated types -- Packaging up code using functions -- Creating combinational logic -- Handling assignment operators -- Incrementing signals -- Making decisions -- if-then-else -- Introducing the case statement (SystemVerilog) -- Using the conditional operator to select data -- Introducing the case statement (VHDL) -- Using custom data types -- Creating structures -- Creating unions (SystemVerilog) -- Project 2 -- Creating combinational logic -- Testbench -- Simulating using targeted testing -- Simulating using randomized testing -- Simulating using constrained randomization -- Implementing an LOD using the case statement (SystemVerilog) -- Controlling implementation using generate -- Designing a reusable LOD using a for loop -- Setting SELECTOR = DOWN_FOR -- Setting SELECTOR = UP_FOR -- Counting the number of ones -- Implementing an adder/subtractor -- Adder -- Subtractor -- Implementing a Multiplier -- Bringing it all together -- Adding a latch -- Summary -- Questions -- Answers -- Challenge -- Further reading -- Chapter 4: Counting Button Presses -- Technical requirements -- What is a sequential element? -- Clocking your design -- Looking at a basic register -- Creating a Flip-Flops using SystemVerilog -- Creating a flip-flop using VHDL -- When to use always @() for FF generation -- Using non-blocking assignments -- Registers in the Artix 7 -- How to retain state using clock enables -- Resetting the FF -- Project 3 -- Counting Button Presses -- Introducing the seven-segment display -- Detecting button presses -- Analyzing timing -- Looking at asynchronous issues -- Using the asynchronous signal directly -- Problem with push buttons Designing a safe implementation -- Switching to decimal representation -- Introducing the ILA -- What about simulation? -- Deep dive into synchronization -- Why use multiple clocks? -- Two-stage synchronizer -- Synchronizing control signals -- Passing data -- Summary -- Questions -- Answers -- Challenge -- Further reading -- Chapter 5: Let's Build a Calculator -- Technical requirements -- What is a state machine? -- Writing a purely sequential state machine -- Splitting combination and sequential logic in a state machine -- Designing a calculator interface -- Designing a Moore state machine -- Implementing a Mealy state machine -- Practical state machine design -- Project 4 -- Building a Simple Calculator -- Packaging for reuse -- Coding the top level -- Changing frequencies by using a PLL or MMCM -- Investigating the divider -- Building a non-restoring divider state machine -- Simulating the divider -- Sizing the intermediate remainder -- Project 5 -- Keeping cars in line -- Creating the state diagram -- Displaying our traffic lights -- Pulse width modulation -- Implementing delays with a counter -- Summary -- Questions -- Answers -- Challenge -- Extra challenge -- Further reading -- Chapter 6: FPGA Resources and How to Use Them -- Technical requirements -- What is a digital microphone? -- What is PDM? -- Project 6 -- Listening and learning -- Simulating the microphone -- Introducing storage -- Inferring, instantiating, or using the IP catalog to generate RAM -- Basic RAM types -- Using xpm_cdc for clock domain crossing -- Instantiating memories using xpm_memory -- Vivado language templates -- Using the IP catalog to create memory -- Capturing audio data -- Project 7 -- Using the temperature sensor -- Processing and displaying the data -- Smoothing out the data (oversampling) -- A deeper dive into FIFOs -- Constraints -- Generating our FIFO -- Summary Questions -- Answers -- Further reading -- Chapter 7: Math, Parallelism, and Pipelined Design -- Technical requirements -- Introduction to fixed-point numbers -- Project 8 -- Using fixed-point arithmetic in our temperature sensor -- Using fixed-point arithmetic to clean up the bring-up time -- Temperature conversion using fixed-point arithmetic -- What about floating-point numbers? -- Floating-point addition and subtraction -- Floating-point multiplication -- Floating-point reciprocal -- A more practical floating-point operation library -- A quick look at the AXI streaming interface -- Project 9 -- Updating the temperature sensor project to a pipelined floating-point implementation -- Fixed-to-floating-point conversion -- Floating-point math operations -- Float-to-fixed-point conversion -- Simulation -- Simulation environment -- Parallel designs -- ML and AI and massive parallelism -- Parallel design -- a quick example -- Summary -- Questions -- Answers -- Challenge -- Further reading -- Chapter 8: Introduction to AXI -- Technical requirements -- AXI streaming interfaces -- Project 10 -- Creating IP for Vivado using AXI streaming interfaces -- Seven-segment display streaming interface -- Developing the adt7420 IP -- Understanding the flt_temp core -- Introduction to the IP Integrator -- IP Integrator debugging -- Packaging the project -- AXI4 interfaces (full and AXI-Lite) -- Developing IPs -- AXI-Lite, full, and streaming -- Adding an unpackaged IP to the IP Integrator -- Summary -- Questions -- Answers -- Completed designs -- Further reading -- Chapter 9: Lots of Data? MIG and DDR2 -- Technical requirements -- Note on VHDL -- Project 11 -- Introducing external memory -- Introduction to DDR2 -- Generating a DDR2 controller using the Xilinx MIG -- Setting AXI parameters -- Setting memory options -- Defining the FPGA options Modifying the design for use on the board -- Introducing a few other external memory types -- QDR SRAM -- HyperRAM -- SPI RAM -- Summary -- Questions -- Answers -- Challenge -- Further reading -- Chapter 10: A Better Way to Display -- VGA -- Technical requirements -- Project 12 -- Introducing the VGA -- Defining registers -- Coding a simple AXI-Lite interface -- Generating timing for the VGA -- The VGA monitor timing generator -- Displaying text -- Requesting memory -- Testing the VGA controller -- Examining the constraints -- Summary -- Questions -- Answer -- Challenge -- Further reading -- Chapter 11: Bringing It All Together -- Technical requirements -- Investigating the keyboard interface -- Project 13 -- Handling the keyboard -- Testing the PS/2 -- Project 14 -- Bringing it all together -- Displaying PS/2 keycodes on the VGA screen -- Displaying the temperature sensor data -- Adding a custom character to the text ROM -- Displaying audio data -- Summary -- Questions -- Answers -- Challenge -- Further reading -- Chapter 12: Using the PMOD Connectors -- SPI and UART -- Technical requirements -- UART PMOD -- ACL2 PMOD -- Understanding Peripheral Modules (PMODs) -- PMOD Type 1 and 1A -- PMOD Type 2 and 2A -- PMOD Type 3 and 3A -- PMOD Type 4, 5, and 5A -- PMOD Type 6 and 6A -- PMOD Type 7 and 7A -- Introduction to Universal Asynchronous Receiver-Transmitter (UART) -- Bus interface -- Waveform -- Register interface -- RBR -- Receive Buffer Register -- THR -- Transmit Holding Register -- IER -- Interrupt Enable Register -- ISR -- Interrupt Status Register -- FCR -- FIFO Control Register -- LCR -- Line Control Register -- MCR -- Modem Control Register -- LSR -- Line Status Register -- MSR -- Modem Status Register -- SCRATCH -- Scratch Pad Register -- DLL, DLM -- Divisor Register LSB and MSB -- UART Implementation -- CPU Interface -- UART Core -- My UART origins Field programmable gate arrays / Computer-aided design Do-it-yourself work / Software Logic design Electronics Systems engineering Réseaux logiques programmables par l'utilisateur / Conception assistée par ordinateur Bricolage / Logiciels Structure logique Électronique Ingénierie des systèmes systems engineering aat |
title | The FPGA programming handbook an essential guide to FPGA design for transforming ideas into hardware using SystemVerilog and VHDL |
title_auth | The FPGA programming handbook an essential guide to FPGA design for transforming ideas into hardware using SystemVerilog and VHDL |
title_exact_search | The FPGA programming handbook an essential guide to FPGA design for transforming ideas into hardware using SystemVerilog and VHDL |
title_full | The FPGA programming handbook an essential guide to FPGA design for transforming ideas into hardware using SystemVerilog and VHDL Frank Bruno, Guy Eschemann |
title_fullStr | The FPGA programming handbook an essential guide to FPGA design for transforming ideas into hardware using SystemVerilog and VHDL Frank Bruno, Guy Eschemann |
title_full_unstemmed | The FPGA programming handbook an essential guide to FPGA design for transforming ideas into hardware using SystemVerilog and VHDL Frank Bruno, Guy Eschemann |
title_short | The FPGA programming handbook |
title_sort | the fpga programming handbook an essential guide to fpga design for transforming ideas into hardware using systemverilog and vhdl |
title_sub | an essential guide to FPGA design for transforming ideas into hardware using SystemVerilog and VHDL |
topic | Field programmable gate arrays / Computer-aided design Do-it-yourself work / Software Logic design Electronics Systems engineering Réseaux logiques programmables par l'utilisateur / Conception assistée par ordinateur Bricolage / Logiciels Structure logique Électronique Ingénierie des systèmes systems engineering aat |
topic_facet | Field programmable gate arrays / Computer-aided design Do-it-yourself work / Software Logic design Electronics Systems engineering Réseaux logiques programmables par l'utilisateur / Conception assistée par ordinateur Bricolage / Logiciels Structure logique Électronique Ingénierie des systèmes systems engineering |
url | https://portal.igpublish.com/iglibrary/search/PACKT0007137.html |
work_keys_str_mv | AT brunofrank thefpgaprogramminghandbookanessentialguidetofpgadesignfortransformingideasintohardwareusingsystemverilogandvhdl AT eschemannguy thefpgaprogramminghandbookanessentialguidetofpgadesignfortransformingideasintohardwareusingsystemverilogandvhdl |