domingo, 27 de octubre de 2013

Bloques lógicos útiles en VHDL #4 RAM basada en LUTs (asíncrona)

Como ustedes sabrán (o no), hace como 10 minutos aprendí que practicamente todos los FPGAs tienen unos módulos especiales para almacenar datos y leerlos. A estos módulos en inglés se les llama "Look Up Table" o LUT. Esto en cristiano significa algo así como "Ve a ver si ya puso la marrana", pero pues a pesar de que esto lo decimos con el fin de que se vayan a dejar de "molestar", ya que muy probablemente la marrana no ha puesto nada, en el mundo de los FPGAs, la marrana muy probablemente ya puso algo que necesitamos. El caso es que estos módulos almacenan datos y los podemos usar y ordenar como queramos. Un dato importante es que a este tipo de memoria, también se le llama RAM distribuida (Distributed RAM). Para el caso del Spartan 3E, que es el que usa el Basys2, esta memoria varía entre 15 y 38Kbytes, dependiendo cuánto quieras pagar.

Usar esta RAM es algo realmente fácil, y lo hacemos todo el tiempo cuando almacenamos constantes y cosas así, pero ahora la vamos a usar como se debe (más o menos). En estos ejemplos vamos a construir un bloquecito de RAM de 8x8 (8 registros de 8 bits). Este ejemplo es cuando queremos leer la RAM de manera asíncrona. Más adelánte postearé un tutorial de RAM con lectura síncrona

RAM Asíncrona

Primero comenzamos con la declaración de librerías y de puertos.
























Necesitamos declarar ciertas constantes para que nuestro código se pueda adaptar fácilmente. Los puertos que necesitamos son la dirección de la memoria, el dato a enviar, una señal que nos indique cuándo podemos escribir y por último la lectura de la memoria en la dirección deseada.

Ahora nos vamos a la parte de la arquitectura. El truco aquí es crear una matriz de datos (8x8), por lo que necesitamos declarar un nuevo tipo. Llamémosle "tipo_ram". También hay que declarar una señal con este tipo









Por último hay que declarar la manera en la que se va escribir y accesar la memoria.














Nótese que la escritura es síncrona y está controlada por la entrada "escribir". Si esta entrada esta en '0', no escribe y nada más lee. Hay que realizar cambios de tipos, ya que la entrada "dir" esta en "std_logic_vector", pero el índice de la variable "ram" que es "tipo_ram" debe ser "integer".


Como pordán ver la simulación funciona de maravilla. El dato se escribe cuando tenemos un flanco positivo en el reloj y cuando "escribir" es '1'.

Este ejemplo lo saqué de un libro titulado "FPGA Prototyping by VHDL Examples - Xilinx Spartan 3 Version", aunque le modifiqué algunas cosas, como el tamaño de el bloque de la RAM.

Ahora les dejo el código .vhd y los archivos de la simulación

Código .vhd


Simulación usando ActiveHDL


My Github
https://github.com/DiegoRosales

sábado, 26 de octubre de 2013

Bloques lógicos útiles en VHDL #3 Control de sincronización para VGA

Ok, ahora les voy a enseñar como hacer un controlador VGA usando un FPGA para que con base en eso puedan mandarle cualquier imagen a un monitor. Lo primero es entender las señales. Los monitores VGA trabajan con 5 señales básicas: la señal de sincronía vertical, la señal de sincronía horizontal, la señal del color rojo, la señal del color verde y la señal del color azul (RGB). 

Las señales de los colores son analógicas y varían entre 0 y 0.7V. Entre más voltaje, más brillante es el color. Haciendo combinaciones con los tres colores, se puede representar cualquier imagen.

Por otro lado, las señales de sincronía funcionan de la siguiente manera. El monitor va "imprimiendo" cada pixel de izquierda a derecha y de arriba hacia abajo, como se ve en la siguiente imagen



Por lo tanto, tiene que haber alguien que le diga cuándo empieza y cuándo termina. Este alguien son las señales de sincronización vertical y horizontal, y funcionan así.


