CT17: Periféricos PMOD - Obijuan/Cuadernos-tecnicos-FPGAs-libres GitHub Wiki

Descripción

Descripción de periféricos PMOD, documentación y ejemplos de uso en diferentes placas. Adaptador PMOD para la Alhambra-II

  • Icestudio: Todos los ejemplos se han probado con Icestudio-0.12. Usa esta versión o superior
  • Ejemplos: Todos los ejemplos de este cuaderno técnico están accesibles en su repositorio en github

Contenido

Introducción

Para conectar placas periféricas sencillas a nuestra FPGA podemos utilizar cables dupont (los vimos en el cuaderno técnico 16), para unir los pines de ambas placas, o para conectar directamente componentes discretos pinchados en una breadboard. Esto nos permite conectar fácilmente LEDs, pantallas LCDs, displays de 7 segmentos, etc.

En este ejemplo vemos cómo está conectada una placa con 4 pulsadores a los pines D0-D3 de la Alhambra-II, utilizando 5 cables dupont hembra-hembra (4 para los pulsadores y 1 para GND)

Sin embargo, aunque esta conexión es muy sencilla, nos podemos confundir al conectar los cables. O puede ocurrir que algún cable se suelte o que haga mal contacto. O que queramos probarlo en otra placa, por lo que hay que desconectar todo y conectarlo en la nueva placa.

En estos casos nos interesa que la placa periférica se conecte directamente a nuestra FPGA, sin necesidad de clables. Un ejemplo es la placa AP-LED8-THT que está diseñada para conectarse directamente a la Alhambra-II, y facilitar muchísimo las pruebas

Sin embargo, esto presenta otro problema. Cada fabricante define su propio conector y sólo se puede usar con sus propias placas. Lo ideal sería tener una INTERFAZ UNIVERSAL que permita, dentro de lo posible, utilizar una misma placa periférica para diferenes FPGAs

Ese es el objeto de la INTERFAZ PMOD: Peripheral MODules. Es un estándar abierto para construir placas periféricas, con pocos pines de datos y baja velocidad, que se pueda conectar a diferentes placas de FPGAs

Interfaz PMOD

La especifición oficial del PMOD está disponible en este documento PDF: pmod-interface-specification-1_3_1.pdf. En él se definen todos los tipos de conector a usar, las dimensiones, la disposición de los pines (pinout), etc.

En este cuaderno técnico lo resumiremos y presentaremos las ideas más imporantes

Terminología

Partimos de una placa principal con una FPGA, a la que llamaremos placa base. Queremos conectarle diferentes periféricos, que denominaremos PMODs

La conexión se realiza a través de 2 conectores, uno en la placa base y otro en el PDMO. El conector de la placa base es HEMBRA mientras que el conector del PMOD es MACHO

En esta foto se tiene la placa base Nandland go-board que tiene un conector hembra en su derecha, y una placa periférica de 8 LEDs, que tiene un conector macho

En esta otra figura está la placa periférica conectada a la go-board

La idea que hay detrás de todo esto es que los PMODS se puedan utilizar desde diferentes placas bases. Así por ejemplo, un PMOD de 8 leds lo podemos usar con la placa Icestick, o bien con la NandLand Go-board. El mismo PMOD lo reutilizamos entre dos placas diferentes:

En esta foto vemos el PMOD anterior conectado a una placa icestick

Y en esta otra foto está conectado a una placa icebreaker

Esta es la clave: el mismo periférico puede conectarse a diferentes placas, gracias a que la interfaz es abierta

Tipos de conectores para PMODs

En el estándar de PMOD se definen dos interfaces: una formada por conectores de 6 pines y la otra de 12 pines. El conector de la placa base SIEMPRE es una HEMBRA, mientras que el conector del periférico (PMOD) siempre es MACHO

Interfaz de 6 pines

Esta es la interfaz mínima. Consta sólo de 6 pines, de los cuales uno es GND, otro VCC y los 4 pines restantes para datos. Se numeran desde el 1 hasta el 6. El pin 5 SIEMPRE es GND, y el 6 SIEMPRE es VCC

Pin Descripcion
1 Dato
2 Dato
3 Dato
4 Dato
5 GND
6 VCC

La numeración de los conectores de la placa base y el periférico tienen SIMETRIA DE ESPEJO. Esto es así para que al conectarse queden unidos los pines con el mismo número

En esta figura se resume el pinout de los conectores PMOD de 6 vías

Interfaz de 12 pines

Esta es la interfaz más común. Consta de 12 pines divididos en dos filas de 6 pines (2x6), una encima de la otra. La fila superior es similar a la interfaz de 6, con la misma numeración: Pines 1-4 de datos, Pin 5 es GND y Pin 6 es VCC

