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

Temas similares

29/03/2010 #21


Respuesta: Convertidor BCD a BCD exceso 3 en VHDL
Hombre muchas gracias...eres muy amable... no pense que fueran a responder tan rapido... de verdad te lo agradezco mucho.
03/04/2010 #22


Respuesta: Dado flip-flop D maquina de moore
buenas tardes colegas despues de un año ahora ingreso a esta comunidad pidiendoles ayuda al respecto del miniproyecto este de hacer un dado electronico digital y requiero de su ayuda cesaritox no tendras de casualidad el proyecto hecho en xilinx aun ?? si lo subes te lo agradecere mucho igual a ti ardogan
07/04/2010 #23


Respuesta: Convertidor BCD a BCD exceso 3 en VHDL
jaimepsantos dijo: Ver Mensaje
Hay dos formas de hacerlo. aqui te las pongo ambas:

Código:
Library IEEE;
use ieee.std_logic_1164.all;

Entity BCD_EX3 is
port
(
BCD: in std_logic_vector (3 downto 0);
BCD_3 : out std_logic_vector (3 downto 0)
);
end BCD_EX3;

Architecture flujo of BCD_EX3 is
begin
BCD_3<= "0011" when (BCD="0000")else--0
        "0100" when (BCD="0001")else--1
        "0101" when (BCD="0010")else--2
        "0110" when (BCD="0011")else--3
        "0111" when (BCD="0100")else--4
        "1000" when (BCD="0101")else--5
        "1001" when (BCD="0110")else--6
        "1010" when (BCD="0111")else--7
        "1011" when (BCD="1000")else--8
        "1100" when (BCD="1001")else--9
        "0000000"  ;
end flujo;
Código:
Library IEEE;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

Entity BCD_EX3 is
port
(
BCD: in std_logic_vector (3 downto 0);
BCD_3 : out std_logic_vector (3 downto 0)
);
end BCD_EX3;

Architecture flujo of BCD_EX3 is
begin

BCD_3<= BCD + "11";

end flujo;
Hola jaimepsantos, estuve probando el codigo que me sugeriste sobre BCD a BCD3 (el primero de ellos).... en la parte "0000000" ; me sale un error en el ISE xilinx.... y no me compila.... le hace falta algo alli???...gracias
07/04/2010 #24

Avatar de jaimepsantos

Respuesta: Dado flip-flop D maquina de moore
aqui te dejo una idea, consiste en un conteo de alta velocidad demanera que cuando tu presionas el boton este se muestra en display de 7 segmentos, el conteo se resetea cuando es seis, de ahi lo decodoficamos a 7 segmentos, asi tenemos una secuencia de velocidad muy alta diciendo que es imposible elegir un valor es decir es al azar

Código:
Library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

Entity dado is
    port
    (
    clk_50, env_data: in std_logic;--al cristal de 50MHZ y env data es el boton
    salida7s: out std_logic_vector(6 downto 0)
    );
end dado;

