Programmable System-on-Chip (PSoC) General Overview Embedded Architectures EE446
Typical Microcontroller Purposes The purpose for uC’s is to interface multiple types of hardware. Digital Input/Outputs: Switches Relays LEDs Digital Communications: I2C, SPI Analog Input/Outputs Computer uC Thermal Gyro Acceleration
Example of Hardware Interfacing
Regular Microcontroller Caveats What if you need more Analog Inputs? What if you need more Interrupts? Advanced projects: more PWMs needed? Use external circuitry Buy a larger microcontroller
What is a Programmable System-on-Chip (PSoC)? A customizable microcontroller that includes flexible analog and digital logic blocks. Analog blocks: High-resolution inputs (up to 20-bit) 4 Digital-to-Analog Converters Digital logic blocks (UDBs): A wide mix of digital peripherals can be implemented into a single chip. Up to 4 voltage domains Almost all pins can be flexible in terms of being digital or analog.
What is a Programmable System-on-Chip (PSoC)? (Powered by ARM Core) Provides above features plus ARM processor benefits: Up to 67Mhz Flash: Up to 256kb SRAM: Up to 65kb Up to 70 I/O pins
General Overview of PSoC Features
Cypress PSoC IDE API
Cypress PSoC IDE (Block Configuration) Read up some of these options
PSoC Pin Routing
PSoC Main Program Code ISR Flag Main loop ISR Flag
API’s for the PSoC Blocks
API’s for the PSoC Blocks
Universal Digital Blocks A UDB is a combination of uncommitted logic (PLDs), structured logic (datapath), and a flexible routing scheme. The largest PSoC contains up to 24 general-purpose digital logic subsystems (UDBs) PLD: Implements state machines and simple combinational logic. Datapath: Dynamically configurable ALU Contains Input/Output FIFOs Connects to the CPU/DMA and other UDB’s
Top-level UDB Block Diagram
Top-level UDB Routing Diagram
Extensive Uses of UDBs Examples of possible hardware configurations on a single (and largest) PSoC chip: 12 UARTs or 28 PWMs For a normal microcontroller, this configuration is impossible without resorting to additional external hardware, such as: Daisy-chain or bus-connected peripherals: Microcontrollers I2C/SPI-connected hardware for UART, PWM, etc.
Extensive Uses of UDBs Technology Mapping Summary
Extensive Uses of UDBs Technology Mapping Summary
PSoC Top-Level Analog Routing Diagram
PSoC Analog Routing Analog Local Bus Analog Global Bus Analog Mux Bus 4 on left side, 4 on right side Connects to analog resource blocks only No access to GPIO’s Analog Global Bus Connects I/O to analog resource blocks on same side Connects to GPIO on their respective quadrant 8 routes on left side, 8 routes on right side Analog Mux Bus Connects the buses to the ‘outside’ world Can connect to all GPIO’s and all analog resource blocks
PSoC Die Quadrants Analog Routing Global Bus The analog global bus has eight routes on each side, AGL[7:0] on the left, and AGR[7:0] on the right. Within each side, the bus is divided into two groups, AGR[3:0] and AGR[7:4] for the right side, and AGL[3:0] and AGL[7:4] for the left side. The lower four globals on each side are routed to the GPIO on the lower half of the die and the upper four globals on each side are routed to the GPIO on the upper half of the die. All eight analog globals on each side get routed to ARBs on the same side
Detailed Analog Routing
Interrupts
Why have interrupts? An external event that needs immediate attention. An ‘emergency’ switch A long-running timer PSoC-5 supports 16 system interrupts and 32 from peripherals. Tail Chaining (Back-to-Back) Late Arrival (Lower Higher) Reprioritize Interrupts Same Priority? Fixed Function DMA UDB
Interrupts “Have any of you taken EE445?” Reason why you need interrupts for the hardware Some modules that are used needs immediate attention in real time.
Interrupt Usage Sonar UART: Servo Hardware: Motor Encoders: Send a command every 20msec. Motor Encoders:
Interrupt Vector Table
How Interrupts Work
Interrupt Setup and ISR
Tail Chaining Interrupts
Late Arrival Interrupts
Polling vs Interrupting Signals can happen too fast for the CPU to read or process!
Example PSoC Project Firmware Overview I/O Communications Inputs From Sensors Outputs To Devices
Raw Sensor Data Collection to the Host PC Digital: I2C used in Gyroscopes, Accelerometers, Magnetometers (IMU), and Temperature Sensor UART from Sonar @ 9600bps (8N1) For this particular usage, very inefficient. Requires interrupts and additional code complexity. Very slow data updates. ADC Settings and Inputs: 14-bits @ 70,000 Samples Per Second (currently) Vcc = 5 Volt (Reference) Raw value range: 0v 5v 0 16384
PSoC Data Output Raw ADC Values: 85 updates/sec over Serial UART @ 115200bps (8N1) Servo Position Infrared Gyro X-Axis Gyro Y-Axis Gyro Z-Axis Sonar (analog)
Host PC Application GUI