En la segunda fila los pines 7-10 son de datos, el Pin 11 es GND y el Pin 12 de VCC

Pin Descripcion Pin Descripcion
1 Dato 7 Dato
2 Dato 8 Dato
3 Dato 9 Dato
4 Dato 10 Dato
5 GND 11 GND
6 VCC 12 VCC

En esta interfaz en total hay 8 pines de datos, dos de GND y dos de VCC. La idea es que ambas filas pueden ser independientes, y son compatibles con interfaces de 6 vías. Es decir, que el interfaz de 12 pines se puede ver en realidad como 2 interfaces de 6 pines apilados (y se podrían usar de manera independiente)

Los pines 5 y 11 SIEMPRE son de GND. Los pines 6 y 12 SIEMPRE son de VCC


La numeración de los conectores de la placa base y el periférico tienen SIMETRIA DE ESPEJO. Esto es así para que al conectarse queden unidos los pines con el mismo número

En esta figura se resume el pinout de los conectores PMOD de 12 vías

Algunos PMODs

En esta sección se muestran algunos módulos PMODs, mostrando sus detalles y haciendo circuitos de ejemplo de conexión a la placa IceBreaker

Digilent PMOD 8LD: 8 LEDs

La placa PMOD 8LD de Digilent tiene 8 LEDs verdes. Utiliza una interfaz de 12 pines (2x06)

Este es su pinout:

PMOD pin Señal PMOD pin Señal
1 LD0: LED 0 7 LD4: LED 4
2 LD1: LED 1 8 LD5: LED 5
3 LD2: LED 2 9 LD6: LED 6
4 LD3: LED 3 10 LD7: LED 7
5 GND 11 GND
6 VCC 12 VCC

En esta foto se muestra el PMOD 8LD conectado a la placa Icebreaker (al conector PMOD1A)

Ejemplo 1: Patrón 0xAA en LEDs

Este es el circuito para probar la placa PMOD 8LD en la icebreaker: se muestra el patrón 0xAA (10101010) en los LEDs
Los LEDs se activan mediante Lógica positiva por lo que basta con enviar el valor 0xAA directamente:

(Ej-01-8LD-icebreaker.ice)

Y esto es lo que se muestra en los LEDs:

Icebreaker DIP Switch: 8 switches

La placa PMOD DIP-Switch de 1BitSqueare tiene 8 micro Switches. Utiliza una interfaz de 12 pines (2x06)

Este es su pinout:

PMOD pin Señal PMOD pin Señal
1 SW1 7 SW5
2 SW2 8 SW6
3 SW3 9 SW7
4 SW4 10 SW8
5 GND 11 GND
6 VCC 12 VCC

En esta foto se muestra el PMOD Switch-Dip conectado a la placa Icebreaker (al conector PMOD1B)

Ejemplo 2: Mostrar los switches en los LEDs

Circuito de prueba del PMOD DIP-SWITCHES. Está conectado al PMOD1B de la Icebreaker. El estado de los switches se muestra directamente en los 8 leds del PMOD 8LDs, que se encuentra conectado al conector PMOD1A

(Ej-02-DIP-Switch-icebreaker.ice)

Este es el resultado. En los switches se ha metido el valor 11100011, que es justo lo que se muestra en los LEDs:

Icebreaker: PMOD de Test

La placa icebreaker viene por defecto con un PMOD de test, integrado en la propia placa, en la parte de la derecha. Dispone de 3 pulsadores (B1, B2, B3) y 5 LEDs (L1, L2, L3, L4, L5)

Opcionalmente este PMOD se puede separar del PCB principal (partiendo la icebreaker como si fuese una galleta), obteniendo la placa base icebreaker por un lado y el PMOD de test por otro. Hay que soldar el conector hembra a la icebreaker y el macho a al PMOD de test. Este es el resultado:

Este es el aspecto del PMOD de test

El LED 1 (L1) es rojo, y el resto de LEDs verdes (L2, L3, L4 y L5)

La ventaja de tener el PMOD de Test separado es que se puede usar como cualquier otro PMOD, y conectarlo a cualquier otra placa que tenga interfaces PMOD

Este es su pinout:

PMOD pin Señal PMOD pin Señal
1 L2 7 L1
2 L3 8 L4
3 L5 9 B1
4 B2 10 B3
5 GND 11 GND
6 VCC 12 VCC

Ejemplo 3: Botones en LEDs

En este ejemplo se encienden los LEDs L1 (rojo) y L5 (verde). Los botones B1, B2 y B3 controlan los LEDs L2, L3 y L4 respectivamente

(Ej-03-Test-Button-LEDs.ice)

