K1801VM1

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 31 de octubre de 2020; las comprobaciones requieren 7 ediciones .

K1801VM1 es un microprocesador (OMP)  de 16 bits de un solo chip .

Está destinado al procesamiento de información digital en sistemas de control de procesos en equipos de control y medición y sistemas de comunicación , así como a la resolución de problemas de ingeniería y económicos como parte de una computadora . El sistema de mando K1801VM1 está muy cerca de la arquitectura PDP-11 y en la mayoría de los casos es compatible con ella, pero no es su copia exacta.

La composición del microcircuito

La estructura del microcircuito incluye los siguientes bloques funcionales principales:

Ver Sección: Diagrama Estructural

Parámetros básicos

Profundidad de bits 16 bits Representación de números código de punto fijo en complemento a dos sistema de mando sin dirección, unidifusión, doble dirección Tipos de direccionamiento registro , registro indirecto, incremento automático, incremento automático indirecto, decremento automático indirecto, índice, índice indirecto Número de registros de propósito general ocho Número de líneas de solicitud de interrupción cuatro Autopista del sistema MPI con buses combinados para transmisión de direcciones y datos Espacio de dirección 64K bytes Frecuencia de reloj hasta 5 MHz [1] Máxima velocidad de ejecución de comandos de suma en una computadora con un método de direccionamiento de registros hasta 500 mil operaciones/s Consumo de energía hasta 1,2 W

Asignación de pines [2]

Conclusión Designacion Tipo de salida Finalidad funcional de las conclusiones
una CVX Entrada Sincronización
2 BOLSA Entrada salida Confirmación de captura RAP
3 DMGI Entrada Entrada de provisión de RAP
cuatro DMGO Salida Salida de provisión de RAP
5 DMR Entrada Requisito de RAP
6 SP Entrada Función no documentada: fuente de frecuencia externa para el temporizador [3] . Conectar con +5V
7 SEL1 Salida Selección del primer registro de E/S
ocho SEL2 Salida Recuperación del segundo registro de E/S
9-20, 22-25 AD0-AD15 Entrada salida Bits de dirección de datos
21 TIERRA - General
26 PA1 Entrada Número de procesador
27 PA0 Entrada Número de procesador
28 BSY Salida Señal de canal ocupado
29 DCLO Entrada Fallo en la fuente de alimentación
treinta ACLO Entrada falla de alimentación de CA
31 IRQ1 Entrada Primera Solicitud de Interrupción Radial "Remota"
32 IRQ2 Entrada Segunda solicitud de interrupción radial (vector 100)
33 IRQ3 Entrada Tercera Solicitud de Interrupción Radial (Vector 270)
34 EN ESO Entrada salida Establecer el estado inicial
35 VIRQ Entrada Solicitud de interrupción de vector
36 IAKO Salida Proporcionar una interrupción
37 DOUT Salida Salida de datos (grabación de datos)
38 ESTRUENDO Salida Entrada de datos (lectura de datos)
39 RPLY Entrada salida Sincronización del dispositivo pasivo (respuesta)
40 WTBT Salida Salida de bytes (escritura/byte)
41 SINCRONIZAR Salida Sincronización de dispositivos activos (Compartir)
42 UCC - Tensión de alimentación

Descripción detallada de los hallazgos

Diagrama estructural

1 34 30 29 35 31 32 33 | | | | | | | | CVX| | ACLO | DCLO| VIRQ| IRQ1| IRQ2| IRQ3| | INICIO | | | | | | | \|/ | \|/ \|/ \|/ \|/ \|/ \|/ | \|/ | | | | | | |___|___| /|\ |_|_____|_____|_____|_____|_____|_| | esquema | | | Bloque | | tacto- | | | Interrupciones | | | _ | |_______________|_________________| |___|___| | | | | /|\ /|\ | | | | | |_____________________________________|_____________________________________ | | | | | \|/ \|/ | \|/ | | | | | |________|_______|________| |_________|_________| | |______|______| | Bloque de firmware | | Operacional | | | | IAKO | gestión | | Bloque | | | -->>>--36 |___________|_____________| |_________|_________| | | | | | | | | SP \|/ \|/ | | --<<<--27 /|\ /|\ | | | | | | | | SP |____________|____________| | | -->>>--26 | | | | \|/ | | | RPLY | | | --<<<--39 |_____________|_____________| | | | | | | | | SINCRONIZAR | Sistema ----<<<---| | -->>>--41 | carretera | | | | ----<<<--------- | DOUT |_|_______|_______|_______|_| | BLOQUE -->>>--37 | | | | | gestión | \|/ \|/ \|/ \|/ | sistémico | ESTRUENDO /|\ /|\ /|\ /|\ | carretera-->>>--38 | | | | | y | AD0| AD11| AD12| AD15| | registros | WTBT |-------| |-------| | entrada\ -->>>--40 | | | | | salida | | | DMR | --<<<--5 | | | | BOLSA | --<<<--2 | | | | DMGO | -->>>--4 | | | | SP | --<<<--3 | | | | SEL1 | -->>>--7 | | | | SEL2 | -->>>--8 | | | | BSY | -->>>--28 |____________|

