Difference between revisions of "VHDL"

Line 37: Line 37:
  
 
<pre>
 
<pre>
 +
LIBRARY ieee;
 +
USE ieee.std_logic_1164.ALL;
 +
 
entity nand2 is
 
entity nand2 is
port(a,b: in  std logic;  
+
port(
      q: out std_logic);
+
  a,b : in  std_logic;  
 +
  q   : out std_logic);
 
end nand2;
 
end nand2;
  
 
architecture basic of nand2 is
 
architecture basic of nand2 is
 +
begin
 
q <= a nand b after 2 ns;
 
q <= a nand b after 2 ns;
end architecture nand2;
+
end basic;
 
 
 
</pre>
 
</pre>
  
Line 55: Line 59:
  
 
architecture struct of srlatch is
 
architecture struct of srlatch is
 
+
begin
 
  sq: entity work.nand2(basic)
 
  sq: entity work.nand2(basic)
 
  port map (
 
  port map (
Line 70: Line 74:
 
  );
 
  );
  
end architecture srlatch
+
end architecture struct;
 
</pre>
 
</pre>

Revision as of 18:50, 28 September 2010

Modeling concept

there are 3 domains of modeling:

  • function
  • structure
  • geometry

each provides a basic modeling concept.

a module e.g. a register is an entity, it's inputs ans outputs are called ports. an architecture is the internal implementation of an entity. it describes the behavior of an entity. architectures includes only processes, collection of actions which are executed in sequences.

types of action that can be performed:

  • evaluating expressions
  • assigning variables and values
  • conditional and repeated execution
  • subprogram calls

behavioral architecture: function of an entity is described in an abstract way. e.g.

entity srlatch is
port ( s,r : in  std_logic;
      q,qb : out std_logic);
end srlatch;

architecture behave of calc is
begin
 foo: process
 begin
    Q <= S nand QB;
    QB <= R nand Q;  
 end process  foo;
end architecture behave;

structural architecture: only interconnecting subsystems

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

entity nand2 is
port(
  a,b : in  std_logic;   
  q   : out std_logic);
end nand2;

architecture basic of nand2 is
begin
q <= a nand b after 2 ns;
end basic;
entity srlatch is
port( s,r: in  std logic; 
     q,qb: out std_logic);
end srlatch;

architecture struct of srlatch is
 begin
 sq: entity work.nand2(basic)
 port map (
   a => s,
   b => qb,
   q => q
 );

 rq: entity work.nand2(basic)
 port map (
   a => r,
   b => q,
   q => qb
 );

end architecture struct;