Sei sulla pagina 1di 21

Práctica 12 – Carta ASM

INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE CÓMPUTO

ACADEMIA DE SISTEMAS
DIGITALES

DISEÑO DE SISTEMAS DIGITALES

“Máquina Algorítmica de Estados


(Carta ASM)”

OBJETIVO: Realizar un diseño digital que permita contar el número de 1’s contenidos
en u registro de 6 bits usando una carta ASM permita mediante un lenguaje de
descripción de hardware (HDL) en un PLD 22V10.

MATERIAL Y EQUIPO:
Mesa de instrumentación del laboratorio de sistemas digitales

AUTOR: VICTOR HUGO GARCIA ORTEGA


Práctica 12 – Carta ASM

2 PLD 22v10
Además de lo anterior, se puede optar por alguna de estas dos opciones:
1 Fuente de 5V 1 TEDDi (Tarjeta Educativa para Diseño
1 Módulo de 3 displays Digital).
multiplexados de ánodo común.
1 Push Button
1 Dip Switch de 8
10 Resistencias de 1KΩ
13 Resistencias de 330Ω
6 Leds
1 Protoboard
Pinzas y cable para alambrar

INTRODUCCIÓN TEÓRICA

CARTAS DE LA MÁQUINA ALGORITMICA DE ESTADOS. (CARTAS ASM –


Algorithmic State Machine).

Una carta ASM es un tipo de diagrama de flujo que puede emplearse para representar
las transiciones de estado y las salidas generadas para una máquina de estados
finitos (FSM – Finite State Machine) Mealy o Moore. Los tres tipos de elementos
utilizados en las cartas ASM son los mostrados en la ilustración 1.

Ilustración 1 Elementos de las cartas ASM.

Una vez obtenida la carta ASM se procede a obtener la ruta de datos. En la ruta de
datos se determinan todos los elementos de diseño digital que se necesitan en la
carta. Estos elementos pueden ser contadores, registros, convertidores de código,
multiplexores, etc. También se determinan las señales de control de cada uno de los

AUTOR: VICTOR HUGO GARCIA ORTEGA


Práctica 12 – Carta ASM

elementos de diseño digital. El bloque principal de la ruta de datos es la unidad de


control, en este bloque se coloca el autómata de control que es el que maneja cada
señal de control de los elementos de diseño digital.

Un ejemplo simple que muestra la forma de utilizar las cartas ASM consiste en diseñar
un circuito que permita contar el número de unos que contiene un registro. Para
comenzar a realizar el diseño analizaremos el seudocódigo mostrado en la ilustración
2.

Ilustración 2 Seudocódigo del algoritmo.

Primero se almacena un número de 6 bits en el registro A. El algoritmo consiste en


preguntar por el valor del bit menos significativo (a0), si es 1, entonces se incrementa
el contador B y posteriormente se aplica un corrimiento hacia a la derecha de 1 bit al
registro A. Con este corrimiento el bit a1 se coloca en el bit a0, por lo que se analiza
nuevamente este bit en el siguiente ciclo. El algoritmo termina cuando el registro A
contiene ceros en los 6 bits.

PROCEDIMIENTO.
Antes de asistir al laboratorio:

1. Para implementar el algoritmo que permita contar el número de unos almacenados


en un registro debemos diseñar una carta ASM. Esta carta se muestra en la
ilustración 3. En esta carta ASM se considera una señal de inicio (INI) para indicar
el momento en que se va a cargar el número de 6 bits (INI = 0) en el registro y el
momento en que va a iniciar el algoritmo (INI = 1).

AUTOR: VICTOR HUGO GARCIA ORTEGA


Práctica 12 – Carta ASM

Ilustración 3 Carta ASM para el algoritmo de la ilustración 2.

De esta carta se deriva la ruta de datos del diseño, la cual consiste de:

a) Un registro (A) de 6 bits que contiene el número a verificar en el


algoritmocontrola la señal E del LCD. Este contador tiene las señales de
control LA y EA.

LA Operación EA Operación
0 Retención 0 Retención
1 Carga 1 Corrimiento a la derecha

b) Un contador (B) de 3 bits que se incrementa cada vez que el bit a0 = 1 despúes
de un corrimiento a la derecha. Este contador tiene las señales de control LB
y EB.

AUTOR: VICTOR HUGO GARCIA ORTEGA


Práctica 12 – Carta ASM

LB Operación EB Operación
0 Retención 0 Retención
1 Carga 1 Conteo ascendente

AUTOR: VICTOR HUGO GARCIA ORTEGA


Práctica 12 – Carta ASM

Ilustración 4 Microarquitectura para contar el número de unos en un registro.