Comandos

El código de comando se indica mediante un número octal. Es esta vista la que es conveniente para la percepción visual de los comandos de este procesador.

Designación del equipo Código de comando Equipo
DETENER 000000 Deténgase
ESPERE 000001 Expectativa
ITR 000002 Regreso de interrupción
BPT 000003 Interrupción de comando para depuración
internet de las cosas 000004 Interrupción de comando para E/S
REINICIAR 000005 Restablecer dispositivos externos
RTT 000006 Regreso de interrupción
JMP 0001DD Salto incondicional a una dirección absoluta codificada en el DD. Por ejemplo secuencia 000137 JMP@#7000 007000

le dice al procesador que tome la dirección de la ubicación que sigue a la instrucción de salto y salte a la dirección especificada (en este caso, la dirección octal 7000).

estrategia en tiempo real 00020R Regreso de subrutina
JSR 004RDD llamada de subrutina
EMT 104000-104377 Comando de interrupción para programas del sistema. Por ejemplo, EMT 16 tiene el código 104016. Para todos los comandos de EMT, la interrupción tiene el mismo vector, en cuya dirección debe haber una subrutina que asigne un número (en nuestro ejemplo, es 16) del comando y encuentre el dirección de la subrutina que da servicio al comando EMT específico.
TRAMPA 104400-104777 interrupción de comando. Por ejemplo, TRAP 4 tiene el código 104404. Para todos los comandos TRAP, la interrupción tiene el mismo vector, en cuya dirección debe haber una subrutina que extraiga un número (en nuestro ejemplo, es 4) del comando y encuentre la dirección de la subrutina que da servicio al comando TRAP específico.

No hay una diferencia fundamental entre EMT y TRAP. Es habitual utilizar el comando EMT en los programas del sistema (para una computadora, el BC es un monitor y un sistema de diagnóstico) y el comando TRAP en los programas del usuario.

NOP 000240 (10100000) Sin operación
CVX 000241 (10100001) Borrar bandera C (llevar = llevar)
CLV 000242 (10100010) Borrar bandera V (oVerflow = desbordamiento)
CLZ 000244 (10100100) Borrar indicador Z (cero = cero)
CLN 000250 (10101000) Borrar indicador N (negativo = valor negativo)
CCC 000257 (10101111) Borrar todos los dígitos
SEGUNDO 000261 (10110001) Establecer bandera C (llevar = llevar)
SEV 000262 (10110010) Establecer indicador V (oVerflow = desbordamiento)
ZEE 000264 (10110100) Establecer bandera Z (cero = cero)
NEE 000270 (10111000) Establecer indicador N (negativo = valor negativo)
SCC 000277 (10111111) Establecer todos los dígitos
101PNZVCDe hecho, los comandos anteriores con 101xxxxx códigos del 240 al 277 son el único comando para cambiar las P banderas en la palabra de estado del procesador, escrito en forma binaria N,Z,V,C para indicar cuál de las banderas debe ser afectada por la operación (1) o ignorada (0) . Entonces, el comando con el código 263 (10110011)establecerá al mismo tiempo las banderas C y V en 1. Por lo tanto, el comando con el mnemónico NOPy el código 240es un caso especial de este comando y contiene una máscara de banderas, según la cual ninguno de ellos deben cambiar. En consecuencia, el comando con el código260 (10110000)
TORUNDA 0003DD Intercambio de bytes alto y bajo en la palabra de 16 bits señalada por DD.
BR 000400 Salto incondicional por desplazamiento relativo a la celda que sigue a la instrucción. Por ejemplo, el código 000400 significa saltar a la celda que sigue al comando BR, el código 000401 significa saltar sobre una celda de 16 bits, 000402 significa dos, etc. Estrictamente hablando, este comando y todas las instrucciones de salto por desplazamiento se consideran mejor en binario o hexadecimal. Entonces se verá como 1NNNNNNNN(bin) o 1NN(hex), donde N es el valor de compensación. Es decir, el comando se escribe en el byte alto de la palabra y el desplazamiento está en el byte bajo. Los valores de compensación negativos se escriben en complemento a dos . Esto significa que el desplazamiento -1 se codificará como FF (hexadecimal) y la instrucción será 1FF (hexadecimal) o, de manera equivalente, 777 (oct). Con el código 777, se realizará una transición a una celda de 16 bits, es decir, a la instrucción BR en sí, y se producirá un bucle. Con código 776 - 2 celdas atrás, 775 - tres. etc.
BNE 001000 Saltar por compensación si no es igual. El código de comando es 2NN (hexadecimal); consulte la descripción del comando BR. La transición se activa si el indicador Z del procesador es 0. Comando de dirección Texto del programa en ensamblador 1000: 020104 CMP R1,R4 1002:001001 BNE MET 1004: 010102 MOV R1,R2 1006: 010103 ENCONTRADO: MOV R1,R3

