Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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))
1 S0 ⊕ Maymen 0
4 5
´ 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
0 S0 ⊕ Maymen
1
4
´ 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
0 INICIO
DIR=CNT 1 ; D́ I ← 0
AR← BUSFN ( M ; DCD( DIR))
´
∧/ CNT 1 ⊕CNT 2
1
0
3
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
´
∧/ CNT 4 ⊕10T 1022 9
1
0
𝑍=1
7
0 (∨/ MD)∧(∧/CNT 4 ) 1
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
END
COMPARADOR DE 8 BITS
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
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
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.
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:
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.
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/
https://es.wikipedia.org/wiki/Ordenamiento_de_burbuja
https://es.wikipedia.org/wiki/Ordenamiento_por_inserci%C3%B3n
https://es.wikipedia.org/wiki/Quicksort
http://pdf1.alldatasheet.com/datasheet-pdf/view/56222/ATMEL/28C256.html
http://pdf1.alldatasheet.com/datasheet-pdf/view/22887/STMICROELECTRONICS/28C16.html