Architecture special of dado is
   signal conteo: std_logic_vector(2 downto 0);
   signal conteo_deco: std_logic_vector(6 downto 0);
      begin
        process(clk_50)
            begin
            if(clk_50' event and clk_50='1')then
            conteo<=conteo+'1';
                if(conteo="110")then
                conteo<=0;
                end if;
            end if;    
        end process;    
    conteo_deco <=
        "1111110" when (conteo="000")else--0
        "0110000" when (conteo="001")else--1
        "1101101" when (conteo="010")else--2
        "1111001" when (conteo="011")else--3
        "0110011" when (conteo="100")else--4
        "1011011" when (conteo="101")else--5
        "1011111" when (conteo="110")else--6
        "0000000"  ;
    
    salida7s = conteo_deco when (env_data='1')else
    "ZZZZZZZ";    
end special;
08/04/2010 #25


correccion de convertidor BCD a BCD exceso 3 en VHDL
Buenos dias.

hace algunos dias pregunte por un condigo VHDL para un convertidor BCD a BCD exceso 3 y me ayudaron con el siguiente. Pero resulta que al usarlo me sale un error en la penultima linea ("0000000" ; ).... mi pregunta es...que le falta a este codigo???...gracias..

Código:
Library IEEE;
use ieee.std_logic_1164.all;
 
Entity BCD_EX3 is
port
(
BCD: in std_logic_vector (3 downto 0);
BCD_3 : out std_logic_vector (3 downto 0)
);
end BCD_EX3;
 
Architecture flujo of BCD_EX3 is
begin
BCD_3<= "0011" when (BCD="0000")else--0
        "0100" when (BCD="0001")else--1
        "0101" when (BCD="0010")else--2
        "0110" when (BCD="0011")else--3
        "0111" when (BCD="0100")else--4
        "1000" when (BCD="0101")else--5
        "1001" when (BCD="0110")else--6
        "1010" when (BCD="0111")else--7
        "1011" when (BCD="1000")else--8
        "1100" when (BCD="1001")else--9
        "0000000"  ;
end flujo;
12/04/2010 #26

Avatar de Earl

Respuesta: Dado flip-flop D maquina de moore
Pero en el display estarias viendo como es que va avanzando el contador solo cuando env_data='1' no? es necesario tambien pausar esa serie de datos cuando env_data='1'

Código:
Library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

Entity dado is
    port
    (
    clk_50, env_data: in std_logic;--al cristal de 50MHZ y env data es el boton
    salida7s: out std_logic_vector(6 downto 0)
    );
end dado;

Architecture special of dado is
   signal conteo: std_logic_vector(2 downto 0);
   signal conteo_deco: std_logic_vector(6 downto 0);
      begin
        process(clk_50)
            begin
            if(clk_50' event and clk_50='1')then
               if (env_data='0') then
                  conteo<=conteo+'1';
               elsif (env_data='1') then
                  conteo<=conteo;
               end if;
                if(conteo="110")then
                conteo<="001";
                end if;
            end if;    
        end process;    
    conteo_deco <=
        "0110000" when (conteo="001")else--1
        "1101101" when (conteo="010")else--2
        "1111001" when (conteo="011")else--3
        "0110011" when (conteo="100")else--4
        "1011011" when (conteo="101")else--5
        "1011111" when (conteo="110")else--6
        "0000000"  ;
    
    salida7s <= conteo_deco when (env_data='1') else
    "ZZZZZZZ";    
end special;
12/04/2010 #27

Avatar de jaimepsantos

Respuesta: Dado flip-flop D maquina de moore
tienes razon asi veriamos un numero cambviante mientras se presiona el env_data asi paramos la cuenta y se muestra un numero fijo en el display

:P
12/04/2010 #28

Avatar de jaimepsantos

Respuesta: Dudas sobre Programacion en VHDL
disculpa fue un error solo cambia esos "0000000" por "0000" con eso estaria funcionando:

13/04/2010 #29


Respuesta: Dudas sobre Programacion en VHDL
ok...muchas gracias por responder.... lo probaré.
13/04/2010 #30


Respuesta: Dado flip-flop D maquina de moore
gracias colegas pero yo estuve haciendolo mediante makina de moore con mapas k, tabla de exitacion y me falta solo es el eskematico para convertirlo en bloke en xilinx asi q si me pueden ayudar nuevamente se los agradezco gracias
15/04/2010 #31


Circuito de detección de flanco descendente
Hola tengo que hacer en la spartan 3E un circuito de detección de flanco descendente podeis ayudarme?? no se ni por donde empeza.

gracias y un saludo
15/04/2010 #32


Registro, Lifo Lilo, Filo Fifo en VHDL
Buenas tardes, quisiera que porfavor me ayudaran:

Necesito varios ejemplos de programación en lenguaje VHDL para Registros Lifo Lilo, Filo Fifo (Desplazamiento a derecha o izquierda).... agradezco de antemano la ayuda... Muchas gracias...
16/04/2010 #33

Avatar de jaimepsantos

Respuesta: Circuito de detección de flanco descendente
ituarte dijo: Ver Mensaje
Hola tengo que hacer en la spartan 3E un circuito de detección de flanco descendente podeis ayudarme?? no se ni por donde empeza.

gracias y un saludo
Hola que tal te dejo esto es un FF tipo d de 8 bits utilizando flanco de bajada:

Código:
Library ieee;
use ieee.std_logic_1164.all;

entity FFD_8 is
port(
    oe,clk : in std_logic;
    data_in : in std_logic_vector (7 downto 0);
    data_out: out std_logic_vector (7 downto 0)
    );
end FFD_8;

Architecture func of FFD_8 is
begin
    process(clk,oe)
    begin
        if (oe ='0') then
        data_out <= "ZZZZZZZZ";
        elsif(clk' event and clk='0') then--deteccion del flanco con cero es bajada
        data_out <= data_in;--con un 1 es subida
        end if;
    end process;
end func;
18/04/2010 #34


Duda sobre operacion en vhdl
Compañeros, lo que sucede es que tengo que hacer un modulo en vhdl, en el cual me entran dos vectores de 14 bits, y lo que tengo que hacer es sacar otro vector corregido de 14 bits segun la siguiente formula. (TR/TF)xTF , donde TR y TF son los vectores de entrada, ya que necesito hacer una calibracion para un termometro. Mi problema es que necesito que la salida tenga la mayor exactitud posible, para que se aproxime a TF, por lo tanto la division TR/TF de ser un real (ej:100/30=3.33) pero no he podido cuadrar el codigo ya que solo me permite hacer divisiones por 2 a la n. Agradeceria que me pudieran ayudar a cuadrar este codigo para que mi salida sea lo mas precisa posible.
19/04/2010 #35

Avatar de jaimepsantos

Respuesta: Duda sobre operacion en vhdl
Debes cambiar el tipo de variable seguramente estas usando el std_logic cambiala a real, aqui te dejo un ejemplo de como sebes hacerlo.

Variables en VHDL
•Tipos reales o flotantes.
Real o punto flotante, sirven para representar números enteros y fraccionarios su rango esta entre -1e38 a 1e38.

Ejemplos:
type Voltaje is range-5.5 TO 5.5;
signal V1: voltaje:= -3.3;
signal duracion: real:= -3.3; --Predefinido en el lenguajeVHDL

http://usuarios.multimania.es/israel...tadoras_05.pdf

Ve la hoja tres
19/04/2010 #36


Respuesta: Duda sobre operacion en vhdl
Gracias por todo jaimepsantos, me salvaste la vida!!

amigo pero ahora el programa no me sintetiza, no se que pasa, te agrego el codigo por si me puedes ayudar.

entity calibracion is
Port ( E : in STD_LOGIC;
TR : in STD_LOGIC_VECTOR (13 downto 0);
TF : in STD_LOGIC_VECTOR (13 downto 0);
TC : out STD_LOGIC_VECTOR (13 downto 0));
end calibracion;

architecture Behavioral of calibracion is

signal RI : integer;
signal FI : integer;
signal RR : real;
signal FR : real;
signal C : real;
signal CR : real;
signal CI : integer;
signal CV : STD_LOGIC_VECTOR (13 downto 0);

begin

process(TR,TF,E)
begin
if (E=1) then
RI:= conv_integer(TR);
FI:= conv_integer(TF);
RR:= real(RI);
FR:= real(FI);
C:= (RR/FR);
CR:= (C*FR);
CI:= integer(CR);
CV<= to std_(13 downto 0)logic_vector(CI);
end if;
end process;
TC<=CV;

end Behavioral;

Creo que tal vez estoy fallando en la conversion de entero a vector (señal CV).
19/04/2010 #37


Repositorio de códigos VHDL
Hola:
Tengo que diseñar un osciloscopio de una manera abierta (en cuanto a los elementos que contenga) en código VHDL y me gustaría ver algún código relacionado en VHDL para que me sirva como inspiración.
¿Conocéis algún repositorio de código donde pueda encontrar este tipo de elemento?
Muchas gracias
19/04/2010 #38


Programa que no sirve
amigos agradeceria si alguien me pudiera ayudar con este programa de vhdl el cual no se por que razon no me quiere funcionar. Gracias.

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

entity calibracion is
Port ( E : in STD_LOGIC;
TR : in STD_LOGIC_VECTOR (13 downto 0);
TF : in STD_LOGIC_VECTOR (13 downto 0);
TC : out STD_LOGIC_VECTOR (13 downto 0));
end calibracion;

architecture Behavioral of calibracion is
signal RI : integer RANGE 0 TO 150;
signal FI : integer RANGE 0 TO 150;
signal CI : integer RANGE 0 TO 150;
signal RR : real RANGE 0.0 TO 150.0;
signal FR : real RANGE 0.0 TO 150.0;
signal C : real RANGE 0.0 TO 150.0;
signal CR : real RANGE 0.0 TO 150.0;
signal CV : std_logic_vector(13 downto 0);

begin
process(TR,TF,E)

--VARIABLE RI: integer RANGE 0 TO 150;
--VARIABLE FI: integer RANGE 0 TO 150;
--VARIABLE CI: integer RANGE 0 TO 150;
--VARIABLE RR: real RANGE 0.0 TO 150.0;
--VARIABLE FR: real RANGE 0.0 TO 150.0;
--VARIABLE C: real RANGE 0.0 TO 150.0;
--VARIABLE CR: real RANGE 0.0 TO 150.0;
--VARIABLE CV : std_logic_vector(13 downto 0);

begin
if (E='1') then
RI<= conv_integer(TR);
FI<= conv_integer(TF);
RR<= real(RI);
FR<= real(FI);
C<= (RR/FR);
CR<= (C*FR);
CI<= integer(CR);
CV<= conv_std_logic_vector(CI, 14);
end if;
TC<=CV;
end process;

end Behavioral;
10/05/2010 #39


Respuesta: Dudas sobre Programacion en VHDL
Buenas noches colegas, me gustaria que me ayudaran a resolver un problema que me plantearon en lenguaje VHDL, y que yo no tengo mucho experiencia en este lenguaje, pero que es muy utilizado en al actualidad, el problema consiste en hacer en VHDL un indicador visual que muestre cuando van pasando una materia o si la van perdiendo basandose en un circuito logico, yo pienso implementarlo con un sumador, y un comparador, el sumador tomara las notas y las sumara para luego comparar el resultado en un comparador el cual dara el resultado segun la condicion impuesta.

agradezco la colaboracion de ustedes

LUIS CARLOS COTES
22/05/2010 #40


Respuesta: Dudas sobre Programacion en VHDL
y si hacemos una alu q sume las nostas las divide en el porcentaje q se necesita y lo compare??
¿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.