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
- Interfaz PMOD
- Algunos PMODs
- Placas FPGA con conexión directa de PMOD
- Conexión de placas PMOD a la Alhambra-II
- Conclusiones
- Autor
- Licencia
- Enlaces
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:
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
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:
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)
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:
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:
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:
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)
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:
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:
- Datasheet del PMOD: ld-qqspi-psram32.pdf
- Datasheet del bloque de memoria de 8MB: APM_PSRAM_QSPI-APS6404L-3SQR-v2.3-PKG.pdf
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
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
Este es el escenario:
En este vídeo de Youtube se muestra en acción:
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
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
Este es el escenario:
En este vídeo de Youtube se muestra su funcionamiento:
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
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
Este es el escenario:
En este vídeo de youtube se muestra el funcionamiento:
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
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
Este es el escenario:
En este vídeo de Youtube se muestra en acción:
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
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
Este es el escenario:
En este vídeo de Youtube se muestra su funcionamiento:
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
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
Este es el escenario:
En este vídeo de youtube se muestra el funcionamiento:
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) ey
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
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:
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:
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
Este es el escenario:
En este vídeo de youtube se muestra el funcionamiento:
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
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:
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:
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
Este es el escenario:
En este vídeo de Youtube se muestra en acción:
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
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:
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:
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:
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
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:
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
Este es el escenario:
En este vídeo de Youtube se muestra su funcionamiento:
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
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
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:
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
- Juan González-Gómez (Obijuan)