Está en la página 1de 25

1.

OBJETIVOS
1.1. OBJETIVO GENERAL

 Diseñar un sistema que ordene los elementos de una memoria utilizando por lo menos 3
métodos de ordenamiento y que además estén unificados en un solo circuito.
2. MARCO TEORICO
En todos aquellos ambientes en que se manejen conjuntos de datos es necesario mantener un orden
en sus elementos para una mejor administración de la información de la que se dispone.
A menudo cuando se realizan análisis estadísticos con un conjunto de datos estos deben presentarse
en una forma cuya manipulación sea más sencilla, esto no siempre se logra con los valores que se
tienen originalmente debido a la forma en que se obtienen los datos y al carácter aleatorio de sus
magnitudes.
Al tener los datos presentados en un orden comprensible se pueden identificar mejor los elementos
que más nos interesan, se puede visualizar mejor la información y los comportamientos que esta
pueda presentar. Por ejemplo un conjunto de nombres en una lista esta ordenado en forma alfabética
porque así se tiene una mejor organización de la información lo que da lugar a una buena
planificación.
Cuando se realiza el análisis estadístico de datos tener un orden establecido permite identificar más
fácilmente parámetros del conjunto de valores con el que se está trabajando, es posible obtener
inmediatamente los valores máximo y mínimo, otros parámetros como la moda, los duplicados, la
mediana y las anomalías requieren un análisis que es más sencillo comparado con la manipulación
de los datos en su presentación original.
Otro ejemplo que se tiene es la presentación de los resultados de una búsqueda los cuales utilizando
el algoritmo Page Rank de google poseen un grado de prioridad y es en función de este grado de
prioridad que deben ser presentados desde aquel que sea más importante hasta el que tenga el menor
grado de prioridad.
En el último ejemplo al igual que muchos otros se trabaja con un número elevado de datos por lo
cual intentar hacer el ordenamiento de forma manual es imposible, es por eso que se necesita un
sistema capaz de realizar el ordenamiento de grandes cantidades de información de forma
automática y rápida.
Por eso se plantean 3 métodos o algoritmos de ordenamiento los cuales realizan la tarea de
diferentes maneras y velocidades, entonces el sistema en el cual se ven unidos también brinda
posibilidades al usuario para realizar el ordenamiento, además la inclusión de un selector del
sentido de ordenamiento ofrece más libertad a la hora de presentar la información final.

3. ALGORITMOS Y DISEÑO
4.1. PLANTEAMIENTO DE LOS METODOS DE ORDENAMIENTO
Para un mejor análisis de los métodos de ordenamiento que se van a implementar se dividió el
proceso de ordenamiento general en varias etapas las cuales son comunes a la mayoría de métodos.
Si un método requiere etapas diferentes estas se desarrollaran por separado.

EXTRACCION DE
COMPARACION INTERCAMBIO
INICIO UN VALOR NO
DECISION DESPLAZAMIENTO
ORDENADO
PREPARACION
CONDICIONES
CONDICIONES DE
FINALIZACION

FINALIZACION
Antes de explicar cómo trabajan las etapas se debe definir como se organizan los elementos de la
memoria durante el proceso:
LISTA ORDENADA: son el conjunto de elementos que ya pueden considerarse ordenados, va
creciendo conforme va avanzando el proceso y cuando el número de elementos de esta lista sea
igual al total de elementos se acabara el método. En métodos como la inserción y la burbuja una
parte específica de la memoria contiene a los elementos de la lista ordenada y va creciendo en un
sentido (izquierda o derecha) pero en el caso del Quicksort la lista ordenada no puede visualizarse,
ya que sus elementos se encuentran dispersos por toda la memoria.
LISTA NO ORDENADA: son el conjunto de elementos que aún no pasaron por la etapa de
extracción o de los cuales aún no se encontró su posición final. En burbuja e inserción se puede
identificar fácilmente el conjunto no ordenado pero el Quicksort de nuevo debido a la característica
del método no puede identificarse fácilmente.
ETAPAS
ETAPA DE EXTRACCION: Es común en los tres métodos, implica extraer un valor de la lista no
ordenada. En métodos como la inserción y Quicksort este elemento se compara con múltiples
valores de la memoria hasta encontrar su posición luego se realiza una nueva extracción y se
vuelven a realizar las siguientes etapas, para la burbuja se extraen valores constantemente y este
valor solo se extrae una vez para realizar la comparación.
COMPARACION/DECISIÓN: Luego de extraer un elemento de la lista no ordenada este se
compara con un elemento de la memoria y se decide que se debe hacer con los valores comparados,
si es necesario modificar los datos se prevé un registro AUXiliar para salvar el valor con el cual se
está comparando el valor extraído, según la decisión solo habrá dos posibilidades ir a una etapa de
cambio o una etapa de espera en la cual se modifican partes del sistema de dirección para una nueva
comparación.
ETAPA DE ESPERA Y PREPARACION: Cuando no se debe realizar una modificación de los
datos de la memoria esta etapa se encarga de preparar la nueva dirección para realizar una nueva
comparación o según el método se deposita el valor en su posición final y también se realiza una
preparación para una nueva extracción. De ser necesario también se pasa a verificar las condiciones
de finalización.
ETAPA DE INTERCAMBIO/DESPLAZAMIENTO: es común a los tres métodos, cuando se
tienen que realizar cambios a la información de la memoria esta etapa se encarga de realizar las
modificaciones correspondientes. En métodos como la inserción y Quicksort se realiza un
desplazamiento de los datos hacia un lado de la memoria y en el caso de la burbuja se realiza un
intercambio de valores, es por esto que esta etapa dura más pasos para este método.
ETAPA DE CONDICIONES DE FINALIZACION: en todos los métodos se verifica si el
proceso ha llegado a su fin pero dependiendo del método esta etapa puede realizarse dentro de
alguna de las otras etapas, por ejemplo en los métodos de la inserción y burbuja se realiza dentro de
la etapa de espera, en métodos como el quicksort después de todas las comparaciones e
intercambios necesarios para encontrar el lugar del pivote.
FINALIZACION: señala el fin del método, cada uno puede tener su propia señal de finalización
para indicar que el ordenamiento se realizó por ese método. Cada uno llega a este punto después de
que el número de elementos de la lista ordenada sea igual al total de elementos de la memoria y
para todos los métodos esto se verifica utilizando un contador para llevar la cuenta de la dimensión
de la lista ordenada.
PROBLEMA DE LA RECURSIVIDAD: El método de Quicksort presenta un mayor grado de
dificultad debido a que la parte principal del método se realiza varias veces para diferentes valores
de los contadores que usamos como punteros, es por esto que en varias soluciones que se
investigaron se aplicaban principios de recursividad, la cual se usaba para realizar el proceso
principal el cual acababa depositando del pivote en su lugar final y en base a esa posición se repetía
el proceso principal con nuevos punteros y con nuevos grupos de datos.
SOLUCION: como el problema es repetir el proceso principal con nuevos punteros tomando en
cuenta los pivotes y la división en grupos se planteó lo siguiente:

 Primero se marca el lugar donde se guarda un pivote utilizando una memoria externa, en la