Tanto la señal horizontal como la señal vertical tienen este formato. La señal comienza con un pulso de sincronización (Sync Pulse). Luego pasa a un "tiempo de espera" llamado Back Porch. Durante el Sync Pulse y el Front Porch, no se despliega ninguna imagen, y es recomendable no mandar a desplegar nada en ese momento. Después de que el pasó el Sync Pulse y el Back Porch, comienza el área visible. Aquí es el momento de comenzar a mandar la imagen. Una vez que termina de mandarse la imagen, se llega a un segundo tiempo de espera llamado Front Porch. Terminando este tiempo, la señal vuelve a comenzar.

Si tenemos un monitor de X pixeles de ancho por Y pixeles de alto, la señal de sincronización horizontal se debe mandar Y veces por cada vez que se refresca la pantalla (una por cada línea). Es decir, si tenemos un monitor de 640x480 pixeles, la señal de sincronización vertical se debe mandar 480 veces por cada señal de sincronización horizontal.

Ahora se estarán preguntando ¿cuánto deben durar estas señales?
Pues la respuesta varía según dos factores: la resolución que deseamos lograr y la frecuencia de actualización de nuestro monitor. La mayoría de los monitores utilizan una frecuencia de 50 o 60Hz, pero las resoluciones pueden variar mucho.

El motivo de estas señales que pueden llegar a ser hasta cierto punto ambiguas, es debido a la tecnología que usaban los monitores CRT. Ahora ya casi nadie usa estos monitores, pero el protocolo VGA sigue siendo bastante popular y prácticamente no ha cambiado.

