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

VHDL Combinational Blocks

No description
by

Heiner Castro

on 3 March 2016

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of VHDL Combinational Blocks

VHDL Combinational Blocks
Conditional statements
library

IEEE
;
use

IEEE.std_logic_1164
.
all
;

entity
tri-state
is


port
(A, enable :
in

std_logic
;
Y :
out

std_logic
);

end
tri-state;
library

IEEE
;
use

IEEE.std_logic_1164
.
all
;

entity
decoder
is


port
(S :
in

std_logic_vector
(1
downto
0);
Y :
out

std_logic_vector
(3
downto
0));

end entity
decoder;
if - else statement carefulness
Recomendaciones importantes:

Escriba un process por cada bloque en su diagrama.

Es mejor que cada process escriba sobre una y una sola señal, esta se llamará la "salida" del process.

La condición booleana de cada
if
puede ser compleja:

if
(a(3) = '1'
and
(S = "00"
or
inhibit = '0'))
then

--sentencias secuenciales
elsif
/
else

Case statement: n bits Data Input Multiplexer
library

IEEE
;
use

IEEE.std_logic_1164
.
all
;
entity
mux
is
generic
(n:
natural
:=8);
port
(sel:
in

std_logic_vector
(1
downto
0);
x1
in

std_logic_vector
(n-1
downto
0) ;
x2:
in

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

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

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

std_logic_vector
(n-1
downto
0));
end entity
mux;
Tips to design proper combinatorial logic with VHDL
Siempre hacer primero un diagrama de bloques antes de escribir código.

No restringir el uso de señales.

Las operaciones como suma, resta, multiplicación, etc hacerlas SIEMPRE FUERA de un process.

SOLAMENTE usar los process para tomar decisiones pero por dentro sobre solo debe haber asignaciones, nunca operaciones.

Hacer un solo process por bloque. No asignar una señal dentro de un process y preguntar por ella en el mismo process. Hacer otro process para preguntar por esa señal.
by MSc. Heiner Castro G.
Conditional statements: if then else
architecture
behavioural

of
tri-state
is
begin

process
(a,enable)
is

begin

if
enable = '1'
then
y <= a;

else
y <= 'Z';

end if
;

end process
;

end
behavioural;
--Process structure
Name:
Process
(<sensitivity list>)

begin
<sequential statements>
end process
;
La lista de sensitividad determina cuando se debe evaluar el process.

Es muy importante que todas las entradas o señales que entren al bloque combinacional estén en la lista de sensitividad.

Conditional statement: decoder
Decoder Architecture
architecture
sequential
of
decoder
is
begin

process
(s)
is

begin

if
s= "00"
then

y <= "0001";

elsif
s= "01"
then

y <= "0010";

elsif
s="10"
then

y <= "0100";

elsif
s="11"
then

y <= "1000";

else
y <= "XXXX";

end if
;

end process
;
end architecture
Sequential;
Importante: si se quiere circuitos combinacionales las señales de salida del process deben ser asignadas en todas las condiciones del process.
La última asignación ("XXXX") no es sintacticámente necesaria, pero si no se hace se generan latches.
Conditional statements exercises
Desarrollar la descripción de hardware para un multiplexor de 4 bits de entrada usando las sentencias
if

elsif
..
else
.


Desarrollar la descripción de hardware de un comparador como el que se muestra en la figura usando las sentencias
if

elsif
..
else
.
n bits Data Input Multiplexer with case statement
architecture
RTL
of
mux
is

begin

Selection:
process
(sel, x1, x2, x3, x4)

begin


case
sel
is

when
"00" => f <= x1;

when
"01" => f <= x2;

when
"10" => f <= x3;

when
"11" => f <= x4;

when others
=> f <= (
others
=> 'X') ;

end case
;

end process
Selection;
end architecture
RTL;

La sentencia
when others
es obligatoria.

En un
case
no hay peligro de crear latches
.

En la sentencia
case
ninguna condición tiene prioridad.
Combinational blocks design
Escribir el código en VHDL del circuito que se muestra a continuación. No puede usar compuertas como parte del ejercicio. El bloque BCD Check hace la siguiente función: si la entrada es mayor que 9, la salida será la entrada + 6, si no la salida será igual a la entrada. Deduzca el tamaño de los buses que hacen falta.
Case statement exercise
1. Usando
process
y la sentencia
case
describa la entidad y la arquitectura de un multiplexor con 8 datos de entrada de n bits.

2. Usando
process
y la
sentencia
case describa la entidad y la arquitectura de un decodificador de 3 líneas de selección.

3. Usando
process
y la sentencia
case
describa la entidad y la arquitectura de un decodificador BCD-7segmentos.
How to avoid latches
Cada
if
debe tener su
else.

Todas las "salidas" del process se deben escribir en todas las condiciones.

Se puede asignar la señal de "salida" del process al inicio del mismo con un valor por defecto para evitar los latches. De esta forma no es necesario los
else
de cada
if
.
Full transcript