Este es el escenario, una vez cargado el circuito y sin ningún botón apretado:

El LED L1 (rojo) y el L5 (verde) están encenidos. El resto están apagados porque no hay ningún botón pulsado

En este vídeo de youtube se muestra el funcionamiento cuando se aprietan los botones:

Click to see the youtube video

Icebreaker: Dos Displays de 7 segmentos

La placa 7segment de 1bitsqueared dispone de 2 displays de 7 segmentos. Utiliza una interfaz de 12 pines (2x06)

Los displays de 7 segmentos son de cátodo común, por lo que trabaja en lógica negativa (1=Segmento apagado. 0: Segmento encendido). La señal CAT es la que selecciona qué display usar:

  • CAT = 1: Display derecho
  • CAT = 0: Display izquiedo

Este es su pinout:

PMOD pin Señal PMOD pin Señal
1 Segmento A (AA) 7 Segmento E (AE)
2 Segmento B (AB) 8 Segmento F (AF)
3 Segmento C (AC) 9 Segmento G (AG)
4 Segmento D (AD) 10 Selección de display (CAT)
5 GND 11 GND
6 VCC 12 VCC

Esta es la denominación de los segmentos:

Ejemplo 4: Encender todos los segmentos de un display

En este ejemplo se comprueban todos los segmentos de uno de los displays. Se encienden todos los segmentos del display seleccionado. La selección se hace con el botón 1 (Del PMOD2, el que está integrado en la Icebreaker)

(Ej-04-7Seg-lamp-test.ice)

Este es el resultado, cuando no está apretado el botón 1. Todos los segmentos del display izquierdo están encendidos

En este vídeo de youtube se muestra su funcionamiento:

Click to see the youtube video

Ejemplo 5: Mostrando un número en cada display (modo manual)

En este ejemplo se muestran dos dígitos, uno en cada display. En el display izquierdo se muestra el dígito 0, y en el derecho el dígito 1. Con el pulsador B1 se muestra manualmente qué display activar

(Ej-05-7Seg-digits-manual.ice)

Este es el resultado al cargar el circuito:

En este vídeo de youtube se muestra su funcionamiento:

Click to see the youtube video

Ejemplo 6: Mostrando un número de dos dígitos (modo automático)

Este circuito muestra el número 01 en los dos displays. Para lograr que se vea correctamente hay que activar alternativamente el display izquierdo y el derecho, a una frecuencia elevada para que no lo perciba el ojo humano

En cada instante de tiempo sólo hay un display activo, pero como se activan a la suficiente velocidad, el ojo humano NO lo percibe, y lo ve todo como si estuviesen los dos displays activados a la vez

Esto permite mostrar dos dígitos utilizando menos bits que si tenemos dos displays en paralelo (8 bits frente a 14)

Este es el circuito:

(Ej-06-7Seg-digits-auto.ice)

Y esto es lo que se muestra en los displays de 7 segmentos:

PMOD-Audio

La placa PMOD-Audio de MuseLab dispone de 2 canales de audio (izquierdo y derecho) con volumen ajustable, que se sacan por un altavoz o salida de cascos. Utiliza una interfaz de 12 pines (2x06) aunque sólo usa 2 pines

Este es su pinout:

PMOD pin Señal PMOD pin Señal
1 No usado 7 Canal izquierdo (Altavoz)
2 No usado 8 Canal derecho
3 No usado 9 No usado
4 No usado 10 No usado
5 GND 11 GND
6 VCC 12 VCC

Ejemplo 7: Pitido de 100Hz con pulsador

Este circuito emite un pitido de 100Hz por ambos canales. Se oye tanto por el altavoz como por los cascos (por ambos canales)

(Ej-07-Audio.ice)

Este es el escenario. El periférico de Audio está conectado al PMOD1A de la placa Icebreaker:

En este vídeo de youtube se muestra su funcionamiento:

Click to see the youtube video

QQSPI PSRAM Pmod (32MB)

La placa QQSPI PSRAM de Machdyne es un PMOD con memoria RAM de 32MBytes accesible por SPI. Utiliza una interfaz de 12 pines (2x06)

Este es su pinout:

