FPGA Prototyping by VHDL Examples

Xilinx MicroBlaze MCS SoC
 
 
Standards Information Network (Verlag)
  • 2. Auflage
  • |
  • erschienen am 12. Oktober 2017
  • |
  • 632 Seiten
 
E-Book | PDF mit Adobe DRM | Systemvoraussetzungen
978-1-119-28275-4 (ISBN)
 
A hands-on introduction to FPGA prototyping and SoC design
This Second Edition of the popular book follows the same "learning-by-doing" approach to teach the fundamentals and practices of VHDL synthesis and FPGA prototyping. It uses a coherent series of examples to demonstrate the process to develop sophisticated digital circuits and IP (intellectual property) cores, integrate them into an SoC (system on a chip) framework, realize the system on an FPGA prototyping board, and verify the hardware and software operation. The examples start with simple gate-level circuits, progress gradually through the RT (register transfer) level modules, and lead to a functional embedded system with custom I/O peripherals and hardware accelerators. Although it is an introductory text, the examples are developed in a rigorous manner, and the derivations follow strict design guidelines and coding practices used for large, complex digital systems.
The new edition is completely updated. It presents the hardware design in the SoC context and introduces the hardware-software co-design concept. Instead of treating examples as isolated entities, the book integrates them into a single coherent SoC platform that allows readers to explore both hardware and software "programmability" and develop complex and interesting embedded system projects. The revised edition:
* Adds four general-purpose IP cores, which are multi-channel PWM (pulse width modulation) controller, I²C controller, SPI controller, and XADC (Xilinx analog-to-digital converter) controller.
* Introduces a music synthesizer constructed with a DDFS (direct digital frequency synthesis) module and an ADSR (attack-decay-sustain-release) envelop generator.
* Expands the original video controller into a complete stream-based video subsystem that incorporates a video synchronization circuit, a test pattern generator, an OSD (on-screen display) controller, a sprite generator, and a frame buffer.
* Introduces basic concepts of software-hardware co-design with Xilinx MicroBlaze MCS soft-core processor.
* Provides an overview of bus interconnect and interface circuit.
* Introduces basic embedded system software development.
* Suggests additional modules and peripherals for interesting and challenging projects.
The FPGA Prototyping by VHDL Examples, Second Edition makes a natural companion text for introductory and advanced digital design courses and embedded system course. It also serves as an ideal self-teaching guide for practicing engineers who wish to learn more about this emerging area of interest.
2. Auflage
  • Englisch
  • New York
  • |
  • USA
John Wiley & Sons Inc
  • Für Beruf und Forschung
  • Überarbeitete Ausgabe
  • 32,15 MB