cual se graba un 1 en la posición donde se grabara el pivote.
 Después de grabar el pivote se pasa a un proceso donde se determinan los nuevos valores de
los punteros tomando en cuenta las posiciones donde se encuentran los pivotes.
 Con un contador se recorre la memoria auxiliar en busca de los pivotes. Para el puntero de
la parte izquierda se busca el primer lugar donde no se encuentra un pivote entonces esta
posición es la que se asigna al puntero izquierdo y luego se procede a encontrar el valor del
puntero derecho.
 Con el mismo contador a partir de la posición del puntero izquierdo se busca la primera
posición en la cual se encuentra un pivote entonces se asigna la posición anterior al puntero
izquierdo o cuando se llegue al final y no se encuentre un pivote se asigna el valor final a
este puntero y para ambos casos se retorna a la etapa de extracción de un valor no ordenado.
 El Quicksort tiene además dentro de la etapa de extracción una condicional para los casos
en que ambos punteros son iguales, en estos casos se debe grabar directamente el pivote en
esa posición.
4.2. DIAGRAMAS DE FLUJO
METODO DE LA INSERCION
INICIO

CNT 1 ← 10T 1
rMayMen ← MayMen
rMenMay ← MenMay
INICIO
0
1
1
2

CNT 2← CNT 1
AR← BUSFN ( M ; DCD( CNT 1))

A=BUSFN ( M ; DCD( ADD(CNT 2; 10 T 1023)) )


B= AR
AUX ← A

1 S0 ⊕ Maymen 0

4 5

M∗DCD (CNT 2)← AUX M∗DCD (CNT 2)← AR

CNT 2← ADD (CNT 2 ; 8 T 1023) CNT 1 ← INC (CNT 1)

´ 2 ∧CNT 2
∨/CNT 0:8 9
∧/CNT 1
0
0 1
6 1
INICIO
METODO DE LA BURBUJA 𝑍=1

CNT 1 ← 10T 0
CNT 2← 10T 1

INICIO
0
1
2

AR ← BUSFN ( M ; DCD(CNT 2))

A=BUSFN ( M ; DCD( ADD(CNT 2; 10 T 1023)) )


B= AR
AUX ← A

0 S0 ⊕ Maymen

1
4

M∗DCD (CNT 2)← AUX

M∗DCD (ADD (CNT 2 ; 10 T 1023)) ← AR

´ CNT
PASO=∧/( CNT 2 ⊕ ´ 1)
CNT 2← ( INC ( CNT 2 ) ! 10 T 1 )∗( PASO
´ , PASO)
CNT 1∗PASO ← INC (CNT 1)
0 PASO 1
1

0 ´ 19
∧/CNT 10 : 8 ∧ CNT 1 7
𝑍=1

METODO QUICKSORT INICIO

CNT 1 ← 10T 0 ; CNT 2 ←10 T 1023


CNT 3← 10 T 0 ; CNT 4 ←10 T 0

0 INICIO

DIR=CNT 1 ; D́ I ← 0
AR← BUSFN ( M ; DCD( DIR))
´
∧/ CNT 1 ⊕CNT 2
1
0
3

DIR= (CNT 2 ! CNT 1 )∗( D́´ I , D́ I ); B= AR


A=BUSFN ( M ; DCD( DIR) ) ; AUX ← A

0 ((S 0 ∧ D́´ I )∨(S 1 ∧ D́ I )) ⊕maymen


