Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Structural Description in VHDL

No description
by

Heiner Castro

on 9 March 2016

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Structural Description in VHDL

Structural Description in VHDL
Example: using Netlist
Describir una ALU con las funciones que muestra la siguiente tabla:
Net List Exersice
Netlist
Un diseño complejo normalmente consta de varias descripciones más pequeñas (bloques funcionales).

Estos bloques funcionales son mapeados en la descripción principal.

Ayudan a crear jerarquías de diseño y hacer más claras las descripciones.

También facilitan la simulación y la detección de errores.
Simulation Example: Full adder
Para simular un bloque combinacional lo ideal es probar todas las combinaciones posibles de las entradas
VHDL for simulation
Los Netlist son usados para simular sistemas descritos en HDL.

En VHDL las descripciones para simulación (testbench) no son necesariamente sintetizables.

En un testbench en VHDL la entidad debe estar vacía.

En la arquitectura se debe describir el comportamiento de las entradas del sistema que se quieran simular.
MSc. Heiner Castro G.
VHDL Code
--Component declarative
component
mux
is


generic
(n:
NATURAL
:=8);

port
(sel:
in

std_logic_vector
(1
downto
0);
x1, x2:
in

std_logic_vector
(n-1
downto
0);
x3, x4:
in

std_logic_vector
(n-1
downto
0);
f:
out

std_logic_vector
(n-1
downto
0));

end component
mux;

Begin
Mux1 : mux
port map
(opsel,A,C,E,G,muxout1);
Mux2 : mux
generic map
(8)
port map

(opsel,B,D,F,H,muxout2);
Z <= muxout1+muxout2;
end
netlist;
entity
Optimal_ALU
is

port
(A,B,C,D,E,F,G,H:
in

std_logic_vector
(7
downto
0);
opsel:
in

std_logic_vector
(1
downto
0);
Z:
out

std_logic_vector
(7
downto
0));

end
Optimal_ALU;

architecture
netlist
of
Optimal_ALU
is

--Signal declarative
signal
muxout1:
std_logic_vector
(7
downto
0);
signal
muxout2:
std_logic_vector
(7
downto
0);
ALU Structure
VHDL Code
Testing function with Testbench
A menudo resulta imposible simular todas las entradas de un circuito.

Muchas veces simular todas las entradas tampoco es necesario.

Simulando unos pocos casos críticos o casos de función se puede saber con una certeza alta si el circuito esta bien.
Testbench example: full adder
ENTITY
Testbench1 IS
END
Testbench1;

ARCHITECTURE
behavior
OF
Testbench1
IS

-- Component Declaration for the Unit
COMPONENT FullAdder

PORT
( A, B, Ci :
IN

std_logic
;
S, Co :
OUT

std_logic
);
END COMPONENT
;
--Inputs

signal
In1, In2, Cin :
std_logic
:= '0';
--Outputs

signal
Total, Cout :
std_logic
;
Testbench example: full adder
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: FullAdder
PORT MAP
(A => In1, B => In2,
Cin => Cin, S => Total, Co => Cout);

In1<= '1'
after
10
ns
, '0'
after
20
ns
, '1'
after
30
ns
, '0'
after
40
ns
, '1'
after
50
ns
, '0'
after
60
ns
,
'1'
after
70
ns
;

In2<= '1'
after
20
ns
, '0'
after
40
ns
, '1'
after
60
ns
;

Cin<= '1'
after
40
ns
;

END
;
Testbench simulation results
Testbench example: Full adder
ENTITY
Testbench1 IS
END
Testbench1;

ARCHITECTURE
behavior
OF
Testbench1
IS

-- Component Declaration for the Unit
COMPONENT FullAdder

PORT
( A, B, Ci :
IN

std_logic
;
S, Co :
OUT

std_logic
);
END COMPONENT
;

--Inputs

signal
In1, In2, Cin :
std_logic
:= '0';
-- Auxiliar

signal
cont :
std_logic_vector
(2
downto
0) :=
(
others
=> '0') ;
--Outputs

signal
Total, Cout :
std_logic
;
Testbench example: Full adder
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: FullAdder
PORT MAP
(A => In1, B => In2, Cin => Cin,
S => Total, Co => Cout);
process


begin


wait for
10
ns
;
count <= count + '1';

end process
;

In1 <= count(0); In2 <= count(1); Cin <= count(2);

END
;
Testbench example: Full adder
Example: Simulating a Multiplexer
En el caso del multiplexor es necesario simular todas las combinaciones del selector y pocos datos en las entradas de datos.
Example: Simulating a Multiplexer
ENTITY
Testbench1
IS
END
Testbench1;

ARCHITECTURE
behavior
OF
Testbench1
IS


-- Component Declaration for the Unit ...
component
mux
is


generic
(n:
NATURAL
:=8);

port
(sel:
in

std_logic_vector
(1
downto
0);
x1, x2:
in

std_logic_vector
(n-1
downto
0);
x3, x4:
in

std_logic_vector
(n-1
downto
0);
f:
out

std_logic_vector
(n-1
downto
0));
end component
mux;

--continua en la siguiente página
Example: Simulating a Multiplexer
--inputs

signal
A,B,C,D :
std_logic_vector
(7
downto
0) :=
(
others
=> ‘0’);

signal
S :
std_logic_vector
(1
downto
0) :=
(
others
=> ‘0’);
--ouputs

signal
Y :
std_logic_vector
(7
downto
0);
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: mux
port map
(x1=>A, x2=>B, x3=>C, x4=>D,
sel =>S, f=>Y);
A <= X"0A"
after
5
ns
, X"8A"
after
40
ns
;
B <= X"0B"
after
5
ns
, X"4B"
after
40
ns
;
C <= X"0C"
after
5
ns
, X"2C"
after
40
ns
;
D <= X"0D"
after
5
ns
, X"1D"
after
40
ns
;
S <= "01"
after
10
ns
, "10"
after
20 ns, "11"
after
30
ns
,
"00"
after
40
ns
, "01"
after
50
ns
,
"10"
after
60 ns, "11"
after
70 ns;
END
;
Example: Simulating a Multiplexer
Los datos del selector tendrán que ser S <= "00", "01", "10" y "11"
Las entradas de datos
Xn
pueden dejarse con valores fijos
Exercises
Escriba el código en VHDL para simular un sumador de 8 bits con todas las entradas posibles. De acuerdo a su código de simulación ¿Cuánto tiempo se demoraría toda la simulación?

Escriba el código en VHDL para simular todas las entradas posibles para el Netlist exercise de atrás. De acuerdo a su código de simulación ¿Cuánto tiempo se demoraría toda la simulación?

Escriba el código en VHDL para simular la ALU que se muestra aquí más atrás pero no simule todas las entradas posibles. Haga una simulación donde se ejecuten todas las funciones del circuitos por lo menos una vez. De acuerdo a su código de simulación ¿Cuánto tiempo se demoraría toda la simulación?

Escriba el código en VHDL para simular un sumador con signo de dos datos de 8 bits. No simule todas las entradas posibles si no que haga una simulación funcional. De acuerdo a su código de simulación ¿Cuánto tiempo se demoraría toda la simulación?
Full transcript