978-1-119-28275-4 (9781119282754)
1119282756 (1119282756)
weitere Ausgaben werden ermittelt
PONG P. CHU, PhD is Associate Professor in the Department of Electrical Engineering and Computer Science at Cleveland State University, Cleveland, Ohio. He has taught undergraduate and graduate digital systems and computer architecture courses for more than two decades, and has received multiple instructional grants from the National Science Foundation.
1 - FPGA PROTOTYPING BY VHDL EXAMPLES [Seite 3]
2 - CONTENTS [Seite 9]
3 - Preface [Seite 27]
4 - Acknowledgments [Seite 33]
5 - PART I BASIC DIGITAL CIRCUITS DEVELOPMENT [Seite 35]
5.1 - 1 Gate-Level Combinational Circuit [Seite 37]
5.1.1 - 1.1 Overview of VHDL [Seite 37]
5.1.2 - 1.2 General description [Seite 38]
5.1.2.1 - 1.2.1 Basic lexical rules [Seite 39]
5.1.2.2 - 1.2.2 Library and package [Seite 39]
5.1.2.3 - 1.2.3 Entity declaration [Seite 39]
5.1.2.4 - 1.2.4 Data type and operators [Seite 39]
5.1.2.5 - 1.2.5 Architecture body [Seite 40]
5.1.2.6 - 1.2.6 Code of a 2-bit comparator [Seite 41]
5.1.3 - 1.3 Structural description [Seite 42]
5.1.4 - 1.4 Top-level signal mapping [Seite 44]
5.1.5 - 1.5 Testbench [Seite 45]
5.1.6 - 1.6 Bibliographic notes [Seite 47]
5.1.7 - 1.7 Suggested experiments [Seite 47]
5.1.7.1 - 1.7.1 Code for gate-level greater-than circuit [Seite 47]
5.1.7.2 - 1.7.2 Code for gate-level binary decoder [Seite 47]
5.2 - 2 Overview of FPGA and EDA Software [Seite 49]
5.2.1 - 2.1 FPGA [Seite 49]
5.2.1.1 - 2.1.1 Overview of a general FPGA device [Seite 49]
5.2.1.2 - 2.1.2 Overview of the Xilinx Artix-7 devices [Seite 50]
5.2.2 - 2.2 Overview of the Digilent Nexys 4 DDR board [Seite 51]
5.2.3 - 2.3 Development flow [Seite 52]
5.2.4 - 2.4 Xilinx Vivado Design Suite [Seite 54]
5.2.5 - 2.5 Bibliographic notes [Seite 54]
5.2.6 - 2.6 Suggested experiments [Seite 54]
5.2.6.1 - 2.6.1 Gate-level greater-than circuit [Seite 54]
5.2.6.2 - 2.6.2 Gate-level binary decoder [Seite 56]
5.3 - 3 RT-Level Combinational Circuit [Seite 59]
5.3.1 - 3.1 RT-level components [Seite 59]
5.3.1.1 - 3.1.1 Relational operators [Seite 61]
5.3.1.2 - 3.1.2 Arithmetic operators [Seite 61]
5.3.1.3 - 3.1.3 Other synthesis-related VHDL constructs [Seite 63]
5.3.1.4 - 3.1.4 Summary [Seite 64]
5.3.2 - 3.2 Routing circuit with concurrent assignment statements [Seite 65]
5.3.2.1 - 3.2.1 Conditional signal assignment statement [Seite 65]
5.3.2.2 - 3.2.2 Selected signal assignment statement [Seite 68]
5.3.3 - 3.3 Modeling with a process [Seite 70]
5.3.3.1 - 3.3.1 Process [Seite 70]
5.3.3.2 - 3.3.2 Sequential signal assignment statement [Seite 71]
5.3.4 - 3.4 Routing circuit with if and case statements [Seite 72]
5.3.4.1 - 3.4.1 If statement [Seite 72]
5.3.4.2 - 3.4.2 Case statement [Seite 73]
5.3.4.3 - 3.4.3 Comparison to concurrent statements [Seite 75]
5.3.4.4 - 3.4.4 Unintended memory [Seite 76]
5.3.5 - 3.5 Constants and generics [Seite 77]
5.3.5.1 - 3.5.1 Constants [Seite 77]
5.3.5.2 - 3.5.2 Generics [Seite 79]
5.3.6 - 3.6 Replicated structure [Seite 80]
5.3.6.1 - 3.6.1 Loop statements [Seite 80]
5.3.6.2 - 3.6.2 Example [Seite 81]
5.3.7 - 3.7 Design examples [Seite 82]
5.3.7.1 - 3.7.1 Hexadecimal digit to seven-segment LED decoder [Seite 82]
5.3.7.2 - 3.7.2 Sign-magnitude adder [Seite 86]
5.3.7.3 - 3.7.3 Barrel shifter [Seite 89]
5.3.7.4 - 3.7.4 Simplified floating-point adder [Seite 90]
5.3.8 - 3.8 Bibliographic notes [Seite 94]
5.3.9 - 3.9 Suggested experiments [Seite 94]
5.3.9.1 - 3.9.1 Multi-function barrel shifter [Seite 94]
5.3.9.2 - 3.9.2 Parameterized barrel shifter [Seite 94]
5.3.9.3 - 3.9.3 Dual-priority encoder [Seite 95]
5.3.9.4 - 3.9.4 BCD incrementor [Seite 95]
5.3.9.5 - 3.9.5 Floating-point greater-than circuit [Seite 95]
5.3.9.6 - 3.9.6 Floating-point and signed integer conversion circuit [Seite 95]
5.3.9.7 - 3.9.7 Enhanced floating-point adder [Seite 96]
5.4 - 4 Regular Sequential Circuit [Seite 97]
5.4.1 - 4.1 Introduction [Seite 97]
5.4.1.1 - 4.1.1 D FF and register [Seite 98]
5.4.1.2 - 4.1.2 Basic block system [Seite 98]
5.4.1.3 - 4.1.3 Code development [Seite 99]
5.4.1.4 - 4.1.4 Sequential circuit coding style [Seite 99]
5.4.2 - 4.2 HDL code of the FF and register [Seite 100]
5.4.2.1 - 4.2.1 D FF [Seite 100]
5.4.2.2 - 4.2.2 Register [Seite 103]
5.4.3 - 4.3 Simple design examples [Seite 104]
5.4.3.1 - 4.3.1 Shift register [Seite 104]
5.4.3.2 - 4.3.2 Binary counter and variant [Seite 105]
5.4.4 - 4.4 Testbench for sequential circuits [Seite 108]
5.4.5 - 4.5 Case study [Seite 111]
5.4.5.1 - 4.5.1 LED time-multiplexing circuit [Seite 112]
5.4.5.2 - 4.5.2 Stopwatch [Seite 119]
5.4.6 - 4.6 Timing and clocking [Seite 123]
5.4.6.1 - 4.6.1 Timing of FF [Seite 123]
5.4.6.2 - 4.6.2 Maximum operating frequency [Seite 124]
5.4.6.3 - 4.6.3 Clock tree [Seite 125]
5.4.6.4 - 4.6.4 GALS system and CDC [Seite 126]
5.4.7 - 4.7 Bibliographic notes [Seite 127]
5.4.8 - 4.8 Suggested experiments [Seite 127]
5.4.8.1 - 4.8.1 Programmable square wave generator [Seite 127]
5.4.8.2 - 4.8.2 PWM and LED dimmer [Seite 127]
5.4.8.3 - 4.8.3 Rotating square circuit [Seite 127]
5.4.8.4 - 4.8.4 Heartbeat circuit [Seite 128]
5.4.8.5 - 4.8.5 Rotating LED banner circuit [Seite 128]
5.4.8.6 - 4.8.6 Enhanced stopwatch [Seite 128]
5.5 - 5 FSM [Seite 129]
5.5.1 - 5.1 Introduction [Seite 129]
5.5.1.1 - 5.1.1 Mealy and Moore outputs [Seite 130]
5.5.1.2 - 5.1.2 FSM representation [Seite 130]
5.5.2 - 5.2 FSM code development [Seite 133]
5.5.3 - 5.3 Design examples [Seite 136]
5.5.3.1 - 5.3.1 Rising-edge detector [Seite 136]
5.5.3.2 - 5.3.2 Debouncing circuit [Seite 140]
5.5.3.3 - 5.3.3 Testing circuit [Seite 144]
5.5.4 - 5.4 Bibliographic notes [Seite 146]
5.5.5 - 5.5 Suggested experiments [Seite 146]
5.5.5.1 - 5.5.1 Dual-edge detector [Seite 146]
5.5.5.2 - 5.5.2 Early detection debouncing circuit [Seite 146]
5.5.5.3 - 5.5.3 Parking lot occupancy counter [Seite 146]
5.6 - 6 FSMD [Seite 149]
5.6.1 - 6.1 Introduction [Seite 149]
5.6.1.1 - 6.1.1 Single RT operation [Seite 150]
5.6.1.2 - 6.1.2 ASMD chart [Seite 150]
5.6.1.3 - 6.1.3 Decision box with a register [Seite 152]
5.6.2 - 6.2 Code development of an FSMD [Seite 155]
5.6.2.1 - 6.2.1 Debouncing circuit based on RT methodology [Seite 155]
5.6.2.2 - 6.2.2 Code with explicit data path components [Seite 155]
5.6.2.3 - 6.2.3 Code with implicit data path components [Seite 158]
5.6.2.4 - 6.2.4 Comparison [Seite 159]
5.6.3 - 6.3 Design examples [Seite 161]
5.6.3.1 - 6.3.1 Fibonacci number circuit [Seite 161]
5.6.3.2 - 6.3.2 Division circuit [Seite 164]
5.6.3.3 - 6.3.3 Binary-to-BCD conversion circuit [Seite 167]
5.6.3.4 - 6.3.4 Period counter [Seite 170]
5.6.3.5 - 6.3.5 Accurate low-frequency counter [Seite 173]
5.6.4 - 6.4 Bibliographic notes [Seite 177]
5.6.5 - 6.5 Suggested experiments [Seite 177]
5.6.5.1 - 6.5.1 Early detection debouncing circuit [Seite 177]
5.6.5.2 - 6.5.2 BCD-to-binary conversion circuit [Seite 177]
5.6.5.3 - 6.5.3 Fibonacci circuit with BCD I/O: design approach 1 [Seite 177]
5.6.5.4 - 6.5.4 Fibonacci circuit with BCD I/O: design approach 2 [Seite 178]
5.6.5.5 - 6.5.5 Auto-scaled low-frequency counter [Seite 178]
5.6.5.6 - 6.5.6 Reaction timer [Seite 179]
5.6.5.7 - 6.5.7 Babbage difference engine emulation circuit [Seite 179]
5.7 - 7 RAM and Buffer of FPGA [Seite 181]
5.7.1 - 7.1 Embedded memory of FPGA device [Seite 181]
5.7.1.1 - 7.1.1 Memory of an Artix device [Seite 182]
5.7.1.2 - 7.1.2 Memory available in a Nexys 4 DDR board [Seite 182]
5.7.2 - 7.2 General description for a RAM-like component [Seite 183]
5.7.2.1 - 7.2.1 Register file [Seite 183]
5.7.2.2 - 7.2.2 Dynamic array indexing operation [Seite 185]
5.7.2.3 - 7.2.3 Key aspects of a RAM module [Seite 187]
5.7.2.4 - 7.2.4 Genuine ROM [Seite 187]
5.7.3 - 7.3 FIFO buffer [Seite 189]
5.7.3.1 - 7.3.1 FIFO read configuration [Seite 189]
5.7.3.2 - 7.3.2 Circular queue implementation [Seite 190]
5.7.4 - 7.4 HDL templates for memory inference [Seite 194]
5.7.4.1 - 7.4.1 Methods to incorporate memory modules [Seite 194]
5.7.4.2 - 7.4.2 Synchronous dual-port RAM [Seite 195]
5.7.4.3 - 7.4.3 "Simple" synchronous dual-port RAM [Seite 196]
5.7.4.4 - 7.4.4 Synchronous single-port RAM [Seite 197]
5.7.4.5 - 7.4.5 Synchronous ROM [Seite 198]
5.7.4.6 - 7.4.6 BRAM-based FIFO buffer [Seite 199]
5.7.4.7 - 7.4.7 Design considerations [Seite 200]
5.7.5 - 7.5 Overview of the memory controller [Seite 200]
5.7.6 - 7.6 Bibliographic notes [Seite 202]
5.7.7 - 7.7 Suggested experiments [Seite 202]
5.7.7.1 - 7.7.1 ROM-based sign-magnitude adder [Seite 202]
5.7.7.2 - 7.7.2 ROM-based temperature conversion [Seite 202]
5.7.7.3 - 7.7.3 FIFO with data width conversion [Seite 203]
5.7.7.4 - 7.7.4 Standard FIFO to FWFT FIFO conversion circuit [Seite 203]
5.7.7.5 - 7.7.5 FIFO buffer with extended status [Seite 203]
5.7.7.6 - 7.7.6 Stack [Seite 203]
6 - PART II EMBEDDED SOC I: VANILLA FPRO SYSTEM [Seite 205]
6.1 - 8 Overview of Embedded SoC Systems [Seite 207]
6.1.1 - 8.1 Embedded SoC [Seite 207]
6.1.1.1 - 8.1.1 Overview of embedded systems [Seite 207]
6.1.1.2 - 8.1.2 FPGA-based SoC [Seite 208]
6.1.1.3 - 8.1.3 IP cores [Seite 208]
6.1.2 - 8.2 Development flow of the embedded SoC [Seite 209]
6.1.2.1 - 8.2.1 Hardware-software partition [Seite 209]
6.1.2.2 - 8.2.2 Hardware development flow [Seite 209]
6.1.2.3 - 8.2.3 Software development flow [Seite 211]
6.1.2.4 - 8.2.4 Physical implementation and test [Seite 211]
6.1.2.5 - 8.2.5 Custom IP core development [Seite 211]
6.1.3 - 8.3 FPro SoC platform [Seite 212]
6.1.3.1 - 8.3.1 Motivations [Seite 212]
6.1.3.2 - 8.3.2 Platform hardware organization [Seite 213]
6.1.3.3 - 8.3.3 Platform software organization [Seite 215]
6.1.3.4 - 8.3.4 Modified development flow [Seite 216]
6.1.4 - 8.4 Adaptation on the Digilent Nexys 4 DDR board [Seite 216]
6.1.5 - 8.5 Portability [Seite 218]
6.1.5.1 - 8.5.1 Processor module and bridge [Seite 218]
6.1.5.2 - 8.5.2 MMIO subsystem [Seite 219]
6.1.5.3 - 8.5.3 Video subsystem [Seite 219]
6.1.6 - 8.6 Organization [Seite 220]
6.1.7 - 8.7 Bibliographic notes [Seite 220]
6.2 - 9 Bare Metal System Software Development [Seite 223]
6.2.1 - 9.1 Bare metal system development overview [Seite 223]
6.2.1.1 - 9.1.1 Desktop-like system versus bare metal system [Seite 223]
6.2.1.2 - 9.1.2 Basic embedded program architecture [Seite 224]
6.2.2 - 9.2 Memory-mapped I/O [Seite 225]
6.2.2.1 - 9.2.1 Overview [Seite 225]
6.2.2.2 - 9.2.2 Memory alignment [Seite 226]
6.2.2.3 - 9.2.3 I/O register map [Seite 226]
6.2.2.4 - 9.2.4 I/O address space of the FPro system [Seite 226]
6.2.3 - 9.3 Direct I/O register access [Seite 227]
6.2.3.1 - 9.3.1 Review of C pointer [Seite 227]
6.2.3.2 - 9.3.2 C pointer for I/O register [Seite 228]
6.2.4 - 9.4 Robust I/O register access [Seite 229]
6.2.4.1 - 9.4.1 chu_io_map.h and chu_io_map.vhd [Seite 229]
6.2.4.2 - 9.4.2 inttypes.h [Seite 230]
6.2.4.3 - 9.4.3 chu_io_rw.h [Seite 231]
6.2.5 - 9.5 Techniques for low-level I/O operations [Seite 233]
6.2.5.1 - 9.5.1 Bit manipulation [Seite 233]
6.2.5.2 - 9.5.2 Packing and unpacking [Seite 234]
6.2.6 - 9.6 Device drivers [Seite 235]
6.2.6.1 - 9.6.1 Overview [Seite 235]
6.2.6.2 - 9.6.2 GPO and GPI drivers [Seite 235]
6.2.6.3 - 9.6.3 Timer driver [Seite 237]
6.2.6.4 - 9.6.4 UART driver [Seite 239]
6.2.7 - 9.7 FPro utility routines and directory structure [Seite 240]
6.2.7.1 - 9.7.1 Minimal hardware requirements [Seite 240]
6.2.7.2 - 9.7.2 Utility routines [Seite 240]
6.2.7.3 - 9.7.3 Directory structure [Seite 243]
6.2.8 - 9.8 Test program [Seite 243]
6.2.8.1 - 9.8.1 IP core verification routine [Seite 243]
6.2.8.2 - 9.8.2 Programming with limited memory [Seite 244]
6.2.8.3 - 9.8.3 Test function integration [Seite 244]
6.2.8.4 - 9.8.4 Test program for the vanilla FPro system [Seite 245]
6.2.8.5 - 9.8.5 Implementation [Seite 246]
6.2.9 - 9.9 Bibliographic notes [Seite 247]
6.2.10 - 9.10 Suggested experiments [Seite 247]
6.2.10.1 - 9.10.1 Chasing LEDs [Seite 247]
6.2.10.2 - 9.10.2 Collision LEDs [Seite 247]
6.2.10.3 - 9.10.3 Pulse width modulation [Seite 248]
6.2.10.4 - 9.10.4 System time display [Seite 248]
6.3 - 10 FPro Bus Protocol and MMIO Slot Specification [Seite 249]
6.3.1 - 10.1 FPro bus [Seite 249]
6.3.1.1 - 10.1.1 Overview of the bus [Seite 249]
6.3.1.2 - 10.1.2 SoC interconnect [Seite 250]
6.3.1.3 - 10.1.3 FPro bus protocol specification [Seite 251]
6.3.2 - 10.2 Interface with the bus [Seite 252]
6.3.2.1 - 10.2.1 Introduction [Seite 252]
6.3.2.2 - 10.2.2 Write interface and decoding [Seite 253]
6.3.2.3 - 10.2.3 Read interface and multiplexing [Seite 255]
6.3.2.4 - 10.2.4 FIFO buffer as an I/O register [Seite 256]
6.3.2.5 - 10.2.5 Timing consideration [Seite 257]
6.3.3 - 10.3 MMIO I/O core [Seite 258]
6.3.3.1 - 10.3.1 MMIO slot interface specification [Seite 258]
6.3.3.2 - 10.3.2 Basic MMIO I/O core construction [Seite 260]
6.3.3.3 - 10.3.3 GPO and GPI cores [Seite 261]
6.3.4 - 10.4 Timer core development [Seite 263]
6.3.4.1 - 10.4.1 Custom logic [Seite 263]
6.3.4.2 - 10.4.2 Register map [Seite 263]
6.3.4.3 - 10.4.3 Wrapping circuit for the slot interface [Seite 264]
6.3.5 - 10.5 MMIO controller [Seite 265]
6.3.5.1 - 10.5.1 chu_io_map.vhd file [Seite 265]
6.3.5.2 - 10.5.2 HDL code [Seite 267]
6.3.5.3 - 10.5.3 Vanilla MMIO subsystem [Seite 268]
6.3.6 - 10.6 MCS I/O bus and bridge [Seite 271]
6.3.6.1 - 10.6.1 Overview of Xilinx MicroBlaze MCS [Seite 271]
6.3.6.2 - 10.6.2 MicroBlaze MCS I/O bus [Seite 271]
6.3.6.3 - 10.6.3 MCS-to-FPro bridge [Seite 273]
6.3.7 - 10.7 Vanilla FPro system construction [Seite 274]
6.3.8 - 10.8 Bibliographic notes [Seite 276]
6.3.9 - 10.9 Suggested experiments [Seite 277]
6.3.9.1 - 10.9.1 FPro bus with a byte-lane enable signal [Seite 277]
6.3.9.2 - 10.9.2 Seven-segment control with a GPO core [Seite 277]
6.3.9.3 - 10.9.3 GPIO core [Seite 277]
6.3.9.4 - 10.9.4 Blinking-LED core [Seite 278]
6.3.9.5 - 10.9.5 Timer core with a programmable period [Seite 278]
6.3.9.6 - 10.9.6 Timer core with a run-once mode [Seite 278]
6.4 - 11 UART Core [Seite 281]
6.4.1 - 11.1 Introduction [Seite 281]
6.4.1.1 - 11.1.1 Overview of serial communication [Seite 281]
6.4.1.2 - 11.1.2 Overview of UART [Seite 282]
6.4.1.3 - 11.1.3 Oversampling procedure [Seite 282]
6.4.2 - 11.2 UART Construction [Seite 283]
6.4.2.1 - 11.2.1 Conceptual design [Seite 283]
6.4.2.2 - 11.2.2 Baud rate generator [Seite 284]
6.4.2.3 - 11.2.3 UART receiver [Seite 285]
6.4.2.4 - 11.2.4 UART transmitter [Seite 288]
6.4.2.5 - 11.2.5 Top-level HDL codes [Seite 290]
6.4.3 - 11.3 UART core development [Seite 291]
6.4.3.1 - 11.3.1 Register map [Seite 292]
6.4.3.2 - 11.3.2 Wrapping circuit for the slot interface [Seite 292]
6.4.4 - 11.4 UART driver [Seite 294]
6.4.4.1 - 11.4.1 Class definition [Seite 294]
6.4.4.2 - 11.4.2 Basic methods [Seite 295]
6.4.4.3 - 11.4.3 ASCII code [Seite 296]
6.4.4.4 - 11.4.4 Display methods [Seite 297]
6.4.4.5 - 11.4.5 Test [Seite 300]
6.4.5 - 11.5 Additional project ideas [Seite 300]
6.4.5.1 - 11.5.1 Original serial port [Seite 300]
6.4.5.2 - 11.5.2 Emulated serial port [Seite 301]
6.4.5.3 - 11.5.3 Direct connection [Seite 301]
6.4.5.4 - 11.5.4 USB-to-UART adaptor [Seite 302]
6.4.5.5 - 11.5.5 Wireless adaptor [Seite 302]
6.4.6 - 11.6 Bibliographic notes [Seite 303]
6.4.7 - 11.7 Suggested experiments [Seite 304]
6.4.7.1 - 11.7.1 UART-controlled chasing LEDs [Seite 304]
6.4.7.2 - 11.7.2 Alternative read configuration [Seite 304]
6.4.7.3 - 11.7.3 UART controller with a parity bit [Seite 304]
6.4.7.4 - 11.7.4 UART core with an error status [Seite 304]
6.4.7.5 - 11.7.5 Configurable UART core [Seite 305]
6.4.7.6 - 11.7.6 UART core with automatic baud rate detection [Seite 305]
6.4.7.7 - 11.7.7 UART core with enhanced automatic baud rate detection [Seite 306]
6.4.7.8 - 11.7.8 UART core with an automatic baud rate and a parity detection circuit [Seite 306]
7 - PART III EMBEDDED SOC II: BASIC I/O CORES [Seite 307]
7.1 - 12 Xilinx XADC Core [Seite 309]
7.1.1 - 12.1 Overview of XADC [Seite 309]
7.1.1.1 - 12.1.1 Block diagram [Seite 309]
7.1.1.2 - 12.1.2 Configuration [Seite 310]
7.1.2 - 12.2 XADC core development [Seite 311]
7.1.2.1 - 12.2.1 XADC instantiation [Seite 311]
7.1.2.2 - 12.2.2 Basic wrapping circuit design [Seite 312]
7.1.2.3 - 12.2.3 Register map [Seite 313]
7.1.2.4 - 12.2.4 HDL code [Seite 314]
7.1.3 - 12.3 XADC core device driver [Seite 316]
7.1.3.1 - 12.3.1 Class definition [Seite 316]
7.1.3.2 - 12.3.2 Class implementation [Seite 317]
7.1.3.3 - 12.3.3 Testing for the XADC core [Seite 318]
7.1.4 - 12.4 Sampler FPro system [Seite 319]
7.1.4.1 - 12.4.1 Testing procedure of an FPro core [Seite 319]
7.1.4.2 - 12.4.2 System configuration [Seite 319]
7.1.4.3 - 12.4.3 Hardware derivation [Seite 320]
7.1.4.4 - 12.4.4 Software verification program [Seite 328]
7.1.5 - 12.5 Additional project ideas [Seite 329]
7.1.6 - 12.6 Bibliographic notes [Seite 330]
7.1.7 - 12.7 Suggested experiments [Seite 330]
7.1.7.1 - 12.7.1 Real-time voltage display [Seite 330]
7.1.7.2 - 12.7.2 Potentiometer-controlled chasing LEDs [Seite 330]
7.1.7.3 - 12.7.3 Potentiometer-controlled LED dimmer [Seite 331]
7.1.7.4 - 12.7.4 Enhanced wrapping circuit I [Seite 331]
7.1.7.5 - 12.7.5 Enhanced wrapping circuit II [Seite 331]
7.2 - 13 Pulse Width Modulation Core [Seite 333]
7.2.1 - 13.1 Introduction [Seite 333]
7.2.1.1 - 13.1.1 PWM as analog output [Seite 333]
7.2.1.2 - 13.1.2 Main characteristics [Seite 334]
7.2.2 - 13.2 PWM design [Seite 334]
7.2.2.1 - 13.2.1 Basic design [Seite 334]
7.2.2.2 - 13.2.2 Enhanced design [Seite 336]
7.2.3 - 13.3 PWM core development [Seite 337]
7.2.3.1 - 13.3.1 Register map [Seite 337]
7.2.3.2 - 13.3.2 Wrapped PWM circuit [Seite 338]
7.2.4 - 13.4 PWM driver [Seite 340]
7.2.4.1 - 13.4.1 Class definition [Seite 340]
7.2.4.2 - 13.4.2 Class implementation [Seite 340]
7.2.5 - 13.5 Testing [Seite 341]
7.2.6 - 13.6 Project ideas [Seite 342]
7.2.7 - 13.7 Suggested experiments [Seite 343]
7.2.7.1 - 13.7.1 Police dash light [Seite 343]
7.2.7.2 - 13.7.2 Rainbow night light [Seite 343]
7.2.7.3 - 13.7.3 Enhanced PWM core: part I [Seite 343]
7.2.7.4 - 13.7.4 Enhanced PWM core: part II [Seite 344]
7.2.7.5 - 13.7.5 Enhanced GPIO core [Seite 344]
7.2.7.6 - 13.7.6 Servo motor driver [Seite 344]
7.3 - 14 Debouncing Core and LED-Mux Core [Seite 345]
7.3.1 - 14.1 Debouncing core [Seite 345]
7.3.1.1 - 14.1.1 Multi-bit debouncing circuit [Seite 345]
7.3.1.2 - 14.1.2 Register map and the slot wrapping circuit [Seite 348]
7.3.1.3 - 14.1.3 Driver [Seite 349]
7.3.1.4 - 14.1.4 Test [Seite 350]
7.3.2 - 14.2 LED-Mux core [Seite 351]
7.3.2.1 - 14.2.1 Eight-digit seven-segment LED display multiplexing circuit [Seite 351]
7.3.2.2 - 14.2.2 Register map and the slot wrapping circuit [Seite 352]
7.3.2.3 - 14.2.3 Driver [Seite 354]
7.3.2.4 - 14.2.4 Test [Seite 356]
7.3.3 - 14.3 Project ideas [Seite 357]
7.3.4 - 14.4 Suggested experiments [Seite 358]
7.3.4.1 - 14.4.1 Area comparison of two debouncing circuits [Seite 358]
7.3.4.2 - 14.4.2 Enhanced debouncing core: part I [Seite 359]
7.3.4.3 - 14.4.3 Enhanced debouncing core: part II [Seite 359]
7.3.4.4 - 14.4.4 Rotating square pattern revisited [Seite 359]
7.3.4.5 - 14.4.5 Heartbeat pattern revisited [Seite 359]
7.3.4.6 - 14.4.6 Stopwatch [Seite 359]
7.3.4.7 - 14.4.7 Enhanced LED-mux core [Seite 359]
7.4 - 15 SPI Core [Seite 361]
7.4.1 - 15.1 Overview [Seite 361]
7.4.1.1 - 15.1.1 Conceptual architecture [Seite 362]
7.4.1.2 - 15.1.2 Multiple device configuration [Seite 362]
7.4.1.3 - 15.1.3 Basic timing [Seite 364]
7.4.1.4 - 15.1.4 Operation modes [Seite 365]
7.4.1.5 - 15.1.5 Undefined aspects [Seite 366]
7.4.2 - 15.2 SPI controller [Seite 367]
7.4.2.1 - 15.2.1 Basic design [Seite 367]
7.4.2.2 - 15.2.2 FSMD construction [Seite 368]
7.4.2.3 - 15.2.3 HDL implementation [Seite 368]
7.4.3 - 15.3 SPI core development [Seite 372]
7.4.3.1 - 15.3.1 Register map [Seite 372]
7.4.3.2 - 15.3.2 Wrapping circuit for the slot interface [Seite 372]
7.4.4 - 15.4 SPI Driver [Seite 374]
7.4.4.1 - 15.4.1 Class definition [Seite 374]
7.4.4.2 - 15.4.2 Class implementation [Seite 375]
7.4.5 - 15.5 Test [Seite 376]
7.4.5.1 - 15.5.1 ADXL362 accelerometer [Seite 377]
7.4.5.2 - 15.5.2 Test program [Seite 378]
7.4.6 - 15.6 Project ideas [Seite 379]
7.4.6.1 - 15.6.1 SD card [Seite 379]
7.4.6.2 - 15.6.2 TFT LCD module [Seite 379]
7.4.7 - 15.7 Bibliographic notes [Seite 380]
7.4.8 - 15.8 Suggested experiments [Seite 380]
7.4.8.1 - 15.8.1 Inclination sensing [Seite 380]
7.4.8.2 - 15.8.2 "Tapping" detection [Seite 381]
7.4.8.3 - 15.8.3 ADXL362 C++ class [Seite 381]
7.4.8.4 - 15.8.4 Enhanced SPI controller: part I [Seite 381]
7.4.8.5 - 15.8.5 Enhanced SPI controller: part II [Seite 381]
7.4.8.6 - 15.8.6 Automatic-read ADXL362 wrapper: part I [Seite 382]
7.4.8.7 - 15.8.7 Automatic-read ADXL362 wrapper: part II [Seite 382]
7.4.8.8 - 15.8.8 Flash memory access [Seite 382]
7.4.8.9 - 15.8.9 SPI slave controller: part I [Seite 382]
7.4.8.10 - 15.8.10 SPI slave controller: part II [Seite 383]
7.5 - 16 I2C Core [Seite 385]
7.5.1 - 16.1 Overview [Seite 385]
7.5.1.1 - 16.1.1 Electrical characteristics [Seite 386]
7.5.1.2 - 16.1.2 Basic bus protocol [Seite 386]
7.5.1.3 - 16.1.3 Basic timing [Seite 387]
7.5.1.4 - 16.1.4 Additional features [Seite 388]
7.5.2 - 16.2 I2C controller [Seite 389]
7.5.2.1 - 16.2.1 Basic design [Seite 389]
7.5.2.2 - 16.2.2 Conceptual FSMD construction [Seite 389]
7.5.2.3 - 16.2.3 Output control logic [Seite 392]
7.5.2.4 - 16.2.4 I2C bus clock generation [Seite 392]
7.5.2.5 - 16.2.5 HDL implementation [Seite 393]
7.5.3 - 16.3 I2C core development [Seite 398]
7.5.3.1 - 16.3.1 Register map [Seite 398]
7.5.3.2 - 16.3.2 Wrapping circuit for the slot interface [Seite 398]
7.5.4 - 16.4 I2C driver [Seite 400]
7.5.4.1 - 16.4.1 Class definition [Seite 400]
7.5.4.2 - 16.4.2 Class implementation [Seite 400]
7.5.5 - 16.5 Test [Seite 403]
7.5.5.1 - 16.5.1 ADT7420 temperature sensor [Seite 403]
7.5.5.2 - 16.5.2 Test program [Seite 404]
7.5.6 - 16.6 Project idea [Seite 405]
7.5.7 - 16.7 Bibliographic notes [Seite 405]
7.5.8 - 16.8 Suggested experiments [Seite 406]
7.5.8.1 - 16.8.1 Thermometer [Seite 406]
7.5.8.2 - 16.8.2 ADT7420 C++ class [Seite 406]
7.5.8.3 - 16.8.3 Enhanced I2C core [Seite 406]
7.5.8.4 - 16.8.4 Automatic-read ADT7420 wrapper [Seite 406]
7.5.8.5 - 16.8.5 I2C slave controller: part I [Seite 407]
7.5.8.6 - 16.8.6 I2C slave controller: part II [Seite 407]
7.6 - 17 PS2 Core [Seite 409]
7.6.1 - 17.1 Introduction [Seite 409]
7.6.1.1 - 17.1.1 PS2-device-to-host communication protocol and timing [Seite 410]
7.6.1.2 - 17.1.2 Host-to-PS2-device communication protocol and timing [Seite 410]
7.6.2 - 17.2 PS2 controller [Seite 411]
7.6.2.1 - 17.2.1 Conceptual design [Seite 411]
7.6.2.2 - 17.2.2 PS2 receiving subsystem [Seite 411]
7.6.2.3 - 17.2.3 PS2 transmitting subsystem [Seite 415]
7.6.2.4 - 17.2.4 Complete PS2 system [Seite 420]
7.6.3 - 17.3 PS2 core development [Seite 421]
7.6.3.1 - 17.3.1 Register map [Seite 421]
7.6.3.2 - 17.3.2 Wrapping circuit for the slot interface [Seite 421]
7.6.4 - 17.4 PS2 driver [Seite 423]
7.6.4.1 - 17.4.1 Class definition [Seite 423]
7.6.4.2 - 17.4.2 Lower layer methods [Seite 423]
7.6.4.3 - 17.4.3 PS2 initialization routine [Seite 424]
7.6.4.4 - 17.4.4 Keyboard routine [Seite 426]
7.6.4.5 - 17.4.5 Mouse routine [Seite 429]
7.6.5 - 17.5 Test [Seite 431]
7.6.6 - 17.6 Bibliographic notes [Seite 432]
7.6.7 - 17.7 Suggested experiments [Seite 432]
7.6.7.1 - 17.7.1 PS2 receiving subsystem with watchdog timer [Seite 432]
7.6.7.2 - 17.7.2 Keyboard-controlled LED ashing circuit [Seite 432]
7.6.7.3 - 17.7.3 Enhanced keyboard driver routine I [Seite 433]
7.6.7.4 - 17.7.4 Enhanced keyboard driver routine II [Seite 433]
7.6.7.5 - 17.7.5 Remote-mode mouse driver [Seite 433]
7.6.7.6 - 17.7.6 Scroll-wheel mouse driver [Seite 433]
7.7 - 18 Sound I: DDFS Core [Seite 435]
7.7.1 - 18.1 Introduction [Seite 435]
7.7.2 - 18.2 Design and implementation [Seite 436]
7.7.2.1 - 18.2.1 Direct synthesis of a digital waveform [Seite 436]
7.7.2.2 - 18.2.2 Direct synthesis of an unmodulated analog waveform [Seite 437]
7.7.2.3 - 18.2.3 Direct synthesis of a modulated analog waveform [Seite 438]
7.7.3 - 18.3 Fixed-point arithmetic [Seite 439]
7.7.4 - 18.4 DDFS Construction [Seite 440]
7.7.5 - 18.5 DAC (digital-to-analog converter) [Seite 443]
7.7.5.1 - 18.5.1 Conceptual design [Seite 443]
7.7.5.2 - 18.5.2 HDL implementation [Seite 444]
7.7.6 - 18.6 DDFS core development [Seite 445]
7.7.6.1 - 18.6.1 Register map [Seite 445]
7.7.6.2 - 18.6.2 Wrapping circuit for the slot interface [Seite 446]
7.7.7 - 18.7 DDFS driver [Seite 448]
7.7.7.1 - 18.7.1 Class definition [Seite 448]
7.7.7.2 - 18.7.2 Class implementation [Seite 448]
7.7.8 - 18.8 Testing [Seite 450]
7.7.9 - 18.9 Bibliographic notes [Seite 451]
7.7.10 - 18.10 Suggested experiments [Seite 451]
7.7.10.1 - 18.10.1 Quadrature phase carrier generation [Seite 452]
7.7.10.2 - 18.10.2 Reduced-size phase-to-amplitude lookup table [Seite 452]
7.7.10.3 - 18.10.3 Additive harmonic synthesis [Seite 452]
7.7.10.4 - 18.10.4 Simple function generator [Seite 452]
7.7.10.5 - 18.10.5 Arbitrary waveform generator [Seite 452]
7.7.10.6 - 18.10.6 Sample-based synthesis [Seite 453]
7.8 - 19 Sound II: ADSR Core [Seite 455]
7.8.1 - 19.1 Introduction [Seite 455]
7.8.2 - 19.2 ADSR envelope generator [Seite 456]
7.8.2.1 - 19.2.1 Conceptual FSMD design [Seite 457]
7.8.2.2 - 19.2.2 ASMD chart [Seite 457]
7.8.2.3 - 19.2.3 HDL implementation [Seite 459]
7.8.3 - 19.3 ADSR core development [Seite 461]
7.8.3.1 - 19.3.1 Register map [Seite 461]
7.8.3.2 - 19.3.2 Wrapped ADSR circuit [Seite 462]
7.8.4 - 19.4 ADSR driver [Seite 464]
7.8.4.1 - 19.4.1 Class definition [Seite 464]
7.8.4.2 - 19.4.2 Configuration methods [Seite 465]
7.8.4.3 - 19.4.3 calc_note_freq() method [Seite 467]
7.8.4.4 - 19.4.4 play_note() method [Seite 468]
7.8.5 - 19.5 Testing [Seite 469]
7.8.6 - 19.6 Project idea [Seite 470]
7.8.7 - 19.7 Bibliographic notes [Seite 471]
7.8.8 - 19.8 Suggested experiments [Seite 471]
7.8.8.1 - 19.8.1 RTTTL music player [Seite 471]
7.8.8.2 - 19.8.2 ADSR envelope testing [Seite 471]
7.8.8.3 - 19.8.3 Pushbutton piano [Seite 471]
7.8.8.4 - 19.8.4 Keyboard piano [Seite 471]
7.8.8.5 - 19.8.5 Keyboard recorder [Seite 471]
7.8.8.6 - 19.8.6 Real-time mode ADSR generator [Seite 472]
7.8.8.7 - 19.8.7 Real-time mode button piano [Seite 472]
7.8.8.8 - 19.8.8 Merged DDFS and ADSR core [Seite 472]
7.8.8.9 - 19.8.9 ADSR core with an automatic play FIFO buffer [Seite 472]
7.8.9 - 19.8.10 ADSR core for frequency modulation [Seite 472]
8 - PART IV EMBEDDED SOC III: VIDEO CORES [Seite 473]
8.1 - 20 Introduction to the Video System [Seite 475]
8.1.1 - 20.1 Introduction to a video display [Seite 475]
8.1.1.1 - 20.1.1 Conceptual video display [Seite 475]
8.1.1.2 - 20.1.2 VGA interface [Seite 476]
8.1.2 - 20.2 Stream interface [Seite 477]
8.1.2.1 - 20.2.1 Random-access interface versus stream interface [Seite 477]
8.1.2.2 - 20.2.2 Flow control of the stream interface [Seite 477]
8.1.3 - 20.3 VGA synchronization [Seite 479]
8.1.3.1 - 20.3.1 Basic operation of a CRT monitor [Seite 479]
8.1.3.2 - 20.3.2 Horizontal synchronization [Seite 480]
8.1.3.3 - 20.3.3 Vertical synchronization [Seite 482]
8.1.3.4 - 20.3.4 Pixel clock rate [Seite 483]
8.1.3.5 - 20.3.5 VGA synchronization circuit [Seite 484]
8.1.4 - 20.4 Bar test-pattern generator [Seite 488]
8.1.5 - 20.5 Color-to-grayscale conversion circuit [Seite 490]
8.1.6 - 20.6 Demo video system [Seite 491]
8.1.7 - 20.7 Advanced video standards [Seite 493]
8.1.8 - 20.8 Bibliographic notes [Seite 494]
8.1.9 - 20.9 Suggested experiments [Seite 494]
8.1.9.1 - 20.9.1 Horizontal bar test-pattern generator [Seite 494]
8.1.9.2 - 20.9.2 Color channel selection circuit [Seite 494]
8.1.9.3 - 20.9.3 Enhanced color-to-grayscale conversion circuit [Seite 494]
8.1.9.4 - 20.9.4 Square test-pattern generator: part I [Seite 494]
8.1.9.5 - 20.9.5 Square test-pattern generator: part II [Seite 495]
8.1.9.6 - 20.9.6 Square test-pattern generator: part III [Seite 495]
8.1.9.7 - 20.9.7 Square test-pattern generator: part IV [Seite 495]
8.2 - 21 FPro Video Subsystem [Seite 497]
8.2.1 - 21.1 Organization of the video subsystem [Seite 497]
8.2.1.1 - 21.1.1 Overview [Seite 497]
8.2.1.2 - 21.1.2 Video controller [Seite 499]
8.2.1.3 - 21.1.3 HDL of the video controller [Seite 500]
8.2.2 - 21.2 FPro video IP core [Seite 501]
8.2.2.1 - 21.2.1 Basic functionality [Seite 501]
8.2.2.2 - 21.2.2 Blending operation [Seite 502]
8.2.2.3 - 21.2.3 Core architecture [Seite 504]
8.2.2.4 - 21.2.4 Alternative core partition [Seite 506]
8.2.3 - 21.3 Example video cores [Seite 506]
8.2.3.1 - 21.3.1 Bar test-pattern generator core [Seite 506]
8.2.3.2 - 21.3.2 Color-to-grayscale conversion core [Seite 509]
8.2.3.3 - 21.3.3 "Dummy" core [Seite 510]
8.2.4 - 21.4 FPro video synchronization core [Seite 511]
8.2.4.1 - 21.4.1 Line buffer [Seite 512]
8.2.4.2 - 21.4.2 Enhanced video synchronization circuit [Seite 515]
8.2.4.3 - 21.4.3 HDL code [Seite 518]
8.2.5 - 21.5 Daisy video subsystem [Seite 519]
8.2.5.1 - 21.5.1 Subsystem overview [Seite 519]
8.2.5.2 - 21.5.2 Interface to the video synchronization core [Seite 520]
8.2.5.3 - 21.5.3 HDL code [Seite 521]
8.2.5.4 - 21.5.4 Timing and performance considerations [Seite 525]
8.2.6 - 21.6 Vanilla daisy FPro system [Seite 526]
8.2.6.1 - 21.6.1 Clock management core [Seite 526]
8.2.6.2 - 21.6.2 Updated chu_io_map VHDL package [Seite 527]
8.2.6.3 - 21.6.3 HDL code [Seite 527]
8.2.7 - 21.7 Video driver and testing program [Seite 530]
8.2.7.1 - 21.7.1 Updated chu_io_map.h and chu_io_rw.h files [Seite 530]
8.2.7.2 - 21.7.2 GPV core driver [Seite 531]
8.2.7.3 - 21.7.3 Testing program [Seite 531]
8.2.8 - 21.8 Bibliographic notes [Seite 533]
8.2.9 - 21.9 Suggested experiments [Seite 533]
8.2.9.1 - 21.9.1 Color channel selection core [Seite 533]
8.2.9.2 - 21.9.2 Enhanced color-to-grayscale conversion core [Seite 533]
8.2.9.3 - 21.9.3 Square test-pattern generator core [Seite 534]
8.2.9.4 - 21.9.4 Alpha blending circuit [Seite 534]
8.2.9.5 - 21.9.5 "Highlight" core [Seite 534]
8.2.9.6 - 21.9.6 SVGA synchronization core [Seite 534]
8.2.9.7 - 21.9.7 Configurable video synchronization core [Seite 535]
8.2.9.8 - 21.9.8 Pipelined video subsystem [Seite 535]
8.3 - 22 Sprite Core [Seite 537]
8.3.1 - 22.1 Introduction [Seite 537]
8.3.2 - 22.2 Basic design [Seite 538]
8.3.2.1 - 22.2.1 Sprite RAM [Seite 538]
8.3.2.2 - 22.2.2 In-region comparison circuit [Seite 539]
8.3.3 - 22.3 Mouse pointer core [Seite 540]
8.3.3.1 - 22.3.1 Pointer sprite RAM [Seite 540]
8.3.3.2 - 22.3.2 Pixel generation circuit [Seite 541]
8.3.3.3 - 22.3.3 Top-level design [Seite 543]
8.3.4 - 22.4 "Ghost" character core [Seite 545]
8.3.4.1 - 22.4.1 Multiple images and animation [Seite 545]
8.3.4.2 - 22.4.2 Overview of the palette scheme [Seite 546]
8.3.4.3 - 22.4.3 Ghost sprite RAM and the palette circuit [Seite 546]
8.3.4.4 - 22.4.4 Animation timing circuit [Seite 548]
8.3.4.5 - 22.4.5 Pixel generation circuit [Seite 548]
8.3.4.6 - 22.4.6 Top-level design [Seite 551]
8.3.5 - 22.5 Sprite core driver and testing program [Seite 553]
8.3.5.1 - 22.5.1 Sprite core driver [Seite 553]
8.3.5.2 - 22.5.2 Testing program [Seite 554]
8.3.6 - 22.6 Bibliographic notes [Seite 556]
8.3.7 - 22.7 Suggested experiments [Seite 556]
8.3.7.1 - 22.7.1 Mouse pointer control with a PS2 core [Seite 556]
8.3.7.2 - 22.7.2 Emulated ghost core [Seite 556]
8.3.7.3 - 22.7.3 Palette circuit for the mouse pointer sprite [Seite 556]
8.3.7.4 - 22.7.4 Sprite scaling circuit [Seite 556]
8.3.7.5 - 22.7.5 Portrait mode display [Seite 556]
8.3.7.6 - 22.7.6 Multiple object generation [Seite 557]
8.3.7.7 - 22.7.7 Animation speed control [Seite 557]
8.3.7.8 - 22.7.8 Imitated blinking LED: part I [Seite 557]
8.3.7.9 - 22.7.9 Imitated blinking LED: part II [Seite 558]
8.3.7.10 - 22.7.10 Imitated blinking LED: part III [Seite 558]
8.4 - 23 On-Screen-Display Core [Seite 559]
8.4.1 - 23.1 Introduction to tile graphics [Seite 559]
8.4.2 - 23.2 Basic OSD design [Seite 561]
8.4.2.1 - 23.2.1 Text-mode display [Seite 561]
8.4.2.2 - 23.2.2 Font ROM [Seite 562]
8.4.2.3 - 23.2.3 Tile RAM [Seite 562]
8.4.2.4 - 23.2.4 Basic organization [Seite 563]
8.4.3 - 23.3 OSD core [Seite 564]
8.4.3.1 - 23.3.1 Font ROM [Seite 564]
8.4.3.2 - 23.3.2 Pixel generation circuit [Seite 565]
8.4.3.3 - 23.3.3 Top-level design [Seite 568]
8.4.4 - 23.4 OSD core driver and testing program [Seite 570]
8.4.4.1 - 23.4.1 OSD core driver [Seite 570]
8.4.4.2 - 23.4.2 Testing program [Seite 571]
8.4.5 - 23.5 Bibliographic notes [Seite 572]
8.4.6 - 23.6 Suggested experiments [Seite 572]
8.4.6.1 - 23.6.1 Rotating banner [Seite 572]
8.4.6.2 - 23.6.2 Text console [Seite 572]
8.4.6.3 - 23.6.3 Underline for the cursor [Seite 573]
8.4.6.4 - 23.6.4 Portrait-mode display [Seite 573]
8.4.6.5 - 23.6.5 Font scaling circuit: part I [Seite 573]
8.4.6.6 - 23.6.6 Font scaling circuit: part II [Seite 573]
8.4.6.7 - 23.6.7 Extended font [Seite 573]
8.4.6.8 - 23.6.8 Tile-based ghost core [Seite 574]
8.5 - 24 VGA Frame Buffer Core [Seite 575]
8.5.1 - 24.1 Overview [Seite 575]
8.5.2 - 24.2 Frame buffer core [Seite 576]
8.5.2.1 - 24.2.1 FPGA memory consideration [Seite 576]
8.5.2.2 - 24.2.2 Video memory module [Seite 576]
8.5.2.3 - 24.2.3 Address translation [Seite 578]
8.5.2.4 - 24.2.4 Pixel generation circuit [Seite 578]
8.5.3 - 24.3 Register map [Seite 580]
8.5.3.1 - 24.3.1 Top-level HDL code [Seite 581]
8.5.4 - 24.4 Driver and the testing program [Seite 582]
8.5.4.1 - 24.4.1 Frame buffer core driver [Seite 582]
8.5.4.2 - 24.4.2 Geometrical modeling [Seite 583]
8.5.4.3 - 24.4.3 Testing program [Seite 585]
8.5.5 - 24.5 Project ideas [Seite 585]
8.5.6 - 24.6 Bibliographic notes [Seite 586]
8.5.7 - 24.7 Suggested experiments [Seite 587]
8.5.7.1 - 24.7.1 Virtual prototyping board panel [Seite 587]
8.5.7.2 - 24.7.2 Virtual analog wall clock [Seite 587]
8.5.7.3 - 24.7.3 Geometrical model functions [Seite 587]
8.5.7.4 - 24.7.4 Simulated "Etch A Sketch" toy [Seite 587]
8.5.7.5 - 24.7.5 Frame buffer core with 3-bit color depth [Seite 587]
8.5.7.6 - 24.7.6 Frame buffer core with 1-bit color depth [Seite 588]
8.5.7.7 - 24.7.7 QVGA frame buffer core [Seite 588]
8.5.7.8 - 24.7.8 Line drawing hardware accelerator [Seite 588]
8.5.7.9 - 24.7.9 Bidirectional frame buffer access: part I [Seite 588]
8.5.7.10 - 24.7.10 Bidirectional frame buffer access: part II [Seite 588]
9 - PART V EPILOGUE [Seite 591]
9.1 - 25 What's Next [Seite 593]
9.1.1 - References [Seite 597]
10 - Appendix A: Tutorials [Seite 601]
10.1 - A.1 Overview of the Xilinx Vivado IDE [Seite 601]
10.2 - A.2 Short tutorial on Vivado hardware development [Seite 605]
10.2.1 - A.2.1 Create a design project [Seite 606]
10.2.2 - A.2.2 Add or create Xilinx IP core instances [Seite 607]
10.2.3 - A.2.3 Add or create HDL design files [Seite 607]
10.2.4 - A.2.4 Add a constraint file [Seite 608]
10.2.5 - A.2.5 Perform synthesis, implementation, and bitstream generation [Seite 609]
10.2.6 - A.2.6 Program an FPGA device [Seite 609]
10.3 - A.3 Short tutorial on Vivado simulation [Seite 610]
10.3.1 - A.3.1 Add or create an HDL testbench [Seite 612]
10.3.2 - A.3.2 Perform initial simulation [Seite 613]
10.3.3 - A.3.3 Customize waveform display [Seite 613]
10.4 - A.4 Tutorial on IP instantiation [Seite 614]
10.4.1 - A.4.1 Dual-clock FIFO core via HDL templates [Seite 615]
10.4.2 - A.4.2 IP catalog utility [Seite 615]
10.4.3 - A.4.3 Generate a MicroBlaze MCS component [Seite 616]
10.4.4 - A.4.4 XADC IP core [Seite 617]
10.4.5 - A.4.5 Clock management IP core [Seite 619]
10.5 - A.5 Short tutorial on FPro system development [Seite 620]
10.5.1 - A.5.1 Derive FPro system hardware [Seite 621]
10.5.2 - A.5.2 Export hardware configuration [Seite 621]
10.5.3 - A.5.3 Derive software [Seite 622]
10.5.4 - A.5.4 Embed elf file and regenerate bitstream [Seite 626]
10.5.5 - A.5.5 Set up a terminal emulator program [Seite 626]
10.5.6 - A.5.6 Program an FPGA device [Seite 627]
10.6 - A.6 Bibliographic notes [Seite 627]
11 - Topic Index [Seite 629]
12 - EULA [Seite 632]

