This report summarizes an internship at NTI focused on advanced electronics training. It covers topics like FPGA vs microcontrollers, hardware description languages, and real-time operating systems. The report is divided into chapters that explain FPGA design flow using Xilinx tools, programmable system on chip and RTOS basics, integrated circuit design process, and PCB design with OrCAD. Labs involve coding examples with UART, counting, and RTOS tasks. The internship provided hands-on experience with concepts in digital design, embedded systems, and electronics product development.
This document discusses the open-source Arduino platform. It describes Arduino as originating from the Italian Ivrea university and being based on C/C++. The core is an ATmega microcontroller and it has inputs/outputs that can be used to control devices like LEDs, motors, and sensors. The Arduino IDE provides an easy development environment to write and upload code to Arduino boards to build interactive projects. Examples demonstrated include blinking an LED, reading serial communication, and using pulse-width modulation to control the position of a servo motor.
Tevatron Technologies Pvt Ltd is an electronics chip design and embedded systems company focused on VLSI design, PCB design, and nurturing related education. The company was founded by professionals with over 14 years experience in VLSI/embedded industries. Tevatron provides services from concept development to prototype to product development in fields like healthcare, automotive, defense, and more. Key services include VLSI chip design, embedded systems development, technical documentation, and concept-to-product solutions.
Review on security techniques for field programmable gate arrayIAEME Publication
This document summarizes previous work on using ring oscillators for FPGA security. Ring oscillators exploit manufacturing process variations between chips to generate unique identifiers. Several papers are discussed that proposed using ring oscillators and other PUFs to authenticate FPGAs and protect against hardware attacks. The document also provides an overview of FPGA manufacturing processes and applications of ring oscillators for FPGA security including generating secret keys and device authentication.
evatron Technologies Pvt Ltd , which is a Product Design & Services Company focused on Internet of Things(IoT), Embedded Systems, VLSI Design, FPGA Based Design and PCB Design covering entire Electronic System Design and Manufacturing(ESDM) space from concept to Productization. We are also a member of IESA( Indian Electronics Semiconductor Association). We are actively working towards #MakeinIndia as well as #DesignInIndia based initiatives.
Pramod J Resume M.Sc. (Electronics) 3.5 Year Exprience in Hardware DesignPramod Jangam
Pramod P. Jangam is an electronics engineer with over 8 years of experience in hardware design and development. He has worked at Jayashree Electron Pvt. Ltd. as an R&D Engineer and Production Engineer. He has a M.Sc. in Electronics and qualifications in embedded systems. His technical skills include hardware design, PCB development, microcontroller programming, and sensor interfacing. He has experience with several projects involving transducers, counters, timers, and safety systems.
The document describes the design and implementation of a 64-bit arithmetic logic unit (ALU) for an instruction set architecture. It compares the speed and power consumption of the ALU implemented on different field programmable gate arrays (FPGAs). Key aspects of the ALU design include 16 supported instructions, a power down mode to reduce power consumption when idle, and synthesis for a Spartan2 FPGA using Verilog. Performance metrics like speed, power usage, and resource utilization are reported for the ALU implemented on several FPGAs.
This document is a summer training report submitted by Akhil Garg to fulfill requirements for a Bachelor of Technology degree in Electronics and Communication Engineering. It discusses embedded systems and the 8051 microcontroller family. Specifically, it provides an introduction to embedded systems, compares microprocessors and microcontrollers, describes the architecture and features of the 8051 microcontroller, explains programming the 8051 in both assembly and C languages, and includes examples of programming the 8051 to control LEDs, 7-segment displays, LCDs, keypads and more. It also discusses the tools needed for 8051 programming including the Keil compiler and Flash Magic programmer.
DEFINITION
• An operating system is an intermediary between a computer user and the hardware. • Make the hardware convenient to use. • Manages system resources. • Use the hardware in an efficient manner.
This document discusses the open-source Arduino platform. It describes Arduino as originating from the Italian Ivrea university and being based on C/C++. The core is an ATmega microcontroller and it has inputs/outputs that can be used to control devices like LEDs, motors, and sensors. The Arduino IDE provides an easy development environment to write and upload code to Arduino boards to build interactive projects. Examples demonstrated include blinking an LED, reading serial communication, and using pulse-width modulation to control the position of a servo motor.
Tevatron Technologies Pvt Ltd is an electronics chip design and embedded systems company focused on VLSI design, PCB design, and nurturing related education. The company was founded by professionals with over 14 years experience in VLSI/embedded industries. Tevatron provides services from concept development to prototype to product development in fields like healthcare, automotive, defense, and more. Key services include VLSI chip design, embedded systems development, technical documentation, and concept-to-product solutions.
Review on security techniques for field programmable gate arrayIAEME Publication
This document summarizes previous work on using ring oscillators for FPGA security. Ring oscillators exploit manufacturing process variations between chips to generate unique identifiers. Several papers are discussed that proposed using ring oscillators and other PUFs to authenticate FPGAs and protect against hardware attacks. The document also provides an overview of FPGA manufacturing processes and applications of ring oscillators for FPGA security including generating secret keys and device authentication.
evatron Technologies Pvt Ltd , which is a Product Design & Services Company focused on Internet of Things(IoT), Embedded Systems, VLSI Design, FPGA Based Design and PCB Design covering entire Electronic System Design and Manufacturing(ESDM) space from concept to Productization. We are also a member of IESA( Indian Electronics Semiconductor Association). We are actively working towards #MakeinIndia as well as #DesignInIndia based initiatives.
Pramod J Resume M.Sc. (Electronics) 3.5 Year Exprience in Hardware DesignPramod Jangam
Pramod P. Jangam is an electronics engineer with over 8 years of experience in hardware design and development. He has worked at Jayashree Electron Pvt. Ltd. as an R&D Engineer and Production Engineer. He has a M.Sc. in Electronics and qualifications in embedded systems. His technical skills include hardware design, PCB development, microcontroller programming, and sensor interfacing. He has experience with several projects involving transducers, counters, timers, and safety systems.
The document describes the design and implementation of a 64-bit arithmetic logic unit (ALU) for an instruction set architecture. It compares the speed and power consumption of the ALU implemented on different field programmable gate arrays (FPGAs). Key aspects of the ALU design include 16 supported instructions, a power down mode to reduce power consumption when idle, and synthesis for a Spartan2 FPGA using Verilog. Performance metrics like speed, power usage, and resource utilization are reported for the ALU implemented on several FPGAs.
This document is a summer training report submitted by Akhil Garg to fulfill requirements for a Bachelor of Technology degree in Electronics and Communication Engineering. It discusses embedded systems and the 8051 microcontroller family. Specifically, it provides an introduction to embedded systems, compares microprocessors and microcontrollers, describes the architecture and features of the 8051 microcontroller, explains programming the 8051 in both assembly and C languages, and includes examples of programming the 8051 to control LEDs, 7-segment displays, LCDs, keypads and more. It also discusses the tools needed for 8051 programming including the Keil compiler and Flash Magic programmer.
DEFINITION
• An operating system is an intermediary between a computer user and the hardware. • Make the hardware convenient to use. • Manages system resources. • Use the hardware in an efficient manner.
Training Report on embedded Systems and RoboticsNIT Raipur
Deepak Kumar completed a training report on embedded systems and robotics at I3indya Technologies in Delhi for his vocational project in the 2012-2013 academic year. He studied topics including an overview of embedded systems, microcontrollers like the Atmega16, analog to digital conversion, timers, interfacing various components like 7-segment displays, LCDs, DC motors, sensors, and more. The 3-page report was submitted to his college, the National Institute of Technology Raipur, to fulfill requirements for his Bachelor of Technology degree.
ARM 32-bit Microcontroller Cortex-M3 introductionanand hd
What is the ARM Cortex-M3 processor?
Architecture Versions,Processor naming, Instruction Set Development, The Thumb-2 Technology and Instruction Set Architecture, Cortex-M3 Processor Applications
This document is a practical training report submitted by Roshan Mani, a student of Electronics and Communication Engineering at GCET Bikaner, as part of an industrial training completed at CMC Academy in Jaipur. The report provides details about the training, including an overview of CMC Academy and the topics covered during the training such as microprocessors vs microcontrollers, embedded systems, memory addressing types, and the AT89C51 microcontroller. It also describes various electronic components and a bidirectional visitor counter home automation project developed during the training.
An embedded system is a computer system designed to do one or a few dedicated and/or specific functions often with real-time computing constraints. It is embedded as part of a complete device often including hardware and mechanical parts. By contrast, a general-purpose computer, such as a personal computer (PC), is designed to be flexible and to meet a wide range of end-user needs. Embedded systems control many devices in common use today.
Physically, embedded systems range from portable devices such as digital watches and MP3 players, to large stationary installations like traffic lights, factory controllers, or the systems controlling nuclear power plants. Complexity varies from low, with a single microcontroller chip, to very high with multiple units, peripherals and networks mounted inside a large chassis or enclosure.
Introduction to Embedded Systems and its ApplicationsGaurav Verma
This document outlines the content of a course on basic embedded systems and design. It covers several topics including hardware fundamentals for embedded developers, microprocessors and microcontrollers, real-time operating systems, advanced microprocessors, and communication protocols. For hardware fundamentals, it discusses digital circuit parameters, programmable logic devices like PAL, PLA, CPLD and FPGA, and system on chip. It also provides examples of using PAL and PLA for digital logic design problems. The document contains detailed descriptions of topics along with diagrams and examples.
This document presents a project that aims to create a smart lab using Internet of Things (IoT) technology for automation and security. The system has two main modules: 1) A student attendance tracking module that uses ultrasonic sensors and microcontrollers to count students entering and exiting the lab and record the data in a database. 2) A lab equipment tracking module that attaches WiFi modules to equipment to monitor their locations and notify administrators if any are removed from the lab. The system is designed with a client-server architecture and uses tools like Arduino, ESP8266, PHP and databases for implementation. The goal is to automate attendance tracking and improve security of equipment in the lab.
The document summarizes the Open Trip Planner (OTP) project from 2009 to 2011. It describes OTP as an open-source multimodal trip planning tool that uses open data sources. It outlines the project goals, development process using an open-source methodology, and evaluations of OTP's performance for transit, bicycle, and bicycle-to-transit trip planning in the Portland region. It concludes by discussing next steps to continue improving OTP under a new grant.
This document discusses the basic functions and types of real-time operating systems (RTOS) for embedded systems. It describes key RTOS functions like integrated development environments, timers, scheduling, device drivers, inter-process communication, and memory management. It also categorizes different types of RTOS as in-house developed, broad-based commercial, general purpose OS with RTOS features, and special focus RTOS tailored for specific processors. Overall, the document provides a high-level overview of RTOS functions and classifications.
Embedded programming in RTOS VxWorks for PROFIBUS VME interface cardRinku Chandolia
A project report submitted by Rutul Shelat B. and Rinku K. Chandolia for award of B.E. degree in Instrumentation and Control at GEC sec.-28 gandhinagar Gujarat (india) in 2013.
This document provides an introduction to real-time operating systems (RTOS). It defines an RTOS as an operating system designed to operate in constrained environments with limited memory and processing power, and often needs to provide services within a defined time period. The key components of an RTOS include its kernel, board support package (BSP), tasks, task control blocks, memory management, timers, and inter-process communication (IPC). RTOS kernels are either monolithic or microkernel in structure. BSPs make RTOSs specific to a target processor. Tasks are the basic units of execution and are scheduled deterministically.
This document discusses real-time operating systems (RTOS). It defines an RTOS as a multitasking OS that meets time deadlines and functions in real-time constraints. The document outlines RTOS architecture, including the kernel that provides abstraction between software and hardware. It also discusses RTOS features like tasks, scheduling, timers, memory management, and inter-task communication methods. Examples of RTOS applications include medical devices, aircraft control systems, and automotive components.
An RTOS differs from a common OS in that it allows direct access to the microprocessor and peripherals, helping to meet deadlines. An RTOS provides mechanisms for multitasking like scheduling, context switching, and IPC. It uses techniques like priority-based preemptive scheduling and memory management with separate stacks and heaps for tasks. Common RTOS services include timing functions, synchronization, resource protection and communication between processes.
This document discusses BroadcastReceivers in Android. BroadcastReceivers allow apps to register to receive intents or system broadcasts. They can be used to listen for system events like low battery or receive broadcasts from other apps. BroadcastReceivers are registered either dynamically in code or statically in the AndroidManifest file. Broadcasts can be sent using sendBroadcast or sendOrderedBroadcast methods. Ordered broadcasts are executed in a defined order while normal broadcasts run asynchronously. The BroadcastReceiver lifecycle only lasts as long as the onReceive method so asynchronous operations require starting a service.
This presentation talks about Real Time Operating Systems (RTOS). Starting with fundamental concepts of OS, this presentation deep dives into Embedded, Real Time and related aspects of an OS. Appropriate examples are referred with Linux as a case-study. Ideal for a beginner to build understanding about RTOS.
The document discusses real-time operating systems and concepts. It defines an operating system and real-time systems, distinguishing between soft and hard real-time systems. Popular real-time operating systems include VxWorks, QNX and Linux. Real-time operating systems provide mechanisms for real-time scheduling of tasks with deterministic timing. The architecture of a real-time operating system includes tasks, scheduling, interrupts and kernel objects like semaphores. Key differences from general purpose OS are determinism, preemptive multitasking and priority-based scheduling in real-time OS.
This document discusses real-time operating systems (RTOS). It defines RTOS as operating systems that are able to respond to inputs immediately within a specified time delay. It compares RTOS to general operating systems and discusses the types, characteristics, functions, and applications of RTOS. Examples of RTOS like VxWorks are provided. The key functions of an RTOS include task management, scheduling, resource allocation, and interrupt handling. RTOS are widely used in applications that require deterministic responses like avionics, medical devices, industrial automation, and more.
This document provides a report on an embedded systems industrial training submitted by Islam Nabil Mahmoud. The report covers several topics related to embedded systems including microcontrollers, system on chip, differences between microprocessors and microcontrollers, microcontroller CPU architectures, memory types, real time systems, simulators vs emulators, C programming, data structures and algorithms, computer architecture, and several labs completed during the training. The training was supervised by Dr. Mohamed Ali Torad and took place from May to August 2017 at the Higher Technology Institute.
This document presents a summary of a presentation on applying FPGAs for motor speed control. It was delivered by five students from the Electrical Engineering department at the University College of Engineering in Rajasthan, India. The presentation covered FPGA introductions, applications, structures, programming, and using an FPGA with an intelligent power module and motor to observe waveforms for motor speed control. It concluded that FPGAs provide flexibility for prototyping and application in areas like automotive, consumer electronics, and industrial controls.
This document is a project report on a GSM based robotic vehicle. It was submitted by 4 students - Nipun Nair, Abir Bose, Sayam Roy, and Shashi Bhushan - in partial fulfillment of their Bachelor of Engineering degree in Electrical and Electronics Engineering from St. Peter's University. The report includes an abstract, introduction to embedded systems, description of the project block diagram, list of hardware components used, schematic diagram, coding, testing procedures, results, and conclusion.
Thunderbolt is a hardware interface developed by Intel that allows high-speed connection of external devices to computers. It uses the Mini DisplayPort connector and provides 10Gbps of bandwidth per channel, with two channels supported. Originally intended to use optical cabling, it was found copper could provide the necessary bandwidth at lower cost. Thunderbolt supports daisy-chaining of up to six devices and can transmit both data and video over a single cable using PCIe and DisplayPort protocols. It has advantages over USB 3.0 such as higher speed and lower latency. Future versions of Thunderbolt are planned to provide even higher speeds.
This document provides details about a technical seminar report on Blue Gene/L supercomputer. It includes an abstract describing Blue Gene/L's architecture as a 64,000 node scientific supercomputer developed with DOE funding. It also describes the torus interconnection network that connects the nodes and how a parallel performance simulator was used to help design and test the network. The report is submitted by a student to fulfill the requirements for a bachelor's degree in computer science and includes certificates, declarations, acknowledgements and references.
Training Report on embedded Systems and RoboticsNIT Raipur
Deepak Kumar completed a training report on embedded systems and robotics at I3indya Technologies in Delhi for his vocational project in the 2012-2013 academic year. He studied topics including an overview of embedded systems, microcontrollers like the Atmega16, analog to digital conversion, timers, interfacing various components like 7-segment displays, LCDs, DC motors, sensors, and more. The 3-page report was submitted to his college, the National Institute of Technology Raipur, to fulfill requirements for his Bachelor of Technology degree.
ARM 32-bit Microcontroller Cortex-M3 introductionanand hd
What is the ARM Cortex-M3 processor?
Architecture Versions,Processor naming, Instruction Set Development, The Thumb-2 Technology and Instruction Set Architecture, Cortex-M3 Processor Applications
This document is a practical training report submitted by Roshan Mani, a student of Electronics and Communication Engineering at GCET Bikaner, as part of an industrial training completed at CMC Academy in Jaipur. The report provides details about the training, including an overview of CMC Academy and the topics covered during the training such as microprocessors vs microcontrollers, embedded systems, memory addressing types, and the AT89C51 microcontroller. It also describes various electronic components and a bidirectional visitor counter home automation project developed during the training.
An embedded system is a computer system designed to do one or a few dedicated and/or specific functions often with real-time computing constraints. It is embedded as part of a complete device often including hardware and mechanical parts. By contrast, a general-purpose computer, such as a personal computer (PC), is designed to be flexible and to meet a wide range of end-user needs. Embedded systems control many devices in common use today.
Physically, embedded systems range from portable devices such as digital watches and MP3 players, to large stationary installations like traffic lights, factory controllers, or the systems controlling nuclear power plants. Complexity varies from low, with a single microcontroller chip, to very high with multiple units, peripherals and networks mounted inside a large chassis or enclosure.
Introduction to Embedded Systems and its ApplicationsGaurav Verma
This document outlines the content of a course on basic embedded systems and design. It covers several topics including hardware fundamentals for embedded developers, microprocessors and microcontrollers, real-time operating systems, advanced microprocessors, and communication protocols. For hardware fundamentals, it discusses digital circuit parameters, programmable logic devices like PAL, PLA, CPLD and FPGA, and system on chip. It also provides examples of using PAL and PLA for digital logic design problems. The document contains detailed descriptions of topics along with diagrams and examples.
This document presents a project that aims to create a smart lab using Internet of Things (IoT) technology for automation and security. The system has two main modules: 1) A student attendance tracking module that uses ultrasonic sensors and microcontrollers to count students entering and exiting the lab and record the data in a database. 2) A lab equipment tracking module that attaches WiFi modules to equipment to monitor their locations and notify administrators if any are removed from the lab. The system is designed with a client-server architecture and uses tools like Arduino, ESP8266, PHP and databases for implementation. The goal is to automate attendance tracking and improve security of equipment in the lab.
The document summarizes the Open Trip Planner (OTP) project from 2009 to 2011. It describes OTP as an open-source multimodal trip planning tool that uses open data sources. It outlines the project goals, development process using an open-source methodology, and evaluations of OTP's performance for transit, bicycle, and bicycle-to-transit trip planning in the Portland region. It concludes by discussing next steps to continue improving OTP under a new grant.
This document discusses the basic functions and types of real-time operating systems (RTOS) for embedded systems. It describes key RTOS functions like integrated development environments, timers, scheduling, device drivers, inter-process communication, and memory management. It also categorizes different types of RTOS as in-house developed, broad-based commercial, general purpose OS with RTOS features, and special focus RTOS tailored for specific processors. Overall, the document provides a high-level overview of RTOS functions and classifications.
Embedded programming in RTOS VxWorks for PROFIBUS VME interface cardRinku Chandolia
A project report submitted by Rutul Shelat B. and Rinku K. Chandolia for award of B.E. degree in Instrumentation and Control at GEC sec.-28 gandhinagar Gujarat (india) in 2013.
This document provides an introduction to real-time operating systems (RTOS). It defines an RTOS as an operating system designed to operate in constrained environments with limited memory and processing power, and often needs to provide services within a defined time period. The key components of an RTOS include its kernel, board support package (BSP), tasks, task control blocks, memory management, timers, and inter-process communication (IPC). RTOS kernels are either monolithic or microkernel in structure. BSPs make RTOSs specific to a target processor. Tasks are the basic units of execution and are scheduled deterministically.
This document discusses real-time operating systems (RTOS). It defines an RTOS as a multitasking OS that meets time deadlines and functions in real-time constraints. The document outlines RTOS architecture, including the kernel that provides abstraction between software and hardware. It also discusses RTOS features like tasks, scheduling, timers, memory management, and inter-task communication methods. Examples of RTOS applications include medical devices, aircraft control systems, and automotive components.
An RTOS differs from a common OS in that it allows direct access to the microprocessor and peripherals, helping to meet deadlines. An RTOS provides mechanisms for multitasking like scheduling, context switching, and IPC. It uses techniques like priority-based preemptive scheduling and memory management with separate stacks and heaps for tasks. Common RTOS services include timing functions, synchronization, resource protection and communication between processes.
This document discusses BroadcastReceivers in Android. BroadcastReceivers allow apps to register to receive intents or system broadcasts. They can be used to listen for system events like low battery or receive broadcasts from other apps. BroadcastReceivers are registered either dynamically in code or statically in the AndroidManifest file. Broadcasts can be sent using sendBroadcast or sendOrderedBroadcast methods. Ordered broadcasts are executed in a defined order while normal broadcasts run asynchronously. The BroadcastReceiver lifecycle only lasts as long as the onReceive method so asynchronous operations require starting a service.
This presentation talks about Real Time Operating Systems (RTOS). Starting with fundamental concepts of OS, this presentation deep dives into Embedded, Real Time and related aspects of an OS. Appropriate examples are referred with Linux as a case-study. Ideal for a beginner to build understanding about RTOS.
The document discusses real-time operating systems and concepts. It defines an operating system and real-time systems, distinguishing between soft and hard real-time systems. Popular real-time operating systems include VxWorks, QNX and Linux. Real-time operating systems provide mechanisms for real-time scheduling of tasks with deterministic timing. The architecture of a real-time operating system includes tasks, scheduling, interrupts and kernel objects like semaphores. Key differences from general purpose OS are determinism, preemptive multitasking and priority-based scheduling in real-time OS.
This document discusses real-time operating systems (RTOS). It defines RTOS as operating systems that are able to respond to inputs immediately within a specified time delay. It compares RTOS to general operating systems and discusses the types, characteristics, functions, and applications of RTOS. Examples of RTOS like VxWorks are provided. The key functions of an RTOS include task management, scheduling, resource allocation, and interrupt handling. RTOS are widely used in applications that require deterministic responses like avionics, medical devices, industrial automation, and more.
This document provides a report on an embedded systems industrial training submitted by Islam Nabil Mahmoud. The report covers several topics related to embedded systems including microcontrollers, system on chip, differences between microprocessors and microcontrollers, microcontroller CPU architectures, memory types, real time systems, simulators vs emulators, C programming, data structures and algorithms, computer architecture, and several labs completed during the training. The training was supervised by Dr. Mohamed Ali Torad and took place from May to August 2017 at the Higher Technology Institute.
This document presents a summary of a presentation on applying FPGAs for motor speed control. It was delivered by five students from the Electrical Engineering department at the University College of Engineering in Rajasthan, India. The presentation covered FPGA introductions, applications, structures, programming, and using an FPGA with an intelligent power module and motor to observe waveforms for motor speed control. It concluded that FPGAs provide flexibility for prototyping and application in areas like automotive, consumer electronics, and industrial controls.
This document is a project report on a GSM based robotic vehicle. It was submitted by 4 students - Nipun Nair, Abir Bose, Sayam Roy, and Shashi Bhushan - in partial fulfillment of their Bachelor of Engineering degree in Electrical and Electronics Engineering from St. Peter's University. The report includes an abstract, introduction to embedded systems, description of the project block diagram, list of hardware components used, schematic diagram, coding, testing procedures, results, and conclusion.
Thunderbolt is a hardware interface developed by Intel that allows high-speed connection of external devices to computers. It uses the Mini DisplayPort connector and provides 10Gbps of bandwidth per channel, with two channels supported. Originally intended to use optical cabling, it was found copper could provide the necessary bandwidth at lower cost. Thunderbolt supports daisy-chaining of up to six devices and can transmit both data and video over a single cable using PCIe and DisplayPort protocols. It has advantages over USB 3.0 such as higher speed and lower latency. Future versions of Thunderbolt are planned to provide even higher speeds.
This document provides details about a technical seminar report on Blue Gene/L supercomputer. It includes an abstract describing Blue Gene/L's architecture as a 64,000 node scientific supercomputer developed with DOE funding. It also describes the torus interconnection network that connects the nodes and how a parallel performance simulator was used to help design and test the network. The report is submitted by a student to fulfill the requirements for a bachelor's degree in computer science and includes certificates, declarations, acknowledgements and references.
IRJET- PCB Test, Debug & Programming Made Easy with Universal Test JigIRJET Journal
This document discusses a universal test jig that uses XJTAG technology to test printed circuit boards. XJTAG allows testing, troubleshooting, and programming of PCBs containing both JTAG and non-JTAG devices. The universal test jig includes an I/O board connected to an XJLink 2.0 adapter to interface between the computer and device under test on the PCB. XJDeveloper software is used to develop and execute test programs, while the XJLink 2.0 hardware connects to the computer via USB to drive signals to and from the device under test.
Abhishek Bahuguna is a senior software engineer with over 5 years of experience in telecom technologies such as Layer 1, Layer 2, and Layer 3 networks. He has expertise in languages like TCL, Perl, and C, and has worked with networking operating systems including Windows and Linux. His work experience includes automation testing of products at Tech Mahindra and Mindtree, and protocol testing and feature development for Cisco switches, routers, and SAN equipment at Wipro. He is looking for a new challenging role where he can apply his telecom and software engineering skills.
This project report describes a remote car locking system using GSM technology. The system uses an AT89S52 microcontroller and GSM SIM900 module to remotely lock and unlock car doors via SMS commands. The system was designed and developed to provide low-cost vehicle security for consumer cars. It allows users to securely lock and unlock their cars from a distance using a mobile phone. The report discusses the system design, components, circuit diagram, working mechanism and testing results. It was found to successfully demonstrate remote locking and unlocking of car doors via SMS.
Industrial Ethernet Facts - The 5 major technologiesStephane Potier
This document provides a summary and comparison of five major industrial Ethernet communication systems: PROFINET, POWERLINK, EtherNet/IP, EtherCAT, and SERCOS III. It discusses how each system works, including approaches to real-time communication, organization structures, and criteria for evaluating long-term investment viability. Performance metrics like theoretically achievable cycle times and network load are also analyzed. The document aims to objectively assess the technical and economic characteristics of these industrial Ethernet standards.
Ethercat.org industrial ethernet technologiesKen Ott
This document provides an overview of various industrial ethernet technologies. It divides the technologies into three classes - Class A uses standard ethernet hardware and TCP/IP, Class B uses standard hardware but a dedicated process data protocol, and Class C uses dedicated hardware for high performance. The document then summarizes key aspects of several industrial ethernet technologies, including PROFINET, comparing their performance, capabilities and limitations.
This document provides an overview of industrial Ethernet technologies, comparing their technical principles and performance capabilities. It divides the technologies into three classes - Class A uses standard Ethernet hardware and TCP/IP, Class B uses custom protocols but standard hardware, and Class C uses dedicated hardware for highest performance. The document then examines several technologies, particularly analyzing the different versions and capabilities of PROFINET.
The document provides a detailed resume for Debojyoti Lahiri summarizing his personal and contact information, work experience, skills, education, and objectives. It details over 22 years of experience in embedded software, firmware, and hardware development across various industries. Key roles included technical architect, principal architect, lead engineer, and manager for companies in industrial automation, automotive, wireless communications, and more. Skills include programming languages, microcontrollers, DSPs, and tools. Education includes an M.E. in electronics and B.E. in electrical engineering. The objective is a lead technical or engineering management role in embedded systems.
Microsoft Hello World IoT 2017 - Embedded Systems Design - Build vs BuyFernando Luiz Cola
This document discusses hardware solutions for IoT and embedded systems. It provides a case study of the Nest Learning Thermostat, noting its key features like auto-scheduling, auto-away functionality, and remote control via mobile devices. It then discusses trends in embedded system design like improving time-to-market and lowering costs with standardized middleware and operating systems. Finally, it introduces Toradex as a provider of SOM and SBC solutions for IoT applications, highlighting their long product availability, scalable platforms, and global support network.
TCP over 6LoWPAN for Industrial ApplicationsAhmed Ayadi
This document discusses using TCP over 6LoWPAN for industrial applications. It outlines the benefits of TCP for reliable communication in wireless sensor networks and describes an experimental setup using TelosB motes running Contiki OS to evaluate TCP performance over 6LoWPAN in both single-hop and multi-hop scenarios. Key energy parameters like voltage, current draw for different radio states, and CPU usage are also presented to analyze energy consumption.
The document summarizes Utkarsh Tiwari's technical internship project at Bhabha Atomic Research Centre. The project involved developing digital thermometers using ATMEGA 16 and AT89C51 microcontrollers. It also studied various fast networking buses including USB, IEEE 1394, JESD 204, PCI Express, JTAG 1149. The document provides details of each microcontroller and networking bus. It concludes that networks are proliferating in industrial automation and it is important to have a strategy to choose from the various options available.
JVL Industrial Ethernet Expansion Modules for MAC MotorsElectromate
The document discusses Industrial Ethernet expansion modules from JVL for integrating servo and stepper motors with Ethernet communications. It provides an overview of the available Industrial Ethernet protocols supported by the modules, including EtherCAT, Ethernet/IP, PROFINET IO, Modbus TCP, Powerlink and SERCOS III. It also includes specifications for the modules such as electrical ratings, connector types, sample code availability, and easy installation using M12 connectors.
Islam Nabil has worked in various roles involving IT help desk support, customer service, embedded Linux engineering, and medical device maintenance. He has strong skills in Linux, Raspberry Pi, ROS, embedded systems, and real-time operating systems. Currently, he is a field support engineer at Telecom Egypt and a self-driving car engineer student through Udacity.
Islam Nabil is an electrical engineering graduate from the Higher Technological Institute in Egypt with a GPA of 2.47. He has experience as a technical mentor for the Egypt IoT Challenge, where he provided technical and soft skills feedback to 7 startup teams. Islam Nabil also has experience as an ROS and Embedded Linux instructor at various institutions in Egypt. His qualifications include completing courses in freelancing basics, Python programming, machine learning, and Raspberry Pi development.
This document provides a summary of Islam Nabil Mahmoud Mohamed's education, training, programming skills, embedded systems skills, competitions, and activities. It lists his address, mobile number, email, education including a self-driving car nano-degree and electrical engineering degree from HTI, trainings from 2017-2015, programming skills in C++, Python, C, and VHDL, embedded Linux development experience, microcontroller experience, participation in robotics competitions, and experience instructing ROS and embedded Linux courses and judging robotics competitions.
This document provides a summary of Islam Nabil Mahmoud Mohamed's education, training, programming skills, embedded systems skills, competitions, and activities. It lists his address, mobile number, email, graduation from the Higher Technological Institute at Tenth of Ramadan city in Electrical Engineering and Computers in 2017, various trainings from 2017-2016 in ROS, Android, FPGA, Linux, and more, and programming skills in C++, Python, C, and VHDL. It also lists experience with embedded Linux development, microcontrollers, participating in robotics competitions, and experience instructing and judging robotics events.
This document provides an overview of Robot Operating System (ROS), including its history, applications, and requirements. Some key points:
- ROS is an open-source robotics middleware originally developed by Willow Garage and Stanford AI Lab in 2007. It provides services for hardware abstraction, messaging, package management, and more.
- ROS has been used widely in applications involving perception, mobile robotics, grasping, planning, and more. It has also been used on projects involving autonomous underwater vehicles, drones, and space robots.
- Using ROS requires skills like Python/C++ programming, Linux command line, knowledge of algorithms and computer graphics, and experience integrating hardware devices.
ROS (Robot Operating System) is robotics middleware that provides services for robot software development like hardware abstraction, message passing between processes, and package management. It was started in 2007 at Willow Garage and Stanford AI Lab. ROS is widely used for applications involving perception, motion, mobile robotics, and more. It supports robots like drones, autonomous underwater vehicles, and projects at Stanford and The Construct website. While not a real-time OS, ROS 2.0 aims to better support real-time systems. Questions are welcome on ROS and related topics.
ROS Ambassador at The Construct
Geek Worked on Development in Embedded Linux with Yocto Project
(Pi & Pine64+) Customized Images and meta-ros
Made IOT Projects by Python
Made Indoors Autonomous Mobile Robot Using ROS Mapping and Navigation (RTABmap & Gmapping and RGBD SLAM) 2016
Judge Minesweeper Robot Competition 2017
Member at THINK ROV Team 2014
Member of IT&ARTS of IEEE HTI SB for 3 years (2013-2015)
Participated at INNOV EGYPT with startup CarePi KID 2014
Instructor Of ROS and Linux
Loves Programming Languages C++, Python and Java
Islam Nabil Mahmoud Mohamed graduated in 2017 with a degree in Electrical Engineering and Computers from the Higher Technological Institute at Tenth of Ramadan city with a GPA of 2.5. His graduation project involved building an indoor autonomous mobile robot using ROS and a Kinect sensor. He has experience with embedded systems including embedded Linux development, microcontrollers like PIC and AVR, and programming skills in C++, Python, C, and VHDL. He also participated in robotics competitions and was involved with his university's IEEE committee.
The chapter covers topics related to Linux administration including Linux history, why Linux, different Linux distributions, exploring the Ubuntu GUI, filesystem hierarchy standard, introduction to command line, browsing and exploring filesystem, creating/copying/moving/removing files and directories, administering users and groups, installing packages, text editors, system info commands, managing files and permissions, piping and redirection, shell scripting and more. The key topics are explained with examples of relevant commands.
Have you ever been confused by the myriad of choices offered by AWS for hosting a website or an API?
Lambda, Elastic Beanstalk, Lightsail, Amplify, S3 (and more!) can each host websites + APIs. But which one should we choose?
Which one is cheapest? Which one is fastest? Which one will scale to meet our needs?
Join me in this session as we dive into each AWS hosting service to determine which one is best for your scenario and explain why!
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slackshyamraj55
Discover the seamless integration of RPA (Robotic Process Automation), COMPOSER, and APM with AWS IDP enhanced with Slack notifications. Explore how these technologies converge to streamline workflows, optimize performance, and ensure secure access, all while leveraging the power of AWS IDP and real-time communication via Slack notifications.
This presentation provides valuable insights into effective cost-saving techniques on AWS. Learn how to optimize your AWS resources by rightsizing, increasing elasticity, picking the right storage class, and choosing the best pricing model. Additionally, discover essential governance mechanisms to ensure continuous cost efficiency. Whether you are new to AWS or an experienced user, this presentation provides clear and practical tips to help you reduce your cloud costs and get the most out of your budget.
Dandelion Hashtable: beyond billion requests per second on a commodity serverAntonios Katsarakis
This slide deck presents DLHT, a concurrent in-memory hashtable. Despite efforts to optimize hashtables, that go as far as sacrificing core functionality, state-of-the-art designs still incur multiple memory accesses per request and block request processing in three cases. First, most hashtables block while waiting for data to be retrieved from memory. Second, open-addressing designs, which represent the current state-of-the-art, either cannot free index slots on deletes or must block all requests to do so. Third, index resizes block every request until all objects are copied to the new index. Defying folklore wisdom, DLHT forgoes open-addressing and adopts a fully-featured and memory-aware closed-addressing design based on bounded cache-line-chaining. This design offers lock-free index operations and deletes that free slots instantly, (2) completes most requests with a single memory access, (3) utilizes software prefetching to hide memory latencies, and (4) employs a novel non-blocking and parallel resizing. In a commodity server and a memory-resident workload, DLHT surpasses 1.6B requests per second and provides 3.5x (12x) the throughput of the state-of-the-art closed-addressing (open-addressing) resizable hashtable on Gets (Deletes).
Generating privacy-protected synthetic data using Secludy and MilvusZilliz
During this demo, the founders of Secludy will demonstrate how their system utilizes Milvus to store and manipulate embeddings for generating privacy-protected synthetic data. Their approach not only maintains the confidentiality of the original data but also enhances the utility and scalability of LLMs under privacy constraints. Attendees, including machine learning engineers, data scientists, and data managers, will witness first-hand how Secludy's integration with Milvus empowers organizations to harness the power of LLMs securely and efficiently.
5th LF Energy Power Grid Model Meet-up SlidesDanBrown980551
5th Power Grid Model Meet-up
It is with great pleasure that we extend to you an invitation to the 5th Power Grid Model Meet-up, scheduled for 6th June 2024. This event will adopt a hybrid format, allowing participants to join us either through an online Mircosoft Teams session or in person at TU/e located at Den Dolech 2, Eindhoven, Netherlands. The meet-up will be hosted by Eindhoven University of Technology (TU/e), a research university specializing in engineering science & technology.
Power Grid Model
The global energy transition is placing new and unprecedented demands on Distribution System Operators (DSOs). Alongside upgrades to grid capacity, processes such as digitization, capacity optimization, and congestion management are becoming vital for delivering reliable services.
Power Grid Model is an open source project from Linux Foundation Energy and provides a calculation engine that is increasingly essential for DSOs. It offers a standards-based foundation enabling real-time power systems analysis, simulations of electrical power grids, and sophisticated what-if analysis. In addition, it enables in-depth studies and analysis of the electrical power grid’s behavior and performance. This comprehensive model incorporates essential factors such as power generation capacity, electrical losses, voltage levels, power flows, and system stability.
Power Grid Model is currently being applied in a wide variety of use cases, including grid planning, expansion, reliability, and congestion studies. It can also help in analyzing the impact of renewable energy integration, assessing the effects of disturbances or faults, and developing strategies for grid control and optimization.
What to expect
For the upcoming meetup we are organizing, we have an exciting lineup of activities planned:
-Insightful presentations covering two practical applications of the Power Grid Model.
-An update on the latest advancements in Power Grid -Model technology during the first and second quarters of 2024.
-An interactive brainstorming session to discuss and propose new feature requests.
-An opportunity to connect with fellow Power Grid Model enthusiasts and users.
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...Alex Pruden
Folding is a recent technique for building efficient recursive SNARKs. Several elegant folding protocols have been proposed, such as Nova, Supernova, Hypernova, Protostar, and others. However, all of them rely on an additively homomorphic commitment scheme based on discrete log, and are therefore not post-quantum secure. In this work we present LatticeFold, the first lattice-based folding protocol based on the Module SIS problem. This folding protocol naturally leads to an efficient recursive lattice-based SNARK and an efficient PCD scheme. LatticeFold supports folding low-degree relations, such as R1CS, as well as high-degree relations, such as CCS. The key challenge is to construct a secure folding protocol that works with the Ajtai commitment scheme. The difficulty, is ensuring that extracted witnesses are low norm through many rounds of folding. We present a novel technique using the sumcheck protocol to ensure that extracted witnesses are always low norm no matter how many rounds of folding are used. Our evaluation of the final proof system suggests that it is as performant as Hypernova, while providing post-quantum security.
Paper Link: https://eprint.iacr.org/2024/257
Your One-Stop Shop for Python Success: Top 10 US Python Development Providersakankshawande
Simplify your search for a reliable Python development partner! This list presents the top 10 trusted US providers offering comprehensive Python development services, ensuring your project's success from conception to completion.
Digital Marketing Trends in 2024 | Guide for Staying AheadWask
https://www.wask.co/ebooks/digital-marketing-trends-in-2024
Feeling lost in the digital marketing whirlwind of 2024? Technology is changing, consumer habits are evolving, and staying ahead of the curve feels like a never-ending pursuit. This e-book is your compass. Dive into actionable insights to handle the complexities of modern marketing. From hyper-personalization to the power of user-generated content, learn how to build long-term relationships with your audience and unlock the secrets to success in the ever-shifting digital landscape.
Building Production Ready Search Pipelines with Spark and MilvusZilliz
Spark is the widely used ETL tool for processing, indexing and ingesting data to serving stack for search. Milvus is the production-ready open-source vector database. In this talk we will show how to use Spark to process unstructured data to extract vector representations, and push the vectors to Milvus vector database for search serving.
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc
How does your privacy program stack up against your peers? What challenges are privacy teams tackling and prioritizing in 2024?
In the fifth annual Global Privacy Benchmarks Survey, we asked over 1,800 global privacy professionals and business executives to share their perspectives on the current state of privacy inside and outside of their organizations. This year’s report focused on emerging areas of importance for privacy and compliance professionals, including considerations and implications of Artificial Intelligence (AI) technologies, building brand trust, and different approaches for achieving higher privacy competence scores.
See how organizational priorities and strategic approaches to data security and privacy are evolving around the globe.
This webinar will review:
- The top 10 privacy insights from the fifth annual Global Privacy Benchmarks Survey
- The top challenges for privacy leaders, practitioners, and organizations in 2024
- Key themes to consider in developing and maintaining your privacy program
Skybuffer SAM4U tool for SAP license adoptionTatiana Kojar
Manage and optimize your license adoption and consumption with SAM4U, an SAP free customer software asset management tool.
SAM4U, an SAP complimentary software asset management tool for customers, delivers a detailed and well-structured overview of license inventory and usage with a user-friendly interface. We offer a hosted, cost-effective, and performance-optimized SAM4U setup in the Skybuffer Cloud environment. You retain ownership of the system and data, while we manage the ABAP 7.58 infrastructure, ensuring fixed Total Cost of Ownership (TCO) and exceptional services through the SAP Fiori interface.
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...alexjohnson7307
Predictive maintenance is a proactive approach that anticipates equipment failures before they happen. At the forefront of this innovative strategy is Artificial Intelligence (AI), which brings unprecedented precision and efficiency. AI in predictive maintenance is transforming industries by reducing downtime, minimizing costs, and enhancing productivity.
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
Final report NTI FPGA&RTOS&Cadeance ICFB&
1. Higher technology institute Electrical & computers Dept
Report on /
Advanced Electronics Training In NTI
Industrial training /
ITR 103
Submitted to : Examiners Committee
Submitted by : Name / Islam nabil mahmoud mohamed ID / 20130890
Supervised by : Prof.Dr / Tayel Dabos ( HTI )
Dr/ Mohamed Elzorkany (NTI)
August 2016
Islam Nabil Mahmoud 20130890 1 Electrical&computers Dept Industrial Training 3 ITR 103
2. Islam Nabil Mahmoud 20130890 2 Electrical&computers Dept Industrial Training 3 ITR 103
3. Abstract
What is FPGA ?
FPGA vs Microcontroller
Hardware Description Languages
Flow OF FPGA Xilinx
What is PsoC & RTOS ?
Real Time Operating Systems
How RTOS work ?
IDE
RTOS Supported architectures
Labs of coding
Uart
Integrated circuit design
Cadence Flow
OrCAD Flow
Islam Nabil Mahmoud 20130890 3 Electrical&computers Dept Industrial Training 3 ITR 103
4. Detailed Content
Contents
CH1 (FPGA).........................................................................................................................................3
History..................................................................................................................................................4
Modern developments..........................................................................................................................4
Gates.....................................................................................................................................................5
Applications..........................................................................................................................................5
FPGA vs Microcontroller.....................................................................................................................6
Hardware Description Languages........................................................................................................9
one-Bit Wide 2 to 1 Multiplexer.........................................................................................................11
one-Bit Wide 2 to 1 Multiplexer.........................................................................................................12
Four-Bit Wide 2 to 1 Multiplexer.......................................................................................................14
Multiplexers in VHDL.......................................................................................................................15
Flow OF FPGA Xilinx ISE 12.2.......................................................................................................15
Creating a Schematic..........................................................................................................................21
Simulating Circuit:.............................................................................................................................25
Synthesizing your circuit to the Xilinx FPGA...................................................................................28
Overview of the Procedure.................................................................................................................42
CH2 (PsoC & RTOS).........................................................................................................................43
Overview............................................................................................................................................43
Configurable analog and digital blocks..............................................................................................44
Programmable routing and interconnect............................................................................................45
Series..................................................................................................................................................45
Development tools..............................................................................................................................46
PSoC Designer.......................................................................................................................46
Summary............................................................................................................................................46
Real Time Systems types:..................................................................................................................47
Real Time Operating Systems (RTOS)..............................................................................................48
Design Philosophy..............................................................................................................................48
Real Time Task Priorities...................................................................................................................49
How RTOS work :..............................................................................................................................49
RTOS Supported architectures :.........................................................................................................50
Related projects..................................................................................................................................50
SafeRTOS................................................................................................................................50
OpenRTOS...............................................................................................................................51
Implementation...................................................................................................................................51
Key features........................................................................................................................................52
IDE.....................................................................................................................................................52
Coding with RTOS.............................................................................................................................52
Lab1....................................................................................................................................................52
lab 2 counting.....................................................................................................................................55
lab 3 uart.............................................................................................................................................57
CH3....................................................................................................................................................59
Integrated circuit design.....................................................................................................................59
Fundamentals......................................................................................................................................60
Design steps........................................................................................................................................61
Design Process...................................................................................................................................62
Microarchitecture and System-level Design..............................................................62
RTL design.........................................................................................................................................62
Islam Nabil Mahmoud 20130890 4 Electrical&computers Dept Industrial Training 3 ITR 103
5. Physical design...................................................................................................................................63
Analog design.....................................................................................................................................63
Coping with variability.......................................................................................................................64
Vendors...............................................................................................................................................64
Cadence Flow.....................................................................................................................................64
2. Schematic.......................................................................................................................................67
simulation...........................................................................................................................................78
Layout.................................................................................................................................................86
CH4 PCB Design with ( OrCAD )...................................................................................................108
OrCAD PCB Designer.....................................................................................................................108
Introduction......................................................................................................................................108
OrCAD Flow....................................................................................................................................109
About Libraries and Parts.................................................................................................................110
2- Creating a Schematic Parts Library..............................................................................................111
3- Creating Schematic Symbols.......................................................................................................112
4- Schematic Entry...........................................................................................................................114
5- Preparing for Layout....................................................................................................................115
References:.......................................................................................................................................116
Islam Nabil Mahmoud 20130890 5 Electrical&computers Dept Industrial Training 3 ITR 103
6. CH1 (FPGA)
A field-programmable gate array (FPGA) is an integrated circuit designed to be configured
by a customer or a designer after manufacturing – hence "field-programmable". The FPGA
configuration is generally specified using a hardware description language (HDL), similar to that
used for an application-specific integrated circuit (ASIC). (Circuit diagrams were previously used to
specify the configuration, as they were for ASICs, but this is increasingly rare.)
A Spartan FPGA from Xilinx
FPGAs contain an array of programmable logic blocks, and a hierarchy of reconfigurable
interconnects that allow the blocks to be "wired together", like many logic gates that can
be inter-wired in different configurations. Logic blocks can be configured to perform
complex combinational functions, or merely simple logic gates like AND and XOR. In most FPGAs,
logic blocks also include memory elements, which may be simple flip-flops or more
complete blocks of memory
History
The FPGA industry sprouted from programmable read-only memory (PROM) and programmable logic
devices (PLDs). PROMs and PLDs both had the option of being programmed in batches in a
factory or in the field (field-programmable). However, programmable logic was hard-wired
between logic gates.
In the late 1980s, the Naval Surface Warfare Center funded an experiment proposed by Steve
Casselman to develop a computer that would implement 600,000 reprogrammable gates.
Casselman was successful and a patent related to the system was issued in 1992.
Some of the industry's foundational concepts and technologies for programmable logic arrays,
gates, and logic blocks are founded in patents awarded to David W. Page and LuVerne R.
Peterson in 1985.
Altera was founded in 1983 and delivered the industry’s first reprogrammable logic device
in 1984 – the EP300 – which featured a quartz window in the package that allowed users to
shine an ultra-violet lamp on the die to erase the EPROM cells that held the device
configuration.
Xilinx co-founders Ross Freeman and Bernard Vonderschmitt invented the first commercially
viable field-programmable gate array in 1985 – the XC2064.The XC2064 had programmable
gates and programmable interconnects between gates, the beginnings of a new
technology and market.The XC2064 had 64 configurable logic blocks (CLBs), with two
Islam Nabil Mahmoud 20130890 6 Electrical&computers Dept Industrial Training 3 ITR 103
7. three-input lookup tables (LUTs). More than 20 years later, Freeman was entered into
the National Inventors Hall of Fame for his invention.
Altera and Xilinx continued unchallenged and quickly grew from 1985 to the mid-1990s,
when competitors sprouted up, eroding significant market share. By 1993, Actel
(now Microsemi) was serving about 18 percent of the market. By 2010, Altera (31 percent),
Actel (10 percent) and Xilinx (36 percent) together represented approximately 77 percent
of the FPGA market.
The 1990s were an explosive period of time for FPGAs, both in sophistication and the
volume of production. In the early 1990s, FPGAs were primarily used in
telecommunications and networking. By the end of the decade, FPGAs found their way into
consumer, automotive, and industrial applications.
Modern developments
A recent[when?] trend has been to take the coarse-grained architectural approach a step
further by combining the logic blocks and interconnects of traditional FPGAs with
embedded microprocessors and related peripherals to form a complete "system on a
programmable chip". This work mirrors the architecture by Ron Perlof and Hana Potash of
Burroughs Advanced Systems Group which combined a reconfigurable CPU architecture on
a single chip called the SB24. That work was done in 1982. Examples of such hybrid
technologies can be found in the Xilinx Zynq-7000 All Programmable SoC, which includes a
1.0 GHz dual-core ARM Cortex-A9 MPCore processor embedded within the FPGA's logic
fabric or in the Altera Arria V FPGA, which includes an 800 MHz dual-core ARM Cortex-A9
MPCore. The Atmel FPSLIC is another such device, which uses an AVR processor in
combination with Atmel's programmable logic architecture.
The Microsemi SmartFusion devices incorporate an ARM Cortex-M3 hard processor core (with
up to 512 kB of flash and 64 kB of RAM) and analog peripherals such as a multi-channel
ADC and DACs to their flash-based FPGA fabric.
In 2010, Xilinx Inc introduced the first All Programmable System on a Chip branded
Zynq™-7000 that fused features of an ARM high-end microcontroller (hard-core
implementations of a 32-bit processor, memory, and I/O) with an 28 nm FPGA fabric to
make it easier for embedded designers to use. The extensible processing platform enables
system architects and embedded software developers to apply a combination of serial and
parallel processing to their embedded system designs, for which the general trend has
been to progressively increasing complexity. The high level of integration helps to reduce
power consumption and dissipation, and the reduced parts count versus using an FPGA
with a separate CPU chip leads to a lower parts cost, a smaller system, and higher
reliability since most failures in modern electronics occur on PCBs in the connections
between chips instead of within the chips themselves.
An alternate approach to using hard-macro processors is to make use of soft
processor cores that are implemented within the FPGA logic. Nios II, MicroBlaze and Mico32are
examples of popular softcore processors.
As previously mentioned, many modern FPGAs have the ability to be reprogrammed at
"run time", and this is leading to the idea of reconfigurable computing or reconfigurable
systems – CPUs that reconfigure themselves to suit the task at hand.
Additionally, new, non-FPGA architectures are beginning to emerge. Software-configurable
microprocessors such as the Stretch S5000 adopt a hybrid approach by providing an array
of processor cores and FPGA-like programmable cores on the same chip.
Islam Nabil Mahmoud 20130890 7 Electrical&computers Dept Industrial Training 3 ITR 103
8. Companies like Microsoft have started to use FPGA to accelerate high-performance,
computationally intensive systems (like the data centers that operate their Bing search
engine), due to the performance per Watt advantage FPGAs deliver
Gates
1982: 8192 gates, Burroughs Advances Systems Group, integrated into the S-Type 24-bit
processor for reprogrammable I/O.
1987: 9,000 gates, Xilinx[
1992: 600,000, Naval Surface Warfare Department
Early 2000s: Millions
Applications
An FPGA can be used to solve any problem which is computable. This is trivially proven by the
fact FPGA can be used to implement a soft microprocessor, such as the Xilinx MicroBlaze or
Altera Nios II. Their advantage lies in that they are sometimes significantly faster for some
applications because of their parallel nature and optimality in terms of the number of gates
used for a certain process.
Specific applications of FPGAs include digital signal processing, software-defined
radio, ASIC prototyping, medical imaging, computer vision, speech
recognition,cryptography, bioinformatics, computer hardware emulation, radio astronomy, metal detection
and a growing range of other areas.
FPGAs originally began as competitors to CPLDs and competed in a similar space, that
of glue logic for PCBs. As their size, capabilities, and speed increased, they began to take
over larger and larger functions to the point where some are now marketed as full systems
on chips (SoC). Particularly with the introduction of dedicated multipliers into FPGA
architectures in the late 1990s, applications which had traditionally been the sole reserve
of DSPs began to incorporate FPGAs instead.
Another trend on the usage of FPGAs is hardware acceleration, where one can use the
FPGA to accelerate certain parts of an algorithm and share part of the computation
between the FPGA and a generic processor.
Traditionally, FPGAs have been reserved for specific vertical applications where the volume of
production is small. For these low-volume applications, the premium that companies pay in
hardware costs per unit for a programmable chip is more affordable than the development
resources spent on creating an ASIC for a low-volume application. Today, new cost and
performance dynamics have broadened the range of viable applications.
Islam Nabil Mahmoud 20130890 8 Electrical&computers Dept Industrial Training 3 ITR 103
9. FPGA VS microcontroller
As for the difference between a microcontroller and a FPGA, you can consider a
microcontroller to be an ASIC which basically processes code in FLASH/ROM
sequentially. You can make microcontrollers with FPGAs even if it's not optimised,
but not the opposite. FPGAs are wired just like electronic circuits so you can have
truly parallel circuits, not like in a microcontroller where the processor jumps from
a piece of code to another to simulate good-enough parallelism. However because
FPGAs have been designed for parallel tasks, it's not as easy to write sequential
code as in a microcontroller.
For example, typically if you write in pseudocode "let C be A XOR B", on a FPGA
that will be translated into "build a XOR gate with the lego bricks contained
(lookup tables and latches), and connect A/B as inputs and C as output" which will
be updated every clock cycle regardless of whether C is used or not. Whereas on a
microcontroller that will be translated into "read instruction - it's a XOR of
variables at address A and address B of RAM, result to store at address C. Load
arithmetic logic units registers, then ask the ALU to do a XOR, then copy the
output register at address C of RAM". On the user side though, both instructions
were 1 line of code. If we were to do this, THEN something else, in HDL we would
have to define what is called a Process to artificially do sequences - separate from
the parallel code. Whereas in a microcontroller there is nothing to do. On the other
hand, to get "parallelism" (tuning in and out really) out of a microcontroller, you
would need to juggle with threads which is not trivial. Different ways of working,
different purposes.
FPGA vs Microcontroller
When I first learned about FPGAs, all I really knew about before was microcontrollers. So first it is
important to understand that they are very different devices. With a microcontroller, like an Arduino, the
chip is already designed for you. You simply write some software, usually in C or C++, and compile it to
a hex file that you load onto the microcontroller. The microcontroller stores the program in flash memory
and will store it until it is erased or replaced. With microcontrollers you have control over the software.
FPGAs are different. You are the one designing the circuit. There is no processor to run software on, at
least until you design one! You can configure an FPGA to be something as simple as an and gate, or
something as complex as a multi-core processor. To create your design, you write some HDL
(Hardware Description Language). The two most popular HDLs are Verilog and VHDL. You
then synthesize your HDL into a bit file which you can use to configure the FPGA. A slight downside to
Islam Nabil Mahmoud 20130890 9 Electrical&computers Dept Industrial Training 3 ITR 103
10. FPGAs is that they store their configuration in RAM, not flash, meaning that once they lose power they
lose their configuration. They must be configured every time power is applied.
That is not as bad as it seems as there are flash chips you can use that will automatically configure the
stored bit file on power up. There are also some development boards which don't require a programmer
at all and will configure the FPGA at startup.
With FPGAs you have control over the hardware.
How it Began : PLA
• Programmable Logic Array
• First programmable device
• 2-level and-or structure
• One time programmable
SPLD – CPLD
Simple Programmable logic device
Single AND Level
• Flip-Flops and feedbacks
Complex Programmable logic device
Several PLDs Stacked together
FPGA - Field Programmable Gate Array
Programmable logic blocks (Logic Element “LE”)
Implement combinatorial and sequential logic. Based on LUT and DFF.
Programmable I/O blocks
Configurable I/Os for external connections supports various voltages and tri-states.
Programmable interconnect
Wires to connect inputs , outputs and logic blocks.clocks
short distance local connections
long distance connections across chip
Islam Nabil Mahmoud 20130890 10 Electrical&computers Dept Industrial Training 3 ITR 103
11. Xilinx Programmable Gate Arrays
CLB - Configurable Logic Block
5-input, 1 output function or 2 4-input, 1 output functions
◦ optional register on outputs Built-in fast carry logic
Can be used as memory Three types of routing direct
◦ general-purpose
◦ long lines of various lengths
RAM-programmable
can be reconfigured
Configuring LUT
LUT is a RAM with data width of 1bit.
The contents are programmed at power up
Xilinx Spartan-3E Starter Kit
Islam Nabil Mahmoud 20130890 11 Electrical&computers Dept Industrial Training 3 ITR 103
12. Hardware Description Languages
• Hardware description languages (HDL)
Language to describe hardware
• Two popular languages
• VHDL: Very High Speed Integrated Circuits Hardware Description Language
Developed by DoD (United States Department of Defense )from 1983
IEEE Standard 1076-1987/1993/200x
Based on the ADA language
• Verilog
IEEE Standard 1364-1995/2001/2005
Based on the C language
Applications of HDL
• Model and document digital systems
• Different levels of abstraction
• Behavioral, structural, etc.
• Verify design
• Synthesize circuits
• Convert from higher abstraction levels to lower abstraction levels
Islam Nabil Mahmoud 20130890 12 Electrical&computers Dept Industrial Training 3 ITR 103
13. VHDL Introduction
• VHDL is NOT Case-Sensitive
Begin = begin = beGiN
• Semicolon “ ; ” terminates declarations or statements.
• After a double minus sign (--) the rest of the line is treated as a comment
Built-in Datatypes
Scalar (single valued) signal types:
• bit
• boolean
• integer
Examples:
• A: in bit;
• G: out boolean;
• K: out integer range -2**4 to 2**4-1;
Aggregate (collection) signal types:
• bit_vector: array of bits representing binary numbers
Examples:
• D: in bit_vector(0 to 7);
• E: in bit_vector(7 downto 0);
VHDL Architecture
VHDL description (sequential behavior):
architecture arch_name of Mux21 is
begin
p1: process (A,B,S)
begin
if (S=‘0’) then
X <= A;
else
X <= B;
end if;
end process p1;
end;
Islam Nabil Mahmoud 20130890 13 Electrical&computers Dept Industrial Training 3 ITR 103
14. VHDL Architecture
VHDL description (concurrent behavior):
architecture behav_conc of Mux21 is
begin
X <= A when (S=‘0’) else
B;
end ;
Complete Example
one-Bit Wide 2 to 1 Multiplexer
Islam Nabil Mahmoud 20130890 14 Electrical&computers Dept Industrial Training 3 ITR 103
15. one-Bit Wide 2 to 1 Multiplexer
Islam Nabil Mahmoud 20130890 15 Electrical&computers Dept Industrial Training 3 ITR 103
16. Four-Bit Wide 2 to 1 Multiplexer
Islam Nabil Mahmoud 20130890 16 Electrical&computers Dept Industrial Training 3 ITR 103
17. Multiplexers in VHDL
Islam Nabil Mahmoud 20130890 17 Electrical&computers Dept Industrial Training 3 ITR 103
18. Flow OF FPGA Xilinx ISE 12.2
Setting up a New Project and specifying a circuit in Verilog
1. Start the ISE 12.2 tool from Xilinx.
Islam Nabil Mahmoud 20130890 18 Electrical&computers Dept Industrial Training 3 ITR 103
19. 2. Create a new project. The Create New Project wizard will prompt you for a
location for your project. Note that by default this will be in the ISE folder
the very first time you start up. You’ll probably want to change this to
something in your own folder tree.
Islam Nabil Mahmoud 20130890 19 Electrical&computers Dept Industrial Training 3 ITR 103
20. 3. On the second page of the Create New Project dialog, make sure that
you use the Spartan3e Device Family, XC3S500 Device, FG320
Package, -5 Speed Grade. You can also specify HDL as the Top-Level
Source Type with XST as the Synthesis Tool, ISE as the Simulator, and Verilog as the language.
These aren’t critical, but they do save time later.
4- You can skip the other parts of the dialog, or you can use them to create
new Verilog file templates for your project. I usually just skip them and
create my own files later.
Islam Nabil Mahmoud 20130890 20 Electrical&computers Dept Industrial Training 3 ITR 103
21. 5-Now you want to open a new source file. Use the Project►NewSource
menu choice. This first one will be a Verilog file so make sure you’ve
selected Verilog Module as the type and give it a name. I’m calling my
example mynand.
6-When you press Next you’ll get a dialog box that lets you define the inputs
and outputs of your new module. I’m adding two inputs (A and B), and one
output named Y. Remember that Verilog is case sensitive!
Islam Nabil Mahmoud 20130890 21 Electrical&computers Dept Industrial Training 3 ITR 103
22. 7-When you Finish, you’ll have a template for a Verilog module that you can
fill in with your Verilog code. It looks like this (note that you can also fill in
the spots in the comment header with more information):
8- Now you can fill in the rest of the Verilog module to implement some
Boolean function. I’ll implement a NAND for this example. You can use any of the Verilog
techniques that you know about. (see the Brown &Vranesic text from 3700, for example, or any
number of Verilog tutorialson the web.) Note that ISE 10.1 uses Verilog 2001 syntax where
theinputs and outputs are defined right in the argument definition line. I’ll usea continuous
assignment statement: assign Y = ~(A & B); as shown
below, then I’ll save the file.
Islam Nabil Mahmoud 20130890 22 Electrical&computers Dept Industrial Training 3 ITR 103
23. 9- In order to use this Verilog code in a schematic, you’ll need to create a
schematic symbol. Select the mynand.v file in the Sources window, then
in the Processes window select Create Schematic Symbol under the
Design Utilities.
Creating a Schematic
1- Start by going to Project►NewSource and this time choosing schematicas the type. I’m calling
this fulladd. You can probably guess where this is going...
Islam Nabil Mahmoud 20130890 23 Electrical&computers Dept Industrial Training 3 ITR 103
24. 2- In the schematic window you’ll see a frame in which you can put your
schematic components. You can select components by selecting theSymbols tab in the Sources
pane. The first one I like to add is under General Category and is the Title component for the
schematic. You can fill in the fields of the Title by double clicking on it. Then I’ll add three copies
of mynand from my example library, and two copies of the xor2component from the Logic
Category.
Islam Nabil Mahmoud 20130890 24 Electrical&computers Dept Industrial Training 3 ITR 103
25. Islam Nabil Mahmoud 20130890 25 Electrical&computers Dept Industrial Training 3 ITR 103
26. Now I’ll use the wiring tool to connect up the components to make a FullAdder.
Save the schematic. You are now ready to simulate the circuit that
consists of part schematics (using xor2 from the Xilinx library), and part
Verilog (your mynand.v code). If you go back to the Sources pane and
expand the fulladd schematic you will see that it includes three copies of mynand.v.
Islam Nabil Mahmoud 20130890 26 Electrical&computers Dept Industrial Training 3 ITR 103
27. Simulating Circuit:
To simulate the fulladd circuit:
1. Go to the top left pane (design) and change the View field to be
Simulation. This changes the view to include sources that are interesting
for simulation, and also changes the options in the bottom Processes
pane to show the simulation options.
2. You can go to the Project►NewSource menu again, or you can select
the Create New Source widget.
This will bring up the New Source
Wizard. In that dialog type in the name of your testbench file, and make
sure to select Verilog Test Fixture in the list on the left. I will name my
testbench fulladd_tb (where the tb stands for testbench). The box looks like:
The Next dialog asks you which source you want the testbench
Islam Nabil Mahmoud 20130890 27 Electrical&computers Dept Industrial Training 3 ITR 103
28. constructed from. I’ll choose fulladd, of course. The code that gets generated includes an instance of
the fulladd schematic named UUT (for Unit Under Test).
Islam Nabil Mahmoud 20130890 28 Electrical&computers Dept Industrial Training 3 ITR 103
29. Note that the generated template has some code with an ‘ifdef for
initializing things. I don’t use the ‘ifdef code. Instead I write my own initial
block and driving code for testing the circuit. Remember that good
testbenches ALWAYS use $display statements and “if” checks so
that the testbench is self-checking! You could enumerate all eight
possibilities of the inputs and check the outputs. I’m going to get a tiny bit
tricky with a concatenation and a loop.
Islam Nabil Mahmoud 20130890 29 Electrical&computers Dept Industrial Training 3 ITR 103
30. Synthesizing circuit to the Xilinx FPGA
Now that you have a correctly simulating Verilog module, you will have the ISE
Once you fill in the testbench with Verilog code to drive the
simulation, you
can check the syntax and run the simulation from the
Processes tab.
The output will be displayed as waveforms, and the $display
data will
show up in the console as shown (after zooming out to see all
the
waveforms). You can see that not only do the waveforms show
the results
of the simulation, but the $display statements have printed
data, and
because the circuit is correctly functioning, no error statements
were
printed.
Synthesizing your circuit to the Xilinx FPGA
(webPACK) tool synthesize your Verilog to something that can be mapped to the
Xilinx FPGA. That is, the Verilog code will be converted by ISE to some gates
that are on the FPGA. To be even more specific, ISE will convert the
schematic/Verilog project description into a set of configuration bits that are used
to program the Xilinx part. Those configuration bits are in a .bit file and are
downloaded to the Xilinx part in this section of the tutorial.
You will use your Spartan-3E board for this part of the tutorial. This is known as
the “Spartan 3E Starter Kit” and is a board produced by Xilinx. It is a very feature-
laden board with a Spartan 3e XC3S500E FPGA, 64Mbytes of SDRAM,
128Mbits of flash EPROM, A/D and D/A converters, RS232 drivers, VGA, PS/2,
USB, and Ethernet connectors, a 16 character two-line LCD, and a lot more
Islam Nabil Mahmoud 20130890 30 Electrical&computers Dept Industrial Training 3 ITR 103
31. Specifically we will need to:
Assign A, B, and Y to the correct pins on the FPGA that connect to the
switches and LEDs on the S3E board
Synthesize the Verilog code into FPGA configuration
Generate a programming file with all this information (.bit file)
Use the impact tools from Xilinx (part of WebPACK) to configure the FPGA
through the USB connection.
1. Back in the Design pane, return to the
Implementation view and select
your fulladd schematic. Now in the bottom
(Processes) pane you will see
some options including User Constraints,
Synthesize, and Implement
Design. The first thing we’ll do is assign pins using
the User Constraints
tab. Expand that tab and select the I/O Pin Planning
(PlanAhead) – Pre-
Synthesis choice. This will let us assign our signals
to pins on the Xilinx
part using the PlanAhead tool.
Because we’re headed towards putting this on the Xilinx FPGA on the Spartan-3E board, we need
to set some constraints. In particular, we need to tell ISE which pins on the Xilinx chip we want A,
B, Cin assigned to so that we can access those from switches, and where we want Cout and
Sum so we can see those on the LEDs on the Spartan-3E board.
This will open a whole new tool called PlanAhead which you can use to set your pin constraints.
You may have to agree to add a UCF (UniversalConstraints File) file to your project. You should
agree to this.The PlanAhead tools lets you set a number of different types of constraints on how the
circuit is mapped to the Xilinx part. For now we’ll just use the pin constraints in the UCF file
Islam Nabil Mahmoud 20130890 31 Electrical&computers Dept Industrial Training 3 ITR 103
32. You can see a list of the I/O ports from your
schematic in the RTL pane
(click on the I/I Ports tab in the upper left window).
You can set which
Xilinx pin they are attached to using the Site field.
3. Clicking on each I/O Port in turn will open the
I/O Port Properties pane
where you an update the Site field to say which
Xilinx pin should be used for that I/O signal.
Islam Nabil Mahmoud 20130890 32 Electrical&computers Dept Industrial Training 3 ITR 103
33. and the UCF info is:
This tells you how to fill out the information in PlanAhead for the switches.
I’ll put A, B and Cin on Sw3, Sw2, and Sw1.
Synthesize – XST. Double click on this to synthesize your circuit. After a
while you will (hopefully) get the “Process ‘Synthesize’ completed
successfully” message in the console. If you’ve already simulated your
circuit and found it to do what you want, there’s every chance that this will
synthesize correctly without problems.
In any case, there is lots of interesting information in the synthesis report
(the data in the console window). It’s worth looking at, although for this
amazingly simple example there isn’t anything that fascinating.
Make sure that you end the process with a green check for this process. If
you get something else, especially a red X, you’ll need to fix errors and re-
synthesize.
Islam Nabil Mahmoud 20130890 33 Electrical&computers Dept Industrial Training 3 ITR 103
34. With your source file selected (fulladder in this case), double
click the
Implement Design process in the Processes tab. This will
translate the
design to something that can physically be mapped to the
particular FPGA
that’s on our board (the xc3s500e-5fg320 in this case). You
should see a
green check mark if this step finishes without issues. If there
are issues,
you need to read them for clues about what went wrong and what you
should look at to fix things.
If you expand this Implement Design tab (which is not necessary)
you will
see that the Implement Design process actually consists of three
parts:
a. Translate: Translate is the first step in the implementation
process.
The Translate process merges all of the input netlists and design
constraint information and outputs a Xilinx NGD (Native Generic
Database) file. The output NGD file can then be mapped to the
targeted FPGA device.
b. Map: Mapping is the process of assigning a design’s logic elements
to the specific physical elements that actually implement logic
functions in a device. The Map process creates an NCD (Native
Circuit Description) file. The NCD file will be used by the PAR
process.
Islam Nabil Mahmoud 20130890 34 Electrical&computers Dept Industrial Training 3 ITR 103
35. c. Place and Route (PAR): PAR uses the NCD file created by the
Map process to place and route your design. PAR outputs an NCD
file that is used by the bitstream generator (BitGen) to create a (.bit)
file. The Bit file (see the next step) is what’s used to actually
program the FPGA.
At this point you can look at the Design Summary to find out all sorts of
things about your circuit. One thing that you might want to check is to click
on the Pinout Report and check that your signals were correctly assigned
to the pins you wanted them to be assigned to
Now double click the process: Generate Programming File. This will
generate the actual configuration bits into a .bit file that you can use to
program your Spartan-3E board to behave like your circuit (in this case a
full adder).
Now that you have the programming file, you can program the Spartan-3E
board using the iMPACT tool and the USB cable on your PC/laptop. First,
make sure that the jumpers on your Spartan-3E board are installed
correctly. In particular, check that the configuration options are correctly
set. The configuration options are at the top of the board near the RS232
interfaces.
The
Islam Nabil Mahmoud 20130890 35 Electrical&computers Dept Industrial Training 3 ITR 103
36. jumpers on the J30 headers must be set for JTAG programming. This
means that only the middle pins of the header should have a jumper on
them. See the following illustration from the User Guide. Your board
should look like this!
Islam Nabil Mahmoud 20130890 36 Electrical&computers Dept Industrial Training 3 ITR 103
37. Now that you have the jumpers set correctly, you can plug in the power to
your Spartan-3E board, and connect the USB cable between the Spartan-
3E and your PC. Then when you turn on the power, the PC should
recognize the Xilinx cable/board and install the drivers.
Once the PC has recognized the USB connection to the Spartan-3E
board, you can use the Process Configure Target Device to start up the
iMPACT tool to program the FPGA.
The first time you Configure Target Device for a new project, you’ll get
the following message about setting up an iMPACT file. You can click OK
here and start up the iMPACT tool.
You’ll now get yet another tool – the iMPACT device configuration and
programming tool:
Islam Nabil Mahmoud 20130890 37 Electrical&computers Dept Industrial Training 3 ITR 103
38. Double-click the Boundary Scan button to configure the Xilinx part for
programming. Boundary Scan is the technique that is used on these
devices for uploading the bit file to the Xilinx part through the USB cable.
You will be prompted to Right Click to Add Device or Initialize JTAG
Chain. JTAG is the acronym for the boundary scan standard that is used
for programming in this case. When you right-click you get a menu. What
Select Initialize Chain. There are actually three programmable parts on
the Spartan3 board and they are organized in a chain passing the bits
from one device to the other. This is the chain that is being initialized.
Note that you MUST have your board plugged in to the USB cable and
turned on for this step! The initialization procedure sends a query out on
the USB cable to see what chips are out there. If you have everything
plugged in and turned on it will see the chips and initialize the chain.
You should continue and assign a configuration file:
Islam Nabil Mahmoud 20130890 38 Electrical&computers Dept Industrial Training 3 ITR 103
39. You will now be asked to choose a configuration file (which will be a .bit
file) or each of the programmable chips on the Spartan-3E board. Note
that there are three of them, but the xc3s500e is the only one you should
program. The other two are already programmed with supporting tasks on
the board. Choose the file that you want programmed into the FPGA. In
this case that’s fulladd.bit.
You will also be asked if you want to attach an SPI or BPI PROM to the
device. For now you should say No. There is a 16Mbit SPI PROM
attached to the Xilinx part and later on you may want to include a PROM
data file here so that the bitstream will also load that prom.
Islam Nabil Mahmoud 20130890 39 Electrical&computers Dept Industrial Training 3 ITR 103
40. For each of the other chips you can choose to open a file (attach a .bit file
to that chip), or to bypass. You should choose bypass for the other chips
(the xcf04s and the xc2c64).
The summary looks like this:
In the iMPACT screen you should now see the
following window that
shows the programmable chips and the
associated bit files or bypass
configurations.
Now you can select the Spartan-3E (the xc3s500e) and right click to get a
dialog. Select Program in this dialog to program the FPGA.
Islam Nabil Mahmoud 20130890 40 Electrical&computers Dept Industrial Training 3 ITR 103
41. You should see the following indication that the programming has
succeeded. You should also see the xc-done LED (a little yellow LED
underneath the J30 jumper on the board) light up if the programming is
successful.
Your circuit should now be running on the Spartan-3E board. If you’ve
followed this tutorial you should now be able to set the sw3, sw2, and sw1
switches and look for the full adder output on LDE1 and LED0.
If you make changes and want to reload the bit file to the FPGA (after
making changes, for example), you can restart the iMPACT tool using the
Manage Configuration Project (iMPACT) option under Configure
Target Device.
Islam Nabil Mahmoud 20130890 41 Electrical&computers Dept Industrial Training 3 ITR 103
42. Overview of the Procedure
1. Design the circuit that you would like to map to the Xilinx part on the
FPGA. You can use schematics, or Verilog, or a mixture of both.
2. Simulate your circuit using the ISE Simulator and a Verilog testbench to
provide inputs to the circuit. Use “if” statements in your testbench to make
it self-checking.
3. Generate a UCF file to hold constraints such as pin assignments (later
we’ll use the UCF file for other constraints like timing and speed). Use the
PlanAhead tool to generate this file.
4. Assign the I/O pins in your design to the pins on the FPGA that you want
them connected to.
5. Synthesize the design for the FPGA using the XST synthesis tool.
6. Implement the design to map it to the specific FPGA on the Spartan-3E
board
7. Generate the programming .bit file that has the bitstream that configures
the FPGA.
8. Connect your Spartan3 board to the computer and use theiMPACT tool to
program the FPGA using the bitstream.
Islam Nabil Mahmoud 20130890 42 Electrical&computers Dept Industrial Training 3 ITR 103
43. CH2 (PsoC & RTOS)
PSoC (Programmable System-on-Chip) is a family of microcontroller integrated
circuits by Cypress Semiconductor. These chips include a CPU core and mixed-
signal arrays of configurable integrated analog and digital peripherals.
In 2002, Cypress began shipping commercial quantities of the PSoC 1.[1] To promote the
PSoC, Cypress sponsored a "PSoC Design Challenge" in Circuit Cellar magazine in 2002
and 2004.[2]
In April 2013, Cypress released the fourth generation, PSoC 4. The PSoC 4 features a 32-
bit ARM Cortex-M0 CPU, with programmable analog blocks (operational amplifiers and
comparators), programmable digital blocks (PLD-based UDBs), programmable routing and
flexible GPIO (route any function to any pin), a serial communication block (for SPI,
UART, I²C), a timer/counter/PWM block and more.[3]
PSoC is used in devices as simple as Sonicare toothbrushes and Adidas sneakers, and as
complex as the TiVo set-top box. One PSoC, using CapSense, controls the touch-sensitive scroll
wheel on the Apple iPod click wheel.
In 2014, Cypress extended the PSoC 4 family by integrating a Bluetooth Low Energy radio
along with a PSoC 4 Cortex-M0-based SoC in a single, monolithic die.
In 2016, Cypress released PSoC 4 S-Series, featuring ARM Cortex-M0+ CPU.[4]
Overview
A PSoC integrated circuit is composed of a core, configurable analog and digital blocks,
and programmable routing and interconnect. The configurable blocks in a PSoC are the
biggest difference from other microcontrollers.
PSoC has three separate memory spaces: paged SRAM for data, Flash memory for
instructions and fixed data, and I/O Registers for controlling and accessing the configurable
logic blocks and functions. The device is created using SONOS technology.
PSoC resembles an ASIC: blocks can be assigned a wide range of functions and
interconnected on-chip. Unlike an ASIC, there is no special manufacturing process required
to create the custom configuration — only startup code that is created by Cypress' PSoC
Designer (for PSoC 1) or PSoC Creator (for PSoC 3 / 4 / 5) IDE.
PSoC resembles an FPGA in that at power up it must be configured, but this configuration
occurs by loading instructions from the built-in Flash memory.
PSoC most closely resembles a microcontroller combined with a PLD and programmable
analog. Code is executed to interact with the user-specified peripheral functions (called
"Components"), using automatically generated APIs and interrupt routines. PSoC
Designer or PSoC Creator generate the startup configuration code. Both integrate APIs that
initialize the user selected components upon the users needs in a Visual-Studio-like GUI.
Islam Nabil Mahmoud 20130890 43 Electrical&computers Dept Industrial Training 3 ITR 103
44. Configurable analog and digital blocks
Using configurable analog and digital blocks, designers can create and change mixed-
signal embedded applications. The digital blocks are state machines that are configured
using the blocks registers. There are two types of digital blocks, Digital Building Blocks
(DBBxx) and Digital Communication Blocks (DCBxx). Only the communication blocks can
contain serial I/O user modules, such as SPI, UART, etc.
Each digital block is considered an 8-bit resource that designers can configure using pre-
built digital functions or user modules (UM), or, by combining blocks, turn them into 16-,
24-, or 32-bit resources. Concatenating UMs together is how 16-bit PWMs and timers are
created.
There are two types of analog blocks. The continuous time (CT) blocks are composed of an
op-amp circuit and designated as ACBxx where xx is 00-03. The other type is the switch
cap (SC) blocks, which allow complex analog signal flows and are designated by ASCxy
where x is the row and y is the column of the analog block. Designers can modify and
personalize each module to any design.
Islam Nabil Mahmoud 20130890 44 Electrical&computers Dept Industrial Training 3 ITR 103
45. Programmable routing and interconnect
PSoC mixed-signal arrays' flexible routing allows designers to route signals to and from I/O
pins more freely than with many competing microcontrollers. Global buses allow for signal
multiplexing and for performing logic operations. Cypress suggests that this allows
designers to configure a design and make improvements more easily and faster and with
fewer PCB redesigns than a digital logic gate approach or competing microcontrollers with
more fixed function pins.
Series
There are four different families of devices, each based around a different microcontroller
core:
PSoC 1 - CY8C2xxxx series — M8C core.
PSoC 3 - CY8C3xxxx series - 8051 core.
PSoC 4 - CY8C4xxxx series - ARM Cortex-M0 core.[5]
PSoC 5/5LP - CY8C5xxxx series - ARM Cortex-M3 core.
Bluetooth Low Energy
Starting in 2014, Cypress began offering PSoC 4 BLE devices with integrated Bluetooth
Low Energy (Bluetooth Smart). This can be used to create connected products leveraging
the analog and digital blocks.[6] Users can add and configure the BLE module directly in
PSoC creator. Cypress also provides a complete Bluetooth Low Energy stack licensed
from Mindtree with both Peripheral and Central functionality.[7]
Development tools
PSoC Designer
This is the first generation software IDE to design and debug and program the PSoC 1
devices. It introduced unique features including a library of pre-characterized analog and
digital peripherals in a drag-and-drop design environment which could then be customized
to specific design needs by leveraging the dynamically generated API libraries of code.
PSoC Creator
PSoC Creator is the second generation software IDE to design debug and program the
PSoC 3 / 4 / 5 devices. The development IDE is combined with an easy to use graphical
design editor to form a powerful hardware/software co-design environment. PSoC Creator
consists of two basic building blocks. The program that allows the user to select, configure
and connect existing circuits on the chip and the components which are the equivalent of
peripherals on MCUs. What makes PSoC intriguing is the possibility to create own
application specific peripherals in hardware. Cypress publishes component packs several
times a year. PSoC users get new peripherals for their existing hardware without being
charged or having to buy new hardware. PSoC Creator also allows much freedom in
assignment of peripherals to I/O pins.
Islam Nabil Mahmoud 20130890 45 Electrical&computers Dept Industrial Training 3 ITR 103
46. Summary
PSoC 1 PSoC 3 PSoC 4 PSoC 5/5LP
8-bit M8C core
up to 24 MHz,
4 MIPS
8-bit 8051 core (single-
cycle)
up to 67 MHz, 33 MIPS
32-bit ARM Cortex-
M0
up to
48 MHz, ? MIPS
32-bit ARM Cortex-
M3
up to 80 MHz,
84 MIPS
Flash: 4 KB to 32 KB
SRAM: 256 bytes to
2 KB
Flash: 8 KB to 64 KB
SRAM: 3 KB to 8 KB
Flash: 16 KB to
32 KB
SRAM: 2 KB to 4 KB
Flash: 32 KB to
256 KB
SRAM: 8 KB to
64 KB
I²C, SPI, UART,
FS USB 2.0
I²C, SPI, UART, LIN,
FS USB 2.0, I²S, CAN
I²C, SPI, UART
.
I²C, SPI, UART, LIN,
FS USB 2.0, I²S
16 digital PSoC
blocks
16 to 24 UDBs (Universal
Digital Blocks)
4 UDBs 20 to 24 UDBs
1 Delta-Sigma ADC
(6 to 14-bit)
131 ksps @ 8-bit;
Up to two DACs (6 to
8-bit)
1 Delta-Sigma ADC (8 to
20-bit)
192 ksps @ 12-bit;
Up to four DACs (8-bit)
1 SAR ADC (12-bit)
1 Msps @ 12-bit;
Up to two DACs (7 to
8-bit)
1 Delta-Sigma ADC
(8 to 20-bit)
192 ksps @12-bit;
2 SAR ADCs (12-bit)
1 Msps @ 12-bit;
Up to four DACs (8-
bit)
Up to 64 I/O Up to 72 I/O Up to 36 I/O Up to 72 I/O
Operation: 1.7 V to
5.25 V
Active: 2 mA,
Sleep: 3 μA
Hibernate: ?
Operation: 0.5 V to 5.5 V
Active: 1.2 mA,
Sleep: 1 μA,
Hibernate: 200 nA
Operation: 1.71 V to
5.5 V
Active: 1.6 mA,
Sleep: 1.3 μA,
Hibernate: 150 nA
Operation: 2.7 V to
5.5 V
Active: 2 mA,
Sleep: 2 μA,
Hibernate: 300 nA
Requires ICE Cube
and FlexPods
On-chip SWD, Debug
On-chip JTAG, SWD,
SWV,
Debug, Trace
CY8CKIT-001
Development Kit
CY8CKIT-001
Development Kit
CY8CKIT-030
Development Kit
CY8CKIT-040
Pioneer Kit
CY8CKIT-042
Pioneer Kit
CY8CKIT-049
Prototype Kit
CY8CKIT-001
Development Kit
CY8CKIT-050
Development Kit
CY8CKIT-059
Prototype Kit
Islam Nabil Mahmoud 20130890 46 Electrical&computers Dept Industrial Training 3 ITR 103
47. Real Time Systems types:
Soft Real Time Systems
Hard Real Time Systems
Firm Real Time Systems
Hard real-time means you must absolutely hit every deadline. Very few systems have this
requirement. Some examples are nuclear systems, some medical applications such as
pacemakers, a large number of defense applications, avionics, etc.
Firm/soft real time systems can miss some deadlines, but eventually performance will degrade
if too many are missed. A good example is the sound system in your computer. If you miss a
few bits, no big deal, but miss too many and you're going to eventually degrade the system.
Similar would be seismic sensors. If you miss a few datapoints, no big deal, but you have to
catch most of them to make sense of the data. More importantly, nobody is going to die if they
don't work correctly.
Real Time Operating Systems (RTOS)
A real-time operating system (RTOS) is an operating system (OS) intended to
serve real-time application process data as it comes in, typically without
buffering delays. Processing time requirements (including any OS delay) are
measured in tenths of seconds or shorter.
A key characteristic of a RTOS is the level of its consistency concerning the
amount of time it takes to accept and complete an application's task; the
variability is jitter.Ahard real-time operating system has less jitter than
a soft real-time operating system. The chief design goal is not high throughput,
but rather a guarantee of a soft or hardperformance category. A RTOS that can
usually or generally meet a deadline is a soft real-time OS, but if it can meet a
deadline deterministically it is a hard real-time OS.
A common example of an RTOS application is an HDTV receiver and display. It
needs to read a digital signal, decode it and display it as the data comes in.
Any delay would be noticeable as jerky or pixelated video and/or garbled audio.
ARINC Specification 653 defines the RTOS interface standard used in aviation
embedded system designs. The RTOS is developed and supplied by multiple
suppliers in an open market.
A RTOS has an advanced algorithm for scheduling. Scheduler flexibility enables a
wider, computer-system orchestration of process priorities, but a real-time OS
is more frequently dedicated to a narrow set of applications. Key factors in a
real-time OS are minimal interrupt latency and minimal thread switching latency; a real-
time OS is valued more for how quickly or how predictably it can respond than
for the amount of work it can perform in a given period of time
Islam Nabil Mahmoud 20130890 47 Electrical&computers Dept Industrial Training 3 ITR 103
48. According to a 2014 Embedded Market Study,the following RTOSes are among the top 10
operating systems used in the embedded systems market:
Green Hills Software INTEGRITY
Wind River VxWorks
QNX Neutrino
FreeRTOS
Micrium µC/OS-II, III
Windows CE
TI-RTOS Kernel (previously called DSP/BIOS)
RTEMS open source RTOS designed for embedded systems, mainly used for missile and
space probes control
Design Philosophy
FreeRTOS is designed to be:
Simple
Portable
Concise
Real Time Task Priorities
Low priority numbers denote low priority tasks, with the default idle priority defined by
tskIDLE_PRIORITY as
being zero.
The number of available priorities is defined by tskMAX_PRIORITIES within FreeRTOSConfig.h .
This should
be set to suit your application.
Any number of real time tasks can share the same priority - facilitating application design. User
tasks can also
share a priority of zero with the idle task.
Priority numbers should be chosen to be as close and as low as possible. For example, if your
application has
3 user tasks that must all be at different priorities then use priorities 3 (highest), 2 and 1 (lowest -
the idle task
uses priority 0).
Islam Nabil Mahmoud 20130890 48 Electrical&computers Dept Industrial Training 3 ITR 103
49. How RTOS work :
RTOS Supported architectures :
Altera Nios II
ARM architecture
Atmel
Cortus
Cypress
Energy Micro
Fujitsu
Freescale
PIC – AVR – 8051 – PowerPC – x86
Islam Nabil Mahmoud 20130890 49 Electrical&computers Dept Industrial Training 3 ITR 103
50. Related projects
SafeRTOS
SafeRTOS was constructed as a complementary offering to FreeRTOS, with common
functionality but with a uniquely designed safety-critical implementation. When the
FreeRTOS functional model was subjected to a full HAZOP, weakness with respect to user
misuse and hardware failure within the functional model and API were identified and
resolved. The resulting requirements set was put through a full IEC 61508 SIL 3
development life cycle, the highest possible for a software-only component.
SafeRTOS was developed by WITTENSTEIN high integrity systems, in partnership with Real
Time Engineers Ltd, primary developer of the FreeRTOS project.Both SafeRTOS and
FreeRTOS share the same scheduling algorithm, have similar APIs, and are otherwise very
similar, but they were developed with differing objectives.SafeRTOS was developed solely
in the C language to meet requirements for certification to IEC61508.
SafeRTOS is known for its ability, unique among Operating Systems, to reside solely in the
on-chip read only memory of a microcontroller, thus enabling the pre-certification of complete
Hardware and Software systems to IEC61508 or other safety or reliability operating
standards.When implemented in hardware memory, SafeRTOS code can only be utilized in
its original configuration, so certification testing of systems using this OS need not re-test
this portion of their designs during the functional safety certification process.
SafeRTOS is included in the ROM of some Stellaris Microcontrollers[11] from Texas
Instruments. This allows SafeRTOS to be used in commercial applications without having to
purchase its source code. In this usage scenario, a simple C header file is used to map
SafeRTOS API functions to their location in read-only memory. The use of read-only
memory is ideal because the code it contains cannot be changed - eliminating the
possibility of user error, and ensuring the code that was originally tested remains
absolutely identical throughout the project lifetime. It will not need re-testing as the
application code grows and evolves around it. The burden of complex kernel testing is
removed as the already certified and approved certification evidence, including the test
plan, code and results, can be purchased "off the shelf".
OpenRTOS
Another project related to FreeRTOS, one with identical code but different licensing &
pricing, is OpenRTOS from the commercial firm WITTENSTEIN Aerospace and Simulation
Ltd. The commercial licensing terms for OpenRTOS remove all references to the GNU
General Public License (GPL). For example: one of the conditions of using FreeRTOS in a
commercial product is that the user is made aware of the use of FreeRTOS and the source
code of FreeRTOS, but not the commercial product's application code, must be provided
upon request. OpenRTOS is a commercial product only available via purchase and doesn't
have this licensing requirement. OpenRTOS license purchasers also have access to full
technical support
FREERTOS
FreeRTOS is a popular[1] real-time operating system kernel for embedded devices, that has been
ported to 35microcontrollers. It is distributed under the GPL with an additional restriction and
optional exception. The restriction forbids benchmarking while the exception permits
users' proprietary code to remain closed source while maintaining the kernel itself as open
source, thereby facilitating the use of FreeRTOS in proprietary applications
Islam Nabil Mahmoud 20130890 50 Electrical&computers Dept Industrial Training 3 ITR 103
51. Implementation
FreeRTOS is designed to be small and simple. The kernel itself consists of only three or four
C files. To make the code readable, easy to port, and maintainable, it is written mostly in C,
but there are a few assembly functions included where needed (mostly in architecture-
specific scheduler routines).
FreeRTOS provides methods for multiple threads or tasks, mutexes, semaphores and software timers.
A tick-less mode is provided for low power applications. Thread priorities are supported. In
addition there are four schemes of memory allocation provided:
allocate only;
allocate and free with a very simple, fast, algorithm;
a more complex but fast allocate and free algorithm with memory coalescence;
and C library allocate and free with some mutual exclusion protection.
There are none of the more advanced features typically found in operating
systems like Linux or Microsoft Windows, such as device drivers, advanced memory management, user
accounts, and networking. The emphasis is on compactness and speed of execution.
FreeRTOS can be thought of as a 'thread library' rather than an 'operating system',
although command line interface and POSIX-like I/O abstraction add-ons are available.
FreeRTOS implements multiple threads by having the host program call a thread tick
method at regular short intervals. The thread tick method switches tasks depending on
priority and a round-robin scheduling scheme. The usual interval is 1/1000 of a second to 1/100
of a second, via an interrupt from a hardware timer, but this interval is often changed to
suit a particular application.
Key features
Very small memory footprint, low overhead, and very fast execution.
Tick-less option for low power applications.
Equally good for hobbyists who are new to OSes, and professional developers working on
commercial products.
Scheduler can be configured for both preemptive or cooperative operation.
Coroutine support (Coroutine in FreeRTOS is a very simple and lightweight task that has very
limited use of stack)
Trace support through generic trace macros. Tools such as Tracealyzer (a.k.a. FreeRTOS+Trace,
provided by the FreeRTOS partner Percepio) can thereby record and visualize the runtime
behavior of FreeRTOS-based systems. This includes task scheduling and kernel calls for
semaphore and queue operations. Tracealyzer is a commercial tool, but also available in a
feature-limited free version. The full version is priced at US$1,200.
Islam Nabil Mahmoud 20130890 51 Electrical&computers Dept Industrial Training 3 ITR 103
52. IDE
ATmel studio
CodeBlocks
Coding with FREERTOS
Lab1
/*
* BinarySemaphore.c
*
* Created: 18/07/2016 01:08:44 م
* Author: Lab232
*/
/* OS Header Files */
#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"
#include "semphr.h"
#include "event_groups.h"
/* Tasks Proto. */
void T_Button(void *pvParam);
void T_Led(void *pvParam);
void port_init(void);
/* OS Serv. Decl. */
xSemaphoreHandle sBtnPressedEvent;
Islam Nabil Mahmoud 20130890 52 Electrical&computers Dept Industrial Training 3 ITR 103
59. CH3
Integrated circuit design
integrated circuit design, or IC design, is a subset of electronics engineering,
encompassing the particular logic and circuit design techniques required to design integrated
circuits, or ICs. ICs consist of miniaturized electronic components built into an electrical network on
a monolithic semiconductorsubstrate by photolithography.
IC design can be divided into the broad categories of digital and analog IC design. Digital IC
design is to produce components such as microprocessors, FPGAs, memories (RAM, ROM,
and flash) and digital ASICs. Digital design focuses on logical correctness, maximizing circuit
density, and placing circuits so that clock and timing signals are routed efficiently. Analog
IC design also has specializations in power IC design and RF IC design. Analog IC design is
used in the design of op-amps, linear regulators, phase locked loops, oscillators and active filters.
Analog design is more concerned with the physics of the semiconductor devices such as
gain, matching, power dissipation, and resistance. Fidelity of analog signal amplification
and filtering is usually critical and as a result, analog ICs use larger area active devices
than digital designs and are usually less dense in circuitry.
Modern ICs are enormously complicated. An average desktop computer chip, as of 2015,
has over 1 billion transistors. The rules for what can and cannot be manufactured are also
extremely complex. Common IC processes of 2015 have more than 500 rules.
Furthermore, since the manufacturing process itself is not completely predictable,
designers must account for its statistical nature. The complexity of modern IC design, as well
as market pressure to produce designs rapidly, has led to the extensive use of automated
design tools in the IC design process. In short, the design of an IC using EDA software is the
design, test, and verification of the instructions that the IC is to carry out.
Islam Nabil Mahmoud 20130890 59 Electrical&computers Dept Industrial Training 3 ITR 103
60. Layout view of a simple CMOS Operational Amplifier (inputs are to the left and the compensation capacitor
is to the right). The metal layer is coloured blue, green and brown are N- and P-doped Si, the polysilicon is
red and vias are crosses.
Fundamentals
Integrated circuit design involves the creation of electronic components, such
as transistors, resistors, capacitors and the metallic interconnect of these components onto a piece
of semiconductor, typically silicon. A method to isolate the individual components formed in
the substrate is necessary since the substrate silicon is conductive and often forms an active
region of the individual components. The two common methods are p-n junction
isolation and dielectric isolation. Attention must be given to power dissipation of transistors and
interconnect resistances and current density of the interconnect, contacts and vias since ICs
contain very tiny devices compared to discrete components, where such concerns are less
of an issue. Electromigration in metallic interconnect and ESD damage to the tiny components
are also of concern. Finally, the physical layout of certain circuit subblocks is typically
critical, in order to achieve the desired speed of operation, to segregate noisy portions of
an IC from quiet portions, to balance the effects of heat generation across the IC, or to
facilitate the placement of connections to circuitry outside the IC.
Islam Nabil Mahmoud 20130890 60 Electrical&computers Dept Industrial Training 3 ITR 103
61. Design steps
A typical IC design cycle involves several steps:
Feasibility study and die size estimate
Function analysis
System Level Design
Analogue Design, Simulation & Layout
Digital Design, Simulation & Synthesis
System Simulation & Verification
Design For Test and Automatic test pattern generation
Design for manufacturability (IC)
Tape-in
Mask data preparation
Tape-out
Wafer fabrication
Die test
Packaging
Post silicon validation and integration
Device characterization
Tweak (if necessary)
Datasheet generation Portable Document Format
Ramp up
Production
Yield Analysis / Warranty Analysis Reliability (semiconductor)
Failure analysis on any returns
Plan for next generation chip using production information if possible
Roughly saying, digital IC design can be divided into three parts.
Electronic system-level design: This step creates the user functional specification. The user
may use a variety of languages and tools to create this description. Examples include
a C/C++ model, SystemC, SystemVerilog Transaction Level Models, Simulink and MATLAB.
RTL design: This step converts the user specification (what the user wants the chip to do)
into a register transfer level (RTL) description. The RTL describes the exact behavior of the
digital circuits on the chip, as well as the interconnections to inputs and outputs.
Physical design: This step takes the RTL, and a library of available logic gates, and creates
a chip design. This involves figuring out which gates to use, defining places for them,
and wiring them together.
Note that the second step, RTL design, is responsible for the chip doing the right thing. The
third step, physical design, does not affect the functionality at all (if done correctly) but
determines how fast the chip operates and how much it costs.
Islam Nabil Mahmoud 20130890 61 Electrical&computers Dept Industrial Training 3 ITR 103
62. Design Process
Microarchitecture and System-level Design
The initial chip design process begins with system-level design and microarchitecture
planning. Within IC design companies, management and often analytics will draft a
proposal for a design team to start the design of a new chip to fit into an industry
segment. Upper-level designers will meet at this stage to decide how the chip will operate
functionally. This step is where an IC's functionality and design are decided. IC designers
will map out the functional requirements, verification testbenches, and testing
methodologies for the whole project, and will then turn the preliminary design into a
system-level specification that can be simulated with simple models using languages like
C++ and MATLAB and emulation tools. For pure and new designs, the system design stage
is where an Instruction set and operation is planned out, and in most chips existing instruction
sets are modified for newer functionality. Design at this stage is often statements such
as encodes in the MP3 format or implements IEEE floating-point arithmetic. At later stages in
the design process, each of these innocent looking statements expands to hundreds of
pages of textual documentation.
RTL design
Upon agreement of a system design, RTL designers then implement the functional models
in a hardware description language like Verilog, SystemVerilog, or VHDL. Using digital design
components like adders, shifters, and state machines as well as computer architecture
concepts like pipelining, superscalar execution, and branch prediction, RTL designers will
break a functional description into hardware models of components on the chip working
together. Each of the simple statements described in the system design can easily turn
into thousands of lines of RTL code, which is why it is extremely difficult to verify that the
RTL will do the right thing in all the possible cases that the user may throw at it.
To reduce the number of functionality bugs, a separate hardware verification group will
take the RTL and design testbenches and systems to check that the RTL actually is
performing the same steps under many different conditions, classified as the domain
of functional verification. Many techniques are used, none of them perfect but all of them
useful – extensive logic simulation, formal methods, hardware emulation, lint-like code checking, code
coverage, and so on.
A tiny error here can make the whole chip useless, or worse. The famous Pentium FDIV
bug caused the results of a division to be wrong by at most 61 parts per million, in cases
that occurred very infrequently. No one even noticed it until the chip had been in
production for months. Yet Intel was forced to offer to replace, for free, every chip sold until
they could fix the bug, at a cost of $475 million (US).
Islam Nabil Mahmoud 20130890 62 Electrical&computers Dept Industrial Training 3 ITR 103
63. Physical design
RTL is only a behavioral model of the actual functionality of what the chip is supposed to
operate under. It has no link to a physical aspect of how the chip would operate in real life
at the materials, physics, and electrical engineering side. For this reason, the next step in
the IC design process, physical design stage, is to map the RTL into actual geometric
representations of all electronics devices, such as capacitors, resistors, logic gates, and
transistors that will go on the chip.
The main steps of physical design are listed below. In practice there is not a
straightforward progression - considerable iteration is required to ensure all objectives are
met simultaneously. This is a difficult problem in its own right, called design closure.
Logic synthesis: The RTL is mapped into a gate-level netlist in the target technology of the
chip.
Floorplanning: The RTL of the chip is assigned to gross regions of the chip, input/output (I/O)
pins are assigned and large objects (arrays, cores, etc.) are placed.
Placement: The gates in the netlist are assigned to nonoverlapping locations on the die
area.
Logic/placement refinement: Iterative logical and placement transformations to close
performance and power constraints.
Clock insertion: Clock signal wiring is (commonly, clock trees) introduced into the design.
Routing: The wires that connect the gates in the netlist are added.
Postwiring optimization: Performance (timing closure), noise (signal integrity), and yield (Design
for manufacturability) violations are removed.
Design for manufacturability: The design is modified, where possible, to make it as easy and
efficient as possible to produce. This is achieved by adding extra vias or adding dummy
metal/diffusion/poly layers wherever possible while complying to the design rules set by
the foundry.
Final checking: Since errors are expensive, time consuming and hard to spot, extensive
error checking is the rule, making sure the mapping to logic was done correctly, and checking that the
manufacturing rules were followed faithfully.
Tapeout and mask generation: the design data is turned into photomasks in mask data
preparation.
Analog design
Before the advent of the microprocessor and software based design tools, analog ICs were
designed using hand calculations and process kit parts. These ICs were low complexity
circuits, for example, op-amps, usually involving no more than ten transistors and few
connections. An iterative trial-and-error process and "overengineering" of device size was
often necessary to achieve a manufacturable IC. Reuse of proven designs allowed
progressively more complicated ICs to be built upon prior knowledge. When inexpensive
computer processing became available in the 1970s, computer programs were written to
Islam Nabil Mahmoud 20130890 63 Electrical&computers Dept Industrial Training 3 ITR 103
64. simulate circuit designs with greater accuracy than practical by hand calculation. The first
circuit simulator for analog ICs was called SPICE (Simulation Program with Integrated
Circuits Emphasis). Computerized circuit simulation tools enable greater IC design
complexity than hand calculations can achieve, making the design of
analog ASICs practical. The computerized circuit simulators also enable mistakes to be
found early in the design cycle before a physical device is fabricated. Additionally, a
computerized circuit simulator can implement more sophisticated device models and
circuit analysis too tedious for hand calculations, permitting Monte Carlo analysis and process
sensitivity analysis to be practical. The effects of parameters such as temperature
variation, doping concentration variation and statistical process variations can be
simulated easily to determine if an IC design is manufacturable. Overall, computerized circuit
simulation enables a higher degree of confidence that the circuit will work as expected
upon manufacture.
Coping with variability
A challenge most critical to analog IC design involves the variability of the individual
devices built on the semiconductor chip. Unlike board-level circuit design which permits
the designer to select devices that have each been tested and binned according to value,
the device values on an IC can vary widely which are uncontrollable by the designer. For
example, some IC resistors can vary ±20% and β of an integrated BJT can vary from 20 to
100. In the latest CMOS processes, β of vertical PNP transistors can even go below 1. To
add to the design challenge, device properties often vary between each processed
semiconductor wafer. Device properties can even vary significantly across each individual
IC due to doping gradients. The underlying cause of this variability is that many
semiconductor devices are highly sensitive to uncontrollable random variances in the
process. Slight changes to the amount of diffusion time, uneven doping levels, etc. can
have large effects on device properties.
Some design techniques used to reduce the effects of the device variation are:
Using the ratios of resistors, which do match closely, rather than absolute resistor value.
Using devices with matched geometrical shapes so they have matched variations.
Making devices large so that statistical variations becomes an insignificant fraction of the
overall device property.
Segmenting large devices, such as resistors, into parts and interweaving them to cancel
variations.
Using common centroid device layout to cancel variations in devices which must match
closely (such as the transistor differential pair of an op amp).
Islam Nabil Mahmoud 20130890 64 Electrical&computers Dept Industrial Training 3 ITR 103
65. Vendors
The three largest companies[citation needed] selling electronic design automation tools
are Synopsys, Cadence, and Mentor Graphics.
We worked on cadence
Cadence Flow
1. Create Library A. Tools >>> Library Manager
B. File >>> New >>> Library
C. Give a name and attach it to a technology library
Islam Nabil Mahmoud 20130890 65 Electrical&computers Dept Industrial Training 3 ITR 103
66. Islam Nabil Mahmoud 20130890 66 Electrical&computers Dept Industrial Training 3 ITR 103
67. 2. Schematic
A. Create a cell view
Islam Nabil Mahmoud 20130890 67 Electrical&computers Dept Industrial Training 3 ITR 103
68. B. Draw a schematic i. Add instances – pmos You can modify Width of transistors. Don’t modify
length unless you have a special purpose. You should select a NCSU_Analog_Parts library.
Islam Nabil Mahmoud 20130890 68 Electrical&computers Dept Industrial Training 3 ITR 103
69. Islam Nabil Mahmoud 20130890 69 Electrical&computers Dept Industrial Training 3 ITR 103
70. Islam Nabil Mahmoud 20130890 70 Electrical&computers Dept Industrial Training 3 ITR 103
71. Islam Nabil Mahmoud 20130890 71 Electrical&computers Dept Industrial Training 3 ITR 103
72. ii. Add instances – nmos, vdd, and gnd
Islam Nabil Mahmoud 20130890 72 Electrical&computers Dept Industrial Training 3 ITR 103
73. iii. Add wires: Create >> Wire
Islam Nabil Mahmoud 20130890 73 Electrical&computers Dept Industrial Training 3 ITR 103
74. Islam Nabil Mahmoud 20130890 74 Electrical&computers Dept Industrial Training 3 ITR 103
75. iv. Add pins: Create >> Pin
Islam Nabil Mahmoud 20130890 75 Electrical&computers Dept Industrial Training 3 ITR 103
76. We have for different types of direction. For schematics, we only use two types, input and output.
InputOutput type is for supply changes, and it is necessary only for layout. We will discuss about
this later.
Islam Nabil Mahmoud 20130890 76 Electrical&computers Dept Industrial Training 3 ITR 103
77. Now, we completed a schematic design. Let’s move on the next phase.
Islam Nabil Mahmoud 20130890 77 Electrical&computers Dept Industrial Training 3 ITR 103
78. simulation
3. Run Spectre simulation We will run spectre simulation. This section is for both schematics and
layouts. I will show an example for a schematic. You can do the same thing for a layout. A. Launch
ADE (Analog Design Environment) L Launch >>ADE L
B. Basic setup Check if your simulator is spectre. You can modify project directory.
Islam Nabil Mahmoud 20130890 78 Electrical&computers Dept Industrial Training 3 ITR 103
79. C. Model Libraries You can download a library file at the DEN blackboard.
Islam Nabil Mahmoud 20130890 79 Electrical&computers Dept Industrial Training 3 ITR 103
80. Islam Nabil Mahmoud 20130890 80 Electrical&computers Dept Industrial Training 3 ITR 103
81. D. Simuli Define input signals include supply nets
Islam Nabil Mahmoud 20130890 81 Electrical&computers Dept Industrial Training 3 ITR 103
82. Islam Nabil Mahmoud 20130890 82 Electrical&computers Dept Industrial Training 3 ITR 103
83. E. Choose a type of analysis - transient You can choose ‘dc’ if you want to do dc analysis
Islam Nabil Mahmoud 20130890 83 Electrical&computers Dept Industrial Training 3 ITR 103
84. A. Choose tran B. Give Stop time which means how long you want to simulate C. Select moderate
as accuracy defaults D. Do not check Transient Noise E. Check Enabled
Islam Nabil Mahmoud 20130890 84 Electrical&computers Dept Industrial Training 3 ITR 103
85. F. Select signals to plot Outputs Æ To Be Plotted Æ Select On Schematic Click a signal (Pin) on a
schematic/extracted.
G. Run simulation Simulation Æ Run
Islam Nabil Mahmoud 20130890 85 Electrical&computers Dept Industrial Training 3 ITR 103
86. Layout
4. Layout
It’s time to draw layout. Schematics are for verifying your design very roughly. They don’t consider
physical features like parasitic capacitances. After determining your design variables by schematics,
you need to draw layouts. Design flow of layouts is very similar to one of schematics, but it has
additional step which is LVS check. It is for check if your layout is identical to the schematic or not.
Hence, this step is very important. If your logic doesn’t pass this step, you may lose significant
points for that.
Islam Nabil Mahmoud 20130890 86 Electrical&computers Dept Industrial Training 3 ITR 103
87. A. Create a layout
Islam Nabil Mahmoud 20130890 87 Electrical&computers Dept Industrial Training 3 ITR 103
88. B. Add an instance - nmos
Islam Nabil Mahmoud 20130890 88 Electrical&computers Dept Industrial Training 3 ITR 103
89. Islam Nabil Mahmoud 20130890 89 Electrical&computers Dept Industrial Training 3 ITR 103
90. C. Add more instances – pmos, ptap, ntap, and m1_ploy
Islam Nabil Mahmoud 20130890 90 Electrical&computers Dept Industrial Training 3 ITR 103
91. You can select alternate view of a layout. Try ‘Shift + f’ and ‘Ctrl + f’.
Islam Nabil Mahmoud 20130890 91 Electrical&computers Dept Industrial Training 3 ITR 103
92. D. Draw metal1 There are few ways for drawing metal, but I recommend you use ‘path’. It’s quite
convenience than others. Create Æ Shape Æ Path First of all, you should select metal1 on LSW
window. Default width for metal1 is 0.3, which means 300nm (3 λ). You can draw metal layer
simply by clicking
Islam Nabil Mahmoud 20130890 92 Electrical&computers Dept Industrial Training 3 ITR 103
93. Islam Nabil Mahmoud 20130890 93 Electrical&computers Dept Industrial Training 3 ITR 103
94. E. Run DRC This step checks if your layout follows design rules. Verify Æ DRC
Islam Nabil Mahmoud 20130890 94 Electrical&computers Dept Industrial Training 3 ITR 103
95. Islam Nabil Mahmoud 20130890 95 Electrical&computers Dept Industrial Training 3 ITR 103
96. Islam Nabil Mahmoud 20130890 96 Electrical&computers Dept Industrial Training 3 ITR 103
97. We have five errors. It is because a gnd metal layer is too close to an nmos transistor. After
modifying layout, run DRC again.
Islam Nabil Mahmoud 20130890 97 Electrical&computers Dept Industrial Training 3 ITR 103
98. F. Add pins We had two pins on a schematic, which are ‘in’ and ‘out’. Pins are for assigning signals
to physical device, so we assign voltage level of gnd and vdd by using pins. Hence, we have 4 pins
for the layout, which are ‘in’, ‘out’, ‘gnd!’, and ‘vdd!’. Create Æ Pin
Islam Nabil Mahmoud 20130890 98 Electrical&computers Dept Industrial Training 3 ITR 103
99. Islam Nabil Mahmoud 20130890 99 Electrical&computers Dept Industrial Training 3 ITR 103
100. Check ‘Display Terminal Name’ if you want to
see pin name on the layout.
Click ‘Display Terminal Option
Islam Nabil Mahmoud 20130890 100 Electrical&computers Dept Industrial Training 3 ITR 103
101. G. Extract A layout is just a picture. If you need to run simulation using the layout, you should
convert it to the other format. It is done by extracting. It’s something like compiling a code.
Islam Nabil Mahmoud 20130890 101 Electrical&computers Dept Industrial Training 3 ITR 103
102. Islam Nabil Mahmoud 20130890 102 Electrical&computers Dept Industrial Training 3 ITR 103
103. Select ‘Extract_parastic_cap’ as a switch name,
otherwise your extracted design won’t have parasitic
capacitances.
Islam Nabil Mahmoud 20130890 103 Electrical&computers Dept Industrial Training 3 ITR 103
104. H. Run LVS As I mentioned before, this step is very important for your grading. More complicated
design, more time will be required for debugging LVS. Verify Æ LVS Keep in mind. You SHOULD
compare your schematic with EXTRACTED.
Islam Nabil Mahmoud 20130890 104 Electrical&computers Dept Industrial Training 3 ITR 103
105. Run Spectre simulation It is same as schematics. Go to step ‘4. Run Spectre simulation’.
Islam Nabil Mahmoud 20130890 105 Electrical&computers Dept Industrial Training 3 ITR 103
106. Islam Nabil Mahmoud 20130890 106 Electrical&computers Dept Industrial Training 3 ITR 103
107. Islam Nabil Mahmoud 20130890 107 Electrical&computers Dept Industrial Training 3 ITR 103
108. CH4 PCB Design with ( OrCAD )
OrCAD is a proprietary software tool suite used primarily for electronic design automation (EDA).
The software is used mainly by electronic design engineers and electronic technicians to
create electronic schematics and electronic prints for manufacturing printed circuit boards.
The name OrCAD is a portmanteau, reflecting the company and its software's
origins: Oregon + CAD.
Original author(s)
Cadence Design Systems
Developer(s) Cadence Design Systems
Stable release 16.6
Written in C/C++
Operating system Microsoft Windows
Type Electronic design automation
OrCAD PCB Designer
OrCAD PCB Designer is a printed circuit board designer application, and part of the OrCAD
circuit design suite. PCB Designer includes various automation features for PCB design,
board-level analysis and design rule checks (DRC).
The PCB design may be accomplished by manually tracing PCB tracks, or using the Auto-
Router provided. Such designs may include curved PCB tracks, geometric shapes, and
ground planes.
PCB Designer integrates with OrCAD Capture, using the component information system
(CIS) to store information about a certain circuit symbol and its matching PCB footprint
Introduction
Orcad is a suite of tools from Cadence for the design and layout of printed circuit boards (PCBs).
We are currently using version 9.2 of the Orcad suite. This document will give you a crash course in
designing an entire circuit board from start to finish. This will be a very small and simple circuit,
but it will demonstrate the major concepts and introduce the tools behind completing a PCB design.
After you have completed this tutorial, you will know all the steps needed to make PCBs using
Orcad. The circuit you will design is shown in the figure below. It is a dual polarity adjustable
power supply. A center tapped transformer, some diodes, 2 IC’s and few resistors and capacitors are
Islam Nabil Mahmoud 20130890 108 Electrical&computers Dept Industrial Training 3 ITR 103
109. included in the circuit.
OrCAD Flow
Starting a New Schematic Project
To create a new project, first start Orcad Capture CIS then click File ÆNew ÆProject. You will see
the following dialog box. Browse to the PowerSupplyschematic directory that you created and
name the project psu (short for Power Supply Unit). The project name is more important than the
name of your project folder. It is used as the name of all the files in your project. So give the project
a meaningful and short name. Select the PC Board Wizard radio button and click OK. In the next
dialog box uncheck Enable project simulation. Click Next and then remove all libraries from RHS
then click Finish. You should see an empty schematic page and a project window like the following.
Islam Nabil Mahmoud 20130890 109 Electrical&computers Dept Industrial Training 3 ITR 103
110. About Libraries and Parts
Orcad allows you to have libraries of part symbols for use in schematic entry. These libraries are
kept in separate files that are included in the project workspace. This allows you to reuse libraries in
other designs. Enormous parts are already in existing Orcad libraries. You can use these parts
directly from these libraries. Open your schematic page from the Project window if it is not open.
Your schematic is located in psu.dsnÆSCHEMATIC1ÆPAGE1 in the project window. Now click
on the Place Part tool from the right toolbar. The following dialog box appears.
Islam Nabil Mahmoud 20130890 110 Electrical&computers Dept Industrial Training 3 ITR 103
111. 2- Creating a Schematic Parts Library
Orcad allows you to create your own libraries of part symbols. You can create symbols for those
parts, which you are unable to find in Orcad libraries, or you want to draw a part symbol according
to your own standard and convenience. We will now create symbols for some of the parts in our
design and use the rest from the Orcad built-in libraries. For this we have to add a new library to our
design. To do this, highlight the psu.dsn in the project window and click File ÆNew ÆLibrary.
Right-click the library1.olb file in the project window and select Save As... Name the file
psu_symbols and place it in the libraries directory that you created earlier. Your project window will
now look like the figure below. You are now ready to add parts to your library
Islam Nabil Mahmoud 20130890 111 Electrical&computers Dept Industrial Training 3 ITR 103
112. 3- Creating Schematic Symbols
To add a new part to your library, right-click the library file and select New Part. This will bring up
a dialog box for New Part Properties. Make the entries in the dialog box so that it looks like the
following.
Islam Nabil Mahmoud 20130890 112 Electrical&computers Dept Industrial Training 3 ITR 103
113. Islam Nabil Mahmoud 20130890 113 Electrical&computers Dept Industrial Training 3 ITR 103
114. 4- Schematic Entry
You are now ready to start placing the electrical components for your design. The circuit that we
will be drawing is shown in the beginning of this tutorial in the hand drawn form. We will need all
the parts that are included in that circuit diagram. Open up the schematic page and click the Place
Part tool on the toolbar on the right side of the screen. Here you will have to add those libraries,
which contain your desired parts. As a novice designer, you might experience difficulties in finding
a particular part because there are so many libraries and thousands of parts in each of them. But you
can always do away with this difficulty if you carefully read the library name. The Part Search
feature will certainly be very helpful in these circumstances.
Islam Nabil Mahmoud 20130890 114 Electrical&computers Dept Industrial Training 3 ITR 103
115. 5- Preparing for Layout
The transference phase (transferring the design from Capture to Layout) is the second phase of your
project and is very crucial. Annotating your design is the first step of this phase
Islam Nabil Mahmoud 20130890 115 Electrical&computers Dept Industrial Training 3 ITR 103
116. References:
FPGA
Circuit design with VHDL, by Volnei A. Pedroni
VHDL:Programming by Example, by Douglas L. Perry,Fourth Edition
Spartan 3E Starter Board, by Digilant
VHDL Analysis and Modeling of Digital Systems, Zainalabedin Navabi, 1993
Basic VHDL Course, Dr. Ayman Wahba
The Designer’s Guide to VHDL, Peter J. Ashenden, 1996
Language Reference Manual, IEEE, 1999
VHDL Programming by Example, Douglas L. Perry, 2002
HDL Chip Design, Douglas J. Smith, 1996
PSOC & RTOS
Using the FreeRTOS Real Time Kernel - A Practical Guide_opened
FreeRTOS_manual
Real-Time.MicroC_OS_RTOS_CMP
Simply AVR Book
Cypress Hits Half-Billion Mark in Shipments of PSoC Programmable System-on-
Chip Devices
IC Design
Electronic Design Automation For Integrated Circuits Handbook, by Lavagno, Martin, and
Scheffer
Cadence Tutorial
for Cadence version 6.1 Inkwon Hwang
Feb, 2010
PCB Design
Orcad Tutorial
OrCAD Flow Tutorial
Islam Nabil Mahmoud 20130890 116 Electrical&computers Dept Industrial Training 3 ITR 103