Este mensaje va para los grupos de proyecto que usan el procesador openMSP430:
Registrador de activación de fallas (Cosentino/Cerviño/Foglino)
Medidor de consumo (Barboza/rirogom@gmail.com/Pisano)
Periférico DALI (Martinez/González)
a los demás disculpas por el ruido.
En este mensaje les paso material y algunas pistas para comenzar a trabajar con el openMSP430.
El martes próximo en el horario habitual del curso podemos hacer una sesión para aclarar dudas.
Nos vemos,
julio
----
* openMSP430
** Descargarlo de OpenCores
http://opencores.org/project,openmsp430,overview
Busquen el link: "Latest version: download"
Eso les descarga un archivo comprimido, abranlo en un directorio para trabajar.
** Organización de archivos y directorios
Aquí:
http://opencores.org/project,openmsp430,file%20and%20directory%20description
hay una descripción de todos los archivos descargados.
** Ejemplo de periférico con cuatro registros
Hay dos ejemplos de periféricos que les pueden servir de inspiración.
Están en:
rtl\verilog\openmsp430\periph
Lamentablemente están en verilog y no en vhdl.
El periférico que van a diseñar ustedes se va a conectar al bus de periféricos. Para entender fácil cómo va conectado vean este diagrama esquemático:
http://opencores.org/project,openmsp430,integration%20and%20connectivity
Presten atención a lo siguiente:
Los buses de datos son de 16 bits, pero el espacio de direcciones se refiere a palabras de 8 bits. Cada palabra de 16 bits ocupa dos lugares en el espacio de direcciones: el byte bajo corresponde a una dirección par y el byte alto corresponde a una dirección impar. Por ese motivo no se conecta el bit menos significativo de las direcciones.
La señal de control per_we[1:0] de dos bits permite distinguir entre las diferentes posibles escrituras y lecturas:
00 lectura
01 escritura de 8 bits en byte bajo (dirección par)
10 escritura de 8 bits en byte alto (dirección IMpar)
11 escritura de 16 bits
Ya vieron algo similar en Wishbone.
En las lecturas el procesador elige internamente el byte alto, bajo o ambos dependiendo de lo que quiere leer.
De los dos ejemplos, uno permite solo transferencias de 16 bits (template_periph_16b.v) y el otro permite todas las variantes (template_periph_8b.v)
** En placa DE0
El ejemplo que suministra OpenCores es para otra placa.
No se gasten en migrarlo a la placa DE0, ya tenemos eso funcionando, se los haremos llegar más adelante.
Para poder depurar y hacer las pruebas van a necesitar conectarse con un puerto serie RS232.
Para conectarse a un notebook (o a un pc que no tenga puerto rs232) van a necesitar un conversor de USB/RS232.
La placa tiene un conversor de niveles de tensión para los niveles rs232, conectado a pines I/O del fpga, marcado como RS-232 en el circuito impreso como se ve en esta foto:
http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=56&No=364&PartNo=3
Como ven no tiene instalado el conector. Hay que soldar conector y/o cable para llevarlo a un conector DB9 estandar de puerto serie.