Aquí es va el ejemplo. Vamos a utilizar una resolución de 640x480 pixeles a una frecuencia de 60Hz. Si se meten a este link (http://tinyvga.com/vga-timing/640x480@60Hz) encontrarán una tabla muy útil que es esta


Se darán cuenta que el Sync Pulse, el Front Porch y todas las partes de la señal se miden en pixeles. Esto facilitará impresionantemente nuestro código. Cabe destacar que aunque dice que necesitamos una frecuencia de pixeles de 25.175MHz, no es necesario generar esa frecuencia exacta, ya que los monitores modernos se pueden acoplar a tan sólo 25MHz. Sin embargo, si se va a usar un monitor viejo, pues sí hay que generar esa frecuencia exacta.

Pues bien, comencemos con el código. Este código está planeado para una tarjeta de desarrollo Basys2 con un FPGA de Xilinx modelo Spartan 3E y un reloj de 50MHz. Esta tarjeta cuenta con un puerto VGA, que internamente tiene un convertidor digital a analógico de 3 bits para el color rojo y el color verde y de 2 bits para el color azul, teniendo un total de 256 posibles colores.

Primero los puertos y las librerías

La única entrada es la señal de reloj de 50MHz.
Las salidas son las señales de sincronización horizontal y vertical, una señal que nos indique en qué momento comienza el área visible, una cuenta de pixeles en X y en Y, y el reloj de 25MHz para que esté todo bien sincronizado.

Ahora siguen las constantes que vamos a usar

Estas constantes son los datos de la tabla de hace un momento

Ahora siguen las señales internas


Ahora comenzamos con el divisor de frecuencia (de 50 a 25 MHz)

Luego, con esta nueva frecuencia, pasamos a hacer un contador horizontal y un contador vertical. Cada vez que el contador horizontal llegue a su límite, el contador vertical aumenta 1

Ahora viene la parte que manda el pulso de sincronización y la parte donde detecta cuándo comienza la parte visible de la señal

Finalmente viene la parte donde la cuenta horizontal y vertical del área visible comienza (aquí es donde se cuenta en qué pixel del área visible nos encontramos), y las asignaciones de las señales.

Como podrán ver, si lo implementamos en el FPGA, obtenemos estas señales (arriba es la horizontal y abajo es la vertical)


Señal horizontal completa


Pulso de sincronización vertical


Pulso de sincronización horizontal

Y pues si hacemos un código de prueba que despliegue 3 colores verticales, obtenemos el siguiente resultado



Y pues bueno, aquí les dejo los códigos de la simulación en Active HDL y del proyecto completo del Xilinx ISE Design Suite. Incluyen la imagen de prueba.

Simulación


Proyecto


Puro código de sincronización


My Github
https://github.com/DiegoRosales

jueves, 24 de octubre de 2013

Dimmer controlado con aplausos (clap controlled dimmer)

Este es un proyecto que hice con unos compañeros para la materia de electrónica industrial. Consiste en realizar el control de la intensidad de la luz de un foco incandecente de 100W únicamente aplaudiendo. Les voy a compartir el reporte que le entregamos al profesor, pero como la materia es impartida en inglés, el reporte también está en inglés y me da mucha flojera traducirlo. Sólo les pondré lo básico. Lo que utilizamos fue un SCR (era requisito del proyecto) para controlar la cantidad de energía que es transferida al foco. El diagrama a bloques básico es este.


El chiste es sincronizar la señal de activación del SCR con el voltaje de la linea eléctrica. Esto es necesario ya que si no se hace, la señal que se le manda al SCR no coincidirá siempre con el semiciclo positivo de la línea, y si llegase a coincidir, ésta no siempre se mandaría en la misma parte del semiciclo positivo de la señal. Es decir, el foco estaría parpadeando todo el tiempo. Es por esto que fue necesario el detector de cruce por cero.

Hay un montón de circuitos en internet para realizar la detección del cruce por cero, ya que para muchas aplicaciones es muy importante (como ésta jaja), pero la mayoría de ellas requieren ya sea transistores (que a mi me cuesta mucho trabajo usarlos) o amplificadores operacionales con entrada bipolar (que no quería usar, ya que queríamos utilizar únicamente los 5V que tiene el Arduino) o cosas medio bizarras. Es por esto que nosotros "inventamos" nuestro propio sistema de detección utilizando las bondades del Arduino Duemilanove. Nuestra solución fue bajar el voltaje de la línea a algo razonable (3V aprox), rectificarlo con un rectificador de media onda (para no causar problemas con los voltajes negativos) y meterlo al ADC del Arduino con una resistencia limitadora de corriente. Entonces el Arduino analiza la señal y determina cuándo está en la parte positiva de la señal y cuándo en la parte negativa. Ojo que para esto, necesitamos muestrear la señal de la línea lo más rápido posible que es 5kHz (en realidad lo más rápido son 10kHz, pero ahorita les cuento qué pasa). A pesar de que el teorema de Nyquist nos dice que necesitamos una frecuencia de muestreo del doble de la frecuencia más grande de nuestra señal para evitar el aliasing (que en este caso sería 2x60=120Hz), necesitamos sobremuestrear la señal para saber con precisión y en todo momento en qué parte de la señal nos encontramos, para poder mandar una señal precisa al SCR que no ande variando. Esto implica que para depurar y optimizar el programa, necesitamos una velocidad de comunicación serial muy grande con la computadora (de 115200 baud/seg, en vez de los típicos 9600).

Para la detección del aplauso, íbamos a usar uno de esos micrófonos electret de condensador, pero resultaron ser basura para lo que queríamos. Por eso usamos un micrófono de computadora que nos sirvió de maravilla. Curiosamente estos micrófonos requieren un circuito de polarización y acoplamiento, mismo que obtuvimos de esta página http://www.hobby-hour.com/electronics/computer_microphone.php y pues nos sirvió a la primera. Por supuesto que de la salida del circuito lo mandamos a un buffer (que quién sabe si era necesario) y a un amplificador de ganancia como de 3, y de ahí a otro ADC del Arduino para que éste determine cuando hubo aplauso o no.

Finalmente, con la detección de los aplausos y la detección del cruce por cero de la línea, el Arduino genera un pulso cuya duración que va a depender del número de aplausos detectados hasta el momento y de la detección del cruce por cero (los detalles están en el reporte ;D). El caso es que este pulso va a un optoacoplador con salida SCR, que va a permitir que el segundo SCR (de potencia) se active con la misma señal de la línea, como es común para este tipo de circuitos.

El resultado final fue este


En la parte de arriba está el voltaje en el SCR y en la parte de abajo está la corriente en el foco. Nuestro circuito (que se ve un poco desastroso fue este)


Aquí les dejo el link del reporte y del código para el Arduino

Reporte


Código del Arduino


My Github
https://github.com/DiegoRosales

jueves, 10 de octubre de 2013

Bloques lógicos útiles en VHDL #2 - Contador de 1 bit (divisor de frecuencia)

Bueno, ahora les mostraré cómo se puede hacer un contador de 1 bit por si quieren dividir su señal de reloj entre 2 o cualquier cosa que necesiten. Este es un contador utilizando los muy útiles FlipFlops tipo D con Clear y Chip Enable (FDCE). Les enseño el circuito


El código para implementar este circuito es muy sencillo. Se los muestro

library IEEE;
use IEEE.std_logic_1164.all;

library UNISIM;
use UNISIM.vcomponents.all;

entity contador_1bit is
port(
CK1: in std_logic; -- Reloj de entrada(50MHz)
CK2: out std_logic -- Reloj de salida (25MHz)
);
end contador_1bit;

architecture contador_1bit of contador_1bit is

signal notQ, temp_Q: std_logic; -- Crea las señales a utilizar
begin
bit0: FDCE generic map ('0') -- Comienza en 0
port map (C=>CK1, D=>notQ, Q=>temp_Q, CE=>'1', CLR=>'0');         -- Asigna los pines  
notQ<=not temp_Q; 
      -- Niega la salida del FDCE y la regresa a la entrada
CK2<=temp_Q; -- Asigna la salida
end architecture;

Como podrán ver, hice uso del FDCE que vimos la vez anterior. Con esto ya no tenemos que construir nuestros Flip Flops, pues ya vienen hechos. Para que vean que sí funciona, les enseño la simulación.


Les dejo los archivos que utilicé en mi cuenta de MediaFire.

domingo, 6 de octubre de 2013

Bloques lógicos útiles en VHDL #1 - Flip Flop tipo D con Clear y Chip Enable (FDCE)

Como ahora ando metido en esto de los FPGAs, he decidido comprartirles unos cuantos códigos útiles que pueden utilizar en sus diseños a bloques. Este primer código es un Flip Flop tipo D con habilitador (Chip Enable), Reset (Clear) asíncrono y entrada de reloj.
Si se dan cuenta (y con mucha imaginación), el nombre de este Flip Flop se puede simplificar como FDCE. Recuerden esto, pues les será muy útil después. El circuito es este:



Como podrán ver, tiene una entrada "D", una salida "Q", un habilitador "CE", un reset asíncrono "CLR" y una entrada de reloj (el triangulito). Es bastante básico, pero muy útil.

Este es el código.



library IEEE;
use IEEE.STD_LOGIC_1164.all;  

entity FDCE is
generic (INIT :std_logic:='0'); -- El Flip Flop inicia en 0
port(CE, CLR, C, D: in std_logic;
Q: out std_logic);
end FDCE;

architecture FDCE of FDCE is
signal temp: std_logic :=INIT;
begin
process (CLR, C)
begin
if(CLR='1') then -- Clear asíncrono
temp <='0';
elsif(CE='1' and C' event and C='1') then -- Si hay una señal de reloj con flanco positivo, Q obtiene el valor de D
temp <=D;
end if;
end process;
Q<= temp;
end FDCE;


Aquí les dejo una captura de la simulación en Active-HDL para que vean que sí funciona


Ahora lo padre de este Flip Flop es que en prácticamente todos los FPGAs viene ya construido y es muy fácil hacerlo funcionar sin necesidad de escribir este código. Lo único que tienen que hacer es instanciarlo y ya. Ni siquiera lo tienen que declarar como componente. Aquí les va un ejemplo usando las librerías de Xilinx para un Spartan 3E.

library IEEE;
use IEEE.STD_LOGIC_1164.all; 

library UNISIM;
use UNISIM.vcomponents.all;

entity FDCE_Xilinx is
port(
CK, D, CE, CLR: in std_logic;
Q: out std_logic
);
end FDCE_Xilinx;


architecture FDCE_Xilinx of FDCE_Xilinx is
begin

FlipFlop: FDCE generic map('0') -- Comienza en 0
port map (C=>CK, D=>D, CE=>CE, CLR=>CLR, Q=>Q);

end FDCE_Xilinx;

Como podrán ver, estoy utilizando una librería adicional que es la UNISIM. Esta librería es de Xilinx y está hecha para instanciar un montón de cosas en sus FPGAs, entre ellas este FlipFlop llamado FDCE (como el nombre que convenientemente le puse al otro código!!). Existe una muy buena documentación sobre todo lo que trae esta librería. Les dejo el link de la info para el Spartan 3.

Los archivos del Active-HDL también los pueden bajar de mi cuenta de MediaFire. Les dejo el link.

My Github
https://github.com/DiegoRosales

Saludos!!

miércoles, 12 de diciembre de 2012

Mi experiencia con Windows 8

Pues Windows 8 ya salió y existen muchas opiniones encontradas con respecto a esta nueva versión de Windows. Muchos piensan que es fantástico, muchos dicen que apesta. En un momento conocerán mi opinión. Sin embargo, antes quiero darles cierta información acerca de este nuevo sistema.


Información general

Videos
Para que vean más o menos de qué se trata Windows 8, aquí les dejo unos videos cortos.






Historia
  • Microsoft comenzó a trabajar en este sistema operativo desde antes de lanzar Windows 7. 
  • En Computex de 2011, Microsoft mostró por primera vez al público cómo sería Windows 8 a grandes rasgos y honestamente quedé un poco impactado al verlo. (http://youtu.be/UYSSdSNFjhU)
  • En septiembre de ese año, en la conferencia BUILD, Microsoft lanzó la versión Developer Preview del Windows 8, junto con una versión beta de Visual Studio 2012. Esta versión (como su nombre lo dice), estaba orientada a los desarrolladores para que empezaran a construir nuevas "apps" para su tienda utilizando Visual Studio 2012 que tiene un montón de funcionalidades nuevas para desarrollar las "apps". (http://youtu.be/FUCwmPgn95M)
  • En mayo del 2012, la versión Consumer Preview salió a la luz. Esta versión incluyó muchas mejoras (como era de suponerse) y fue diseñada para que los usuarios comunes lo probaran y pudieran dar retroalimentación a Microsoft para poder mejorarlo aún más.
  • El 26 de octubre del 2012, Windows 8 fue lanzado al mercado.
Datos importantes
  • La principal característica del Windows 8 es su nueva interfaz estilo "Metro" (que ya ni se llama metro) que es esta.

Esto viene siendo únicamente el nuevo menú de inicio, pues el escritorio, los documentos, programas, etc. siguen existiendo. La cuestión aquí es que esto es mucho más práctico para usar si quieres usar Windows en una tablet.

  • Al igual que prácticamente el resto de los sistemas operativos que existen, Windows 8 incluye una tienda de aplicaciones (apps) llamada Windows Store (o tienda de Windows en cristiano). De aquí se pueden descargar todas las apps que funcionan bajo el estilo "metro" de Windows 8.

  • Existen 3 ediciones principales de Windows 8: Windows RT, Windows 8 y Windows 8 Pro. Windows 8 y Windows 8 Pro son casi iguales. Sólo difieren en algunas cosas como la encriptación de discos y cosas así. Estas dos ediciones están construidas para trabajar con los procesadores comunes con arquitecturas 32 y 64 bits (Intel y AMD). Windows RT, por su parte está diseñado para trabajar con procesadores de arquitectura ARM (Advanced RISC Machine). Estos procesadores son muy comunes en la industria de dispositivos móviles, y ¿por qué no habrían de serlo? Quiero decir que esos procesadores son asombrosos, pues integran una gran cantidad de funcionalidades (procesador gráfico, varios núcleos del procesador central, etc) en un solo chip súper pequeño y que casi no consume potencia. La cuestión aquí con Windows RT y los procesadores ARM es que debido a que no trabajan con las arquitecturas que se han estado usando hasta ahora en las PCs, los programas escritos para versiones anteriores de Windows no se podrán utilizar con Windows RT. En otras palabras: si tienes Windows RT, los programas que utilizarás vendrán únicamente de la tienda de Windows. Es por esto que de antemano les digo que eviten a toda costa Windows RT!!

Bueno, esto es lo más importante que deben saber. Ahora mi experiencia

Mi equipo
Para que sepan que sistema estoy utilizando, aquí les van los datos
Tipo de PC: Laptop
Marca: Asus
Modelo: N53SV
Fecha de compra: Verano del 2010
CPU: Intel Core i7-2630QM @2GHz
GPU: Nvidia GeForce GT540M 1GB
Memoria: 6GB DDR3
Pantalla 15.6", 16:9, 7366x768
HDD: 750GB @7200RPM (Interno), Seagate 1.5TB (Externo)
ODD: BDRom (Interno), DVDRW (Externo)
Audio: Interface Digidesign Mbox 2 (Externa)
Mouse: Multitouch Touchpad, Microsoft Arc Touch
Controlador MIDI: Roland Fantom X6
SO: Windows 8 Pro (cortesía de DreamSpark Premium por miembro de la IEEE)


Instalación

SO y Drivers y Antivirus
La instalación del Windows 8 fue bastante sencilla. Fue rápida y con pocas preguntas. Todos los controladores esenciales (gráficos, WiFi, touchpad, lector de tarjetas de memoria, webcam) se instalaron junto con el SO. Por su puesto, yo ya tenía preparados los controladores más recientes para instalarlos después. Dentro de los controladores que tuve que instalar manualmente, fueron: el controlador del puerto USB 3.0, el controlador de la tarjeta Mbox 2, el controlador para las funciones extras del teclado (control de brillo, volumen, etc) y el sistema Power4Gear de Asus para manejar los planes de energía. Todos estos controladores se instalaron sin un sólo problema y la mayoría era controladores de hace varios años. Cabe destacar que el controlador para el teclado Fantom X6 no se pudo instalar debido a que el controlador tiene una restricción para poderse instalar únicamente en Windows 7. Ojalá Roland actualice los drivers pronto.
Algo que me pareció sorprendente y que es la primera vez que me ocurre es que cuando recién instalé Windows, no hubo ningún mensaje de alerta ni nada que me dijera que el sistema está vulnerable y que no tiene protección. Es decir, Windows no me reclamó de que no tenía ningún antivirus instalado. Esto es debido a que Windows ya traía su propio antivirus (Windows Defender). Esto lo sentí como algo grandioso, pues no sólo no tuve que instalar un solo controlador para poder utilizar Windows, sino que tampoco tuve que preocuparme por el antivirus, y eso es lo que yo digo que es empezar las cosas bien. Sin embargo, cuando traté de instalar Kaspersky Internet Security 2012, éste se rehusó a ser instalado porque el sistema no era Windows 7 (o anterior). Sin embargo, descargué la versión de prueba de la versión 2013 de Kaspersky y se instaló sin ningún problema. Muy mal por Kaspersky.

Programas
Algo que me preocupaba de esta nueva versión de Windows era que los programas llegaran a no ser compatibles o que no funcionaran bien. Para ver si esto era cierto, instalé los programas que más me preocupan.

Office 2010
Yo tengo el Office 2010 y la instalación ocurrió sin problemas. La activación (que era lo que me preocupaba... yojojo) también ocurrió sin ningún acontecimiento, y como resultado final, todos los componentes de Office 2010 funcionaron de maravilla.

Matlab r2011b
Siendo estudiante de Ingeniería Electrónica (yeah!), Matlab es una herramienta esencial para el desarrollo de proyectos y prácticas. Por fortuna el programa junto con todos los toolbox's se instalaron sin ningún problema y funcionan a la perfección.

OrCAD 16.2
Este programa de diseño y simulación de circuitos también es muy importante para mi, pero desgraciadamente no funcionó bien. La instalación y activación ocurrió sin incidentes, pero al momento de abrirlo, pone loco al antivirus que consume casi todo el CPU y para tranquilizarlo necesito reiniciar la compu. Posteriormente voy a probar con la versión 16.3 a ver si esta funciona correctamente.

Kontakt 5
Este progama lo utilizo para cargar librerías de instrumentos virtuales y poder tocar el piano en la computadora a través del puerto MIDI de la tarjeta Mbox 2. Este programa se instaló y funciona prefectamente.

Cantabile Performer 2.0
Este programa lo utilizo como host para mis instrumentos y plugins VST (como Kontakt 5). El programa se instaló y funciona correctamente

Cubase 5
Este programa lo utilizo para grabar y editar música. También se instaló y funciona correctamente

Asio4All 2.11 Beta 1
Este programa es muy usado por los músicos si es que no se tiene una tarjeta de audio con drivers ASIO (como la tarjeta de audio integrada en las computadoras). Este programa se instaló y funciona a la perfección

Google Chrome
Por supuesto que este navegador no causó ningún problema para instalar. Sin embargo, cuando le doy clic a un enlace de una app en la tienda de Windows, no me redirige (no hace nada), por lo que tengo que abrir IE10 para que me redirija a la tienda.

Programas extras como Steam, Speccy, Revo Uninstaller Pro, etc. se instalaron y funcionaron sin problemas. Posteriormente haré pruebas con Pro Tools 8, Arduino, MPLAB, Active-HDL, etc. ya que al igual que OrCAD, son programas un poquito "especiales".

Metro apps
Las aplicaciones metro son divertidas, pero aún les falta mucho madurar (especialmente las de Microsoft). Por ejemplo: la tienda de Windows no me muestra todas las aplicaciones que tiene (por eso las busco en Internet)  y cuando las intento descargar, salvo que tenga la ventana de descargas abierta, tardan demasiado en descargarse e instalarse (como 15 o 20 minutos). La aplicación de correo no es mala, pero carece de muchas funcionalidades (como marcar correo como no deseado). La aplicación de calendario funciona pero para las cuentas de Microsoft, pues no me muestra ningún evento de la cuenta que tengo en Google. La aplicación de mensajería está bien chafa y casi no tiene opciones. En general todas tienen sus detalles que espero se corrijan en un futuro no muy lejano. Los juegos clásicos de Windows, por su parte, son otro boleto. Se nota que le pusieron mucho empeño en mejorarlos y cambiarlos drásticamente (en especial pinball y buscaminas). Siguen siendo tan entretenidos como siempre, además de que puedes compartir tus puntuaciones en Xbox Live.


Funcionalidad


Interfaz

Cuando vi por primera vez Windows 8, pensé "esto es completamente impráctico para alguien que no tiene una pantalla táctil". La pantalla principal que promocionaban no me gustó mucho al principio (pensé todo menos eficiente). pero una vez que me puse a jugar, resultó ser algo muy interesante.
El escritorio sigue siendo el mismo de siempre (excepto sin el menú inicio tradicional). Puedes anclar programas a la barra de tareas y hacer todo lo que normalmente haces. Y si no te gusta el nuevo menú inicio (pantalla de inicio), existen una gran cantidad de programas que te permiten recuperar el viejo inicio sin dificultades. Además, no hay ningún programa de Windows que te obligue a mantenerte en la nueva pantalla de inicio si toda tu actividad se centra en el escritorio. Es más, hay aplicaciones que te permiten saltarte completamente la pantalla de inicio e ir directamente al escritorio cuando inicias sesión. El sistema de archivos sigue siendo el mismo y el explorador de Windows se ha mejorado de manera radical. Es más, uno puede montar archivos .iso en unidades virtuales directamente sin necesidad de aplicaciones extras (súper cool!).
Con respecto a los "charms", éstos son especialmente útiles si se usa Windows 8 en una tablet, pues es la única manera que se tiene para acceder a las características especiales de Windows y de las apps si no se tiene un mouse. Los charms son menús que se accesan a través de movimientos especiales (gestures) que se hacen en la pantalla táctil (o en un touchpad que soporte multitouch) que hace que se desplieguen ciertas opciones. Sin embargo, si se usa un mouse normal, se pueden acceder a estas opciones ya sea llevando el cursor a los extremos de la pantalla o con el botón derecho dentro de una app. Esto quizás no es tan intuitivo para una persona que usa teclado y mouse, pero después de 20 segundos de practicar ya no se te olvida.
Algo que me costó trabajo descubrir es que para acceder a las opciones de una aplicación en particular, uno se debe ir a la sección de configuración que aparece en el menú derecho.



Adicionalmente, también descubrí que mi touchpad podía hacer charms lo cual resulta muy cool. Sin embargo, no he encontrado ninguna opción que pueda regular la sensibilidad de los charms lo cual hace esto menos cool porque a veces hace cosas que no quiero.
Un detalle con el buscador de la pantalla de inicio es que automáticamente te hace la búsqueda en la categoría de aplicaciones, en vez de búsqueda general y luego especificar que estás buscando aplicaciones o archivos o preferencias, etc. Esto es meramente personal ;D

Velocidad


Windows 8 es extra rápido! Definitivamente es más rápido que Windows 7. Enciende desde cero en aproximadamente 15 segundos y se suspende en menos de 3 segundos. En ningún momento se ha trabado o ha dejado de ser fluida la pantalla de inicio. Las aplicaciones se abren muy rápido y cuando no se utilizan consumen 0% del CPU. Uno se puede mover entre aplicaciones sin esfuerzo y sin que se trabe la computadora. También instalé Rage con Steam y corre maravillosamente. 

Batería

Windows 8 junto con el sistema Power4Gear Hybrid de Asus, lograron aumentar la vida de la batería considerablemente. Con Windows 7, a penas lograba tener 1 hora y media de batería en modo ahorrador, mientras que con Windows 8 fácilmente llegué a las 2 horas y aún me sobraba suficiente para otro rato. Eso es un plus que definitivamente se aprecia.

Inteligencia

Pude notar que Windows 8 es mucho más inteligente que Windows 7. Por ejemplo: cuando conecté mi computadora a la TV con el cable HDMI, no tuve que configurar absolutamente nada. La resolución y el audio automáticamente se ajustaron. En cambio, con Windows 7 tuve que configurar la resolución exacta con el panel de control de Nvidia (que no era 1080p exacto) y el audio (en las configuraciones de audio).
También, la primera vez o dos veces que conecté el disco duro externo, me preguntó qué quería hacer (abrir en el explorador, reproducir archivos, etc.) pero las veces siguientes que lo conecté ya no me preguntó, sino que fue directo a la opción que sabía que iba a elegir (abrir en el explorador).

Conclusiones


A pesar de que hubo un par de incidentes con ciertos programas, Windows 8 tiene potencial para ser un increíble sistema operativo. Se puede tener las funcionalidades de una tablet con una tienda de apps, jueguitos y demás, pero sin comprometer las funcionalidades de una poderosa PC (siempre y cuando no eligan Windows RT). Sin embargo, el cambio aparente del sistema (en especial del entorno gráfico) es un poco brutal y a la gente no siempre le gusta eso. Pienso que va a tomar un poco de tiempo que la gente se adapte a este nuevo sistema operativo, pero cuando suceda, va a ser genial. Además, una tablet con Windows 8 (no windows RT) destroza completamente cualquier tablet ya sea iPad o Android.


-------------------------------------------Actualización----------------------------------------

OrCAD 16.3 tiene el mismo problema que OrCAD 16.2. Para poder utilizarlo, instalé VMWare Player con Windows XP SP2 Home Edition y ahí instalé OrCAD 16.3. Funciona de maravilla y mucho más rápido que con Windows 7. Además VMwre Player tiene funciones muy padres de integración que hacen parecer que OrCAD está corriendo en el Windows 8 y no en Windows XP.

Roland recientemente lanzó nuevos controladores para los teclados Fantom X que ya son compatibles con Windows 8 (no Windows RT) y funcionan de maravilla.