Herramientas Personales

Clase del viernes 21 de febrero de 2014

por Martín Guillén, Sergio Última modificación 25/02/2014 13:29

(Los deberes para la siguiente clase son "intentar hacer los ejercicios del boletín" pues ya hemos visto toda la teoría, o casi.)

 

 

En esta cuarta clase se trataron las siguientes cuestiones:

  • Nos dedicamos casi toda la clase a explicar la descripción de "circuitos secuenciales" en Verilog.
  1. El método que vamos a explicar para describir ciruitos secuenciales en Verilog se basa en la técnica de descripción procedimental, con bloques "always".
  2. Los circuitos secuenciales que vamos a describir en Verilog tienen una señal de reloj, actica en flancos de subida o en flancos de bajada (no en ambos). Esta señal de relog aparecerá obligatoriamente en la "lista de sensibilidad" del bloque always, precedida de la palabra reservada "posedge" o bien "negedge" según sea relij activo enflancos de subida o de bajada, respectivamente.
  3. Los cambios en las señales de control síncronas no tienen efecto sobre el estado del circuito cuando la señal de reloj permanece estable. Es por ello que las señales de control síncronas no pueden aparecer en la lista de sensibilidad del bloque always. El valor de las señales de control síncronas solo será tenido en cuenta por el circuito secuencial en el momento en que se produzcan un flanco activo en la señal de reloj.
  4. Además de las señales de control síncronas, los circuitos secuenciales pueden tener unas señales de control asíncronas, que tienen prioridad sobre las síncronas y, además, son atendidas aunque la señal de reloj se encuentre en un estado estable, sin cambiar de valor. Para describir en Verilog este comportamiento tenemos que incluir en la lista de sensibilidad del always, no solo la señal de reloj, sino también las señales de control que sean asíncronas. Las señales de control asíncronas se deben incluir con la indicación "posedge" si son activas en nivel alto o con "negedge" si son activas en nivel bajo. Lo lógico sería pensar que las señales de control asíncronas, al ser activas "por nivel" no necesitan especificar el "posedge" o el "negedge", pero aunque parezca lógico, si no lo hacemos así, la herramienta software que utilizamos en las prácticas (el entorno ISE) no es capaz de sintetizar correctamente un circuito sobre una FPGA y nos daría un mensaje de error.
  5. Estuvimos explicando las diferencias entre la asignación "bloquente" (el "=") y la asignación "no bloqueante" (el "<="). Explicamos sus diferencias y dimos una regla general para evitar describir de forma erónea los circuitos: Usar el = cuando estemos describiendo circuitos combinacionales y usar el <= cuando estemod describiendo circuitos secuenciales.
  6. Se vieron diversos ejemplos de circuitos secuenciales simples, para ilustrar todo lo anterior.
  7. También tuvimos ocasión de describir un modulo secuencial complejo, formado por tres biestables y algo de lógica combinacional, de dos formas diferentes: Una, de forma totalmente procedimental y otra, de forma estructural, creando y conectando instancias de un módulo "biestable_d" que habíamos definido previamente.
  8. Para terminar el tema comentamos que en Verilog existe un método sistemático, muy "mecánico" para obtener la descripción Verilog de un circuito secuencial síncrono que implemente una máquina de estados finitos de la cual tenemos un diagrama de estados que indica su funcionamiento. Tendremos ocasión de ver esto en más detalle en una de las prácticas de laboratorio.
Acciones de Documento