diff --git a/README.md b/README.md index c609f6c..a9c4988 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Jedi Collection [![Icestudio](https://img.shields.io/badge/collection-icestudio-blue.svg)](https://github.com/FPGAwars/icestudio) -![Version](https://img.shields.io/badge/version-v1.6.0-orange.svg) +![Version](https://img.shields.io/badge/version-v1.7.0-orange.svg) Blocks created in the Jedi Hardware academy. @@ -9,7 +9,7 @@ Blocks created in the Jedi Hardware academy. ## Install -* Download the collection: [stable](https://github.com/FPGAwars/Collection-Jedi/archive/v1.6.0.zip) or [development](https://github.com/FPGAwars/Collection-Jedi/archive/master.zip) +* Download the collection: [stable](https://github.com/FPGAwars/Collection-Jedi/archive/v1.7.0.zip) or [development](https://github.com/FPGAwars/Collection-Jedi/archive/master.zip) * Install the collection: *Tools > Collections > Add* * Load the collection: *Select > Collection* @@ -83,6 +83,7 @@ Blocks created in the Jedi Hardware academy. * Mux-2-1 * Mux-4-1-bus * Mux-4-1 + * Mux-8-1 * *Puertas* * and * nand @@ -509,6 +510,7 @@ Blocks created in the Jedi Hardware academy. * *06_bits* * Agregador-1-5 * Agregador + * Separador-6x1 * *07_bits* * Agregador-7x1 * Agregador @@ -686,6 +688,8 @@ Blocks created in the Jedi Hardware academy. * brillo-gradual-8 * fade-out-8 * *Maquinas* + * serialize-2-16bits + * serialize-2 * *Basicas* * Wait-ms * *Componentes* @@ -794,9 +798,21 @@ Blocks created in the Jedi Hardware academy. * *Retardo* * Tortuga-2 * *SPI* + * *SPI-master* + * serial-SPI-mode0-2MHz + * spi-master-mode0-2MHZ + * spi-master-reg + * *parts* + * SPI-heart-2MHZ * *SPI-slave* * SPI-cmd-regs + * SPI-slave-mode0-2MHZ * SPI-slave-unit + * *Test* + * spi-slave-test-cmd + * spi-slave-test-echo + * spi-slave-test-id + * spi-slave-test-regs * *Serial* * Serial-rx * Serial-tx @@ -880,8 +896,22 @@ Blocks created in the Jedi Hardware academy. * 06-inout-test-03 * 07-inout-dos-circuitos * *SPI* + * *SPI-master* + * 01-2-spi-master-constant + * 02-spi-master-lectura-id + * 03-spi-master-lectura-escritura + * 04-spi-master-medidas + * 05-2-serial-spi-echo + * 06-serial-spi-cmd + * 07-serial-spi-regs + * 08-1-serial-spi-flash-memory + * 09-serial-spi-cap1188 + * *Icestick* + * 08-3-serial-spi-flash-memory-Icestick + * *Icezum-alhambra* + * 08-2-serial-spi-flash-memory-Icezum-Alhambra * *SPI-slave* - * 01-SPI-LEDs + * 01-SPI-LEDs-mode0 * 02-SPI-LEDs-regs * 03-SPI-Pulsadores * 04-SPI-send-receive @@ -895,6 +925,11 @@ Blocks created in the Jedi Hardware academy. * 14-SPI-cuatro-registros-mapeados * 15-Serial-cuatro-registros-mapeados * 16-SPI-mini-VGA + * *SPI-test* + * 00-1-spi-slave-test-id + * 00-2-spi-slave-test-eco + * 00-3-spi-slave-test-cmd + * 00-4-spi-slave-test-regs * *icezum-Alhambra* * 18-SPI-Icezum-Alhambra-cuatro-registros-mapeados * *Teclado* diff --git a/locale/translation.js b/locale/translation.js index 67730cf..5568249 100755 --- a/locale/translation.js +++ b/locale/translation.js @@ -123,6 +123,7 @@ gettext('Mux-2-1'); gettext('Mux-4-1-bus'); gettext('Multiplexor de 4 a 1 de 8 bits'); gettext('Mux-4-1'); +gettext('Mux-8-1'); gettext('02-bits'); gettext('03-bits'); gettext('04-bits'); @@ -948,6 +949,8 @@ gettext('Agregador-1-5'); gettext('Agregador de 2 buses de 1 y 4-bits a bus de 6-bits'); gettext('Agregador'); gettext('Agregador de 2 buses de 3-bits a bus de 6-bits'); +gettext('Separador-6x1'); +gettext('Separador de bus de 6-bits en 6 cables'); gettext('Agregador-7x1'); gettext('Agregador de 7 cables de 1-bit a bus de 7-bits'); gettext('Agregador'); @@ -1352,9 +1355,18 @@ gettext('fade-out-8'); gettext('Desvanecimiento de los bits a 0 de números de 8 bits '); gettext('Basicas'); gettext('Componentes'); +gettext('serialize-2-16bits'); +gettext('Secuencializar el envío de 2 comandos (de 16 bits) que llegan en paralelo'); +gettext('Biestable de almacenamiento del estado de la máquina'); +gettext('Maquina serializadora: \nRecibe 2 comandos en paralelo y los envía \npor su salida uno detrás de otro'); +gettext('**Tic de apagado**'); +gettext('**Tic de encendido**'); +gettext('**Inicializar**'); +gettext('**Estado de la máquina**'); +gettext('serialize-2'); +gettext('Secuencializar el envío de 2 comandos que llegan en paralelo'); gettext('Wait-ms'); gettext('Máquina de wait'); -gettext('Biestable de almacenamiento del estado de la máquina'); gettext('Biestable de estado \nde la máquina'); gettext('Apagado de la máquina'); gettext('Mientras la máquina \nesté apagada el \ncontador está a 0'); @@ -1363,10 +1375,6 @@ gettext('El tiempo ha expirado: \napagar la máquina'); gettext('Unidades de tiempo: \n1000 microsec = 1ms'); gettext('Al arrancar la máquina, \neste corazón emite un \ntic cada 1 ms'); gettext('**Parámetro**: \nms de espera'); -gettext('**Tic de apagado**'); -gettext('**Tic de encendido**'); -gettext('**Inicializar**'); -gettext('**Estado de la máquina**'); gettext('Machine-state'); gettext('SM-S4303R'); gettext('MotorBit'); @@ -1604,7 +1612,52 @@ gettext('Biestable D inicializado a 0'); gettext('Delay flip-flop'); gettext('Tortuga: Divisor entre 2\n\nImplementado a partir de un\nbiestable T síncrono'); gettext('Hacer que solo responda a los flancos\nde subida de la señal de entrada'); +gettext('SPI-master'); gettext('SPI-slave'); +gettext('parts'); +gettext('serial-SPI-mode0-2MHz'); +gettext('Pasarela serie-SPI-master. Acceso a periféricos SPI desde el PC'); +gettext('SPI master. Realiza una transacción'); +gettext('Señal de reloj de 8 pulsos, a 2MHZ'); +gettext('Receptor serie asíncrono. Velocidad por defecto: 115200 baudios'); +gettext('Transmisor serie'); +gettext('Datos recibidos \ndesde el PC'); +gettext('**Receptor Serie**'); +gettext('**Gestion de la señal SS:** \nCuando se recibe un caracter por el puerto \nserie se pone a 0 (si ya estaba se deja a 0) \nSi transcurren 200µs desde que se envió por \nel SPI el último byte se lleva ss a reposo (1)'); +gettext('**Transmisor serie**'); +gettext('Datos enviados \nhacia el PC'); +gettext('**Temporizacion del SPI**'); +gettext('**Registro de** \ndesplazamiento'); +gettext('Se generan 8 pulsos de \nreloj, a 2MHZ'); +gettext('**Dato recibido**'); +gettext('Activar esclavo \n(a nivel bajo)'); +gettext('Captura del dato que \nllega del esclavo'); +gettext('En el modo 0 (CPOL=0, CPHA=0) \nSe captura en flanco de subida'); +gettext('Los datos se sacan por \nMOSI en el flanco de \nbajada'); +gettext('En el tic de arranque \nse carga el registro \ncon los datos a enviar'); +gettext('## SPI Maestro. Modo 0: CPOL=0, CPHA=0. Velocidad: 2MHZ\n\nBloque maestro de SPI'); +gettext('Retrasar la señal done un ciclo \npara sincronizarlo con data'); +gettext('En el último pulso se \ncaputra el dato, y se emite \nel tic de done'); +gettext('Sacar la señal de \nreloj maestra'); +gettext('Generación del Slave-select \npor defecto: Al comenzar (start) se pone a 0 y \nse vuelve a poner a al finalizar (done)'); +gettext('Esta estructura en anillo genera \nexactamente una señal de 2Mhz, cuando \nel reloj del sistema es de 12Mhz'); +gettext('Contador de flancos'); +gettext('En total llegan 16 flancos \n8 de subida y 8 de bajada'); +gettext('Con cada flanco se cambia \nla salida del reloj'); +gettext('Generador de la \nonda cuadrada'); +gettext('Solo se permite el paso \nde tics mientras la \nmáquina esté encendida'); +gettext('Cada 3 tics llega un \nflanco'); +gettext('Tic de arranca o \nde siguiente. Se dejan \npasar'); +gettext('Máquina que genera una señal de \nreloj de 2MHZ. Solo se emiten \n8 pulsos con cada activación'); +gettext('Tic de flanco \nde subida'); +gettext('Tic de flanco \nde bajada'); +gettext('spi-master-mode0-2MHZ'); +gettext('spi-master-reg'); +gettext('SPI máster con interfaz de acceso a registros mapeados'); +gettext('Temporizador en tics. La señal p está activa durante los tics indicados. ov se emite un tic al finalizar'); +gettext('En total llegan 16 flancos'); +gettext('SPI-heart-2MHZ'); +gettext('Test'); gettext('SPI-cmd-regs'); gettext('Implementación de los 3 comandos para acceder a los registros mapeados'); gettext('Detectar el comando, y devolver los valores que llegan tras el comando'); @@ -1621,19 +1674,19 @@ gettext('Se hace reset de los bloques sintáticos cuando se ha \ndetectado algu gettext('**Comando detectado**'); gettext('Habilitar la salida del tic \ndel proximo dato: es un valor'); gettext('Solo se comprueba \nel comando cuando \nllega un tic'); -gettext('SPI-slave-unit'); +gettext('SPI-slave-mode0-2MHZ'); gettext('Unidad SPI sclava. Transmisor y receptor'); gettext('**Reloj del sistema**'); gettext('**Dato de entrada** \nSincronizados con el \nreloj del sistema'); gettext('Todos los pines de entrada del SPI \nse sincronizan con el reloj del sistema'); -gettext('**BIT**: Tic que indica que \nhay un bit que ha llegado'); +gettext('Flanco de subida del \nreloj sclk'); gettext('Captura de los datos \nen flanco de subida \nde la señal SCLK'); gettext('Solo se hace caso a SCLK si \nel esclavo está seleccionado \n(SS debe estar a 0)'); gettext('**Registro de**\n**Desplazamiento**'); gettext('### Transmisión de los datos'); gettext('Bit de salida, \nhacia el Maestro'); gettext('Registro de datos \nAquí se guarda el \ndato que se quiere \ntransmitir'); -gettext('Se transmite un bit cada \nvez que se recibe un \nflanco de subida de SCLK'); +gettext('Se transmite un bit cada \nvez que se recibe un \nflanco de bajada de SCLK'); gettext('Al comienzo de una transaccion \n(Flanco de bajada en SS) o \ndespues de terminar la transacción \nanterior, se carga el registro \nde desplazamiento con el siguiente valor'); gettext('Contador de bits de \nla transacción actual \nCuando es 0, significa que \nestá en reposo. Cuando es \n!=0 es que hay una transacción \nen curso'); gettext('El overflow indica que \nque la transacción \nha finalizado'); @@ -1644,11 +1697,69 @@ gettext('Almacenar el dato \nrecibido'); gettext('### Recepción de datos'); gettext('Retrasamos la captura 2 ciclos para \ndejar ese tiempo al circuito para que \nhaga calculos, si necesita. Debe cargar \nel nuevo valor antes de que concluyan los \ndos ciclos de reloj posteriores a la finalización \nde la transacción anterior'); gettext('Cuaando el esclavo NO está seleccionado \nla salida MISO está en alta impedancia \nEsto permite conectar varios módulos esclavos'); +gettext('Flanco de bajada\ndel reloj sclk'); +gettext('Los datos que llegan se \ncapturan en flanco de \nsubida de SCLK'); +gettext('Los datos se depositan en MISO en el flanco de bajada de SCLK \nComo la señal es de 2MHZ, hay 3 tics por periodo. Cuando llega un \nflanco de subida, en el esclavo está retrasada 2 tics por la \nsincronizacion. Un ciclo despues llega el flanco de bajada \nEsa es la razón de que tics_down esté retrasasa un ciclo con \nrespecto a tics-up'); +gettext('## SPI Esclavo. MODO 0. CPOL=0, CPHA=0, 2MHZ'); +gettext('SPI-slave-unit'); +gettext('**BIT**: Tic que indica que \nhay un bit que ha llegado'); +gettext('Se transmite un bit cada \nvez que se recibe un \nflanco de subida de SCLK'); +gettext('spi-slave-test-cmd'); +gettext('Unidad spi esclavo de prueba. Implementa los comandos write_led y read_buttons. '); +gettext('**Pines BUS SPI**'); +gettext('**Pin BUS SPI**'); +gettext('**Bloque SPI-esclavo**'); +gettext('| Comando | Código comando | Descripción |\n|---------|----------------|-------------|\n| **WRITE_LEDS** *val* | 0x40 | Sacar el número *val* por los LEDs |\n| **READ_BUTTONS** | 0x60 | Lectura de los pulsadores |'); +gettext('### Comando WRITE_LEDs'); +gettext('**Registro** \n**de LEDs**'); +gettext('Valor inicial para \nlos LEDs'); +gettext('Estado \npulsador 1'); +gettext('Estado \npulsador 2'); +gettext('Construir el byte a transmitir \nal maestro: Todos los bits a 0 \nsalvo los dos de menos peso, que \ncontienen Sw1 y SW2'); +gettext('### Comando READ_BUTTONS'); +gettext('Tic de lectura de \nlos pulsadores'); +gettext('Este comando no tiene argumentos adicionales: \nen cuanto se recibe el código de comando, \nse usa el tic recibido para cargar el estado \nde los pulsadores en el registro de transmisión \ndel SPI para que se envíe en la próxima transacción '); +gettext('Bloque SPI esclavo de test: Implementa dos comandos, uno para escribir en los LEDs y otro para leer los pulsadores'); +gettext('## SPI esclavo completo. Modo 0: CPOL=0, CPHA=0. Velocidad: 2MHZ'); +gettext('spi-slave-test-echo'); +gettext('Unidad spi esclavo de prueba. Todo lo recibido se saca por los LEDs y se devuelve en la siguiente transacción (eco)'); +gettext('Bloque SPI esclavo de test: Todo lo que recibe en un transacción lo saca por los leds y lo almacena\npara devolverlo en la siguiente (Eco). Justo después del reset devuelve un 0 en la primera transacción'); +gettext('Todo lo recibido se vuelve a \nenviar en la siguiente transacción'); +gettext('spi-slave-test-id'); +gettext('Unidad spi esclavo de prueba. En cada transacción obtiene el dato recibido y envía la constante ID. Es para hacer pruebas con los maestros'); +gettext('Bloque SPI esclavo de test: Devuelve siempre la misma constante al leer, y todo lo recibido lo saca por los LEDS'); +gettext('Constante a devolver al maestro \nen todas las transacciones'); +gettext('Flanco de baja en ss: \ncomienza una nuestra transacción \n'); +gettext('Cargar el identificador \nal comienzo de la transacción \npara devolverlo como dato de \nsalida'); +gettext('spi-slave-test-regs'); +gettext('Unidad spi esclavo de prueba. Implementa 3 registros mapeados en memoria: leds, buttons e id'); +gettext('## COMANDOS\n\n| Comando | Abrev. | Código | Descripción |\n|---------|-------------|----------------|-------------|\n| **SET ADDRES POINTER ** *val* | SAP | 0x7D | Establecer el valor del registro de dirección |\n| **WRITE REGISTER** *val* | WR | 0x7E | Escribir en el registro apuntado por el registro de dirección |\n| **READ REGISTER** | RD | 0x7F | Leer el registro apuntado por el registro de dirección |\n\n'); +gettext('### Registro de LEDs'); +gettext('## REGISTROS\n\n| Dir. | R/W | Nombre | Función | Valor por defecto |\n|------|-------|----------|-----------|-------------------|\n| 10h | R/W | LEDs | Valor mostrado en los LEDs | 00h |\n| 12h | R | PULSADORES | Estado de los pulsadores SW1 y SW2 | 00h |\n| FDh | R | ID | Código de identificación del periférico | 50h |\n'); +gettext('**Lectura de registros**: \nDevolver el contenido del registro seleccionado \nSi no hay ninguno seleccionado se devuelve \nel valor 0x00'); +gettext('Valor a enviar al \nmaestro, en la \nlectura'); +gettext('Se pone a 1 cuando NO hay \nningún registro seleccionado'); +gettext('Valor por defecto'); +gettext('**Código de los comandos**'); +gettext('**BUS de direcciones**'); +gettext('**BUS de datos** de entrada'); +gettext('**BUS de datos** \nde salida'); +gettext('**Bloque cmd-reg**'); +gettext('**Bloque Reg-addr**'); +gettext('**BUS de control** '); +gettext('Valor a devolver cuando \nno hay ningun registro \nseleccionado'); +gettext('### Registro de Identificacion'); +gettext('### Registro de pulsadores'); +gettext('Selección del \nregistro'); +gettext('Codificador 4 a 2'); +gettext('Número que identifica \na este periférico'); +gettext('Detectar accesos a su dirección'); +gettext('Dirección donde está \nmapeada la constante'); +gettext('Dirección de \nmapeo'); +gettext('## SPI esclavo completo. Modo 0: CPOL=0, CPHA=0. Velocidad: 2MHZ\n\nBloque SPI esclavo de test: Implementa el acceso a 3 registros mapeados en memoria: \nUno para acceso a los LEDs, otro para leer los pulsadores y otro para leer el \nidentificadoor del periférico'); gettext('blocks'); gettext('Serial-rx'); -gettext('Receptor serie asíncrono. Velocidad por defecto: 115200 baudios'); gettext('Serial-tx'); -gettext('Transmisor serie'); gettext('Serial-tx16'); gettext('Transmisor serie de 16 bits'); gettext('## Transmisor de 16 bits\n\nTransmitir un dato de 16 bits por el puerto serie. Primero el byte de mayor peso, y luego el menor \n'); @@ -1720,7 +1831,6 @@ gettext('**Registro de datos** \nContiene el dato final \nrecibido, de 8 bits' gettext('Capturar el dato \nfinal'); gettext('Retrar el tic de dato \nrecibido un periodo, \npara que la señal de \nbusy se ponga a 0'); gettext('**Tic de dato recibido** \nNos indica que ha llegado \nel dato y lo podemos leer'); -gettext('**Dato recibido**'); gettext('**Línea serie** \nPor aquí llegan los \ndatos en serie'); gettext('Sincronizador: evitar los \nproblemas de metaestabilidad'); gettext('Hemos terminado \nApagar el receptor \n(volver al estado inicial)'); @@ -1776,7 +1886,6 @@ gettext('cmd8'); gettext('blocks'); gettext('bus-cycle'); gettext('Generar un ciclo de bus'); -gettext('Temporizador en tics. La señal p está activa durante los tics indicados. ov se emite un tic al finalizar'); gettext('timer-10usec'); gettext('timer-msec'); gettext('timer-sec'); @@ -1893,7 +2002,6 @@ gettext('**Conversor A/D**'); gettext('Valor digital del \npotenciómetro'); gettext('02-Potentiometer-serial'); gettext('## Ejemplo 2: Lectura de un potenciómetro y envío al PC\n\nSe lee el potenciómetro conectado al canal 0 de la icezum Alhambra \ny se envía su valor digital al PC, además de mostrarse en los LEDs \nLa lectura se realiza 100 veces por segundo (100Hz)'); -gettext('**Transmisor serie**'); gettext('03-Potentiometer-servo'); gettext('## Ejemplo 3: Moviendo un servo con el potenciómetro \n\nLa salida del conversor A/D se conecta a la entrada de un servo para \ncambiar su posición con el potenciómetro\n\n'); gettext('04-Potentiometer-BCD-7Seg'); @@ -2038,25 +2146,61 @@ gettext('### CIRCUITO 1 \n\nSegún la configuración del pin D13:\n\n**Entrada* gettext('### CIRCUITO 2 \n\nSegún la configuración del pin D13:\n\n**Entrada**: Saca por LED7 lo recibido \n**Salida**: Envía señal de 4Hz por pin\n'); gettext('**Establecer sentido** \n**de la comunicación** \n1: Circuito 1 ---> Circuito 2 \n0: Circuito 2 ---> Circuito 1 '); gettext('## Ejemplo: Pin bidireccional entre dos circuitos\n\nComunicación entre dos circuitos usando un cable externo. \nMediante un interruptor externo se configura el sentido de \nla comunicación: del circuito 1 al 2 ó del 2 al 1\n\n'); +gettext('SPI-master'); gettext('SPI-slave'); +gettext('Icestick'); +gettext('Icezum-alhambra'); +gettext('01-2-spi-master-constant'); +gettext('### Ejemplo 1-2: Enviando una constante por SPI al esclavo\n\nEjemplo de envío de un dato desde el maestro al esclavo. Al apretar el \npulsador se envía la constante por el spi. Tanto el maestro como el \nesclavo se encuentra en la misma FPGA, pero son circuitos independientes'); +gettext('**Bloque** \n**spi-master-mode0-2MHz**'); +gettext('# MAESTRO'); +gettext('# ESCLAVO'); +gettext('<-- Cable externo -->'); +gettext('<-- Cable externo'); +gettext('Cable externo-->'); +gettext('### Cables externos necesarios: 4\n\n| Señal SPI | Pin Maestro | Pin Esclavo | Descripción |\n|-----------|-------------|-------------|-------------|\n| SCLK | D13 | D3 | Reloj |\n| MISO | D12 | D2 | Datos Esclavo --> Maestro |\n| MOSI | D11 | D1 | Datos Maestro --> Esclavo |\n| SS | D0 | D0 | Selección de esclavo |'); +gettext('02-spi-master-lectura-id'); +gettext('### Ejemplo 2: Enviando una constante por SPI al esclavo\n\nEjemplo de recepción de datos desde el esclavo al maestro. Se realiza la \nlectura del esclavo cada 100ms. Devuelve el identificador (0xA5) \n, que el maestro captura en un registro y lo saca por los leds \nComo es un valor constante, no se aprecia cambio en los LEDs \n(pero al conectar el analizador se observa el trasiego de datos)\n'); +gettext('**Registro**'); +gettext('Identificador que \nse envía al maestro'); +gettext('03-spi-master-lectura-escritura'); +gettext('## Ejemplo 3: Envío y recepción por el SPI\n\nCada 100ms se realiza una transacción: Se lee el identificador \ndel periférico del SPI (valor constante 0xA5) y se envía el valor \nde un contador que se incrementa también cada 100ms\n\nPor los LEDs vemos los valores del contaddor recibidos en el esclavo, \n(al apretar el botón 1), o bien el identificador recibido en el \nmaestro (apretar botón 2).\n'); +gettext('# MAESTRO\n\nCada 100ms se envía el valor del contador al \nesclavo y se incrementa'); +gettext('Mostrar por los LEDs bien los datos \nrecibidos por el esclavo (pulsador 1) o \nbien los datos recibidos por el maestro \n(pulsador 2)'); +gettext('Ver el maestro'); +gettext('Ver el esclavo'); +gettext('Se realiza una transacción \ncada 100ms'); +gettext('04-spi-master-medidas'); +gettext('## Ejemplo 4: Medidas\n\nCircuito para realizar medidas del SPI con el analizador lógico \nLos 4 primeros canales se conectan a D0, D1, D2 y D3 para mostrar las \nseñales SS, MOSI, MISO y SCLK\n\nSe usan dos canales adicionales conectados a D4 y D5 para mostrar las \nseñales de busy y done'); +gettext('# MAESTRO\n\nSe envían los valores 0xAA y 0x55 alternativamente \nal esclavo, para que los muestre en sus LEDs'); +gettext('Se realiza una transacción \ncada 300ms'); +gettext('05-2-serial-spi-echo'); +gettext('## Ejemplo 5-2: Serial-spi: Prueba de eco y LEDs, con el bloque serial-SPI\n\nPasarela Serie-SPI. Todo lo recibido desde el PC por el puerto serie \nse envía hacia el SPI, y todo lo recibido del SPI se envía hacia \nel PC por el puerto serie\n'); +gettext('# MAESTRO\n'); +gettext('06-serial-spi-cmd'); +gettext('## Ejemplo 6: Serial-spi: Prueba de comandos, con el bloque serial-SPI\n\nPasarela Serie-SPI. Todo lo recibido desde el PC por el puerto serie \nse envía hacia el SPI, y todo lo recibido del SPI se envía hacia \nel PC por el puerto serie\n'); +gettext('07-serial-spi-regs'); +gettext('## Ejemplo 7: Serial-spi: Prueba de registros, con el bloque serial-SPI\n\nPasarela Serie-SPI. Todo lo recibido desde el PC por el puerto serie \nse envía hacia el SPI, y todo lo recibido del SPI se envía hacia \nel PC por el puerto serie\n'); +gettext('08-1-serial-spi-flash-memory'); +gettext('## Ejemplo 8-1: Acceso a la memoria flash SPI\n\nEjemplo de prueba de la memoria flash SPI desde la placa **Alhambra II**. \nUsamos el bloque serial-spi para enviar los comandos desde el PC y \ncomprobar su funcionamiento\n\n'); +gettext('09-serial-spi-cap1188'); +gettext('## Ejemplo 9: Pruebas del sensor capacitivo CAP1188 desde el PC\n\nUsamos el bloque Serial-SPI como maestro para envair comandos desde el PC \nal esclavo CAP1188 situado fuera de la placa, conectado por los pines \ndel SPI\n\n\n'); +gettext('08-3-serial-spi-flash-memory-Icestick'); +gettext('## Ejemplo 8-3: Acceso a la memoria flash SPI\n\nEjemplo de prueba de la memoria flash SPI desde la placa **Icestick**. \nUsamos el bloque serial-spi para enviar los comandos desde el PC y \ncomprobar su funcionamiento\n\n'); +gettext('08-2-serial-spi-flash-memory-Icezum-Alhambra'); +gettext('## Ejemplo 8-2: Acceso a la memoria flash SPI\n\nEjemplo de prueba de la memoria flash SPI desde la placa **Icezum Alhambra**. \nUsamos el bloque serial-spi para enviar los comandos desde el PC y \ncomprobar su funcionamiento\n\n'); +gettext('SPI-test'); gettext('icezum-Alhambra'); -gettext('01-SPI-LEDs'); +gettext('01-SPI-LEDs-mode0'); gettext('### Ejemplo 1: Mostrando en los LEDs el dato recibido\n\nEjemplo de un circuito esclavo por SPI, que simplemente saca por los \nLEDs los bytes recibidos'); -gettext('**Pines BUS SPI**'); -gettext('**Pin BUS SPI**'); -gettext('**Bloque SPI-esclavo**'); gettext('02-SPI-LEDs-regs'); gettext('### Ejemplo 2: Registrando el dato recibido\n\nEjemplo de un circuito esclavo por SPI, que almacena el dato recibido \nen un registro. Además se saca por los LEDs usando un efecto de \ntransición suave'); -gettext('**Registro**'); gettext('Se carga con el dato recibido \nusando el tic rcv'); gettext('**Brillo gradual**'); gettext('03-SPI-Pulsadores'); gettext('### Ejemplo 3: Transmitiendo al maestro\n\nEl estado de los pulsadores SW1 y SW2 se envía al maestro. Se sitúan \nen los dos bits de menor peso del byte enviado. El resto de bits se \nponen a 0'); gettext('Comienza una transacción \nnueva'); gettext('Cargar el byte a enviar \ncada vez que hay una \ntransacción nueva'); -gettext('Estado \npulsador 1'); -gettext('Estado \npulsador 2'); -gettext('Construir el byte a transmitir \nal maestro: Todos los bits a 0 \nsalvo los dos de menos peso, que \ncontienen Sw1 y SW2'); gettext('Flanco de bajada'); gettext('04-SPI-send-receive'); gettext('### Ejemplo 4: Envío y recepción\n\nLos bytes recibidos del maestro se muestran por los LEDs \nCada dato recibido se incrementa en 1 y se devuelve como \nrespuesta en la siguiente transacción\n'); @@ -2076,16 +2220,10 @@ gettext('**Brillo-8**'); gettext('| Comando | Código comando | Descripción |\n|---------|----------------|-------------|\n| **WRITE_LEDS** *val* | 0x40 | Sacar el número *val* por los LEDs |\n| **BRILLO_LEDS** *val* | 0x50 | Establecer el brillo de los LEDs |'); gettext('### Comando BRILLO_LEDS'); gettext('Valor inicial para \nel brillo: máximo'); -gettext('### Comando WRITE_LEDs'); gettext('**Registro** \n**de Brillo** '); -gettext('**Registro** \n**de LEDs**'); -gettext('Valor inicial para \nlos LEDs'); gettext('09-SPI-READ_buttons'); gettext('### Ejemplo 9: Comando READ_Buttons\n\nImplementación de 3 comandos: Dos para escribir en los LEDs y \nmodificar su brillo. Un tercero para leer el estado de los pulsadores'); gettext('| Comando | Código comando | Descripción |\n|---------|----------------|-------------|\n| **WRITE_LEDS** *val* | 0x40 | Sacar el número *val* por los LEDs |\n| **BRILLO_LEDS** *val* | 0x50 | Establecer el brillo de los LEDs |\n| **READ_BUTTONS** | 0x60 | Lectura de los pulsadores |'); -gettext('### Comando READ_BUTTONS'); -gettext('Tic de lectura de \nlos pulsadores'); -gettext('Este comando no tiene argumentos adicionales: \nen cuanto se recibe el código de comando, \nse usa el tic recibido para cargar el estado \nde los pulsadores en el registro de transmisión \ndel SPI para que se envíe en la próxima transacción '); gettext('10-SPI-READ_ID'); gettext('### Ejemplo 10: Comando READ_ID\n\nImplementación de 4 comandos: Dos de escritura, y dos de lectura'); gettext('| Comando | Código comando | Descripción |\n|---------|----------------|-------------|\n| **WRITE_LEDS** *val* | 0x40 | Sacar el número *val* por los LEDs |\n| **BRILLO_LEDS** *val* | 0x50 | Establecer el brillo de los LEDs |\n| **READ_BUTTONS** | 0x60 | Lectura de los pulsadores |\n| **READ_ID** | 0x70 | Lectura del identificador del chip |'); @@ -2097,20 +2235,10 @@ gettext('Código del esclavo'); gettext('Número correspondiente al \ncomando de lectura recibido: \n0: READ_ID \n1: READ_BUTTONs '); gettext('11-3-SPI-REG-LEDs'); gettext('# Ejemplo 11-3: Registro de LEDs con bloque reg-addr\n\nPeriférico para el SPI que tiene mapeado un registro de LEDs, de lectura y escritura. \nSe accede al registro a través de la dirección 0x10, que se debe depositar primero en el \nregistro de dirección con el comando SAP'); -gettext('## COMANDOS\n\n| Comando | Abrev. | Código | Descripción |\n|---------|-------------|----------------|-------------|\n| **SET ADDRES POINTER ** *val* | SAP | 0x7D | Establecer el valor del registro de dirección |\n| **WRITE REGISTER** *val* | WR | 0x7E | Escribir en el registro apuntado por el registro de dirección |\n| **READ REGISTER** | RD | 0x7F | Leer el registro apuntado por el registro de dirección |\n\n'); -gettext('### Registro de LEDs'); gettext('## REGISTROS\n\n| Dir. | R/W | Nombre | Función | Valor por defecto |\n|------|-------|----------|-----------|-------------------|\n| 10h | R/W | LEDs | Valor mostrado en los LEDs | 00h |'); gettext('**Lectura del registro**: \nSi está su dirección en el registro \nde dirección, se devuelve su valor \nde lo contrario se devuelve 0'); gettext('Valor a enviar al maestro \nen la lectura'); gettext('Registro de LEDS \nseleccioando'); -gettext('Valor por defecto'); -gettext('**Código de los comandos**'); -gettext('**BUS de direcciones**'); -gettext('**BUS de datos** de entrada'); -gettext('**BUS de datos** \nde salida'); -gettext('**Bloque cmd-reg**'); -gettext('**Bloque Reg-addr**'); -gettext('**BUS de control** '); gettext('12-serial-reg-LEDs'); gettext('# Ejemplo 12: Registro de LEDs por puerto serie\n\nEl registro de LEDs está mapeado en memoria, y es accesible a través de los comandos SAP, \nWrite y RD recibidos por el puerto serie\n\n'); gettext('## COMANDOS\n\n| Comando | Abrev. | Código | Descripción |\n|---------|-------------|----------------|-------------|\n| **SET ADDRES POINTER ** *val* | SAP | \"S\" | Establecer el valor del registro de dirección |\n| **WRITE REGISTER** *val* | WR | \"W\" | Escribir en el registro apuntado por el registro de dirección |\n| **READ REGISTER** | RD | \"R\" | Leer el registro apuntado por el registro de dirección |\n\n'); @@ -2124,24 +2252,12 @@ gettext('**Bus de datos** \n**de salida**'); gettext('13-SPI-dos-registros-mapeados'); gettext('# Ejemplo 13: Dos registros mapeados\n\nPeriférico SPI que tiene mapeados dos registros: uno para escribir en los LEDs y otro para cambiar \nel nivel de brillo. Ambos registros son de lectura y escritura'); gettext('## REGISTROS\n\n| Dir. | R/W | Nombre | Función | Valor por defecto |\n|------|-------|----------|-----------|-------------------|\n| 10h | R/W | LEDs | Valor mostrado en los LEDs | 00h |\n| 11h | R/W | BRILLO | Nivel de brillo de los LEDs | 255 |\n'); -gettext('**Lectura de registros**: \nDevolver el contenido del registro seleccionado \nSi no hay ninguno seleccionado se devuelve \nel valor 0x00'); -gettext('Valor a enviar al \nmaestro, en la \nlectura'); -gettext('Se pone a 1 cuando NO hay \nningún registro seleccionado'); gettext('### Registro de BRILLO'); gettext('**Bloque Brillo**'); gettext('Codificador \nde 2 a 1'); -gettext('Valor a devolver cuando \nno hay ningun registro \nseleccionado'); gettext('14-SPI-cuatro-registros-mapeados'); gettext('# Ejemplo 14: Cuatro registros mapeados\n\nPeriférico SPI que tiene mapeados cuatro registros: Dos de lectura/escritura para establecer \nel valor de los LEDs y su brillo. Y dos de sólo lectura. Uno con el identificador del \nperiférico y otro con el valor de los pusaldores'); gettext('## REGISTROS\n\n| Dir. | R/W | Nombre | Función | Valor por defecto |\n|------|-------|----------|-----------|-------------------|\n| 10h | R/W | LEDs | Valor mostrado en los LEDs | 00h |\n| 11h | R/W | BRILLO | Nivel de brillo de los LEDs | 255 |\n| 12h | R | PULSADORES | Estado de los pulsadores SW1 y SW2 | 00h |\n| FDh | R | ID | Código de identificación del periférico | 50h |\n'); -gettext('### Registro de Identificacion'); -gettext('### Registro de pulsadores'); -gettext('Selección del \nregistro'); -gettext('Codificador 4 a 2'); -gettext('Número que identifica \na este periférico'); -gettext('Detectar accesos a su dirección'); -gettext('Dirección donde está \nmapeada la constante'); -gettext('Dirección de \nmapeo'); gettext('15-Serial-cuatro-registros-mapeados'); gettext('# Ejemplo 15: Cuatro registros mapeados. Puerto serie\n\nPeriférico por puerto serie que tiene mapeados cuatro registros: Dos de lectura/escritura para establecer \nel valor de los LEDs y su brillo. Y dos de sólo lectura. Uno con el identificador del \nperiférico y otro con el valor de los pusaldores'); gettext('## REGISTROS\n\n| Dir. | R/W | Nombre | Función | Valor por defecto |\n|------|-------|----------|-----------|-------------------|\n| \"1\" | R/W | LEDs | Valor mostrado en los LEDs | 00h |\n| \"2\" | R/W | BRILLO | Nivel de brillo de los LEDs | 255 |\n| \"3\" | R | PULSADORES | Estado de los pulsadores SW1 y SW2 | \"0\" |\n| \"I\" | R | ID | Código de identificación del periférico | \"A\" |\n'); @@ -2155,6 +2271,17 @@ gettext('## Ejemplo 16: Mini-controlador VGA por SPI\n\nEste periférico tiene m gettext('**VGALEDs**'); gettext('## REGISTROS\n\n| Dir. | R/W | Nombre | Función | Valor por defecto |\n|------|-------|----------|-----------|-------------------|\n| 10h | R/W | VGALED | Estado de las dos mitades de la pantalla VGA | 03h |'); gettext('### Registro VGALED'); +gettext('00-1-spi-slave-test-id'); +gettext('# Ejemplo 0-1: Probando el bloque spi-slave-test-id\n\nTodo lo recibido por el spi se saca por los LEDs. En cada transacción se \ndevuelve el valor constante 0xA5 '); +gettext('### Código de prueba para Arduino'); +gettext('00-2-spi-slave-test-eco'); +gettext('# Ejemplo 0-2: Probando el bloque spi-slave-test-echo\n\nTodo lo recibido por el spi se saca por los LEDs y se almacena para \nenviarlo de vuelta en la siguiente transacción (eco) '); +gettext('00-3-spi-slave-test-cmd'); +gettext('# Ejemplo 0-3: Probando el bloque spi-slave-test-cmd\n\nCon el comando Write_LED se saca un valor en los leds. Con el comando Read_buttons \nse devuelve el estado de los pulsadores'); +gettext('Con los parámetros se establecen los códigos \nde los comandos. Por defecto son 0x40 y 0x60'); +gettext('00-4-spi-slave-test-regs'); +gettext('# Ejemplo 0-4: Probando el bloque spi-slave-test-regs\n\nImplementa tres registros mapeados: leds, buttons e id, accesibles mediante los comandos \nSAP, WR y RD'); +gettext('Con los parámetros se establecen los códigos \nde los comandos, sus direcciones y el ID'); gettext('18-SPI-Icezum-Alhambra-cuatro-registros-mapeados'); gettext('# Ejemplo 18: Icezum Alhambra: Cuatro registros mapeados\n\nPeriférico SPI que tiene mapeados cuatro registros: Dos de lectura/escritura para establecer \nel valor de los LEDs y su brillo. Y dos de sólo lectura. Uno con el identificador del \nperiférico y otro con el valor de los pusaldores'); gettext('01-Key-test'); diff --git a/package.json b/package.json index a3a4504..db41f00 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Jedi", - "version": "1.6.0", + "version": "1.7.0", "description": "Blocks created in the Jedi Hardware academy", "keywords": "Tutorial,Jedi Academy", "license": "GPL-2.0",