Entity Arch Ports
Entity Arch Ports
The entity declaration names the entity and defines the interface
to its environment.
Allowable Modes:
• IN Flow is into the entity (input only)
• OUT Flow is out of the entity (output only)
• INOUT Flow may be either in or out (either in or out)
• BUFFER An OUTPUT that can be read from
bobs_block (mode:out)
ram_wr_n
(mode: in)
clock
(mode: buffer)
(mode: inout) state_0
data
Format:
ARCHITECTURE body_name OF entity_name IS
--this is the ->declarative area<-
--declare signals, variables, components,
--subprograms
BEGIN
--this is the ->statement area<-
--in here go statements that describe
--organization or functional operation of
--the component
--this is the “execution part” of the model
END [body_name]
Format:
target_object <= waveform;
Examples:
my_signal <= ‘0’; --ties my_signal to “ground”
his_signal <= my_signal; --connects two wires
--vector signal assignment
data_bus <= “0010”; -- note double quote
bigger_bus <= X”a5”; -- hexadecimal numbers
Examples:
CONSTANT delay : TIME:= 10ns;
CONSTANT size : REAL:=5.25;
VARIABLE sum : REAL;
VARIABLE voltage : INTEGER:=0;
SIGNAL clock : BIT;
SIGNAL spam : std_logic:=’X’;
Coding hints:
Use good names that are meaningful to others. If your code is good,
somebody else will want to read it.
Name signals by their function. For example, if you have a multiplexor
select line that selects addresses, give it a name like “address_select”
instead of “sel_32a”.
Name blocks by their function. If a block generates control signals for a
DRAM controller, call the block “dram_ctl” not something obscure like
“block_d”.
ENTITY aoi4 IS
PORT(
a : IN std_logic;
b : IN std_logic;
c : IN std_logic;
d : IN std_logic;
z : OUT std_logic);
END ENTITY aoi4;
ARCHITECTURE data_flow OF aoi4 IS
SIGNAL temp1, temp2 : std_logic;
BEGIN
temp1 <= a AND b;
temp2 <= c AND d;
z <= temp1 NOR temp2;
END ARCHITECTURE data_flow;