jueves, 7 de mayo de 2020

EXM 2

2.1
Las SBC, single board computer o computadoras de una sola placa son placas que contienen todos o casi todos los componentes de una computadora, su principal característica es su tamaño reducido el cual puede variar dependiendo del fabricante, por ejemplo un min-ITX cuenta con medidas de 17  x 17 cm mientras que una raspberry pi zero tiene unas dimensiones de 3 x 6.5 cm, una distinción mas de las SBC es su reducido precio que generalmente no suele pasar de los 100 dólares, debido a la optimización de espacio la potencia que estas tablillas ofrecen es limitada , sin embargo, es mas que suficiente para tareas multimedia, acceder a internet o para desarrolladores.
Aunque la placa más popular es la Raspberry PI debido a sus distintas versiones y amplia comunidad, existe una gran variedad de alternativas en el mercado dependiendo de las necesidades del usuario:

1.      BeagleBone Black.
2.      PcDuino.
3.      Pandaboard.

2.2
La Raspberry cuenta con PL011 y mini UART para establecer una comunicación UART, sin embargo, debido a que utilizan los mismos pines se debe utilizar uno a la vez, las diferencias entre ambas opciones son muy pequeñas,aun así, al utilizar cualquiera de los 2 es necesario considerar que trabajan a 3.3 v por lo que se debe tomar en cuenta el uso de adaptadores al conectar dispositivos. Por default ambas opciones de UART están ocupadas por el sistema en el modulo inalámbrico/bluetooth para el PL011 y con una consola de Linux para el mini UART, la asignación de estos puede variar con el modelo de Raspberry, pero el UART primario es siempre el asignado a la consola Linux.  Para habilitar el UART principal para su uso es necesario modificar el archivo config.txt en la carpeta boot agregando la línea enable_uart=1, esto ajustara la frecuencia a 250MHZ la cual puede ser modificada con el comando force_turbo, si el mini UART no es el UART principal se debe agregar la línea core_freq=250 para definir la frecuencia, si el valor por default de enable_uart es 0 el módulo bluetooth está asignado a ttyAMA0 mientras que si es 1 el mini UART estará asignado. Para preparar el serial port para su uso la manera más fácil es desde la consola de comandos con la instrucción ‘sudo raspi-config’ luego seleccionando la opción 5 interfacing options luego P6 Serial y selecciona 2 después procede a cerrar la configuración. Los Pines para la comunicación UART serán GPIO 14 para transmitir y GPIO 15 para recibir los cuales son los pines 8 y 10 respectivamente.



Para la conexión i2c se utilizan los puertos GPIO 2 y 3 que son los puertos SDL y SCL respectivamente, para su activación desde la terminal ejecutamos 
sudo nano /etc/modules
y añadimos las líneas
i2c-bcm2708
i2c-dev
una alternativa a esto es activarlo desde la configuración de la Raspberry:



Posteriormente instalamos las librerías de línea de comandos y Python:
sudo apt-get install i2c-tools
sudo apt-get install python-smbus

Finalmente reiniciamos la Raspberry, para comprobar los dispositivos que conectemos en los puertos 12c usamos el comando:
sudo i2cdetect -y 1

2.3


Para conectar distintos dispositivos en i2c se pueden conectar en paralelo tanto para sus puertos de alimentación como para los puertos SDA y SCL, verificando que no se excedan los 3.3v que permite la entrada de la Raspberry, para utilizar una memoria bajo este protocolo se debe verificar desde el dispositivo maestro la localización que esta representa una vez conectada, a partir de ello se puede escribir o leer en los registros siguientes mientras la capacidad de la memoria lo permita.

2.4
La modularización consiste en la división de una aplicación en partes más pequeñas llamadas módulos los cuales son lo más independientes posibles unos de otros y se encuentran conectados entre sí para la construcción de la aplicación principal.



En la practica realizada en esta unidad los dispositivos utilizados fueron la memoria 24aa256, la raspberry y los módulos max7219cng para el control de las matrices led, la memoria representa los registros ya que almacena los caracteres que se desplegaran en la matriz, la Raspberry  es la lógica I/O ya que ejecuta el programa principal que manipula los otros módulos, y los módulos max7219cng representan la interface lógica de dispositivos externos ya que al ser 2 módulos conectados en serie la información va desde la Raspberry hasta el primer modulo y después al segundo ejerciendo cada uno un control sobre las matrices led para desplegar el mensaje.




2.5
Una raspberry puede ser utilizada como servidor ya sea dentro de una red privada o remotamente por medio de Internet, las aplicaciones de esto pueden variar desde ser un servidor para una pagina web, el cual al estar conectado a Internet puede ser visto desde cualquier parte, hasta actuar como nube privada la cual guardara tus archivos y permitirá el acceso a ellos remotamente, un ejemplo de esta función puede ser un servidor VNC el cual permitirá controlar la Raspberry desde computadoras, tablets o smartphones, para instalarlo podemos utilizar el software gratuito RealVNC instalándolo tanto en la Raspberry como en nuestro segundo dispositivo, si ambos dispositivos se encuentran en la misma red solamente es necesario conocer la dirección IP de la Raspberry e introducirla al agregar una nueva conexión desde el menú archivo.




