Actualizado el 21 de Marzo del 2018 (Publicado el 9 de Marzo del 2018)
560 visualizaciones desde el 9 de Marzo del 2018
677,0 KB
18 paginas
Creado hace 13a (01/10/2011)
Diseño electrónico digital integrado:
Back to basics
Sep-2011 F.Barbero
Escuela Politécnica Superior - Universidad Autónoma de Madrid
Flip-flop D con Reset Asíncrono
• Captura un dato con el flanco de reloj
• La pata de reset lo vuelve a su valor inicial inmediatamente.
R
D
Q
CLK
CLK
R
D
Q
El clock puede ser activo en flanco de subida (lo normal) o de bajada (rarísimo).
El reset puede estar presente o no, y ser activo a nivel alto o a nivel bajo.
El reset puede poner el flip-flop a 0 o a 1.
Oct-2010 F.Barbero Escuela Politécnica Superior - Universidad Autónoma de Madrid
Registro (Register)
• Conjunto de 1 o más flip-flops en paralelo, se comportan igual
pero pueden tener valores de más de un bit
R
D[7:0] Q[7:0]
CLK
CLK
R
D
Q
Oct-2010 F.Barbero Escuela Politécnica Superior - Universidad Autónoma de Madrid
Lógica combinacional
(combinational logic)
• Porción de un circuito que aplica una función lógica a un
conjunto de bits de entrada para dar un conjunto de bits de
salida, por propagación directa (sin esperar ningún reloj)
Bits
y=f(x)
Bits resultantes
Retardo de propagación
Depende de lo rápida que sea la tecnología
(transistores, pistas…), NO de un reloj.
Oct-2010 F.Barbero Escuela Politécnica Superior - Universidad Autónoma de Madrid
RTL (Register Transfer Level)
• Tipo de descripción “behavioral” de un circuito que se basa
exclusivamente en transferir datos entre registros bien
definidos (tipo “D”). Como casos particulares, puede existir
solamente lógica combinacional o solamente registros
¡Único tipo de descripción sintetizable!
Oct-2010 F.Barbero Escuela Politécnica Superior - Universidad Autónoma de Madrid
Procesos secuenciales y combinacionales
• En descripciones HDL, decimos que un proceso es
“secuencial” cuando engloba registros y opcionalmente lógica
combinacional a sus entradas, mientras que un proceso
“combinacional” sólo tiene lógica combinacional.
Proceso secuencial
Proceso combinacional
Oct-2010 F.Barbero Escuela Politécnica Superior - Universidad Autónoma de Madrid
Flip-flop (FF) D con Reset Asíncrono
• VHDL:
process (clk,rst)
begin
if rst='1' then
q <= '0';
elsif clk'event and clk='1' then
q <= d;
end if;
end process;
Oct-2010 F.Barbero Escuela Politécnica Superior - Universidad Autónoma de Madrid
Flip-flop D con Reset Asíncrono
• Con clock enable:
process (clk,rst)
begin
if rst='1' then
q <= '0';
elsif clk'event and clk='1' then
if ce='1' then
R
D’
Q
CLK
D
CE
q <= d;
end if;
end if;
end process;
¡No es más que lógica combinacional añadida!
No despistarse: recordar el elemento básico,
el FF D, con o sin reset asíncrono.
Oct-2010 F.Barbero Escuela Politécnica Superior - Universidad Autónoma de Madrid
Flip-flop D sin Reset Asíncrono
• VHDL:
process (clk)
begin
if clk'event and clk='1' then
D
Q
q <= d;
end if;
end process;
CLK
En diseño ASIC se evita lo máximo posible el usar FF sin reset.
En FPGA su uso es más frecuente.
Si se quiere hacer diseño portable de FPGA a ASIC, lo mejor es usarlo siempre.
Oct-2010 F.Barbero Escuela Politécnica Superior - Universidad Autónoma de Madrid
Logica combinacional
• VHDL: process que en su lista de sensibilidad
tiene las entradas de la función combinacional
architecture uam of mux is
Se debe asignar
siempre (en
todos los casos)
a la salida un
valor
begin
process(a,b,sel)
begin
if sel='1' then
y <= a;
else
y <= b;
end if;
end process;
end uam;
Todas las entradas
deben estar en la lista
de sensibilidad
Oct-2010 F.Barbero Escuela Politécnica Superior - Universidad Autónoma de Madrid
Procesos VHDL
• En una descripción RTL VHDL todo son procesos
combinacionales o secuenciales (FF), ejecutándose
concurrentemente.
• Las asignaciones concurrentes nos permiten escribir
más rápidamente procesos combinacionales.
s <= (a and b) + c;
with a+b select
s <= d when "0000",
e when "1010",
'0' when others;
•
•
Todo esto se hace con signals.
Las variables VHDL permiten tener variables temporales dentro de los process (al
estilo de la programación software).
Oct-2010 F.Barbero Escuela Politécnica Superior - Universidad Autónoma de Madrid
Descripción estructural
• Ejemplo: top-level práctica laboratorio PicoBlaze:
pico_example
kcpsm3
interrupt
interrupt_ack
decoder
port_id[7:0]
PortId[7:0] Sel[2:0]
write_strobe
read_strobe
out_port[7:0]
clk
reset
mux_rdata
in_port[7:0]
RDataOut[7:0]
Sel[2:0]
Address[9:0]
Instruction[17:0]
RDataIn0[7:0]
RDataIn1[7:0]
RDataIn2[7:0]
rom_prog
clk
address[9:0]
instruction[17:0]
gen_interrupt
Clk
Reset
Interrupt
InterruptAck
Sel
Write
Address[1:0]
WData[7:0]
RData[7:0]
switches_leds
Clk
Reset
SlideSwitches[7:0]
SW[7:0]
PushButtons[3:0]
Leds[7:0]
LD[7:0]
Sel
Write
Address[1:0]
WData[7:0]
RData[7:0]
sevenseg
Clk
Reset
Sel
Write
Address[2:0]
WData[7:0]
RData[7:0]
Segment[7:0]
SEG_*
Anode[3:0]
AN[3:0]
Oct-2010 F.Barbero Escuela Politécnica Superior - Universidad Autónoma de Madrid
Descripción estructural
• VHDL: componentes e instanciaciones
top.vhd
a.vhd
a1.vhd
a2.vhd
b.vhd
c.vhd
ENTITY top IS PORT
( ... )
END top;
ARCHITECTURE structural OF top IS
signal s1,s2 : std_logic;
COMPONENT a
PORT ( entrada : IN std_logic;
salida
: OUT std_logic );
END COMPONENT;
begin
u1: a PORT MAP
(entrada=>s1, salida=>s2);
....
end jerarquica;
Oct-2010 F.Barbero Escuela Politécnica Superior - Universidad Autónoma de Madrid
Cronogramas
• Ejemplo: escritura del micro en puerto
– El dato va de un registro del micro a un registro de
un periférico.
clk
write strobe
out_port[7:0]
12
45
6F
07
B8
32
portRegister[7:0]
00
45
07
B8
Actúa de “enable”
¡Ojo! : captura el dato que estaba estable
cuando llegó el flanco de reloj.
Oct-2010 F.Barbero Escuela Politécnica Superior - Universidad Autónoma de Madrid
Cronogramas
• Ondas más realistas:
clk
write strobe
out_port[7:0]
12
45
portRegister[7:0]
00
6F
45
07
B8
32
07
B8
Así es más facil tener claro qué valor carga el registro, pero…:
- En simulación sin tiempos nos vamos a encontrar la otra representación
- En el cuaderno es más cómodo usar la otra representación
Importante: recordar que el papel y el lápiz también existen, y el papel
cuadriculado es una herramienta de diseño a tener en cuenta…
Oct-2010 F.Barbero Escuela Politécnica Superior - Universidad Autónoma de Madrid
Setup
• Los FF no son “perfectos”, necesitan que el dato
de entrada esté estable un mínimo de tiempo
Si este tiempo es menor que tSETUP del FF,
su salida Q se va a un estado impredecible (‘X’)
CLK
R
D
Q
Hold : Mismo concepto, pero el requerimiento es de estabilidad de D tras el flanco de reloj.
Oct-2010 F.Barbero Escuela Politécnica Superior - Universidad Autónoma de Madrid
Slack y frecuencia máxima
• El slack es el tiempo que nos sobra para poder
cumplir con los requisitos (si es negativo, mal)
CLK
R
D
Q
delay
tSETUP
slack
Si encogemos más y más el periodo de reloj, el retardo (delay) va a ser el mismo y el tiempo de setup
también, pero el slack disminuye. Cuando es 0 hemos alcanzado la frecuencia máxima para ese “path”.
Oct-2010 F.Barbero Escuela Politécnica Superior - Universidad Autónoma de Madrid
Metaestabilidad
• Puede aparecer al tomar como dato una entrada externa al sistema o
•
proveniente de otro “dominio de reloj”.
El cambio del dato se produce a la vez que el de reloj, y la salida se comporta
de forma anómala. Puede provocar fallos graves en los circuitos.
tSETUP
CLK
D
Q
•
Se soluciona poniendo una cadena de FFs
dato
asíncrono
dato
sincronizado
Oct-2010 F.Barbero Escuela Politécnica Superior - Universidad Autónoma de Madrid
Comentarios de: Diseño electrónico digital integrado - Back to basics (0)
No hay comentarios