Autor Tema: tengo un par de dudas aquí con unos ejemplos que he visto en vhdl  (Leído 4199 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
tengo un par de dudas aquí con unos ejemplos que he visto en vhdl
« en: 28 de Septiembre de 2009, 15:53:58 »
hola, he estado viendo unos manuales de vhdl y he visto algunos ejemplos que me han dejado con dudas por ejemplo:

¿no le falta a este ejemplo (es un registro tipo flip-flop me parece) la parte de process con su correspondiente lista sensible de variables? ¿o no la necesita en este ejemplo?


LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY Cero IS
PORT ( sX, sY, sZ: IN std_logic;
sH: OUT std_logic);
END Cero;
ARCHITECTURE CeroArch OF Cero IS
BEGIN
sH <= ‘1’ WHEN (sX=’1’ and sY = ‘1’ and sZ =
‘0’) ELSE
‘1’ WHEN (sX=’1’ and sY = ‘0’ and sZ =
‘1’) ELSE
‘0’;
END CeroArch;


y otra duda es si se pueden comparar directamente dos vectores del tipo std_logic_vector, que se declaran así:


va: in std_logic_vector(3 downto 0);
vb: in std_logic_vector(3 downto 0);
z: out std_logic;


¿se podrían comparar así?


if va<vb then z <= 1;
else z <=0 ;



y nada más muchas gracias por vuestra ayuda a ver si alguien me puede echar una mano
 ;-)

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: tengo un par de dudas aquí con unos ejemplos que he visto en vhdl
« Respuesta #1 en: 28 de Septiembre de 2009, 16:47:12 »
Ese modelo no se corresponde con un flip-flop ni ningún tipo de biestable. Es un circuito puramente combinacional.

Si no me equivoco, para poder comparar vectores hay que echar mano de la sobrecarga de operadores, por lo que te debería valer hacer uso del paquete NUMERIC_STD, en la librería IEEE:

library IEEE;
use IEEE.NUMERIC_STD.all;


Aún así, creo que no hay sobrecarga de operadores para el tipo STD_LOGIC_VECTOR, por lo que tendrás que usar vectores de tipo SIGNED o UNSIGNED, según te convenga.

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
Re: tengo un par de dudas aquí con unos ejemplos que he visto en vhdl
« Respuesta #2 en: 28 de Septiembre de 2009, 20:59:33 »
Ese modelo no se corresponde con un flip-flop ni ningún tipo de biestable. Es un circuito puramente combinacional.

de todas formas, no le seguiría faltando el apartado process con la lista sensible de variables (para que dicho proceso se ejecute cuando haya un cambio en cualquiera de las variables de la lista sensible?

gracias por tu respuesta.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: tengo un par de dudas aquí con unos ejemplos que he visto en vhdl
« Respuesta #3 en: 29 de Septiembre de 2009, 08:56:17 »
Los procesos son de carácter secuencial, por lo que no suelen ser útiles cuando se modela lógica combinacional.
Cuando modelas un circuito en vhdl, puedes usar procesos o no, dependiendo de qué necesites modelar.
Cuando hay una señal de reloj de por medio (circuitos síncronos) entonces sí hay que usar procesos, en los que la lista de sensibilidad está compuesta por la señal de reloj y las señales que sean asíncronas y no dependan del reloj para provocar cambios en las salidas (como pueda ser un RESET, por ejemplo)...

Es decir, las salidas asociadas al proceso SÓLO podrán cambiar de estado cuando un cambio en alguna de las señales de la lista de sensibilidad se produzca y así el proceso se ejecute (si no hay cambios de estado en ninguna de las señales de la lista de sensibilidad, el proceso no se ejecuta).

El resto de entradas deben provocar cambios en las salidas UNICAMENTE cuando se produzcan flancos de reloj, por lo que no tiene sentido que estén en la lista de sensibilidad (basta con que esté el reloj)...ya es dentro del proceso donde se comprueba el estado de las otras entradas y se actúa en consecuencia.

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
Re: tengo un par de dudas aquí con unos ejemplos que he visto en vhdl
« Respuesta #4 en: 29 de Septiembre de 2009, 12:37:51 »
Los procesos son de carácter secuencial, por lo que no suelen ser útiles cuando se modela lógica combinacional.

de acuerdo, aunque... si hago un modelado de un circuito combinacional (sin utilizar process) ¿podría hacerlo con "if" en lugar de con "when"? (he visto varios ejemplos de este tipo y siempre utilizaba when en lugar de if)

;)  sl2.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: tengo un par de dudas aquí con unos ejemplos que he visto en vhdl
« Respuesta #5 en: 29 de Septiembre de 2009, 12:57:13 »
No.
IF, CASE, LOOP, etc, son sentencias de ámbito secuencial, es decir, sólo se pueden usar dentro de los procesos.

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
Re: tengo un par de dudas aquí con unos ejemplos que he visto en vhdl
« Respuesta #6 en: 29 de Septiembre de 2009, 16:30:54 »
ok modulay muchas gracias