Ir ao conteúdo
  • Cadastre-se

Ajuda - Trabalho Facu - VHDL sumulção


gustavox1

Posts recomendados

Pessoal, preciso de uma ajuda para implementação em VHDL de um pequeno circuito, e logo após fazer uma simulação.

http://img130.imageshack.us/img130/7536/laborg.jpg

Esta é a imagem do circuito e o que se pede.

Não consegui entender qual a diferença de com hierarquia e sem hierarquia.

Meu VHDL:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity teste3 is

port(pre, clr, clk, d in std_logic;

q out std_logic);

end teste3;

architecture arq of teste3 is

signal p std_logic_vector(5 downto 0);

begin

process(pre,clr,clk,d)

begin

p(0) = not(pre and p(3) and p(1));

p(1) = not(p(0) and clr and clk);

p(2) = not(p(1) and clk and p(3));

p(3) = not(p(2) and clr and d);

p(4) = not(pre and p(1) and p(5));

p(5) = not(p(2) and clr and d);

q = p(4);

end process;

end arq;

-------------------

Meu testbench, que ta todo errado:

library ieee;

use ieee.std_logic_1164.all;

entity teste3_tb is

end teste3_tb;

architecture arq_tb of teste3_tb is

signal pree, clrr, clkk, dd, qq: std_logic;

signal pp: std_logic_vector (5 downto 0);

begin

UUT : entity work.teste3

port map ( pre => pree, clr => clrr,

clk => clkk, d => dd);

pree <= '0', '1' after 10 ns, '0' after 20 ns, '1' after 30 ns, '0' after 40 ns;

clrr <= '1', '0' after 10 ns, '1' after 20 ns, '0' after 30 ns, '1' after 40 ns;

clkk <= '0', '1' after 5 ns, '0' after 15 ns, '1' after 25 ns, '0' after 35 ns;

end arq_tb;

Link para o comentário
Compartilhar em outros sites

Se fosse Verilog eu poderia ajudar melhor. Não entendo muito de VHDL... ainda mais linguagem em portugues, mas traduzindo ao pe da letra o que ele que é que você crie um bloco AND (a questão da entidade e aquitetura é so porque no VHDL ele pede para você descrever as portas de entrada e saida dentro de um entity ..... end (nome) e a descrição da logica interna dentro de um architecture ... end (nome) . Pelo que eu entendi a questão da hierarquia é simplesmente mostrar que voce criar um bloco de AND e depois instancila-lo dentro de outro bloco funciona do mesmo modo que se voce escrevesse o codigo referente as portas logicas dentro desse bloco. Ou seja voce criar blocos maiores a partir de subblocos funciona do mesmo modo que criar um bloco do zero que faça tudo. porém utilizando sub-blocos voce acaba tendo uma maior organização.. entendeu?

Eu gostaria de ajudar mais mas realmente eu normalmente uso Verilog...

Link para o comentário
Compartilhar em outros sites

Resolvido!

Trabalho pronto.

library IEEE;

use IEEE.STD_LOGIC_1164.all;

entity c_hierarquia is

port (A, B, C: in std_logic;

S: out std_logic

);

end c_hierarquia;

architecture arq of c_hierarquia is

begin

S <= not (A and B and C);

end arq;

library IEEE;

use IEEE.STD_LOGIC_1164.all;

entity tra3 is

port(pre, clr, clk, D: in std_logic;

q, qn: out std_logic );

end tra3;

architecture arq of tra3 is

signal p: std_logic_vector (5 downto 0);

begin

c1 : entity work.c_hierarquia port map

(A => pre, B => p(3), C => p(1), S => p(0));

c2 : entity work.c_hierarquia port map

(A => p(0), B => clk, C => clr, S => p(1));

c3 : entity work.c_hierarquia port map

(A => p(1), B => clk, C => p(3), S => p(2));

c4 : entity work.c_hierarquia port map

(A => D, B => clr, C => p(2), S => p(3));

c5 : entity work.c_hierarquia port map

(A => pre, B => clr, C => p(5), S => p(4));

c6 : entity work.c_hierarquia port map

(A => clr, B => p(3), C => p(4), S => p(5));

q <= p(4);

qn <= p(5);

end arq;

------------------------------------------------------------------

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity tra3 is

port(pre, clr, clk, D: in std_logic;

q, qn: out std_logic);

end tra3;

architecture arq of tra3 is

signal p: std_logic_vector(5 downto 0);

begin

p(0) <= not(pre and p(3) and p(1));

p(1) <= not(p(0) and clr and clk);

p(2) <= not(p(1) and clk and p(3));

p(3) <= not(p(2) and clr and d);

p(4) <= not(pre and p(1) and p(5));

p(5) <= not(p(2) and clr and d);

q <= p(4);

qn <= p(5);

end arq;

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...