1
4 5

DIR= (CNT 1 ! CNT 2 )∗( D́´ I , D́ I ) CNT 2∗ D́´ I ← ADD( CNT 2 ; 10T 1023)
M∗DCD ( DIR ) ← AUX ; D́ I ← D́´ I CNT 1∗ D́ I ← INC (CNT 1)
CNT 1∗ D́´ I ← INC (CNT 1)
CNT 2∗ D́ I ← ADD( CNT 2 ; 10T 1023)

´ 2 ; 10 T 1023)
∧/ CNT 1 ⊕ ADD (CNT 0
1
6

DIR=CNT 1 ; M∗DCD ( DIR ) ← AR; CNT 3← 10 T 0


N∗DCD ( DIR ) ← 2T 2 ; CNT 4 ← INC(CNT 4)

´
∧/ CNT 4 ⊕10T 1022 9
1
0
𝑍=1
7

CNT 1 ← CNT 3 ; CNT 3 ← INC(CNT 3)


MD=BUSFN ∨/ ( NMD
; DCD ( CNT 3 ))
1
0
8

MD=BUSFN (N ; DCD ( CNT 3 )) ; CNT 3← INC(CNT 3)


´ 4 ∨(∨/MD) ,(∧/CNT 4)∧ ∨/MD)
CNT 2← ( ADD (CNT 3 ; 10T 1023 ) ! CNT 3 )∗( ∧/CNT ´

0 (∨/ MD)∧(∧/CNT 4 ) 1

4.3. CODIGOS AHPL


METODO DE LA INSERCION
MODULE: INSERCION
MEMORY: AR [8]; AUX [8]; CNT1 [10]; CNT2 [10]; M [1024, 8]
INPUTS: Inicio; MayMen; Leer
OUTPUTS: Z; MDIR

1. CNT 1 ← ( 10 T 1! INC ( CNT 1 ) )∗( Leer


´ , Leer )
MDIR=BUSFN ( M ; DCD(CNT 1))
´
→( Inicio)/(1)
2. AR ← BUSFN ( M ; DCD( CNT 1))
CNT 2← CNT 1
CE=0; OE=0 ;WE=1
3. A=BUSFN ( M ; DCD( ADD(CNT 2; 10 T 1023)) )
B= AR
AUX ← A
CE=0; OE=0 ;WE=1
´
→( S0 ⊕ MayMen)/(5)
4. M∗DCD (CNT 2)← AUX
CNT 2← ADD (CNT 2 ; 10 T 1023)
CE=0; OE=1; WE=CLOCK ´
´ 20´: 8 ∧ CNT 29 )/(3)
→( ∨/CNT
5. M∗DCD (CNT 2)← AR
CNT 1 ← INC (CNT 1)
CE=0; OE=1; WE=CLOCK´
´
→( ∧/CNT 1)/(2)
6. Z=1
→(1)
END SEQUENCE
END

METODO DE LA BURBUJA
MODULE: BURBUJA
MEMORY: AR [8]; AUX [8]; CNT1 [10]; CNT2 [10]; M [1024, 8]
INPUTS: Inicio; MayMen; Leer
OUTPUTS: Z; MDIR
1. CNT 1 ← ( 10 T 0 ! INC ( CNT 1 ) )∗( Leer
´ , Leer)
CNT 2← 10T 1
MDIR=BUSFN ( M ; DCD(CNT 1))
´
→( Inicio)/(1)
2. AR ← BUSFN ( M ; DCD(CNT 2))
CE=0; OE=0 ;WE=1
3. A=BUSFN ( M ; DCD( ADD(CNT 2; 10 T 1023)) )
B= AR
AUX ← A
CE=0; OE=0 ;WE=1
´
→( S0 ⊕ MayMen)/( 6)
4. M∗DCD (CNT 2)← AUX
CE=0; OE=1; WE=CLOCK ´
5. M∗DCD (ADD (CNT 2 ; 10 T 1023)) ← AR
CE=0; OE=1; WE=CLOCK ´
6. PASO=∧/ CNT 2⊕ ´ CNT ´ 1
CNT 1∗PASO ← INC (CNT 1)
CNT 2← ( INC ( CNT 2 ) ! 10 T 1 )∗( PASO
´ , PASO)
´
→( PASO ∧(∧/CNT 1 ))/(2)
0 :8
7. Z = 1
→(1)
END SEQUENCE
END

METODO QUICKSORT
MODULE: QUICKSORT
MEMORY: DI; AR [8]; AUX [8]; CNT1 [10]; CNT2 [10]; CNT3 [10]; CNT4 [10]; N
[1023, 8]; M [1023, 8]
INPUTS: Inicio; MayMen; Leer
OUTPUTS: Z; MDIR

1. CNT 1 ← ( 10 T 0 ! INC ( CNT 1 ) )∗( Leer


´ , Leer)
CNT 2← 10T 1023
CNT 3← 10 T 0
CNT 4 ← 10T 0
MDIR=BUSFN ( M ; DCD(CNT 1))
´
→( Inicio)/(1)
2. DIR=CNT 1
AR ← BUSFN ( M ; DCD ( DIR ) )
D́ I ← 0
CE=0; OE=0 ;WE=1
→(∧/ CNT 1 ⊕ ´ CNT 2)/(6)
3. DIR= (CNT 2 ! CNT 1 )∗( D́´ I , D́ I )
A=BUSFN ( M ; DCD( DIR) )
B= AR
AUX ← A
CND=( S ∧ D́´ I ) ∨( S ∧ D́ I )
0 1
CE=0; OE=0 ;WE=1
→(CND ⊕ MayMen)/(5)
4. DIR= (CNT 1 ! CNT 2 )∗( D́´ I , D́ I )
M∗DCD ( DIR ) ← AUX
D́ I ← D́´ I
CNT 1∗ D́´ I ← INC (CNT 1)
CNT 2∗D́ I ← ADD(CNT 2 ; 10T 1023)
CE=0; OE=1; WE=CLOCK ´
→¿
5. CNT 1∗ D́ I ← INC (CNT 1)
CNT 2∗D́´ I ← ADD(CNT 2 ; 10T 1023)
CE=0; OE=1; WE=CLOCK´
→(∨/(CNT 1⊕ ADD ( CNT 2 ; 10 T 1023 )))/(3)
6. DIR=CNT 1
M∗DCD (DIR) ← AR
CNT 3← 10 T 0
CNT 4 ← INC(CNT 4)
N∗DCD( DIR)← 8 T 2
CE=0; OE=1; WE=CLOCK´
→(∧/CNT 40 : 8)/(9)
7. CNT 1 ← CNT 3
CNT 3← INC(CNT 3)
MD=BUSFN (N ; CNT 3)
→(∨/ MD)/(7)
8.
´ 3)∨(∨/MD),(∧/CNT 3) ∧( ∨/ ´MD))
CNT 2← ( ADD (CNT 3 ; 10T 1023 ) ! CNT 3 )∗(( ∧/CNT
CNT 3← INC(CNT 3)
MD=BUSFN (N ; CNT 3)
→(( ∨/ ´MD) ∧( ∧ CNT
´ 3),(∨/MD) ∨(∧/CNT 3))/(8,2)
9. Z=1
→(1)
END SEQUENCE
END
ORDENADOR DE MEMORIA
MODULE: ORDENADOR
MEMORY: D́ I ; AR [8]; AUX [8]; CNT1 [10]; CNT2 [10]; CNT3 [10]; CNT4 [10]; N
[1023, 8]; M [1023, 8]
INPUTS: Inicio; MayMen; Leer
OUTPUTS: Z; MDIR

1. CNT 1 ← ( 10 T 0 ! 10T 1! INC ( CNT 1 ) )∗( Í , I , Leer )


CNT 2∗ Í ← ( 10T 1! 10 T 1023 )∗(B , Q)
CNT 3∗Q ←10 T 0
CNT 4∗Q ←10 T 0
BR← B
IR ← I
QR ← Q
MDIR=BUSFN ( M ; DCD(CNT 1))
´
→( Inicio)/(1)
2. DIR= (CNT 1 ! CNT 2 )∗( BR ´ , BR)
AR ← BUSFN ( M ; DCD ( DIR ) )
D́ I ← 0
CNT 2∗IR ← CNT 1
Z=∧/( CNT 1 ⊕ ´ CNT 2)
CE=0; OE=0 ;WE=1
→(Z ∧QR )/(6)
3. DIR= ( CNT 2 ! CNT 1 ! ADD(CNT 2; 10 T 1023) )∗(QR ∧ D́´ I ,QR ∧ D́ I , QR)
´
A=BUSFN ( M ; DCD( DIR) )
B= AR
AUX ← A
CND=( S ∧ D́´ I ) ∨( S ∧ D́ I )
0 1
CE=0; OE=0 ;WE=1
´ ⊕QR ⊕ MayMen)∧ BR
→(( CND ´ ,( CND
´ ⊕ QR ⊕ MayMen) ∧ BR)/(5,6)
4. DIR= (CNT 1 ! CNT 2 )∗(QR ∧ D́´ I ,(QR ∧ D́ I )∨ QR
´ )
M∗DCD ( DIR ) ← AUX
D́ I∗QR ← D́´ I
CNT 1∗( D́´ I ∧ QR)← INC (CNT 1)
CNT 2∗( D́ I ∧ QR) ← ADD(CNT 2 ;10 T 1023)
UNO=∨/CNT ´ 2 ∧CNT 2
0: 8 9
´
Z=∧/ CNT 1⊕ ADD(CNT 2 ; 10T 1023)
CE=0; OE=1; WE=CLOCK ´
´ ∧ IR ) ∨ ( Ź ∧QR ) , Z ∧ QR)/(3,6)
→( ( UNO
5. DIR= ( CNT 2 ! ADD (CNT 2 ;10 T 1023 ) )∗( IR , IR
´ )
( M∗DCD ( DIR ) )∗QR
´ ← AR
CNT 1∗(( D́ I ∧QR )∨ IR )← INC (CNT 1)
CNT 2∗( D́´ I ∧ QR) ← ADD(CNT 2 ;10 T 1023)
FINI =∧/CNT 1
Z=∧/ CNT 1⊕ ADD(CNT ´ 2 ; 10T 1023)

CE=0; OE=1; WE=CLOCK ´ ∧ QR


´
´ ∧ IR , Ź ∧QR )/(2,3)
→( FINI
6. DIR=CNT 1
( M∗DCD ( DIR ) )∗QR ← AR
PASO=∧/ CNT 2⊕ ´ CNT´ 1
CNT 1∗(PASO ∧ BR)← INC(CNT 1)
CNT 2∗BR← ( INC ( CNT 2 ) ! 1023 T 1 )∗( PASO
´ , PASO)
CNT 3∗QR ←1023 T 0
CNT 4∗QR ← INC( CNT 4)
N∗DCD( DIR)← 8 T 2
FI =1∗IR
FINB=PASO ∧(∧/CNT 10 :8 )
FINQ=∧/CNT 40 : 8
CE=0; OE=1; WE=CLOCK ´ ∧ QR
CEN =0 ; OEN =1; WEN =CLOCK ´ ∧ QR
´
→(IR , FINB∧ ´ ∧QR )/(1,2,9)
BR , FINQ
7. CNT 1∗QR ← CNT 3
CNT 3∗QR ← INC (CNT 3)
MD=BUSFN (N ; CNT 3)
FB=1∗BR
CEN =0 ; OEN =0 ; WEN=1
´ ,QR ∧( ∨/ MD))/(1,7)
→( QR
8.
´ 3)∨(∨/MD),(∧/CNT 3) ∧( ∨/ ´MD))
CNT 2← ( ADD (CNT 3 ; 10T 1023 ) ! CNT 3 )∗(( ∧/CNT
CNT 3← INC(CNT 3)
MD=BUSFN (N ; CNT 3)
CEN =0 ; OEN =0 ; WE=1
→(QR ∧( ∨/ ´MD)∧( ∧CNT ´ 3),QR ∧((∨/MD) ∨(∧/CNT 3)) , QR ´ )/(8,2,1)
9. FQ=1
→(1)
END SEQUENCE
END
UNIDADES USADAS
SUMADOR DE 8 BITS
UNIT: ADD(X,Y)
UNIT: FULLADD(X, Y, Cin) INPUTS: X [8];Y[8];Cin
INPUTS: X; Y; Cin OUTPUTS: ADD [9]
OUTPUTS: FULLADD [2]
1. S7 , C7 =FULLADD ( X 7 ; Y 7 ; C ¿ )
1. a=x ⊕ y 2. S6 , C 6 =FULLADD ( X 6 ; Y 6 ; C 7 )
2. b=x ˄ y 3. S5 , C5=FULLADD ( X 5 ; Y 5 ; C 6 )
3. ∑ ¿ a⊕ cin 4. S4 , C 4=FULLADD ( X 4 ; Y 4 ; C 5 )
4. c=a ˄cin 5. S3 , C3=FULLADD ( X 3 ; Y 3 ; C 4 )
5. cout=b ∨ c 6. S2 ,C 2=FULLADD ( X 2 ; Y 2 ; C 3 )
6. FULLADD1=cout 7. S1 ,C 1=FULLADD ( X 1 ; Y 1 ;C 2 )
7. FULLADD0 =∑ ¿ 8. S0 , C 0 =FULLADD ( X 0 ; Y 0 ; C 1 )
END 9.
ADD=C 0 , S 0 , S1 , S 2 , S 3 , S 4 , S5 , S 6 , S 7

END
COMPARADOR DE 8 BITS

UNIT: COMP (A, B)


INPUTS: A [8]; B [8]
OUTPUTS: S [3]
1. S0=( A¿¿ 0 ∧ B́0 )∨ (( A 0 ⊕ B0 ) A 1 ∧ B́1 ) ∨ ( (∧/( A0 : 1 ⊕ B0 :1 )) ∧ A 2 ∧ B́2 ) ∨¿ ¿
2. S1=(B ¿¿ 0 ∧ Á 0 )∨ ( ( A 0 ⊕ B0 )∧ B1 ∧ Á1 ) ∨ ( (∧/( A0 : 1 ⊕ B0 : 1))∧ B2 ∧ Á2 ) ∨¿ ¿
3. S2= A ⊕ B
END

4.4. MICROPROGRAMACION
CODIFICACION DE LOS PASOS
SELECCIÓN DEL METODO
b0 b1 b2 b3 PASOS B I Q D0 D1 METODO
0 0 0 0 1 1 0 0 0 0 BURBUJA
0 0 0 1 2 0 1 0 0 1 INSERCION
0 0 1 0 3 0 0 1 1 0 QUICKSORT
0 0 1 1 4 0 0 0 1 1 NINGUNO
0 1 0 0 5
0 1 0 1 6 D 0= ( B́ ∨Q ) ∧ ( Í ∨Q )
0 1 1 0 7 D 1=( B́ ∨ I ) ∧ ( Q́ ∨ I )
0 1 1 1 8
1 0 0 0 9

UNIFICACION DE LOS METODOS

 CONDICIONES INSERCION  CONDICIONES BURBUJA

cndI =S 0 ⊕ MayMen cndB=S0 ⊕ MayMen

finI =∧/CNT 1 finB=PASO ∧(∧/CNT 10 :8 )


´ 2 ∧ CNT 2
Uno=∨/CNT 0:8 9

 CONDICIONES QUICKSORT
´ I )∨( S ∧ D́/ I ))⊕ MayMen
cndQ=((S 0 ∧ D́/ 1

finQ=∧/CNT 4 0 : 8

MD=(∨/ MD)∨(∧/CNT 3)
´
Cont =(∧/ CNT 1 ⊕CNT 2)∨ ¿
METODO BURBUJA
PASOS METODO CONDICIONES SIN ASIGNAR
-------- b1 b2 b3 0 0 inicio cndB finB -------- --------
------ ------ ------

METODO INSERCION
PASOS METODO CONDICIONES SA
-------- b1 b2 b3 0 1 inicio cndI finI Uno --------
------ ------

METODO QUICKSORT
PASOS METODO CONDICIONES
b0 b1 b2 b3 1 0 inicio cndQ finQ MD Cont

UNION DE PASOS Y CONDICIONES


GENERAL
PASOS METODO CONDICIONES
b0 b1 b2 b3 D0 D1 inicio cndX finX Y Z
cndX =( cndB ∧ BR ) ∨ ( cndI ∧ IR ) ∨ ( cndQ ∧QR )
finX=( finB ∧ BR ) ∨ ( finI ∧ IR ) ∨ ( finQ ∧ QR )
Y = (Uno ∧ IR ) ∨ ( MD ∧ QR )
Z=Cont

ORGANIZACIÓN DE LA MEMORIA DE MICROPROGAMACION

DIRECCIONE DIRECCION/ASIGNACION INSERCION


S 960…991 PASO8 QUICKSORT
0…31 PASO1 BURBUJA 992…1023 RETORNO PASO1
32…63 PASO1 INSERCION 1024…1055 NO HAY PASO EN BURBUJA
64…95 PASO1 QUICKSORT 1056…1087 NO HAY PASO EN
96…127 RETORNO PASO1 INSERCION
128…159 PASO2 BURBUJA 1088…1119 PASO9 QUICKSORT
160…191 PASO2 INSERCION
192…223 PASO2 QUICKSORT
224…255 RETORNO PASO1
256…287 PASO3 BURBUJA
288…319 PASO3 INSERCION
320…351 PASO3 QUICKSORT
352…383 RETORNO PASO1
384…415 PASO4 BURBUJA
416…447 PASO4 INSERCION
448…479 PASO4 QUICKSORT
480…511 RETORNO PASO1
512…543 PASO5 BURBUJA
544…575 PASO5 INSERCION
576…607 PASO5 QUICKSORT
608…639 RETORNO PASO1
640…671 PASO6 BURBUJA
672…703 PASO6 INSERCION
704…735 PASO6 QUICKSORT
736…767 RETORNO PASO1
768…799 PASO7 BURBUJA
800…831 NO HAY PASO EN
INSERCION
832…863 PASO7 QUICKSORT
864…895 RETORNO PASO1
896…927 NO HAY PASO EN BURBUJA
928…959 NO HAY PASO EN
MEMORIA MICROPROGRAMACION

BURBUJA
SALIDA MEMORIA DE MICROPROGRAMACION INSERCION
QUICKSORT
De la memoria de microprogramación se utilizaron las salidas para los bits de
los pasos y como señales de control para los contadores, la BURBUJA grabación
y el dato que se va a grabar. INSERCION
QUICKSORT
PRIMERA MEMORIA
PASOS SEÑALES DE CONTROL
BURBUJA
b0 b1 b2 b3 CNT1 CNT2 INSERCION
CNT3 CNT4
QUICKSORT
SEGUNDA MEMORIA
SEÑALES DE CONTROL BURBUJA
DIR GRA CONTE ------------ ------------ ------------ ------------
INSERCION ------------
--------- --------- ---------QUICKSORT
--------- ---------

Las señales de los contadores en la primera memoria se ponen en BURBUJA uno lógico
cada vez que se realice una transferencia que no sea condicionada, INSERCION así
habilitan el clock para realizar la transferencia al contador en el QUICKSORT flanco de
bajada, analizando los tres métodos se tendría las siguientes
ecuaciones lógicas. BURBUJA
CNT 1=P1 ∨ ( P 5 ∧ IR ) ∨ ( P 7 ∧QR ) INSERCION
QUICKSORT

BURBUJA
INSERCION
QUICKSORT

BURBUJA
INSERCION
QUICKSORT

BURBUJA
INSERCION
QUICKSORT
CNT 2=(( P 1 ∨ P 6)∧ BR ) ∨ ( (P2 ∨ P 2)∧ IR ) ∨ (( P 1 ∨ P 8)∧QR )
CNT 3=(P 1 ∨ P 6 ∨ P 7 ∨ P 8)∧QR
CNT 4=(P 1 ∨ P 6)∧QR
Las tres señales de la segunda memoria se utilizan para controlas la memoria M, con estas señales
se selecciona el contenido que se va a grabar, la dirección en la que se lo hará y el momento en el
cual se realizara la grabación.
Con la señal DIR se controla cuál de los contadores ingresara al bus de direcciones, y como solo se
trata de dos contadores se usó un mux 2 a 1 y la señal DIR controla cuando se trabajara con el
CNT1, entonces se tiene la siguiente ecuación lógica.
DIR= ( P 2 ∧ IR ) ∨ ( ( P 2 ∨ P 6 ) ∧QR )
Con la señal GRA se controla la memoria para tenerla en modo de lectura y escritura, cuando GRA
este en uno lógico se desactiva el modo de lectura y se entra a un estado de alta impedancia, luego
cuando se presente el flanco de subida del reloj la memoria pasara al modo de escritura y se
realizara la grabación del dato, además la señal GRA también habilita el paso de la información a
través del bus tristate a la entrada de la memoria. Analizando la operación de escritura en la
memoria se tiene la siguiente ecuación:
GRA=P 4 ∨ ( P 5∧ ( BR ∨ IR ) ) ∨(P 6 ∧QR )
Con la señal CONTE se controla el mux de información en el cual se selecciona que dato de los dos
registros se grabara en la memoria, entonces se eligió la señal para controlar el paso del dato del
registro AUX hacia la entrada de la memoria M, pero después de analizar las ecuaciones se vio lo
siguiente:
CONTE=P 4 ∧ ( BR∨ IR ∨QR )=P 4
Entonces solo se usó la señal del paso P4 para controlar cuando se graba el dato del registro AUX,
pero esto se realizó como un recurso opcional también se puede utilizar esta señal de la memoria de
microprogramación.

4.5. CONSIDERACIONES DEL DISEÑO


DECODIFICADOR DE PASOS
Para obtener los 9 pasos de control se utilizó un decodificador 3 a 8 con el cual para 3 bits en la
entrada se tiene 8 salidas individuales. Este decodificador se utilizó con los bits de los pasos de la
salida de la memoria de microprogramación y como el decodificador tiene salidas negadas se
utilizaron inversores para obtener las señales de los pasos del P1 al P8, para el paso P9 se utilizó las
entradas de habilitación del decodificador a las cuales se conectó el b0 que es el bit más
significativo de los pasos y que se pondrá en uno en el paso P9, entonces cuando se llegue a este
paso se inhabilitara el contador y las señales de los pasos P1 a P8 se pondrán en 0 lógico y la señal
P9 será igual a b0 entonces solo esta señal se pondrá en 1 lógico.

TABLA DE VERDAD DECODIFICADOR Y SEÑALES DE PASOS


b0 b1 b2 b3 y y y y y y y y P P P P P P P P P9
0 1 2 3 4 5 6 7 1 2 3 4 5 6 7 8
0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 1 1 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0
0 0 1 0 1 1 0 1 1 1 1 1 0 0 1 0 0 0 0 0 0
0 0 1 1 1 1 1 0 1 1 1 1 0 0 0 1 0 0 0 0 0
0 1 0 0 1 1 1 1 0 1 1 1 0 0 0 0 1 0 0 0 0
0 1 0 1 1 1 1 1 1 0 1 1 0 0 0 0 0 1 0 0 0
0 1 1 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0
0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0
1 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1

ORGANIZACIÓN MEMORIA M
Como el problema planteaba tener la información grabada en tres lugares diferentes para poder usar
los tres métodos sin tener que volver a grabar la información cada vez que se cambiaba de método.
Entonces utilizando los bits de dirección se realizó la partición de la memoria en tres utilizando la
siguiente organización de los bits de dirección:

METODO AUXIL DIRECCION DIR CONTENIDO


IAR INFORMACION 0…7 BURBUJA
D0 D1 0 DIR0 DIR1 DIR2 8…15 VACIO
16…23 INSERCION
24…31 VACIO
32…39 QUICKSORT
40…47 VACIO
48…55 VACIO
56…63 VACIO
Con esta asignación se tiene la memoria organizada de la siguiente forma:

D0D1 AUX DIR CONTENIDO


00 0 0…7 BURBUJA
00 1 0…7 VACIO
01 0 0…7 INSERCION
01 1 0…7 VACIO
10 0 0…7 QUICKSORT
10 1 0…7 VACIO
11 0 0…7 VACIO
11 1 0…7 VACIO
ACOPLAMIENTO DE RELOJ PARA ALTAS FRECUENCIAS
Para poder acoplar un reloj del generador de funciones se tuvo que modificar el eliminador de
rebotes que se tenía inicialmente, esto se realizó implementaron los siguientes circuitos:
CLOCK U7:D
INIT=LOW 13
START=0 11 clock U1:A
COUNT=-1 12 ? 1
CLOCK=10 12
74LS00 2 U2:A
0 1
74LS11 3
ck
2
U31:A 0
1 74LS32
3

1 2

74LS00
El primero es el típico eliminador de rebotes o flip-flop set reset, con entradas S y R, al cual se lo
modifico para que deje pasar el generador de funciones solo cuando el dipswitch de la entrada
inferior RESET este en 0 lógico. La segunda opción es la que se planteó en un principio, por medio
de una compuerta OR unir la salida del eliminador y la del generador que se encuentra condicionada
por un interruptor de habilitación para que ambas señales de reloj no se combinen.

4. CIRCUITOS
6. LAYOUT
7. DIAGRAMAS DETIEMPO
BURBUJA ASCENDENTE
BURBUJA DESCENDENTE

INSERCION ASCENDENTE
INSERCION DESCENDENTE

QUICKSORT ASCENDENTE
QUICKSORT DESCENDENTE

8. CONCLUSIONES Y RECOMENDACIONES
MEJORAS DEL CIRCUITO: una vez realizada la implementación del ordenador por la solución
de hardware se vio que el circuito final requería de muchos recursos, por lo tanto, para otras
aplicaciones lo mejor es reducir el circuito, esto se logra de dos maneras:

 SOLUCION ALU: con la ALU 74181 se pueden reemplazar varios circuitos integrados,
entre los cuales están el comparador y los cuatro contadores, ya que en la ALU se realizarán
las operaciones de comparación, incremento y decremento.

DESVENTAJAS: como se tienen dos registros y 4 contadores se necesitan buses de 3


elementos en las entradas del ALU, esto se puede resolver con el uso del integrado 74173A
un registro con salidas de tres estados, pero aun así se necesitan más señales de control para
estos buses, estas señales dependen del paso, el método y ciertas condiciones entonces
tienen que salir de alguna parte combinacional donde las obtengamos y además deben ser
mutuamente excluyentes para no tener dos registros conectados a un bus al mismo tiempo.

VENTAJAS: por medio de la programación se puede reprogramar el circuito para otras


tareas y si todas las señales de control fueron programadas dentro de la memoria de
microprogramación entonces se pueden programar nuevos métodos u otros programas
entonces el circuito ya estaría convirtiéndose en un pequeño computador.
 SOLUCION POR SOFTWARE: utilizando las instrucciones SIC para desarrollar un
programa que cumpla con los métodos de ordenamiento se podría implementar el pequeño
computador que aplique los métodos a la memoria interna del procesador donde también se
encontraran las instrucciones y la información.
 SOLUCION FPGA: es una de la más adecuadas debido a su disponibilidad en el
laboratorio, solo requiere de un programa y una adaptación de los puertos de entrada salida
de la tarjeta entrenadora. Para la implementación en la FPGA se debe elaborar un programa
en lenguaje VHDL el cual cumpla con el método de ordenamiento luego este programa se
traducirá en un quemado de fusibles internos con el cual controlamos las conexiones entre
las celdas del FPGA.
 IMPLEMENTACION DE UN SISTEMA INTELIGENTE: se puede buscar que el circuito
pueda ser capaz de manera automática escoger el mejor método de ordenamiento para
realizarlo en el menor tiempo posible para los datos que se desean ordenar, para esto el
sistema deberá ver la información y optimizar el ordenamiento, incluso podría alternar entre
métodos para aplicar Quicksort y luego en los subgrupos aplicar la inserción o la burbuja
para hacer más rápido el procedimiento.
Para una pequeña aplicación de un sistema inteligente se puede plantear un sistema que
ordene por medio del método Quicksort pero que seleccione pivotes que le permitan hacer
el ordenamiento en un tiempo más rápido.
COMPORTAMIENTO EN ALTAS FRECUENCIAS: con el primer circuito de acoplamiento se
llegaron hasta frecuencias de 2k [Hz] para mayores frecuencias se pierde información debido a los
tiempos de propagación de los circuitos integrados; el retraso en ciertas etapas del circuito empieza
a ser más notorio mientras aumentemos la frecuencia al final el retraso es tan grande que algunos
valores no se guardan a tiempo en los registros y por eso se pierden y se guardan otros en su lugar.
PRUEBAS: Uno de los mayores problemas al momento de verificar el funcionamiento del circuito
fue el hecho de que la corriente que brindaba una fuente no era suficiente por lo que fue necesario
implementar 3 fuentes para poder ver el correcto funcionamiento del circuito.
Para la implementación del quicksort se necesitó una memoria extra en la cual se grababan los
pivotes pero una vez terminado el método ya no se lo podía volver a hacer porque la memoria extra
ya no estaba con ceros y se debían volver a grabar para una nueva prueba.

 MEJORA: el problema anterior se resuelve agregando el borrando la memoria extra


durante la operación de lectura de la memoria M que se hace en el paso 1 de cada método,
así cada vez que se verifica el ordenamiento también se graban los ceros para volver a hacer
realizar el método.
RENDIMIENTO DE LOS METODOS: analizando el comportamiento de los métodos de
ordenamiento aplicados se puede concluir lo siguiente:

 Respecto a la velocidad el método de la burbuja es el más lento de los tres y esto es algo
que se esperaba debido a la naturaleza del método.
 El método Quicksort no es tan rápido como se esperaba ya que el proceso de búsqueda de
nuevos punteros para los subgrupos le resta velocidad, el método de la inserción incluso
rivaliza en velocidad con este.
 Como se indicó el método de la inserción es casi tan rápido que el método quicksort y en
algunos casos incluso le ganaría.
 Los métodos de burbuja e inserción al ser muy similares pueden unirse fácilmente en
cambio el método de Quicksort demanda más recursos, incluso se necesita una memoria
externa para controlar los nuevos subgrupos, esto genero problemas a la hora de unir los 3
metodos.

9. REFERENCIAS Y BIBLIOGRAFIA
Programa para realizar los diagramas de tiempo:

https://waveme.weebly.com/

Conceptos sobre los métodos de ordenamiento:

https://es.wikipedia.org/wiki/Ordenamiento_de_burbuja

https://es.wikipedia.org/wiki/Ordenamiento_por_inserci%C3%B3n

https://es.wikipedia.org/wiki/Quicksort

Hoja de datos de las memorias utilizadas:

http://pdf1.alldatasheet.com/datasheet-pdf/view/56222/ATMEL/28C256.html

http://pdf1.alldatasheet.com/datasheet-pdf/view/22887/STMICROELECTRONICS/28C16.html

También podría gustarte