Aquí, la instrucción de comparación CMP compara el contenido de los registros de propósito general R1 y R4 y establece las banderas del procesador C, V, Z, N de acuerdo con los resultados de la comparación, y la instrucción BNE salta +1 palabra de dieciséis bits hacia adelante si la bandera Z es 0.

CLR(B) *050DD Limpia los bits de la palabra apuntada por DD. El comando 0050DD tiene el mnemotécnico CLR y 1050DD tiene el mnemotécnico CLRB.
PEINE) *051DD Invierte los bits de la palabra a la que apunta DD.
INC(G) *052DD Sumar 1 a la palabra señalada por DD.
DICIEMBRE(B) *053DD Resta 1 de la palabra señalada por DD.
NEG(B) *054DD cambio de signo
ADC(B) *055DD Llevar además
SBC (B) *056DD Llevar resta
TST(B) *057DD Comprobación de la palabra y configuración de los indicadores del procesador C, V, Z, N en función de los resultados de dicha comprobación.
TR(B) *060DD Girar a la derecha
ROL(B) *061DD Girar a la izquierda
ASR(B) *062DD Desplazamiento aritmético a la derecha
ASL (B) *063DD Desplazamiento aritmético a la izquierda
MARCOS 0064NN Recuperación de puntero de pila (CS)
SXT 0067DD Extensión de signo
MTPS 1064DD Escritura de palabra de estado del procesador (SPW)
MFP 1067DD Lectura SSP
MOV(B) *1 SSDD Reenvío
CMP(B) *2 SSDD Comparación
PUNTO(B) *3SSDD Comprobación de vertidos
BIC (B) *4SSDD Limpieza de vertidos
BIS *5SSDD suma booleana
XOR 074RDD XOR
AGREGAR 06SSDD Suma
SUB 16 SSDD Sustracción
BR 0004XXX Ramificación incondicional
BNE 0010XXX Rama si no es igual a 0
EQB 0014XXX Rama si es igual a 0
  •  - El bit más significativo del código de estos comandos es un signo de comando de byte. Si es igual a 0, entonces el comando realiza operaciones con palabras de 16 bits ubicadas en direcciones pares. Si este bit se establece en 1, entonces el comando funciona con bytes ubicados en una dirección arbitraria, mientras que el byte bajo de la palabra de 16 bits tiene una dirección par y el byte alto tiene una dirección impar.

Métodos de direccionamiento

El operando está especificado por los valores SS (fuente - fuente) y DD (destino - receptor), mientras que el primer dígito establece el modo de direccionamiento y el segundo, el número del registro de propósito general del procesador. Por ejemplo, si SS = 27, entonces 2 es el método de direccionamiento y 7 es el número de registro.

El procesador tiene 8 registros de dieciséis bits: R0, R1, R2…R7. En este caso, R0-R5 se utilizan para almacenar operandos de instrucciones. Los registros R6 y R7 tienen un propósito especial adicional, pero todas las operaciones con ellos ocurren de la misma manera que con cualquier otro registro.

