1 / 46

DISEÑO DE PLATAFORMAS DE COMPUTO BASADAS EN FPGAS

DISEÑO DE PLATAFORMAS DE COMPUTO BASADAS EN FPGAS. Oviedo Marcos <moviedo@gmail.com>. Desarrollo de Sistemas en Chip (SoCs). Agenda. Sistemas en chip Beneficios que provee un SoC Componentes de un SoC Metodología simplificada de desarrollo de un SoC

sol
Download Presentation

DISEÑO DE PLATAFORMAS DE COMPUTO BASADAS EN FPGAS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. DISEÑO DE PLATAFORMAS DE COMPUTO BASADAS EN FPGAS Oviedo Marcos <moviedo@gmail.com> Desarrollo de Sistemas en Chip (SoCs)

  2. Agenda • Sistemas en chip • Beneficios que provee un SoC • Componentes de un SoC • Metodología simplificada de desarrollo de un SoC • Herramientas de desarrollo de diseños embebidos sobre FPGAs • Ejemplo de hardware necesario para la implementación de un SoC • Buses de interconexión • Ejemplos de SoC • Roadmap del curso

  3. Sistemas en chip • Un sistema en chip (SoC) es la habilidad de colocar múltiples funcionalidades de hardware (IPcores) en una sola pastilla de silicio. • Un SoC generalmente esta compuesto por un sistema embebido basado en un microprocesador procesador y componentes de hardware de aplicación especifica • Cuando se utiliza un microprocesador, el software es desarrollado en paralelo a modo de particionar/distribuir la logica deseada tanto en hardware como en software.

  4. Beneficios que provee un SoC • Es una alternativa económica a implementar la misma funcionalidad en distintos componentes. • Al implementar todo el sistema en una sola pastilla, elimina la complejidad y problemas que poseen los PCBs con componentes distribuidos • Problemas de integridad de señales • Complejidad para validad/verificar el board • Múltiples puntos de falla • Menor consumo de potencia que varios componentes distribuidos en el PCB

  5. Beneficios que provee un SoC (contd) • Utilización de IPcores preverificadas. • Posibilidad de reconfiguración en campo mediante el uso de tecnología FPGA • Alta performance mediante el uso de coprocesadores implementados en hardware • Alta reutilización de IPCores propios o externos. • Posibilidad de control total del sistema a través de SW

  6. Componentes de un SoC • Un SoC típicamente esta compuesto por los siguientes IPCores • Al menos un microprocesador/microcontrolador generalmente de 32 bits. • Fuentes de reloj necesarias para el timing del sistema, como pueden ser DCMs, osciladores, plls, etc. • Componentes que implementan los controladores de los buses de comunicación internos. • Componentes específicos como pueden ser RTCs, PowerOnReset, wrappers de recursos fijos, componentes de glue-logic, etc.

  7. Componentes de un SoC (contd) • Controladores encargados de gestionar los chips de memorias presentes en el board (off-chip components). Estos pueden ser controladores de RAM, FLASH, EEPROM, ROM, etc. • Componentes que implementan controladores para interfaces externas de comunicación como controladores USB, Ethernet, USART, SPI, Fireware, etc. • Componentes de regulación de tensión y power management. • Componentes de aplicación especifica: Coprocesadores de alta performance, monitoreo para alta disponibilidad, etc.

  8. Metodología simplificada de desarrollo de un SoC • Primero se establecen los requerimientos del sistema • Luego se determina como el sistema se va a particionar e implementar (Codiseño HW/SW) • En la partición de HW se determinan: • El microprocesador a utilizar • Los buses de interconexión que serán utilizados y como van a ser conectados los componentes • Los componentes necesarios para volver al sistema embebido funcional. Para esto se pueden utilizar IPCores propios o de terceros. • Los componentes de aplicación especifica necesarios para cumplir con los requerimientos del sistema

  9. Metodología simplificada de desarrollo de un SoC (contd) • En la partición de SW se determinan: • El software de control que correrá sobre el microprocesador: Software standalone o sistema operativo. • Los drivers necesarios para controlar los componentes de HW del hardware subyacente. • La funcionalidad de SW que será necesaria para satisfacer los requerimientos del sistema. • Se determinara ademas como sera el canal de comunicación entre el HW y el SW • Registros mapeados en memoria • Mecanismos especificos de la plataforma de FPGA: APU por ejemplo • DMA

  10. Metodología simplificada de desarrollo de un SoC (contd) • Una vez que los componentes del codiseño HW/SW fueron establecidos se determinara como se simulara el funcionamiento de los mismos. • El software se simulara y validara en forma separa en entornos de desarrollo en otras arquitecturas. • Cada uno de los componentes de HW podrá ser simulador y validado en forma separada y luego en su interacción con el resto del sistema. • Una vez que los componentes del SoC son validados, se implementara el diseño y se validara el mismo a nivel de sistema. • Para esto se determinara cual sera el canal que permitira interactuar con el SoC: un canal de debugging interno o a traves de alguna de las interfaces funcionales de comunicación del SoC.

  11. Herramientas de desarrollo de diseños embebidos sobre FPGAs • Existen algunas herramientas que permiten desarrollar diseños de hardware que utilicen los dispositivos FPGA con un mayor nivel de abstracción (Electronic Design Automation o EDA) • Algunas permiten que se puedan utilizar dispositivos de lógica programable sin un intenso conocimiento de desarrollo de hardware. • Algunas inclusive poseen SDKs para la creación de los componentes de software. • Permiten validar funcionalmente el diseño antes de ser implementando en hardware. • Inclusive simular la comunicación entre la partición hardware y software.

  12. Ejemplo de hardware necesario para la implementación de un SoC • Para implementar el SoC se puede utilizar el kit de desarrollo Avnet FX12 Minimodule, compuesto por: • Una FPGA Virtex4 de la empresa XILINX. • Un puerto PHY 10/100/1000 Ethernet. • 64 MB DDR RAM. • Interfase serial RS232. • Interfase de programaciónJTAG.

  13. Ejemplo de hardware necesario para la implementación de un SoC (contd)

  14. Ejemplo de hardware necesario para la implementación de un SoC (contd)

  15. FPGA sin personalización FPGA Board FPGA uP FLASH GPIO SDRAM Serial Port Ethernet I/O Connector I/O Connector

  16. Fpga con diseño puramente de HW FPGA Board FPGA uP FLASH GPIO SDRAM Logic Serial Port Ethernet I/O Connector I/O Connector

  17. SOC - Codiseño HW/SW basado en PPC FPGA Board FPGA PowerPC FLASH Controller FLASH Card Logic PLB Bus Serial Port UART Controller Ethernet SDRAM Controller SDRAM I/O Connector I/O Connector

  18. Buses de interconexión • Toda plataforma de computo basada en microprocesador implementa un canal de comunicación entre el microprocesador y los distintos dispositivos de la plataforma. • Este canal de comunicación es conocido como bus y dependiendo de los requerimientos del sistema adopta diferentes características. • Algunos ejemplos de buses de interconexión en las PCs de escritorio son: PCI, PCI-X, PCIe, SMBus, Hypertransport, FSB, DMI, Quick Path Interconnect, etc.

  19. Buses de interconexión (contd) Evolución arquitectura Intel

  20. Buses de interconexión (contd) Evolución arquitectura AMD

  21. Ejemplos de SoC • En la industria y en la comunidad se pueden encontrar ejemplos de SoC. • Estos sistemas varían en el tipo de procesador, los buses de interconexión y los IPCores utilizados. • Los componentes ya desarrollados de los SoC disponibles en la industria y comunidad pueden ser utilizados en el contexto definidos por su licencia • Existen componentes con licencias GPL, LGPL, BSD, etc y otros con licencias propietarias del fabricante y de fuente cerrada. • Por lo general los SoC opensource no son dependientes de un fabricante si no que pueden ser implementados en cualquier tipo de FPGA.

  22. Ejemplos de SoC • Algunos ejemplos de SoC que desarrollaremos a continuación • SoC de XILINX (basado en PPC o Microblaze) • Milkymist SOC (basado en LaticceMico32) • GRLIB (Basado en LEON3) • Opensparc SOC (Basado en S1 Core de SUN) • Lattice SystemMico32 SoC (Basado en LaticceMico32) • MinSoC SoC (Basado en OpenRisc OR1200)

  23. SoC de Xilinx • Se desarrollan utilizando el entorno EDK. • El entorno provee una extensa librería de IPCores testeados y listos para ser usados. • El código de los IPCores esta disponible pero con licencias que no permiten su uso fuera del entorno de Xilinx • Se pueden usar siempre que se tenga la licencia de EDK. • Algunos IPCores son de libre uso dentro de EDK y otros requieren licencia extra. • El código de estos IPCores que requieren licencia extra no esta disponible. • El código de los IPCores, la instanciación de los mismos y de los templates necesarios para acceder a los buses esta desarrollado en VHDL.

  24. SoC de Xilinx (contd) • El procesador del sistema embebido puede ser un softcore (Microblaze) o, cuando esta disponible en la fpga a utilizar, un hardcore PowerPC. • El diseño se puede sintetizar solamente en FPGAs de Xilinx. • El diseño puede ser exportado a herramientas de la suite de desarrollo de Xilinx: ISE y PlanAhead. • IPCores pueden ser creados y agregados al diseño de manera simple mediante el uso de EDK.

  25. SoC de Xilinx (contd) • Se utilizan la familia de buses CrossConnect para la interconexión de los IPCores • Desarrollada por IBM • Esta compuesto por los siguientes buses • Processor Local Bus (PLB) • Device Control Register Bus (DCR) • On-Chip Peripheral Bus (OPB) • Fabric Coprocessor Bus (FCB) • Fast Simplex Link (FSL) • On-Chip Memory (OCM)

  26. SoC de Xilinx (contd) • La herramienta Embedded Development Kit (EDK) permite disponer, configurar e interconectar los distintos IP Cores para desarrollar una plataforma de computo funcional. • Facilita la creación de codiseños HW/SW • Permite validar, depurar y simular el diseño de hardware. • Permite desarrollar, depurar, validar y ejecutar software de control sobre el sistema embebido desarrollado en la FPGA.

  27. SoC de Xilinx (contd) • Se puede utilizar un ecosistema GNU para el desarrollo de SW. • Ambos procesadores poseen un toolchain gcc que los soporta. • Existen soporte para ambos procesadores y periféricos en uboot • Existe soporte para ambos procesadores y periféricos comunes en el mainline del kernel de linux • Existe además soporte para ambos procesadores en distintas herramientas opensource como buildroot, qemu, etc.

  28. IBM CoreConnect™ on-chip bus standard PLB, OPB, and DCR RocketIO Dedicated Hard IP DSOCM BRAM ISOCM BRAM Flexible Soft IP PowerPC 405 Core DCR Bus Instruction Data PLB OPB Bus Bridge Arbiter Arbiter Processor Local Bus On-Chip Peripheral Bus e.g. Memory Controller Hi-Speed Peripheral GB E-Net On-Chip Peripheral UART GPIO Off-Chip Memory ZBT SRAM DDR SDRAM SDRAM SoC de Xilinx - Sistema basado en PPC (hardcore) Full system customization to meet performance, functionality, and cost goals Source: Xilinx

  29. MicroBlaze 32-Bit RISC Core Possible in Virtex-II Pro LocalLink™ FIFO Channels OPB On-Chip Peripheral Bus Arbiter 0,1…….32 Custom Functions Custom Functions On-Chip Peripheral 10/100 E-Net UART SoC de Xilinx - Sistema basado en Microblaze (softcore) I-Cache BRAM Local Memory Bus Flexible Soft IP BRAM Configurable Sizes D-Cache BRAM Off-Chip Memory FLASH/SRAM Source: Xilinx

  30. OpenSPARC SoC • Basado en OpenSparc, el primer procesador opensource CMT de 64 bits • Versiones T1 y T2 liberadas, así como también una versión reducida y sintetizable en fpgas actuales: S1 core. • Procesador basado en arquitectura SparcV9 • Procesador con soporte en gcc, linux kernel, opensolaris y sun solaris studio. • El SoC esta compuesto por IPCores obtenidos de opencores. • El bus por defecto en los proyectos de opencores es Wishbone. • El procesador accede al bus wishbone a través de un bridge desarrollado para el proyecto • El bridge es necesario porque los IPCores se conectan a través de Wishbone y el CPU/FPU solo hablan CCX (Cache-processor interface y processor-cache interface) www.opensparc.net

  31. OpenSPARC SoC (contd)

  32. Xilinx Embedded Developer’s (EDK) Design MultiPort Memory Controller FPGA Boundary Block must be developed External DDR2 Dimm MCH-OPB MemCon PCX-FSL Interposer SPARC T1 Core Microblaze Proc Microblaze Debug UART SPARC T1 UART processor-to-crossbar interface (PCX) Fast Simplex Links interface (FSL) 10/100 Ethernet IBM Coreconnect OPB Bus OpenSPARC SoC (integración con SoC de Xilinx) (contd)

  33. GRLIB SoC • La GRLIB es una librería de IP Cores desarrollada por AeroFlex que permiten armar un SoC. • La librería incluye el softcore del procesador LEON3. • Procesador de 32 bits • Basado en SparcV8 • Posee MMU • Ademas se incluyen cores para controlar componentes off-chip (Memorias, Controladores Ethernet, controladores USB, GPIO, etc) y cores para implementar glue logic necesaria para el SoC. • El procesador se comunica a los dispositivos a través del bus AMBA AHB/APB. • El procesador posee soporte en GCC, Linux kernel, Uboot, Buildroot, etc. www.gaisler.com

  34. GRLIB SoC (contd)

  35. MinSoC SoC • Minimal OpenRisc SoC (MinSoC) es un proyecto de la comunidad opencores.org • Basado en el procesador de 32 bits insignia de la comunidad OpenRisc OR1200 • Main bus Wishbone • UART, controladores de Red y Memoria • Facilidades de debugging • MMU incluido • Soporte en GCC, linux, uboot y buildroot. http://opencores.com/project,minsoc

  36. MinSoC SoC (contd)

  37. Lattice SystemMico32 SoC • Desarrollado y liberado baja licencia GPL por la empresa Lattice • El entorno MicoSystem32 es un conjunto de IP cores y soft processor • Se desarrolla utilizando Mico System Builder (MSB) • Se basa en procesador de 32 bits LatticeMico32 • No posee MMU • Se comunica con el resto de los perifericos a traves del bus Wishbone • Lattice ofrece un toolchain gcc para poder desarrollar aplicaciones. • No existe soporto oficial en gcc, linux, buildroot ni uboot. • Si existe un port en RTEMS y uclinux. http://www.latticesemi.com/products/intellectualproperty/ipcores/mico32

  38. Lattice SystemMico32 SoC (contd)

  39. Lattice SystemMico32 SoC (contd)

  40. Milkymist SoC • SoC GPL desarrollado para el proyecto Milkymist (VJ render station) • Basado en el procesador LatticeMico32 • Multiples IPCores de comunicación, perifericos orientados a multimedia y aceleradores graficos. • Desarrollado enteramente desde cero en Verilog VHDL (Solamente el procesador fue reusado) • En continuo desarrollo en la comunidad. PCB propio desarrollado. • Es el SoC de referencia en la comunidad. Están apareciendo otros proyectos opensource basados en este. • Toolchain disponible. Mismo soporte en aplicaciones opensource que LatticeMico32 SoC. milkymist.org

  41. Milkymist SoC (contd)

  42. Milkymist SoC (contd)

  43. Roadmap del curso • Ecosistema SoC de Xilinx • Desarrollo de SoC usando PPC y Microblaze • Desarrollo de software de control standalone • Desarrollo de hardware y software de periferico especifico • Desarrollo de toolchain y rootfs mediante buildroot • Port del diseño de hardware a linux • Emulación del board utilizando QEMU • Utilización de ImpulseC para desarrollar periféricos específicos • Soporte para uboot

  44. Roadmap del curso (contd) • Ecosistema SoC opensource • Desarrollo de SoC usando procesador opensource y dispositivos de opencores.org • Desarrollo de software de control standalone • Desarrollo de hardware y software de periferico especifico • Desarrollo de toolchain y rootfs mediante buildroot • Port del diseño de hardware a linux • Emulación del board utilizando QEMU • Utilización de ImpulseC para desarrollar periféricos específicos • Soporte para uboot • Proyecto mixto?

  45. Gracias! Preguntas?

  46. Referencias • http://www.opensparc.net/ • http://utic.inti.gov.ar/publicaciones/Sase2010/FPGA_SoftCores_PARTE2.pdf • http://www.gaisler.com • http://milkymist.org/thesis/thesis.pdf • http://en.wikipedia.org/wiki/OpenRISC_1200 • http://opencores.com/project,minsoc • http://www.latticesemi.com/products/intellectualproperty/ipcores/mico32/index.cfm • http://milkymist.org/mmsoc.html

More Related