Lattice Mico32

1,223 views
1,037 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,223
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Lattice Mico32

  1. 1. Technical Seminar Tour 2007 LATTICE‘S PROGRAMMABLE LOWCOST SOLUTIONS LatticeMico32
  2. 2. LatticeMico32 <ul><li>Agenda </li></ul><ul><li>Architecture and Peripherals </li></ul><ul><li>Development tools </li></ul><ul><li>Software Deployment </li></ul><ul><li>Tool Flow </li></ul><ul><li>Demo </li></ul>
  3. 3. Introducing the LatticeMico32 <ul><li>Flexible, High Performance 32-Bit Microprocessor </li></ul><ul><li>Optimized For Lattice Leading-Edge Families </li></ul><ul><ul><li>LatticeEC/P </li></ul></ul><ul><ul><li>LatticeECP2/M </li></ul></ul><ul><ul><li>LatticeSC </li></ul></ul><ul><ul><li>LatticeXP </li></ul></ul><ul><li>Targeted Towards Wide Variety of Applications </li></ul><ul><ul><li>Consumer </li></ul></ul><ul><ul><li>Computation </li></ul></ul><ul><ul><li>Communications </li></ul></ul><ul><ul><li>Medical </li></ul></ul><ul><ul><li>Industrial </li></ul></ul><ul><ul><li>Automotive </li></ul></ul>
  4. 4. Performance Enhanced Feature Set <ul><li>RISC architecture </li></ul><ul><li>32-bit data path and 32-bit instructions </li></ul><ul><li>32 general purpose register </li></ul><ul><li>Handles up to 32 external interrupts </li></ul><ul><li>Optional instruction and data caches </li></ul><ul><li>Dual Wishbone memory interfaces (Instruction and Data) </li></ul>
  5. 5. Architecture
  6. 6. Architecture and Pipeline Stages
  7. 7. Peripheral Components <ul><li>Enable Design of Complete Embedded Systems </li></ul><ul><li>Connect via a WISHBONE Bus Interface </li></ul><ul><ul><li>Royalty-free </li></ul></ul><ul><ul><li>Public domain specification controlled by OpenCores.org </li></ul></ul>
  8. 8. Peripheral Components <ul><li>Broad Selection </li></ul><ul><ul><li>Coming from Lattice </li></ul></ul><ul><ul><ul><li>Asynchronous SRAM Controller </li></ul></ul></ul><ul><ul><ul><li>On-Chip Memory Controller </li></ul></ul></ul><ul><ul><ul><li>32-bit Timer </li></ul></ul></ul><ul><ul><ul><li>DMA Controller </li></ul></ul></ul><ul><ul><ul><li>GPIO </li></ul></ul></ul><ul><ul><ul><li>I 2 C Master Controller </li></ul></ul></ul><ul><ul><ul><li>SPI </li></ul></ul></ul><ul><ul><ul><li>UART </li></ul></ul></ul><ul><ul><ul><li>DDR ($) </li></ul></ul></ul><ul><ul><li>OpenCores.org </li></ul></ul><ul><ul><ul><li>There is a real documentation coming from Lattice how to create and add wishbone-compatible components to the LatticeMico32 development system!!!! </li></ul></ul></ul>Connectivity With a Click Using Design Tools
  9. 9. Complete Embedded System Flash/ RAM LatticeMico32 Processor Core On-Chip Memory UART Flash Memory Controller GPIO 32-bit Timer SRAM Controller WISHBONE Interrupt Lines FPGA User Logic Embedded RAM FPGA Config
  10. 10. Support Timetable By Device Family <ul><li>Schedule for Family Support: </li></ul><ul><ul><li>LatticeEC/ECP/ECP2/M Now </li></ul></ul><ul><ul><li>LatticeSC November 2006 </li></ul></ul><ul><ul><li>LatticeXP January 2007 </li></ul></ul>
  11. 11. Resource Utilization & Performance <ul><li>Full </li></ul><ul><li>Multiplier </li></ul><ul><li>3 Cycle Shifter </li></ul><ul><li>8K I-Cache, 8K D-Cache </li></ul><ul><li>Standard </li></ul><ul><li>Multiplier </li></ul><ul><li>3 Cycle Shifter </li></ul><ul><li>8K I-Cache, No D-Cache </li></ul><ul><li>BASIC </li></ul><ul><li>No Multiplier </li></ul><ul><li>1 Cycle Shifter </li></ul><ul><li>No Cache </li></ul>Configuration 92 MHz 2230 LatticeEC/ECP 116 MHz 2158 LatticeECP2/M 89 MHz 2040 LatticeEC/ECP 116 MHz 1816 LatticeECP2/M 98 MHz 81 MHz Maximum Clock Frequency 1571 LatticeECP2/M 1830 LUTs LatticeEC/ECP Family
  12. 12. Open IP Core Licensing <ul><li>Innovative Open IP Core License </li></ul><ul><ul><li>Visibility, Reliability, Scalability </li></ul></ul><ul><li>Free of Charge </li></ul><ul><li>Generated LatticeMico32 core and Peripherals based on HDL </li></ul>
  13. 13. Development Tool <ul><li>LatticeMico32 System </li></ul><ul><li>to implement HW-IP (uP and Peripherals) and SW </li></ul><ul><li>Based on Eclipse C/C++ Dev. Tools (CDT) </li></ul><ul><li>Free of charge, via Internet </li></ul><ul><li>Combined with ispLEVER </li></ul>
  14. 14. Development Tool <ul><li>LatticeMico32 System </li></ul><ul><li>Mico System Builder (MSB) </li></ul><ul><ul><li>Generate uP platform and HDL </li></ul></ul><ul><ul><li>Choose peripherals </li></ul></ul><ul><ul><li>Specify connectivity between peripherlas </li></ul></ul><ul><li>C/C++ SW Projekt Environment (SPE) and Debugger </li></ul><ul><ul><li>Eclipse development environment </li></ul></ul><ul><ul><li>GNU-based compiler, linker, assembler, debugger </li></ul></ul>
  15. 15. RTOS Support <ul><li>Micrium’s uC/OS-II RTOS </li></ul><ul><li>Included in LatticeMico32 System </li></ul><ul><li>Open source </li></ul><ul><li>free of charge for eval and non-commercial use </li></ul><ul><li>For commercial-use obtain a license directly from Micrium </li></ul>
  16. 16. Software Deployment <ul><li>Deploying to </li></ul><ul><li>External Parallel Flash </li></ul><ul><li>On-Chip (Embedded Block RAM EBR) </li></ul>
  17. 17. Software Deployment: External #1 <ul><li>Load app.design to FPGA config flash </li></ul><ul><li>FPGA configuration via SPI </li></ul>ELF FPGA Config Flash LatticeMico32 System FPGA JTAG UART OnChip Mem (EBR) User Logic Parallel Flash SRAM / DDR PC (Debugger, ispVM) BIT BIT SPI
  18. 18. Software Deployment: External #2 <ul><li>multiple Load app.code to RAM </li></ul><ul><li>Run app.code from RAM </li></ul><ul><li>debugging </li></ul>ELF FPGA Config Flash LatticeMico32 System FPGA JTAG UART OnChip Mem (EBR) User Logic Parallel Flash SRAM / DDR PC (Debugger, ispVM) BIT BIT SPI ELF
  19. 19. Software Deployment: External #3 <ul><li>Load FlashProgrammer to RAM </li></ul><ul><li>Run FlashProgrammer from RAM </li></ul>ELF FPGA Config Flash LatticeMico32 System FPGA JTAG UART OnChip Mem (EBR) User Logic Parallel Flash SRAM / DDR PC (Debugger, ispVM) BIT BIT SPI Flash Programmer Flash Programmer
  20. 20. Software Deployment: External #4 <ul><li>FlashProgrammer copies app.code to ParallelFlash </li></ul>ELF FPGA Config Flash LatticeMico32 System FPGA JTAG UART OnChip Mem (EBR) User Logic Parallel Flash SRAM / DDR PC (Debugger, ispVM) BIT BIT SPI ELF Flash Programmer Flash Programmer
  21. 21. Software Deployment: External #5 <ul><li>Copy app.code to RAM </li></ul><ul><li>Run app.code from RAM </li></ul>FPGA Config Flash Parallel Flash SRAM / DDR SPI LatticeMico32 System FPGA JTAG UART OnChip Mem (EBR) User Logic BIT ELF ELF
  22. 22. Software Deployment: OnChip #1 <ul><li>Load app.design to FPGA config flash </li></ul><ul><li>FPGA configuration via SPI </li></ul>ELF FPGA Config Flash LatticeMico32 System FPGA JTAG UART OnChip Mem (EBR) User Logic PC (Debugger, ispVM) BIT BIT SPI
  23. 23. Software Deployment: OnChip #2 <ul><li>multiple Load app.code to EBR </li></ul><ul><li>Run app.code from EBR </li></ul><ul><li>debugging </li></ul>ELF FPGA Config Flash LatticeMico32 System FPGA JTAG UART OnChip Mem (EBR) User Logic PC (Debugger, ispVM) BIT BIT SPI ELF
  24. 24. Software Deployment: OnChip #3 <ul><li>Resynthesize FPGA bitstream </li></ul><ul><li>Load app.design to FPGA config flash </li></ul><ul><li>FPGA configuration via SPI </li></ul>ELF FPGA Config Flash LatticeMico32 System FPGA JTAG UART OnChip Mem (EBR) User Logic PC (Debugger, ispVM) BIT BIT SPI
  25. 25. Software Deployment: <ul><li>This are just very simplified descriptions </li></ul><ul><li>Please have a look to: </li></ul><ul><li>LatticeMico32 Tutorial (based on the Lattice32 Development Board) </li></ul><ul><li>SW Developers UserGuide </li></ul>
  26. 26. ECP Development <ul><li>Development Board </li></ul><ul><ul><li>LatticeECP 33 + SPI </li></ul></ul><ul><ul><li>DDR SODIMM socket </li></ul></ul><ul><ul><li>2x128 Mbit Flash + 2x4 Mbit SRAM </li></ul></ul><ul><ul><li>USB 2.0 Connector for programming </li></ul></ul><ul><ul><li>Flywire Connector for programming </li></ul></ul><ul><ul><li>9-pin RS232 serial port </li></ul></ul><ul><ul><li>15-pin VGA connector for 64 colors </li></ul></ul><ul><ul><li>Ethernet 10/100 M full/half duplex </li></ul></ul><ul><ul><li>Multiple USB connectors </li></ul></ul><ul><ul><li>Sigma Delta D/A converter </li></ul></ul><ul><ul><li>Audio interface (line-in and line-out) </li></ul></ul><ul><ul><li>LCD connector for character displays </li></ul></ul><ul><ul><li>25 MHz oscillator </li></ul></ul><ul><ul><li>Two-character 7-segment display </li></ul></ul><ul><li>Power Supply, USB Cable </li></ul><ul><li>595 $ </li></ul>
  27. 27. Software Deployment <ul><li>Deploying to </li></ul><ul><li>External Parallel Flash Memory </li></ul><ul><li>Embedded Block RAM (EBR) </li></ul><ul><li>Alternatives: </li></ul><ul><li>External Parallel Flash Memory = ConfigFlash (needs a small CPLD) </li></ul><ul><li>External SPI Flash (coming soon) </li></ul>
  28. 28. System Development Flow Mico System Builder (MSB) Platform Development Software Development FPGA Design Implementation Generator Instruction Set Simulator HW Platform Rest of User Design in HDL ELF HDL .h Debug Target Board Debug Program ispVM ™ C/C++ Software Project Environment (SPE) and Debugger
  29. 29. System Development Flow <ul><li>Restriction: </li></ul><ul><li>(not really ;-) </li></ul><ul><li>MSB delivers Verilog </li></ul><ul><ul><li>But ispLEVER does not support mixed language designs </li></ul></ul><ul><ul><li>Do you speak Verilog ?? </li></ul></ul><ul><li>-> use NGO-Flow </li></ul><ul><li>How?? Ask your AVM-FAE </li></ul>
  30. 30. LatticeMico32 Tool Flow <ul><li>Create New project, </li></ul><ul><ul><li>Verilog HDL, </li></ul></ul><ul><ul><li>part type ECP33-3F484C if Mico32 dev board is used </li></ul></ul>
  31. 31. Tool Flow <ul><li>Invoke Mico32 from IspLever </li></ul>
  32. 32. Tool Flow <ul><li>Create a Platform: </li></ul><ul><ul><li>Platform is processor + peripherals </li></ul></ul><ul><ul><li>Pre-defined Platforms or create your own </li></ul></ul><ul><ul><li>Platforms A-E match the LatticeMico32 development board </li></ul></ul>
  33. 33. Tool Flow <ul><li>Configure Platform </li></ul><ul><ul><li>Configurations (e.g. Peripheral name, Wishbone connections, Memory location, size, interrupts, etc) are specified here </li></ul></ul>
  34. 34. Tool Flow <ul><li>Configure processor or peripheral: </li></ul><ul><ul><li>Double click instance name, and configuration options appear </li></ul></ul>
  35. 35. Tool Flow <ul><li>Generate Platform </li></ul><ul><ul><li>Addresses, Irq, DRC, Generate HDL </li></ul></ul>
  36. 36. LatticeMico32 Tool Flow <ul><li>Importing an LM32 Project </li></ul><ul><ul><li><path>/<project>/soc/<project>.v </li></ul></ul>
  37. 37. Tool Flow <ul><li>Importing Development board constraints </li></ul><ul><ul><li>“ Source” “import constraint/preference file” </li></ul></ul><ul><ul><li><isptools6.1>/micosystem/platforms/platformxy </li></ul></ul><ul><ul><li>Pinouts for SRAM, LED’s, etc. </li></ul></ul>
  38. 38. Tool Flow <ul><li>Change Perspective from ‘MSB’ to “C/C++” </li></ul>
  39. 39. Tool Flow <ul><li>Using the SPE Environment </li></ul><ul><ul><li>‘New “Mico32 New Managed C project” </li></ul></ul>
  40. 40. Tool Flow <ul><li>Using the SPE Environment </li></ul><ul><ul><li>Select a template </li></ul></ul>
  41. 41. Tool Flow <ul><li>Using the SPE Environment </li></ul><ul><ul><li>Compile C Code </li></ul></ul><ul><ul><li>Make utility will compile source </li></ul></ul><ul><ul><li>Check for errors </li></ul></ul>
  42. 42. Tool Flow <ul><li>Using the SPE Environment </li></ul><ul><ul><li>Execute C Code </li></ul></ul><ul><ul><li>Select ‘Run’ ‘debug – mico32 hardware’ </li></ul></ul><ul><ul><li>The demo board can now be executed </li></ul></ul>
  43. 43. LatticeMico32 Website http://www.latticesemi.com/products/intellectualproperty/ipcores/latticemico32.cfm
  44. 44. Detailed LatticeMico32 Documentation <ul><li>LatticeMico32 Processor Reference Manual </li></ul><ul><li>LatticeMico32 Software Developer User's Guide </li></ul><ul><li>LatticeMico32 Development Kit User's Guide </li></ul><ul><li>LatticeMico32 Tutorial </li></ul><ul><li>Online Help </li></ul><ul><ul><li>Workbench </li></ul></ul><ul><ul><li>MSB </li></ul></ul><ul><ul><li>C++ Debug </li></ul></ul><ul><li>Sparkle Sheet </li></ul><ul><li>LatticeMico32 System Installation Guide </li></ul><ul><li>Creating Components in the LatticeMico32 System </li></ul><ul><li>Peripheral Component Data Sheets and Help Panels </li></ul><ul><ul><li>DMA Controller </li></ul></ul><ul><ul><li>GPIO </li></ul></ul><ul><ul><li>I2C Master from OpenCores </li></ul></ul><ul><ul><li>On-Chip Memory Controller </li></ul></ul><ul><ul><li>SPI </li></ul></ul><ul><ul><li>Asynchronous SRAM Controller </li></ul></ul><ul><ul><li>Parallel Flash Controller </li></ul></ul><ul><ul><li>32-bit Timer </li></ul></ul><ul><ul><li>UART </li></ul></ul>
  45. 45. Recommendation: LatticeMico32 Tutorial <ul><li>~ 3 Hours for completion </li></ul><ul><li>Based on LatticeMico32 Dev. Board </li></ul>
  46. 46. Development Board <ul><li>Development Board </li></ul><ul><ul><li>LatticeECP 33 + SPI </li></ul></ul><ul><ul><li>DDR SODIMM socket </li></ul></ul><ul><ul><li>2x128 Mbit Flash + 2x4 Mbit SRAM </li></ul></ul><ul><ul><li>USB 2.0 Connector for programming </li></ul></ul><ul><ul><li>Flywire Connector for programming </li></ul></ul><ul><ul><li>9-pin RS232 serial port </li></ul></ul><ul><ul><li>15-pin VGA connector for 64 colors </li></ul></ul><ul><ul><li>Ethernet 10/100 M full/half duplex </li></ul></ul><ul><ul><li>Multiple USB connectors </li></ul></ul><ul><ul><li>Sigma Delta D/A converter </li></ul></ul><ul><ul><li>Audio interface (line-in and line-out) </li></ul></ul><ul><ul><li>LCD connector for character displays </li></ul></ul><ul><ul><li>25 MHz oscillator </li></ul></ul><ul><ul><li>Two-character 7-segment display </li></ul></ul><ul><li>Power Supply </li></ul><ul><li>USB Cable </li></ul><ul><li>595$ </li></ul>

×