PMOD pin Señal PMOD pin Señal
1 SS 7 SIO2
2 MOSI (SIO0) 8 SIO3
3 MISO (SIO1 9 CS0
4 SCLK 10 CS1
5 GND 11 GND
6 VCC 12 VCC

El periférico está formado por 4 bloques de 8MB (32MB en total). La selección de cada bloque se hace con las señales CS0 y CS1 según la siguiente tabla:

CS0 CS1 Bloque
0 0 Bloque 0 (8MB)
0 1 Bloque 1 (8MB)
1 0 Bloque 2 (8MB)
1 1 Bloque 3 (8MB)

Para la transferencia de datos entre la memoria y la FPGA se pueden utilizar dos modos:

  • Modo SPI: Transmisión sería síncrona, típica del SPI. Se usan las señales MOSI y MISO. Se transfiere un bit por cada señal de reloj. Es el modo por defecto
  • Modo QPI: La transferencia se hace en grupos de 4 bits, por los pines SIO0, SIO1, SIO2 y SIO3

En estas hojas de datos se puede encontrar más información:

Para la utilización de este módulo se requiere de un controlador específico, que diseñaremos en un cuaderno técnico futuro. Como ejemplo se utilizará un circuito tomado del cuaderno técnico 15: Memoria Flash para leer el identificador de la memoria

Ejemplo 8: Lectura del identificador de la memoria

Este circuito comprueba el funcionamiento del PMOD, leyendo el identificador de la RAM. Al apretar el pulsador B1 se leen 4 bytes del identificador de la RAM y se muestran en los LEDs. Primero se muestra el byte 0, que es 0x0D. Con el botón B2 se muestran los 3 bytes restantes, cuyos valores son 0x5D,0x52, 0xF6

(Ej-08-QQSPI-PSRAM-ReadId.ice)

El módulo de la RAM está conectado al PMOD1A, y los LEDs en el PMOD1B. Este es el escenario:

En este vídeo de Youtube se muestra su funcionamiento. Al apretar el botón B2 se muestran en los LEDs los bytes consecutivos del identificador

Click to see the youtube video

Placas FPGA con conexión directa de PMOD

Muchas de las placas con FPGAs libres disponen de uno o varios conectores PMOD, de 12 vías, para enchufar diferentes periféricos. Y esto es algo muy cómodo: Poder usar el mismo periférico en diferentes placas, de distintos fabricantes y con FPGAs diferentes

En este apartado vamos a mostrar ejemplo de prueba de conexión de PMODs en diferentes placas base

Icestick

La placa Icestick tiene un único conector para PMODs de 12 vías. Este es su pinout:

Ejemplo 9: Animación en los LEDs

Ejemplo de uso del PMOD de 8 LEDs en la Icestick. Movimiento de un LED desplazándose de izquierda a derecha

(Ej-09-Icestick-LEDs.ice)

Este es el escenario:

En este vídeo de Youtube se muestra en acción:

Click to see the youtube video

Ejemplo 10: Switches en LEDs

En este ejemplo se conecta el PMOD de 8 switches a la Icestick. El estado de los switches de 1 a 5 se muestran en los 5 LEDs integrados en la icestick

(Ej-10-Icestick-switches.ice)

Este es el escenario. Para hacer las pruebas se han activado los switches 1,2 y 5:

Aquí se muestra en otro ángulo. Los LEDs 1,2 y 5 están encendidos. Los otros dos apagados

Ejemplo 11: Botones en LEDs

En este ejemplo se prueba el PMOD de Test de 3 pulsadores y 5 LEDs en la Icestick. Los LEDs L1 y L5 están encendidos. Los botones B1, B2 y B3 se conectan a los LEDs L2, L3 y L4

(Ej-11-Icestick-test.ice)

Este es el escenario:

En este vídeo de Youtube se muestra su funcionamiento:

Click to see the youtube video

Ejemplo 12: Displays de 7 segmentos

Ejemplo de uso del PMOD con 2 displays de 7 segmentos en la Icestick. Se muestran el número 01 en los displays

(Ej-12-7seg.ice)

Este es el escenario:

Ejemplo 13: Sirena

Ejemplo de uso del PMOD de Audio. Se emite una sirena compuesta por dos tonos alternantes de 100 y 200 Hz. Se alternan a la frecuencia de 2 Hz

(Ej-13-Audio.ice)

Este es el escenario:

En este vídeo de youtube se muestra el funcionamiento:

Click to see the youtube video

Ejemplo 14: QQSPI RAM

Ejemplo del uso del PMOD de RAM serie en la Icestick. Se leen 5 bits del identificador del chip de RAM y se muestran en los LEDs de la Icestick. El primer byte leido dege ser 0x0D por lo que si el acceso es correcto se deben encender los LEDs D4, D3 Y D1

(Ej-14-QQSPI-RAM.ice)

Este es el escenario:

Si la lectura del identificador es correcta, se deben ver los 3 LEDs rojos encendidos: D1, D3 y D4:

Icebreaker

La placa icebreaker dispone de 3 conectores de PMODs: PMOD1A, PMOD1B y PMOD2. Es la placa que hemos usado para mostrar el funcionamient de los PMODs, por lo que todos los ejemplos se pueden encontrar en la sección Algunos PMODs

Nandland Go-Board

La placa Go-Board tiene un único conector para PMODs de 12 vías. Este es su pinout:

Ejemplo 15: Animación en los LEDs

Ejemplo de uso del PMOD de 8 LEDs en la Go-board. Movimiento de un LED desplazándose de izquierda a derecha

(Ej-15-Go-board-LEDs.ice)

Este es el escenario:

En este vídeo de Youtube se muestra en acción:

Click to see the youtube video

Ejemplo 16: Switches en LEDs

En este ejemplo se conecta el PMOD de 8 switches a la Go-Board. El estado de los switches de 1 a 4 se muestran en los 4 LEDs integrados en la Go-board

(Ej-16-Go-board-switches.ice)

Este es el escenario. Para hacer las pruebas se han activado los switches 1,2 y 4, y por tanto se encienden los LEDs D1,D2 y D4:

Ejemplo 17: Botones en LEDs

En este ejemplo se prueba el PMOD de Test de 3 pulsadores y 5 LEDs en la Go-board. Los LEDs L1 y L5 están encendidos. Los botones B1, B2 y B3 se conectan a los LEDs L2, L3 y L4

(Ej-17-Go-board-test.ice)

Este es el escenario:

En este vídeo de Youtube se muestra su funcionamiento:

Click to see the youtube video

Ejemplo 18: Displays de 7 segmentos

Ejemplo de uso del PMOD con 2 displays de 7 segmentos en la Go-Board. Se muestra el número 01 en los displays

(Ej-18-Go-board-7seg.ice)

Este es el escenario:

Ejemplo 19: Sirena

Ejemplo de uso del PMOD de Audio. Se emite una sirena compuesta por dos tonos alternantes de 100 y 200 Hz. Se alternan a la frecuencia de 2 Hz

(Ej-19-Go-board-Audio.ice)

Este es el escenario:

En este vídeo de youtube se muestra el funcionamiento:

Click to see the youtube video

Ejemplo 20: QQSPI RAM

Ejemplo del uso del PMOD de RAM serie en la Go-Board. Se leen 5 bits del identificador del chip de RAM y se muestran en los LEDs de la Go-board. El primer byte leido dege ser 0x0D por lo que si el acceso es correcto se deben encender los LEDs D1, D2 y D4

(Ej-20-Go-board-QQSPI-RAM.ice)

Este es el escenario. Si la lectura del identificador es correcta, se deben ver los 3 LEDs encendidos: D1, D2 y D4

Icesugar

La placa Icesugar tiene tres conectores para PMODs de 12 vías, denominados PMOD1, PMOD2 y PMOD3.

El PMOD1 es especial, y tiene pines compartidos con otros recursos de la icesugar: El puerto serie (TX, RX) y dos pines del usb superior. Para que el puerto serie no interfiera hay que quitar los jumpers J5

En el lateral derecho de la placa hay un único conector hembra. La parte superior es el PMOD2 y la parte inferior el PMOD3. En la parte central hay 7 pines disponibles de propósito general (J7)

Este es el pinout del PMOD1:

La notación Px se refiere al número de pin de la FPGA, y está marcado en la parte inferior de las serigrafías de la placa

[!Note] En Icestudio se utiliza esta misma notación, PERO es mejor cambiarlo en versiones futuras. La notación correcta sería Px_y, donde x se refiere al número de PMOD (1,2,3) e y el pin del pmod (1,2,3,4,7,8,9,10)

Este es el pinout del PMOD2 y PMOD3:

En esta tabla se resumen los pines de los PMODs de la Icesugar:

Pin PMOD PMOD1 PMOD2 PMOD3
1 P10 P46 P34
2 P6 P44 P31
3 P3 P42 P27
4 P48 P37 P25
5 GND GND GND
6 VCC VCC VCC
7 P9 P45 P32
8 P4 P43 P28
9 P2 P38 P26
10 P47 P36 P23
11 GND GND GND
12 VCC VCC VCC

Ejemplo 21: Animación en los LEDs

Ejemplo de uso del PMOD de 8 LEDs en la icesugar. Movimiento de un LED desplazándose de izquierda a derecha. La misma secuencia del LED se saca por TODOS los PMODS: PMOD1, PMOD2 y PMOD3

(Ej-21-Icesugar-LEDs.ice)

En este escenario está la icesugar a la que se le han conectado 2 placas de 8 leds, en el PMOD1 y PMOD2:

Y en este otro escenario las mismas placas de LEDs están conectadas en el PMOD2 y PMOD3:

En este vídeo de Youtube se muestra en acción:

Click to see the youtube video

Ejemplo 22: Switches y botones en LEDs

Ejemplo de uso del PMOD de 8 switches y del PMOD de Test en la Icesugar. Los Switches se muestran en los LEDs conectados al PMOD2.
En el PMOD de test, los LEDs L1 y L5 se encienden. Los botones B1,B2 y B3 se conectan a los LEDs L2, L3 y L4 respectivamente

(Ej-22-Icesugar-switch-butt-LEDs.ice)

Este es el escenario:

En este vídeo de Youtube se muestra su funcionamiento:

Click to see the youtube video

Ejemplo 23: QQSPI-RAM y Display de 7 segmentos

Ejemplo de uso del PMOD QQSPI-RAM y del PMOD Display de 7 segmentos en la Icesugar. En el display de 7 segmentos se muestra el número 01. El identificador de la RAM se lee y se muestra en los LEDs. Si la lectura es correcta se muestra el valor 0x0D en binario

(Ej-23-Icesugar-QQSPI-RAM-7seg.ice)

Este es el escenario:

Comprobamos que efectivamente en los LEDs se muestra el valor 0x0D

Ejemplo 24: Sirena

Ejemplo de uso del PMOD de Audio en la icesugar. Se emite una sirena compuesta por dos tonos alternantes de 100 y 200 Hz. Se alternan a la frecuencia de 2 Hz

(Ej-24-Icesugar-Audio.ice)

Este es el escenario:

En este vídeo de youtube se muestra el funcionamiento:

Click to see the youtube video

Radiona ULX3S-12F

La placa ULX3S permite conectar cuatro PMODS de 12 vías. Dispone de dos conectores de 40 pines hembra en ambos lados. En posiciones específicas de estos conectores es donde se conectan los PMODS. El fabricante NO ha numerado estos PMODS. Nosotros usaremos la notación PMOD1, PMOD2, PMOD3 y PMOD4

En esta foto se han conectado 4 PMODs, para apreciar sus posiciones. El PMOD2 está alineado con la parte inferior, y el PMOD3 lo está con la parte superior. El PMOD1 y el PMOD4 están en el interior. La conexión de los PMODs NO es simétrica

Pinout: PMOD1 y PMOD2

Aquí se muestran más detalles del PMOD1 y PMOD2, donde se han conectado las dos placas de LEDs

Este es el pinout:

Pinout: PMOD3 y PMOD4

Aquí se muestran más detalles del PMOD3 y PMOD4, donde se han conectado las dos placas de LEDs

Este es el pinout:

En esta tabla se resumen los pines de TODOS los PMODs de la ULX3S:

Pin PMOD PMOD1 PMOD2 PMOD3 PMOD4
1 gn24 gn17 gn3 gn10
2 gn23 gn16 gn2 gn9
3 gn22 gn15 gn1 gn8
4 gn21 gn14 gn0 gn7
5 GND GND GND GND
6 VCC VCC VCC VCC
7 gp24 gp17 gp3 gp10
8 gp23 gp16 gp2 gp9
9 gp22 gp15 gp1 gp8
10 gp21 gp14 gp0 gp7
11 GND GND GND GND
12 VCC VCC VCC VCC

Ejemplo 25: Animación en los LEDs

Ejemplo de uso del PMOD de 8 LEDs en la ULX3S. Movimiento de un LED desplazándose de izquierda a derecha. La misma secuencia del LED se saca por TODOS los PMODS: PMOD1, PMOD2, PMOD3 y PMOD4

(Ej-25-ULX3S-LEDs.ice)

En este escenario se muestra la ULX3S a la que se le han conectado 2 placas de 8 leds, en el PMOD1 y PMOD2:

Y en este otro escenario las mismas placas de LEDs están conectadas en el PMOD3 y PMOD4:

En este vídeo de Youtube se muestra en acción:

Click to see the youtube video

Ejemplo 26: Switches y botones en LEDs

Ejemplo de uso del PMOD de 8 switches y del PMOD de Test en la ULX3S. Los Switches se muestran en los LEDs conectados al PMOD1.
En el PMOD de test, los LEDs L1 y L5 se encienden. Los botones B1,B2 y B3 se conectan a los LEDs L2, L3 y L4 respectivamente

(Ej-26-ULX3S-Switch-butt-LEDs.ice)

Este es el escenario:

En este vídeo de Youtube se muestra su funcionamiento:

Click to see the youtube video

Ejemplo 27: Display de 7 segmentos y Audio

Ejemplo de uso del PMOD Display de 7 segmentos y el PMOD de audio en la ULX3S. En el display de 7 segmentos se muestra el número 01
En el audio se reproduce una sirena compuesta por 2 tonos alternantes, de 100 y 200 Hz

(Ej-27-ULX3S-7seg-Audio.ice)

Este es el escenario:

En este vídeo de Youtube se muestra en acción:

Click to see the youtube video

MyStorm BlackIce

La placa Mystorm BlackIce permite conectar seis PMODS de 12 vías y 2 de 6 vías. Sin embargo la numeración de cada PMOD la toma como si fuesen 14 PMODs simples (de 6 vías). Así, tenemos los sigueintes PMODS: PMOD1/2, PMOD3/4, PMOD5/6, PMOD7/8, PMOD9/10, PMOD11/12, que son dobles y PMOD13 y PMOD14 que son simples. El PMOD14 Comparte sus pines con los LEDS: LED1, LED2, LED3 y LED4

Pinout: PMOD1/2, PMOD3/4 y PMOD5/6

Este es el pinout del PMOD1/2, PMOD3/4 y PMOD5/6

Pinout: PMOD7/8, PMOD9/10 y PMOD11/12

Este es el pinout del PMOD7/8, PMOD9/10 y PMOD11/12:

Pinout: PMOD13 y PMOD14

Este es el pinout de los PMOD13 y PMOD14, que son de 6 vías (simples):

Tabla resumen

En esta tabla se resumen los pines de TODOS los PMODs de la BlackIce:

Pin PMOD1/2 PMOD3/4 PMOD5/6 PMOD7/8 PMOD9/10 PMOD11/12 PMOD13 PMOD14
1 P10 P30 P50 P70 P90 P110 P130 P140
2 P11 P31 P51 P71 P91 P111 P131 P141
3 P12 P32 P52 P72 P92 P112 P132 P142
4 P13 P33 P53 P73 P93 P113 P133 P143
5 GND GND GND GND GND GND GND GND
6 VCC VCC VCC VCC VCC VCC VCC VCC
7 P20 P40 P60 P80 P100 P120 --- ---
8 P21 P41 P61 P81 P101 P121 --- ---
9 P22 P42 P62 P82 P102 P122 --- ---
10 P23 P43 P63 P83 P103 P123 --- ---
11 GND GND GND GND GND GND --- ---
12 VCC VCC VCC VCC VCC VCC --- ---

Ejemplo 28: Animación en los LEDs

Ejemplo de uso del PMOD de 8 LEDs en la BlackIce. Movimiento de un LED desplazándose de izquierda a derecha. La misma secuencia del LED se saca por TODOS los PMODS: PMOD1/2, PMOD3/4, PMOD5/6, PMOD7/8, PMOD9/10, PMOD11/12, PMOD13 y PMOD14

(Ej-28-BlackIce-LEDs.ice)

En este escenario se muestra la BlackIce a la que se le han conectado 2 placas de 8 leds, en el PMOD1/2 y PMOD7/8:

En este vídeo de Youtube se muestra en acción:

Click to see the youtube video

Ejemplo 29: Switches y botones en LEDs

Ejemplo de uso del PMOD de 8 switches y del PMOD de Test en la BlackIce. Los Switches se muestran en los LEDs conectados al PMOD5/6.
En el PMOD de test, los LEDs L1 y L5 se encienden. Los botones B1,B2 y B3 se conectan a los LEDs L2, L3 y L4 respectivamente

(Ej-29-BlackIce-Switch-butt-LEDs.ice)

Este es el escenario:

En este vídeo de Youtube se muestra su funcionamiento:

Click to see the youtube video

Ejemplo 30: Display de 7 segmentos y Audio

Ejemplo de uso del PMOD Display de 7 segmentos y el PMOD de audio en la Blackice. En el display de 7 segmentos se muestra el número los01
En el audio se reproduce una sirena compuesta por 2 tonos alternantes, de 100 y 200 Hz

(Ej-30-BlackIce-7seg-Audio.ice)

Este es el escenario:

En este vídeo de Youtube se muestra en acción:

Click to see the youtube video

Ejemplo 31: QQSPI-RAM

Ejemplo de uso del PMOD QQSPI-RAM en la BlackIce. El identificador de la RAM se lee y se muestra en los LEDs. Si la lectura es correcta se muestra el valor 0x0D en binario

(Ej-31-BlackIce-QQSPI-RAM.ice)

Este es el escenario:

Comprobamos que efectivamente en los LEDs se muestra el valor 0x0D

Conexión de placas PMOD en la Alhambra II

La placa Alhambra-II NO dispone de conectores para enchufar directamente placas PMOD. Por ello necesitamos utilizar una placa adaptadora, como la AP-PMOD

Adaptador PMOD para Alhambra-II: AP-PMOD

Para hacer las pruebas con este cuaderno técnico he construido dos prototipos de adaptadores PMOD, ambos para PMODs de 12 pines. Uno es el cĺasico, con un conector 2x6 hembra acodado. El otro es un conector 2x6 hembra recto

En estas fotos se muestran los prototipos conectados a la Alhambra-II

En esta foto se ha conectao el Prototipo 1 (Con conector acodado) a la Alhambra-II y a su izquierda se ha conectado una placa de 6 LEDs. Es importante notar que la placa NO se puede extender por la izquierda (sí por la derecha) porque si no colisionaría con otras placas conectadas. En la foto se ve claramente que NO hay colisión entre ambos periféricos. Esto es algo que hay que tener en cuenta al construir los prototipos

Pinout

Este es el Pinout del Prototipo 1, con el conector acodado:

Y este es el Pinout del Prototipo 2, con el conector recto:

Construcción del prototipo 1

En el Cuaderno técnico 16: Conexión de LEDs en la Alhambra II. Placa AP‐LED8‐THT se muestran los materiales y enlaces para la construcción de placas prototipos en PCB

Material necesario:

  • 1xPlaca de PCB prototipo de 30x70mm. Tiene 24x10 taladros con paso de 100 mils (2.54mm)
  • 1xConector hembra acodado de 2x6 pines y paso de 2.54mm (100 mils)
  • 3xConectores hembra de 8 pines y paso de 2.54mm (100 mils)
  • Cable de Wrapping

La placa de PCB prototipo es más grande de lo necesario. Para construir la placa la recortamos a un tamaño de 10x11 taladros

Opcionalmente se puede recortar la parte izquiera de la placa, para que los taladros queden tangentes al lado izquierdo. Esto será útil para dejar espacio por si queremos conectar otros periféricos en los pines D8-D13 de la Alhambra-II

En esta figura se muestra un diagrama de las conexiones. Las de la parte superior están hechas directamente con estaño, uniendo pines adyacentes (Azul). Las de la cara inferior (Rojas) están hechas con estaño y cables de wrapping

Este es el aspecto de la placa

Ejemplo 32: Animación en los LEDs

Ejemplo de uso del PMOD de 8 LEDs en la Alhambra-II. Movimiento de un LED desplazándose de izquierda a derecha

(Ej-32-Alhambra-II-LEDs.ice)

Este es el escenario, usando el Prototipo 1 (acodado):

Este es el mismo escenario, usando el Prototipo 2 (recto):

En este vídeo de Youtube se muestra en acción:

Click to see the youtube video

Ejemplo 33: Switches en LEDs

En este ejemplo se conecta el PMOD de 8 switches a la Alhambra-II. El estado de los switches de 1 a 8 se muestran en los 8 LEDs integrados de la Alhambra-II

(Ej-33-Alhambra-II-Switches.ice)

Este es el escenario. Para hacer las pruebas se han activado los switches 1,2,6,7 y 8, y por tanto se encienden los LEDs 0,1,5,6 y 7:

Ejemplo 34: Botones en LEDs

En este ejemplo se prueba el PMOD de Test de 3 pulsadores y 5 LEDs en la Alhambra-II. Los LEDs L1 y L5 están encendidos. Los botones B1, B2 y B3 se conectan a los LEDs L2, L3 y L4

(Ej-34-Alhambra-II-Test.ice)

Este es el escenario:

En este vídeo de Youtube se muestra su funcionamiento:

Click to see the youtube video

Ejemplo 35: Displays de 7 segmentos

Ejemplo de uso del PMOD con 2 displays de 7 segmentos en la Alhambra-II. Se muestra el número 01 en los displays

(Ej-35-Alhambra-II-7Seg.ice)

Este es el escenario:

Ejemplo 36: Sirena

Ejemplo de uso del PMOD de Audio. Se emite una sirena compuesta por dos tonos alternantes de 100 y 200 Hz. Se alternan a la frecuencia de 2 Hz

(Ej-36-Alhambra-II-Audio.ice)

Este es el escenario:

[!Note]
El PMOD de audio funciona a 3.3V. La alimentación de la Alhambra-II es de 5v. Sin embargo el PMOD de audio funciona correctamente. Parece seguro utilizarlo con la Alhambra-II

En este vídeo de youtube se muestra el funcionamiento:

Click to see the youtube video

Conclusiones

Los PMODs son el camino a seguir. Podemos aprender a controlar un mismo periférico, usando la placa base con FPGA que más nos guste, o que mejor se ajuste a nuestros proyectos. Gracias al PMOD NO es necesario comprar periféricos para las diferentes placas, sino que las podemos reutilizar fácilmente

Autor

Licencia

Enlaces