Si se requiere un acceso remoto se debe crear una cuenta en https://www.realvnc.com y abrir el mismo usuario en ambos dispositivos, después solo seleccionamos la Raspberry para visualizar desde el dispositivo secundario

2.6
Existen distintos sistemas operativos que pueden ser instalados en una Raspberry dependiendo del uso que se le planea dar, sin embargo, el sistema operativo mas común para instalar es Raspbian.
El primer paso para la instalación es elegir una tarjeta SD, dependiendo de factores como el costo, capacidad, tasa de transferencia, etcétera se debe escoger la que sea conveniente para el usuario, pero ya que en ella se encontrara el SO es conveniente usar una con capacidad de al menos 8 Gb para tener un espacio adicional para los archivos y buena tasa de transferencia, una vez lista se debe formatear antes del siguiente paso.




Existen 2 alternativas para la instalación, la primera es descargar el imager desde https://www.raspberrypi.org/downloads/ en la pc que dispongamos, una vez descargado e instalado la interfaz nos permite seleccionar el sistema operativo que queramos, al igual que seleccionar la tarjeta, con ambos campos llenos solo queda pulsar write, al finalizar solo queda expulsarla e introducirla en la Raspberry.





La segunda opción es descargar los archivos del sistema operativo desde https://www.raspberrypi.org/downloads/ y pegarlos manualmente en la memoria.


Ambas opciones llevan al mismo resultado, sin embargo, es más rápido el primer método debido a los tiempos de descarga y copiado que implica el segundo.

EXM 1

1.1 
Mientras que la arquitectura Von-Newman cuanta con solamente la memoria principal para almacenar tanto datos como instrucciones, la arquitectura Hardvard los divide en 2 diferentes memorias, esto con el fin de optimizar su acceso evitando fallos a costa de disponer del doble de buses para su acceso lo que puede afectar su velocidad de acceso.


1.2
En una instrucción la sección OPCODE identifica la instrucción entre las disponibles, la cual indicara a la maquina que operaciones realizar, mientras que la sección ADDRESS indicara la dirección en la memoria de los datos con los que se trabajara.



1.3
El siguiente código realiza la suma de 5 cantidades permitiendo ver el movimiento de registros en MARIE.js


/ Addition Calculator
/ by the MARIE.js Team
/ Copyright (C) 2016. Licensed under the MIT License

Input
Store V
Input
Store W
Input
Store X
Input
Store Y
Input
Store Z

Add V
Add W
Add X
Add Y
Output
Halt

V, DEC 0
W, DEC 0
X, DEC 0
Y, DEC 0
Z, DEC 0



1.4
El ciclo de instrucción es el tiempo que tarda el sistema en ejecutar todas las partes de una instrucción inicialmente las instrucciones se dividían en 4 fase Fetch instruction, Decode instrucción , Execute instruction y Write operand lo que solamente permitía iniciar una instrucción una vez que la anterior estuviera completada, sin embargo al introducir pipelining se agregan despues de decode las parte Calcualate operands y Fetch operands lo que permite trabajar de manera paralela aumentando la eficiencia y reduciendo el tiempo en el que se ejecuta una serie de instrucciones.

1.5

El mapeo de memoria consiste en ordenar las direcciones de una memoria de manera que este seccionada para garantizar un correcto funcionamiento, incluye rutinas de reset, inicialización, la memoria del usuario seguido del programa del usuario, con interrupciones habilitadas se agrega un espacio al final con tamaño dependiente de la cantidad de interrupciones que existan ya sea de software o hardware

1.6
La existencia de jerarquías en los buses de datos beneficia al desempaño de sistema, ya que los distintos módulos que lo componen operan a diferentes velocidades de transmisión, además es importante que se le de prioridad a los procesos fundamentales en el sistema para asegurar un correcto desempeño.

1.7
Suponga  que  un  procesador  para  realizar  una  operaci´on  por  el  bus,  requiere  de  4  ciclos  de  reloj.
¿Cu´al es la taza de transferencia m´axima que el procesador puede establecer (en MBs), si el reloj es de 500MHz y el bus es de a)16 bits, b)32 bits y c) 64 bits?(1pto.)
Considerando la frecuencia de reloj y que se requieren 4 ciclos de reloj podemos calcular la taza de transferencia para cada caso
 a) (500(16/8))/4= 250 MB/s
 b) (500(32/8))/4= 500 MB/s
 c) (500(64/8))/4= 1000 MB/s
1.8
Para la comunicación serial típica se requiere el uso de 4 cables, un par para transmitir y un par para recibir, esto tiene el propósito de aplicar una técnica llamada cancelación o voltajes diferenciales que tiene como propósito eliminar el ruido por interferencia electromagnética, un cable muestra la señal original mientras que el otro la envía en polaridad invertida, de esta manera al comparar ambas señales será posible eliminar el ruido en su mayor parte.



El enlace en PCI express entre 2 dispositivos puede contar con entre 1 y 32 lanes, cada lane está compuesto por 4 cables un par para transmitir y un par para recibir, estos enlaces tienen como propósito la comunicación por medio de paquetes de datos en formato byte a l mismo tiempo en ambas direcciones, normalmente estos son usados para la conexión a tarjetas gráficas. Por otro lado, el link es la agrupación de lanes las cuales llevan denominaciones x1 x2 x4 x8 x12 x16 o x32 dependiendo del numero de lanes que contenga.