Pages Menu
TwitterFacebook



Posted by on Mar 23, 2015 in Verilog | 1 comment

Hello World

Máquina de Estados

Máquina de Estados

Máquina de Estados Uno de los aspectos más destacados y frecuentes en los diseños Verilog, es la realización de máquinas de estados. En esta sección, se propone un método para la estructuración de una máquina de estados, empleando tres procesos. Asignación asíncrona del siguiente estado, partiendo de de las entradas al diseño y del estado en el que se encuentre. Asignación síncrona, donde el flanco de reloj hace que el estado actual sea el que se ha estado preparando. Asignación de las salidas. A continuación en el siguiente ejemplo se modela un semáforo en Verilog, mediante una máquina de estados: module semaforo (clk, rst, color); input clk; input rst; output [1:0] color; reg [1:0] state, nextState; reg [8:0] cnt; // Asignación asíncrona del siguiente estado always @(state, cnt) case(state) 0: // Color Rojo if (cnt == 100) nextState = 1; else nextState = 0; 1: // Color Ambar if (cnt == 120) nextState = 2; else nextState = 1; 2: // Color Verde if (cnt == 200) nextState =...

Read More

Posted by on Mar 11, 2015 in Verilog | 0 comments

Hello World

Contadores y Clocks

Contadores y Clocks

Diseño de Contadores y Clocks El diseño de contadores y clocks (señales de reloj) regulan la lógica de las señales para que los sistemas secuenciales puedan correr a una velocidad óptima. Para la generación de estímulos se utilizan los procesos initial y always. La elección de éstos viene determinada por las características de las señales a generar. Dependiendo de la naturaleza de la señal, éstas se pueden generar de forma síncrona o asíncrona. La generación asíncrona se basa en el uso de retardos para activar y desactivar señales, mientras que la generación síncrona se basa en el uso de eventos, disparados por flancos para activar y desactivar señales. En este caso todas las señales que se activen de forma síncrona se harán con un retardo. Señal de Reset Síncrona initial begin rst = 1'b0; repeat(2) @(posedge clk) #1; rst = 1'b1; @(posedge clk) #1; rst = 1'b0; end Fuentes de Oscilación  (Clocks) Pin_17 En verilog podemos sintetizar relojes mediante contadores síncronos. Diseño de un Oscilador de 1Hz. Practica Clocks: Esta practica consiste en...

Read More

Posted by on Mar 2, 2015 in Verilog | 1 comment

Hello World

Estructura Case

Estructura Case

Estructura Case La sentencia case evalúa una expresión y en función de su valor ejecutará la sentencia o grupo de sentencias agrupadas en el primer caso que coincida. Si existen varias sentencias se deben agrupar en un bloque begin-end. Si no se cubren todos los posibles valores se debe hacer uso del caso por defecto, denominado default, el cual se ejecutará cuando ninguno de los casos anteriores se cumplan. La sintaxis de esta estructura es la siguiente: case (expresion) caso 1: begin Sentencias 1; end caso 2: begin Sentencias 2; end ..... default: begin Sentencias D; end endcase Consideraciones Esta estructura permite clasificar las acciones que se realizaran a partir de una variable digital. Toda estructura Case deberá de estar contenida en un bloque always @ (Array). Begin y end solo son necesarios en caso de realizar mas de una instrucción. Todas las combinatorias de las entradas deberán ser evaluadas en el bloque case. Ejemplo: En este ejemplo se explicara el funcionamiento de la estructura case (casos). Teniendo en cuenta...

Read More

Posted by on Feb 23, 2015 in Verilog | 0 comments

Hello World

Introducción a Verilog

Introducción a Verilog

Introducción a Verilog Descripción de Software Introducción a Verilog es un lenguaje de descripción de hardware (HDL), es ideal para la programación sencilla de FPGA’s Altera, este lenguaje soporta el diseño, prueba e implementación de circuitos analógicos, digitales y de señal mixta a diferentes niveles de abstracción. Los diseñadores de Verilog querían un lenguaje con una sintaxis similar a la del lenguaje de programación C, de tal manera que le resultara familiar a los ingenieros y así fuera rápidamente aceptada. El lenguaje tiene un preprocesador como C, y la mayoría de palabras reservadas de control, como “if”, “while”, “for” etc, son similares. El mecanismo de formateo en las rutinas de impresión y en los operadores del lenguaje (y su precedencia) son también similares. A diferencia del lenguaje C, Verilog usa Begin/End en lugar de llaves para definir un bloque de código. Por otro lado la definición de constantes en Verilog requiere la longitud de bits con su base. Verilog no tiene estructuras, apuntadores o funciones recursivas. Finalmente el “concepto de tiempo”, muy importante...

Read More