AUTOR: VICTOR HUGO GARCIA ORTEGA
Práctica 12 – Carta ASM

c) Un convertidor de código BCD a 7 segmentos para mostrarse en un


display de ánodo común.
d) Un multiplexor que selecciona el código de 7 segmentos o el código
“1111110” (código del guión medio “-”) que se mostrará en el display.
e) Una compuerta NOR que se activa en el momento que el valor
almacenado en el registro es cero.

La ruta de datos completa se muestra en la ilustración 4. De la carta ASM de la


ilustración 3 y la ruta de datos de la ilustración 4 se deriva el autómata de control
del diseño, el cual se muestra en la ilustración 5.
Ilustración 5 Autómata de control de la microarquitectura.

2. Simular los diseños en el ambiente de desarrollo.

3. Una vez simulado el sistema construir el circuito mostrado en la ilustración 6


para probarlo en el laboratorio. En caso de usar la TEDDi este paso no es
necesario.
En el laboratorio:

Práctica 12 – Carta ASM

1. Programa los PLD 22V10 usando el programador disponible del


laboratorio.
2. Colocar la frecuencia de la señal de reloj a 2 HZ. En caso de usar TEDDi
ajustar la frecuencia con el potenciómetro “FREC”. En caso de haber
armado el circuito en protoboard, usar el generador de funciones.
3. Colocar el valor de 6 bits a cargar en el registro.
4. Colocar la señal INI en 0 para cargar el valor de 6 bits.
5. Posteriormente colocar la señal INI en 1 para comenzar la ejecución del
diseño.
6. Verificar el correcto funcionamiento de la carta ASM.

CUESTIONARIO
1. ¿Cuántos dispositivos PLD 22V10 son necesarios para el desarrollo de
esta práctica?
2. ¿Cuántos dispositivos de la serie 74xx (TTL) ó 40xx (CMOS) hubieras
necesitado para el desarrollo de esta práctica?
3. ¿Cuántos pines de entrada/salida de cada PLD 22V10 se usan en el
diseño?
4. ¿Cuántos términos producto ocupan las ecuaciones para cada señal de
salida y que porcentaje se usa en total de los PLD 22V10?
5. ¿Cuántos FF’s ocupa el autómata de control de la microarquitectura?
6. ¿Qué puedes concluir de esta práctica?
7
Práctica 12 – Carta ASM

Ilustración 6 Diagrama esquemático.


8
Diagrama de pines:

Simulacion:
VHDL

library ieee;
use ieee.std_logic_1164.all;

entity registro is port (


dato : in std_logic_vector (5 downto 0);
clk, clr, ini : in std_logic;
a: out std_logic_vector (5 downto 0);
lb,eb,ec : out std_logic); attribute
pin_numbers of registro: entity is
"clr:2 dato(5):3 dato(4):4 dato(3):5 dato(2):6 dato(1):7 dato(0):8 ini:9 lb:22 eb:21 ec:20 a(5):14 a(4):15 a(3):16 a(2):
17 a(1):18 a(0):19 ";
end entity;

architecture aregistro of registro is


signal la, ea, z: std_logic;
--signal a: std_logic_vector(6 downto 0);
type estados is (e0, e1, e2); signal act,
sig : estados;

begin process
(clk, clr) begin
if (clr = '1') then
act <= e0;
elsif (rising_edge(clk)) then
act <= sig; end if; end
process;

process (act, z, a , ini)


begin
la <= '0';
lb <= '0';
ea <= '0';
eb <= '0';
ec <= '0';
z <= a(5) or a(4) or a(3) or a(2) or a(1) or a(0);
case act is
when e0 => --descripción del estado e0
lb <= '1'; --salida moore if(ini = '1') then --
comienzo de la transición sig <= e1;
else
la <= '1'; --salida mealy
sig <= e0; end if;
when e1 => ea <= '1';
if(z='1' and a(0)='1') then
eb <= '1'; sig <= e1;
elsif(z='1' and a(0)='0') then
sig <= e1; else sig <= e2;
end if;
when others =>
ec <= '1';
if(ini = '1') then
sig <= e2;
else sig <=
e0; end if;

end case;
end process;

process (clk, clr)


begin
if (clr = '1') then a <= "000000";
elsif (rising_edge(clk)) then if
(ea = '0' and la = '1') then a <=
dato; elsif (ea = '1' and la = '0')
then --aux <= to_bitvector(a);
a(4 downto 0) <= a(5 downto 1);
a(5) <= '0'; --aux
<= aux srl 1;
-- a <= to_stdlogicvector(aux);

-- a <= to_stdlogicvector(to_bitvector(a) srl 1);


end if; end if;
end process;
end
architecture;

Diagrama de pines:
Simulacion:

Potrebbero piacerti anche