Haz una pregunta
  Foros de Electrónica » Diseño digital » Circuitos lógicos combinacionales y secuenciales
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

12/11/2010 #1


duda con signal en vhdl
estoy haciendo el primer, ejercicio para la universidad, he leido unos cuantos archivos de vhdl. pero no logro entender por q no me funciona la signacion de SIGNAL

estoy haciendo un multiplexor de 4 canales con 4 bits, esto a su vez a un decodificador de 7 segmentos, utilizando xilinx, 12.1 y me genera 3 errores con las aignacion de signal

alguien me puede explicar donde comento los errores ya que mis escasos conocimientos sobre le tema y el programa no me lo permiten, gracias
09/02/2012 #2


hola, yo tmb tengo el mismo problema, lo pudiste resolver??
10/02/2012 #3

Avatar de Americo

este tema no va aqui, porfabor moverlo a dudas en VHDL.... pero bueno.. te respondo... en primer lugar el vector Y esta mal dimencionado deberia de ser asi : y : out STD_LOGIC_VECTOR (6 downto 0) supongo que lo utilizar para mostrar en displays de 7 seg.
luego en la parte de asignacion de hexadecimal estan mal los codigos de c,d,e que deberias de ser 1100, 1101, 1110 respectivamente. eso es lo que podria opinar a primera revision del codigo... ahhh ademas que el signal z, su condicion inicial deberia de ser de la forma "0000". y en el process en la lista de sensibilidad solamente deberia de ir sel, los demas estan redundando

para el segundo case prueba añadir un process(z) antes de este que creo que eso lo borrastes ya que deberia de estar ahi segun tu codigo
11/02/2012 #4

Avatar de ingenierus1

andresd0 dijo: Ver Mensaje
estoy haciendo el primer, ejercicio para la universidad, he leido unos cuantos archivos de vhdl. pero no logro entender por q no me funciona la signacion de SIGNAL

estoy haciendo un multiplexor de 4 canales con 4 bits, esto a su vez a un decodificador de 7 segmentos, utilizando xilinx, 12.1 y me genera 3 errores con las aignacion de signal

alguien me puede explicar donde comento los errores ya que mis escasos conocimientos sobre le tema y el programa no me lo permiten, gracias

Buen día Andres, inicialmente quiero hacerte una aclaración:
A la hora de abordar un diseño en VHDL se debe decidir si se va a manejar desde el punto de vista secuencial (usando process) o concurrente (sin process).
Por mi parte te recomiendo usar la programación concurrente en la mayoría de los casos debido a que evita muchos problemas de comprensión de lo que se programa; utiliza secuencial cuando necesites diseñar registros o memorias.

---------- Actualizado después de 13 minutos ----------

andresd0 dijo: Ver Mensaje
estoy haciendo el primer, ejercicio para la universidad, he leido unos cuantos archivos de vhdl. pero no logro entender por q no me funciona la signacion de SIGNAL

estoy haciendo un multiplexor de 4 canales con 4 bits, esto a su vez a un decodificador de 7 segmentos, utilizando xilinx, 12.1 y me genera 3 errores con las aignacion de signal

alguien me puede explicar donde comento los errores ya que mis escasos conocimientos sobre le tema y el programa no me lo permiten, gracias
Luego de haberte aclarado lo anterior, empecemos con el diseño concurrente del multiplexor:

En VHDL existe la asignacion whit-select, con ella se hace de manera muy simple un multiplexor, veamos:

--Multiplexor utilizando WITH-SELECT

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity multiplexor is
port
(
A,B,C,D : in std_logic_vector (3 downto 0);--Entradas
ctrl : in std_logic_vector (1 downto 0);--señal de control
S : out std_logic_vector(3 downto 0)--salida
);

end multiplexor;

architecture fcn of multiplexor is
begin

with ctrl select --de acuerdo al valor de 'ctrl' se muestra cualquier entrada

S <= A when "00",
B when "01",
C when "10",
D when "11";
end fcn;

---------- Actualizado después de 7 minutos ----------

Si quieres mantener tu propuesta con 'process', veo varios errores en tu codigo:
1. 'y' es declarada de 4bits pero en el case se le asignan 7 bits, esto te presenta error.
2. No es necesario inicializar en '0' la señal 'z' debido a que su valor se actualiza inmediatamente en el primer 'case'.

---------- Actualizado después de 12 minutos ----------

Propuesta codigo completo, cualquier error me comentas:


--Multiplexor utilizando WITH-SELECT

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity multiplexor is
port
(
A,B,C,D : in std_logic_vector (3 downto 0);--Entradas
ctrl : in std_logic_vector (1 downto 0);--señal de control
y : out std_logic_vector(6 downto 0)--salida
);

end multiplexor;

architecture fcn of multiplexor is

signal z: std_logic_vector(3 downto 0);

begin

with ctrl select
z <= A when "00",
B when "01",
C when "10",
D when "11";

with z select
y <= "1111110" when "0000",
"1100000" when "0001",
"1101101" when "0010",
"1111001" when "0011",
"0110011" when "0100",
"1011011" when "0101",
"1011111" when "0110",
"1110000" when "0111",
"1111111" when "1000",
"1111011" when "1001",
"1111111" when "1010",
"1110111" when "1011",
"0011111" when "1010",
"0111101" when "1011",
"1001111" when "1010",
"1000111" when others;
end fcn;
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Circuitos lógicos combinacionales y secuenciales

Compuertas, flips flops, registros, PLDs, codificadores, contadores, multiplexores, ...

Cerrar
Foros de Electrónica » Diseño digital » Circuitos lógicos combinacionales y secuenciales

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.