El registro R6 actúa como un puntero de pila (SP, Stack Pointer) y contiene la dirección de la parte superior de la pila. La escritura en la pila generalmente se realiza mediante el método de direccionamiento de decremento automático, y la lectura se realiza mediante el método de incremento automático. Al realizar una serie de operaciones (manejo de interrupciones de hardware y software, así como llamadas y retornos de subrutinas), el procesador cambia el valor de este registro de cierta manera.

El registro R7 es un contador de programa (PC, Program Counter) y contiene la dirección de la próxima instrucción que ejecutará el procesador. Escribir un número en R7 equivale a saltar a la dirección especificada.

Métodos de direccionamiento:

Número Método Explicación Ejemplos
0 Registro El operando es el contenido de un registro. Por ejemplo, la instrucción 10304 (1SSDD) copia el contenido del registro R3 al registro R4 y se escribe como MOV R3, R4. 10102 MOV R1, R2
una registro indirecto El registro contiene la dirección del operando. 005011 CLR (R1)

005011 CLR@R1

2 autoincremento El registro contiene la dirección del operando. El contenido del registro después de que se usa como dirección se incrementa en 2 (para comandos de palabra) o 1 (para comandos de byte) 005022 CLR (R2)+
3 Incremento automático indirecto el registro contiene la dirección de la dirección del operando. El contenido del registro después de que se usa como dirección se incrementa en 2 005032 CLR @(R2)+
cuatro Decremento automático el contenido del registro se decrementa en 2 (para comandos de palabra) o 1 (para comandos de byte) y se usa como la dirección del operando 005042 CLR-(R2)
5 Decremento automático indirecto el contenido del registro se decrementa en 2 y se usa como la dirección de la dirección del operando. 005052 CLR@-(R2)
6 índice el contenido del registro se suma al número escrito después del comando, y la suma resultante se usa como la dirección del operando 005062 CLR 2 (R2)
000002
7 índice indirecto el contenido del registro se suma al número escrito después del comando y la suma resultante se usa como la dirección de la dirección del operando 005072 CLR @22(R2)
000022

Al direccionar a través del registro RS, estos métodos de direccionamiento se llaman de manera especial:

Método de direccionamiento El código Explicación Ejemplos
directo 27 El operando se almacena en la palabra que sigue a la instrucción. De hecho, este es un método de direccionamiento autoincremental que usa el registro de PC, es decir, PC contiene la dirección del operando, y esta es siempre la dirección de la celda que sigue a la instrucción. Después de eso, el registro se incrementa en 2, lo que en el caso de usar PC equivale a “saltar” a la siguiente dirección, a través de la celda de datos, y el número almacenado en ella no se ejecuta como un comando. 012703 MOV #21, R3
000021
012700 MOV #IN,R0
xxxxxx ENTRADA:
absoluto 37 la dirección del operando se almacena en la palabra que sigue a la instrucción CLR @#7000
JMP @#BEN
pariente 67 los contenidos de la PC se suman a la palabra almacenada en la memoria detrás de la instrucción, y la suma resultante se usa como la dirección del operando. TV JMP
CLR 5554
relativo indirecto 77 el contenido de la PC se agrega a la palabra que sigue al comando, la suma resultante se usa como la dirección de la dirección del operando. CLR @MET
INC @15342

Véase también

Notas

  1. Dshkhunyan V.L., Borshchenko Yu.I., Naumenko V.R., Ryzhov A.A., Romanets V.Yu., Burmistrov I.A., Solovyov K.M. Microprocesadores de un solo chip de kits LSI de la serie K1801 // "Instalaciones y sistemas de microprocesadores": revista. - 1984. - Nº 4 . - S. 12 .
  2. [https://web.archive.org/web/20140416182158/http://vak.ru/doku.php/proj/bk/1801vm-series Archivado el 16 de abril de 2014 en el proyecto Wayback Machine : bk:1801vm- serie [vak.ru]]
  3. ¡Speccy es nuestra elección! - Mostrar mensaje por separado - Arqueología digital: 1801 y todo-todo-todo . Consultado el 22 de agosto de 2015. Archivado desde el original el 4 de octubre de 2015.

Enlaces