Dateiformat: PDF
Kopierschutz: Adobe-DRM (Digital Rights Management)

Systemvoraussetzungen:

Computer (Windows; MacOS X; Linux): Installieren Sie bereits vor dem Download die kostenlose Software Adobe Digital Editions (siehe E-Book Hilfe).

Tablet/Smartphone (Android; iOS): Installieren Sie bereits vor dem Download die kostenlose App Adobe Digital Editions (siehe E-Book Hilfe).

E-Book-Reader: Bookeen, Kobo, Pocketbook, Sony, Tolino u.v.a.m. (nicht Kindle)

Das Dateiformat PDF zeigt auf jeder Hardware eine Buchseite stets identisch an. Daher ist eine PDF auch für ein komplexes Layout geeignet, wie es bei Lehr- und Fachbüchern verwendet wird (Bilder, Tabellen, Spalten, Fußnoten). Bei kleinen Displays von E-Readern oder Smartphones sind PDF leider eher nervig, weil zu viel Scrollen notwendig ist. Mit Adobe-DRM wird hier ein "harter" Kopierschutz verwendet. Wenn die notwendigen Voraussetzungen nicht vorliegen, können Sie das E-Book leider nicht öffnen. Daher müssen Sie bereits vor dem Download Ihre Lese-Hardware vorbereiten.

Weitere Informationen finden Sie in unserer E-Book Hilfe.


Download (sofort verfügbar)

84,99 €
inkl. 19% MwSt.
Download / Einzel-Lizenz
PDF mit Adobe DRM
siehe Systemvoraussetzungen
E-Book bestellen

Unsere Web-Seiten verwenden Cookies. Mit der Nutzung dieser Web-Seiten erklären Sie sich damit einverstanden. Mehr Informationen finden Sie in unserem Datenschutzhinweis. Ok