Beruflich Dokumente
Kultur Dokumente
Entity half_add is
Port (
A,B: in BIT;
SUM,CARRY: out BIT
);
End half_add;
ARCHITECTURE BODY
The internal details specified by an
architecture body using the following
modelling styles:
1.As a set of interconnected statements
(to represent structure)
2.As a set of concurrent assignment statements
(to represent dataflow)
3.As a set of sequential assignments statements
(to represent behavior)
4.As any combination of the above three
ARCHITECTURE BODY
Architecture ha_stru of half_add is
Component xor2
(EXAMPLE_ structural style)
Port
(
x,y:in BIT;
z:out BIT;
};
end component;
Component and2
Port
(l,m:in BIT;
n:out BIT);
End component;
Begin
x1:xor2 port map(a,b,sum);
a1:and2 port map(a,b.carry);
End ha_stru;
ARCHITECTURE BODY
(EXAMPLE_ dataflow style)
5.INCOMPLETE TYPE
6.FILE TYPE.
BASIC LANGUAGE
ELEMENTS
OPERATORS
1.LOGICAL OPERATORS.
2.RELATIONAL OPERATORS.
3.SHIFT OPERATORS.
4.ARITHMETIC OPERATORS.
5.MULTIPLYING OPERATORS.
6.MISCELLANEOUS OPERATORS.
BASIC LANGUAGE
ELEMENTS
LOGICAL OPERATORS
+ - &
BASIC LANGUAGE
ELEMENTS
MULTIPLYING OPERATORS
* / mod rem
BEHAVIORAL MODELING
1.ENTITY DECLARATION
2.ARCHITECTURE BODY
3.PROCESS STATEMENT
4.VARIABLE ASSIGNMENTS STATEMENT
5.SIGNAL ASSIGNMENTS STATEMENT
6.DELTA DELAY
7.WAIT STATEMENTS
8.IF STATEMENMT
9.CASE STATEMENT
10.NULL STATEMENT
11.LOOP STATEMENT
12.EXIT STATEMENT
13.NEXT STATEMENT
14.ASSERTION STATEMENTREPORT STATEMENT
15.MORE ON SIGNAL ASSIGNMENT STATEMENT
16. DELAY MODEL
17.SIGNAL WAVEFORMS
18.SIGNAL DRIVERS
19.MULTIPLE PROCESS
20.POSTPONED PROCESSES
ENTITY DECLARATION
Entity entity_name is
[generic(list of generics and their types); ]
[port (list of interface port names and their types);] INTERFACE
[entiity item declarations] PORT
[begin
Entity statements] In ,out, inout, buffer,linkage.
End [entity][entity name];
TO BE WRITEN
PROCESS STATEMENT
[PROCESS LABLE:][PROCESS ][SENSITIVITY LIST][IS]
[PROCESS ITEM DECLARATIONS]
BEGIN
SEQUENTIAL STATEMENTS
VARIABLE ASSIGNMENT
WAIT STATEMENT
OF STATEMENT
IF STATEMENT
CASE STATEMENT
LOOP STATEMENT
NULL STATEMENT
EXIT STATEMENT
NEXT STATEMENT
ASSERTION STATEMENT
REPORT STATEMENT
PROCEDURE CAL;L STATEMENT
RETURN STATEMENT
END PROCESS [PROCESS LABLE];
VARIABLE ASSIGNMENT
STATEMENT
*VARIABLES CAN BE DECLARED AND USED INSIDE
A PROCESS STATEMENT
SYNTAS OF VARIABLE ASSIGNMENT STATEMENT
VARIABLE OBJECTS:=EXPRESSION;
EXAMBLE 1 EXAMPLE 2
PROCESS (A) …………………
VARIABLE EVENTS_A:INTEGER:=1; SIGNAL A,Z:INTEGER;
BEGIN ……………
PZ:PROCESS(A)
EVENTS_A:=EVENTS_A+1;
VARIABLE V1,V2:INTEGER;
END PROCESS; BEGIN
V1:=A-V2;
Z<=-V1;
V2:=A+V1*2;
END PROCESS PZ;
edges: process(in)
variable count : integer := -1;
begin
count := count + 1;
end process;
Compute_and : process(a, b)
Begin
Z <= a and b; rising: process(in)
End process; variable count : integer := -1;
begin
if in = ’1’ and in’last_value = ’0’ then
count := count +1;
end if;
end process;
signal a,b,c : std_logic;
…
process(b)
begin
a <= b;
c <= not a;
end process;
…
process(b)
variable a,c : std_logic;
begin
a := b;
c : not a;
end process;
-- 4-BIT ADDER--
library IEEE;
use IEEE.std_logic_1164.all;
entity add is
port (
a: in STD_LOGIC_VECTOR (0 to 3);
b: in STD_LOGIC_VECTOR (0 to 3);
carry: out STD_LOGIC;
s: out STD_LOGIC_VECTOR (0 to 3));
end add;
architecture add_arch of add is
signal c : std_logic_vector(0 to 4) ;
begin
c(0) <= '0';
process(a,b)
begin
for i in 0 to 3 loop
s(i) <= a(i) xor b(i) xor c(i);
c(i+1) <= (a(i) and b(i)) or ( a(i) and
c(i) ) or ( b(i) and c(i) ) ;
end loop;
carry <= c(4);
end process;
SIGNAL ASSIGNMENT STATEMENT
1.WAIT ON A,B,C;
WAIT0:PROCESS
BEGIN
WAIT ON DATA;
SIG_A<=DATA;
WAIT FOR 0NS;
SIG_B<=SIG_A;
END PROCESS;
EFFECT OF “WAIT FOR 0 ns”
IF STATEMENT
*Case … When…
*For… Loop
*While … Loop
IF STATEMENT
ARCHITECTURE a OF case_ex IS
BEGIN
PROCESS(A,B,C,Z)
BEGIN A
CASE Y IS
WHEN “0001”=>Z<= A;
WHEN “0010”=>Z<=B; B MUX
WHEN “0100”=>Z<=C;
WHEN others=>Z<= C;
Z
END CASE;
END PROCESS; C
END a;
**process is a must
SEL
FOR ……….LOOP
WHILE(A=‘1’) loop
COUNT<=COUNT+1;
End loop;
FOR ……… LOOP
PROCESS (A,B)
CONSTANT MUX_LIMIT:INTEGER:=25;
BEGIN
Entity DEMUX is
Port
( A:in integer range 0 to 3;
Z:out std_ulogic_vector(3 down to 0); I:=0;
End DEMUX;
While (I<=3)loop
Architecture A of DEMUX is if(a =1) ten
Begin z(I)<=‘I’;
process(A)
variable I:integer range 0 to end if;
3; I:=I+1;
begin end loop;
Z<=“0000”
End process;
End A;
NULL STATEMENT
exit[loop_label][when condition];
EXAMPLES FOR EXIT
STATEMENT
SUM:=1;
J:=0; LOOP
J:=J+21; WAIT ON A,B;
SUM:=SUM*10; EXIT WHEN A=B;
END LOOP;
IF SUM>100 THEN /* THIS LOOP BEHAVES
EXIT L3; EXACTILY LIKE THE WAIT
END IF ; STATEMENT
END LOOP L3; WAIT UNTIL A=B;*/
ASSERTION STATEMENT
*USEFUL IN MODELING COSTRAINTS OF AN ENTITY.
INERTIAL DELAY
TRANSPORT DELAY
*********************************
DESIGN FLOW
CREATING SIGNAL
WAVEFORM
*IN ALL EXAMPLES OF SIGNAL ASSIGNMENT STATEMENTS
THAT WE HAVE SEEN, WE HAVE ALWAYS ASSIGNED A
SIGNAL VALUE TO SIGNAL;THIS NEED NOT BE SO.
*FOR EXAMPLE
PROCESS
BEGIN
………..
………..
RESET<=3 after 5 ns,21 after 10 ns,14 after 17 ns;
End process;
Reset<curr@now(3@T+5ns)(21@T+10ns)(14@T+17ns)
Effects of transport delay on signal drivers
Effects of inertial delay on signal drivers
OTHER SEQUENTIAL STATEMENT
THERE ARE TWO OTHER FORMS OF SEQUENTIAL STATEMENTS;
THESE ARE
DISCUSSED IN
OTHER CHAPTER
DATAFLOW MODELLING
*In the dataflow level of abstraction, a circuit is
described in terms of how data moves through the system
• The dataflow level is often called the register transfer level, or RTL.
Entity flipflop is
Port (s,r : in std_logic;
q,nq : out std_logic);
end flipflop;
Rounds r q nqcomments
Start1 1 0 1
10 1 0 1‘1’ is scheduled on q
20 1 1 1‘0’ is scheduled on nq
30 1 1 0No new events are scheduled
41 1 1 0No new events are scheduled
Entity decode is
Port (s : in std_logic_vector(2 downto 0); -- 3
select inputs
z : out std_logic_vector(7 downto 0) -- 8
data outputs
);
end docode;
Standard International
●IEEE Std 1076-1987
●IEEE Std 1164-1993
Editor VHDL
Simulator VHDL
SynthesisVHDL
Libraries VITAL
Behavioral F
RTL
Scrap (5).shs
Logic
A a Z
c
B b
VHDL OBJECTS
Standard International
● IEEE Std 1076-1987
● IEEE Std 1164-1993