Beruflich Dokumente
Kultur Dokumente
Prctica I
Contador de cinco bits
A modo de ejemplo, vamos a mostrar como se llevara la prctica que tendra el siguiente
enunciado:
Llevar a cabo el diseo de un contador de cinco bits, en el que se debern realizar las
siguientes tareas:
Modelar en VHDL el contador de cinco bits.
Comprobar mediante simulacin el comportamiento del contador utilizando el software de XILINX.
Utilizar el software de XILINX para sintetizar el comportamiento modelado en el primer punto (utilizar el mapeado tecnolgico).
Simular elctricamente los bloques obtenidos en el punto anterior utilizando una
familia lgica CMOS. Para ello, se debe realizar una revisin bibliogrfica de la familia lgica en cuestin. Como resultado de dicha simulacin se deben obtener las
dimensiones ptimas de las puertas en trminos de retraso de propagacin (obtenido
como el valor medio de los retrasos correspondientes a todas las combinaciones de
entrada). Dichas dimensiones deben estar de acuerdo con las reglas de diseo de la
tecnologa CMOS de 0.6u.
Obtener el layout de los bloques anteriores segn las dimensiones ptimas del apartado anterior.
Simular elctricamente los flip-flops, utilizacin una configuracin maestro-esclavo
estndar. Para ello, se debe realizar una revisin bibliogrfica de la configuracin en
cuestin. Como resultado de dicha simulacin se deben obtener las dimensiones ptimas de las puertas en trminos de retraso de propagacin (obtenido como el valor
medio de los retrasos correspondientes a todas las transiciones clk -> salida). Dichas
dimensiones deben estar de acuerdo con las reglas de diseo de la tecnologa CMOS
de 0.6u.
Obtener el layout de los flip-flops segn las dimensiones ptimas del apartado anterior.
Obtener una colocacin ptima de los bloques obtenidos en el tercer punto, utilizando
el algoritmo de clustering uniforme. Para ello, se debe realizar una revisin bibliogrfica del algoritmo en cuestin, as como una implementacin software del algoritmo
en el lenguaje Tcl/Tk (basado en script, y por tanto, independiente del sistema operativo).
Obtener un rutado ptimo utilizando el algoritmo basado en cliques. Para ello, se debe
realizar una revisin bibliogrfica del algoritmo en cuestin, as como una
implementacin software del algoritmo en el lenguaje Tcl/Tk (basado en script, y por
tanto, independiente del sistema operativo).
1.2. Comprobar mediante simulacin el comportamiento del contador utilizando el software de XILINX
Para poder realizar la simulacin del sistema, es necesario crear un testbench, con el que
llevar a cabo dicha simulacin. En este testbench, slo se debe crear la seal de reloj, pues es la
nica seal de entrada con la que contamos. Dicho testbench podra ser el siguiente:
------------------------------------------------------------------------------------------------------------------LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.all;
USE ieee.numeric_std.ALL;
ENTITY contador5_tb_vhd IS
END contador5_tb_vhd;
ARCHITECTURE behavior OF contador5_tb_vhd IS
-- Component Declaration for the Unit Under Test (UUT)
COMPONENT contador5
PORT(
clk : IN std_logic;
cuenta : OUT std_logic_vector(4 downto 0)
);
END COMPONENT;
--Inputs
SIGNAL clk : std_logic := '0';
--Outputs
SIGNAL cuenta : std_logic_vector(4 downto 0) := (others => '0');
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: contador5 PORT MAP(
clk => clk,
cuenta => cuenta
);
tb : PROCESS
BEGIN
clk <= '0';
wait for 10 ns;
clk <= '1';
wait for 10 ns;
END PROCESS;
END;
-------------------------------------------------------------------------------------------------------------------------------
Utilizando dicho testbench, las formas de onda del sistema se muestran en la figura 1.1. En ella
podemos apreciar que las seales de salida, cambian cuando la seal de reloj sufre una transicin de subida. Tambin podemos apreciar que cuando se alcanza el mayor nmero alcanzable
(31), vuelve a empezar la cuenta desde 0.
Figura 1.1.- Formas de onda de la simulacin de comportamiento del contador de cinco bits.
Figura 1.2.- Esquema tecnolgico del modelo de contador de cinco bits mostrado en el apartado 1.1.
En dicho esquema podemos tener bloques de librera o LUTs. En el caso de las LUTs, en el
mismo esquema podemos ver la funcin que realizan; mientras que para obtener la funcionalidad de los bloques de librera, debemos acudir a Libreries Guide (que podemos encontrar en la
ayuda del Webpack de Xilinx. Para el caso del bloque FDR, mostramos en la figura 1.3 su hoja
de caractersticas en la que podemos apreciar que se trata de un flip-flop tipo D con reset
sncrono.
Por lo tanto, los bloques, junto con sus ecuaciones, son los siguientes:
bufgp: buffer que no tiene
obuf: no tiene ninguna funcin lgica
lut2_6: salida = i0i1 + i0i1
lut4_8000: salida = i0i1i2i3
lut4_7fff: salida = i2+i1+i0+i3
lut4_6ccc: salida = i1i2 + i0i1i2i3 + i0i1 + i1i3
Figura 1.3.- Hoja de caractersticas del bloque FDR obtenida de Libreries guide.
1.4. Simular elctricamente los bloques obtenidos en el punto anterior utilizando una familia lgica CMOS
nicamente vamos a detallar el diseo de la celda lut2_6 ya que el modo de actuacin
con el resto de bloques es el mismo (aunque vosotros tendris que detallar todos los bloques).
Dicha celda consiste en una operacin XOR, de la cual ya tenemos la ecuacin lgica (que es
lo que nos hace falta para el diseo en la familia CMOS estndar). Por lo tanto, el esquema a
nivel de transistores de dicha celda se muestra en la figura 1.4. Las caractersticas ms dignas
de consideracin son las siguientes:
Aprovechando que las conexiones series de i0i0 e i1i1 nunca se pueden dar, se ha
simplificado el esquema.
Como eran necesarios los dos inversores de entrada, se ha optado por implementar el
complemento de la operacin para evitar el uso del inversor de salida, y de esta forma
tener una reduccin en el rea ocupada por el circuito.
Para poder determinar la relacin entre las anchuras de los transistores PMOS y
NMOS debemos obtener los parmetros de movilidad inicial (disponible en el fichero
de modelos de PSPICE, correspondiente al parmetro UO).
Las fuentes de entrada se han elegido de tal forma que no coincida ninguna transicin
de las seales de entrada.
Para llevar a cabo el anlisis parmetrico, debemos indicar cules son los parmetros
(un parmetro en PSPICE se indica con una etiqueta entre parntesis). Por lo tanto
debemos incluir un part denominado PARAM, en el cual se aadirn los parmetros
(en este caso w y l). Como las dimensiones deben estar en el grid (con vistas a la realizacin del layout), debemos obtener dicho grid que coincide con el parmetro
lambda del fichero tecnolgico (de MICROWIND). Dicho parmetro es igual a 0.3u.
Los parmetros relativos a la simulacin utilizados son los siguientes:
Anlisis transitorio hasta un tiempo igual a 100ns. Obviamente, este valor puede cambiar en funcin del nmero de entradas de cada celda, as como de los parmetros de
las fuentes de entrada.
Anlisis parmetrico de un parmetro global denominado w desde 0.9um (anchura
** Dimensiones de transistores
WP=UON*WN*UOP = 426.9*WN/111.5 = 4*WN
** Fuentes de entrada
V_V1 VDD 0 5v
V_V2 I1 0 PULSE 0 5 0 0.1n 0.1n 20n 40n
V_V3 I0 0 PULSE 0 5 10n 0.1n 0.1n 20n 40n
** Paramtros iniciales de w y l
.PARAM w=0.9u l=0.6u
** Anlisis
.TRAN 0 100ns 0
.STEP LIN PARAM w 0.9u 3u 0.3u
.PROBE
Figura 1.4.- Esquema a nivel de transistores de la celda lut2_6, junto a sus principales caractersticas.
mnimo del transistor, que coincide con la anchura mnima de las capas de difusin)
hasta 3um con un incremento de 0.3u (tamao del grid, lambda). En cambio, la longitud se ha elegido la mnima de 0.6u (correspondiente a la anchura mnima de la capa
de polisilicio).
Aadir a las libreras el fichero de librera de los modelos de los transistores.
Las formas de onda de las entradas y las salidas se muestran en la figura 1.5. En ella podemos
apreciar como un cambio en una seal de entrada provoca un cambio en la seal de salida.
Una vez que hemos comprobado el comportamiento correcto, debemos obtener las
dimensiones ptimas. Uno de los parmetros ms utilizados para determinar las prestaciones
Obviamente, cuando se cambie de celda habr que modificar el cdigo relativo al retraso ya
que puede cambiar, por ejemplo, el nmero de entradas. Por ello, se ha comentado dicho
cdigo.
Utilizando dichas funciones, se ha llevado a cabo un anlisis de prestaciones (Performance Analysis). De dichos anlisis, se han obtenido la relacin de dichos parmetros en funcin de la anchura de los transistores mostrados en la figura 1.6, de las cuales se han obtenido
los valores de la tabla 1.1.
Podemos apreciar dos comoprtamientos completamente diferenciados entre el retraso de
propagacin y el consumo medio de potencia. En el caso del retraso medio de propagacin se
observa un descenso con el aumento de la anchura del transistor, exceptuando algunos picos
intermedios como el producido para una anchura de 2.1u. Si continuamos las simulaciones
para unas anchuras mayores, podemos apreciar que el retraso de propagacin se estabiliza, por
lo que un aumento en la anchura no producir un descenso en el retraso. Esta estabilizacin se
alcanza para valores cercanos a las 3u.
No obstante, el consumo de potencia mantiene un aumento proporcional a la anchura
(hay que indicar que la intensidad media es negativa por lo que los valores salen negativos).
Por lo tanto, a medida que aumentamos la anchura de los transistores, fluir por ellos una mayr
Retraso de propagacin
Consumo de potencia
W/L
Retraso (ps)
|Potencia| (uW)
PDP (fJ)
0.9/0.6
97,30
14,71
1,43
1.2/0.6
96,69
19,40
1,88
1.5/0.6
96,07
24,08
2,31
1.8/0.6
95,08
29,73
2,83
2.1/0.6
96,61
35,19
3,40
2.4/0.6
94,83
39,53
3,75
2.7/0.6
94,26
44,16
4,16
3.0/0.6
93,85
49,63
4,66
cantidad de intensidad, y de esta forma habr un mayor consumo de potencia. En este parmetro no encontraremos una estabilizacin como en el caso anterior ya que el consumo de potencia va a ser directamente proporcional a la anchura de los transistores.
Si consideramos el parmetro PDP, debemos multiplicar las columnas correspondientes
de la tabla 1.1. Este parmetro me indicar cul de los parmetros anteriores tiene una mayor
influencia. En este caso, el consumo de potencia tiene mayor influencia por lo que elegiremos
las dimensiones mnimas, es decir, w=0.9um y l=0.6um.
LUT2_6
LUT4_6CCC
MUXF5
LUT4_8000
LUT3_6A
10
11
1.6. Simular elctricamente los flip-flops, utilizacin una configuracin maestro-esclavo estndar
En el caso de los flip-flops seguiremos los mismos pasos que con los elementos combinacionales. Por lo tanto, en la figura 1.8 mostramos el esquema del flip-flop tipo D segn una
configuracin maestro-esclavo convencional, as como su comportamiento.
Figura 1.8.- Esquema a nivel de transistores del flip-flop tipo D, junto a su simulacin con PSPICE.
Mediante estas simulaciones, y utilizando las goal functions definidas en el caso de los
elementos combinacionales, hemos obtenido los valores del retraso de propagacin para ambas
salidas, Q y nQ, y el consumo medio de potencia. Estas medidas se muestran en la figura 1.9 y
en la tabla 1.2.
Retraso nQ
Retraso Q
Consumo de potencia
Por lo tanto, obtenemos que las dimensiones ptimas son las mismas que la de los bloques combinacionales.
12
W/L
Retraso_q
(ps)
Retraso_nq
(ps)
|Potencia|
(uW)
PDP_q (fJ)
PDP_nq (fJ)
0.9/0.6
185,17
216,69
39,41
7,30
8,54
1.2/0.6
179,36
214,14
53,09
9,52
11,37
1.5/0.6
175,77
208,59
67,22
11,82
14,02
1.8/0.6
175,64
213,59
80,06
14,06
17,10
2.1/0.6
175,23
211,85
94,39
16,54
20,00
2.4/0.6
173,34
210,85
107,14
18,57
22,59
2.7/0.6
173,47
210,13
120,60
20,92
25,34
3.0/0.6
172,44
209,84
135,45
23,36
28,42
1.7. Obtener el layout de los flip-flops segn las dimensiones ptimas del apartado anterior
Teniendo en cuenta las dimensiones obtenidas en el apartado anterior, se ha realizado el
layout del flip-flop, mostrado en la figura 1.10, junto a su simulacin de comportamiento.
13
Como los bloques LUT4_8000 y LUT4_7FFF son los mismos pero las salidas estaran antes y
despus del inversor de salida, nicamente vamos a utilizar uno de ellos. Por lo tanto, el orden
de colocacin ser el siguiente: LUT4_6CCC, LUT4_8000 (LUT4_7FFF), LUT3_6A,
MUXF5, LUT2_6, FD1, FDR2, FD3, FD4, FD5. Luego una posible colocacin sera la mostrada en la figura 1.11.
FD4
LUT2_6
FD1
FD3
LUT3_6A
LUT4_6CCC
Canal 3
Canal 2
FDR2
Canal 1
FD5
MUXF5
LUT4_8000
LUT4_7FFF
14
LUT3_6A
clk
FDR2
cuenta_int(2)
cuenta_int(0)
cuenta_int(3)
result(1)
clk
result(2)
cuenta_int(0)
cuenta_int(0)
cuenta_int(3)
cuenta_int(3)
cuenta_int(2)
result(3)
result(3)
cuenta_int(0)
LUT4_6CCC
cuenta_int(1)
(b)
cuenta_int(1)
cuenta_int(2)
clk
cuenta_int(1)
result(1)
FD3
FD1
cuenta_int(1)
result(2)
result(2)
result(1)
cuenta_int(0)
LUT2_6
cuenta_int(0)
(a)
cuenta_int(2)
clk
clk
cuenta_int(1)
FD4
result(3)
cuenta_int(1)
cuenta_int(3)
(c)
cuenta_int(0)
Peso del clique 2 = 1-4
result(3)
clk
Peso del clique 3 = 2-2
cuenta_int(3)
result(1)
result(1)
Peso del clique 4 =2-3
result(2)
result(3)
result(3)
Peso del clique 6 = 4-2
Figura 1.12.- (a) Canal de rutado; (b) grafo de compatibilidad; y (c) cliques de dicho grafo.
15