CPU 1-Bit AMAÇ Bu sunumda 4 yazıcı (register) üzerinde RAM hafızada kayıtlı komut kodlarının belirlediği temel işlemleri yürüten 1 Bit’lik bir CPU tasarımını göreceksiniz. Simgesel bu CPU tasarımında komutlarımız 2 farklı yazıcı üzerinde bildiğimiz basit Boolean işlemler olacaktır.
1-Bit CPU üzerinde gerçekleştireceğimiz işlemler
D C B A
D C B A 1 3 2 1 0 MUX X M5 M4
D C B A 1 3 2 1 0 1 3 2 1 0 MUX MUX Y X M7 M6 M5 M4
MUX MUX D Q D CK D Q C CK D Q B CK D Q A CK 1 3 2 1 0 1 3 2 1 0 Y X 3 2 1 0 1 3 2 1 0 MUX MUX Y X M7 M6 M5 M4
MUX MUX X Y D Q D CK D Q C CK D Q B CK D Q A CK 1 3 2 1 0 1 3 2 1 0 X 3 2 1 0 1 3 2 1 0 MUX MUX X Y M7 M6 M5 M4
MUX MUX X Y D Q D CK D Q C CK D Q B CK D Q A CK 1 3 2 1 0 1 3 2 1 0 X 3 2 1 0 1 3 2 1 0 MUX MUX X Y M7 M6 M5 M4
M U X MUX MUX X Y D Q 7 D CK 6 D Q C 5 CK D Q 4 B Z 3 CK 2 D Q A 1 CK 3 2 1 0 1 3 2 1 0 MUX MUX 0 1 2 X Y M7 M6 M5 M4 M1 M2 M3
D E C M U X MUX MUX X Y D Q 7 D 3 CK 6 D Q C 5 2 CK D Q 4 B Z 3 1 CK 2 A 1 CK 1 3 2 1 0 1 3 2 1 0 0 1 MUX MUX 0 1 2 X Y M8 M9 M7 M6 M5 M4 M0 M1 M2 M3
M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 D E C M U X MUX MUX X Y D Q 7 D 3 CK 6 B Z 3 1 CK 2 D Q A 1 CK 1 3 2 1 0 1 3 2 1 0 0 1 MUX MUX 0 1 2 X Y M8 M9 M7 M6 M5 M4 M0 M1 M2 M3 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0
M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 D E C M U X MUX MUX X Y D Q 7 D 3 CK 6 B Z 3 1 CK 2 D Q A 1 CK 1 3 2 1 0 1 3 2 1 0 0 1 MUX MUX 0 1 2 X Y M8 M9 M7 M6 M5 M4 M0 M1 M2 M3 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0
Z = İşlem (X,Y) Z Y X op dato M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 İşlem Operand X Operand Y Sonuç Z M3 M2 M1 İşlem 1 M5 M4 X 1 M7 M6 X 1 M9 M8 Z 1 Z = İşlem (X,Y) Z Y X op dato M9 M8 M7 M6 M5 M4 M3 M2 M1 M0
Z = İşlem (X,Y) Z Y X op Veri M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 İşlem Operand X Operand Y Sonuç Z M3 M2 M1 İşlem M0 1 X Y not(X) not(Y) or(X,Y) and(X,Y) xor(X,Y) M5 M4 X A 1 B C D M7 M6 X A 1 B C D M9 M8 Z A 1 B C D Z = İşlem (X,Y) Z Y X op Veri M9 M8 M7 M6 M5 M4 M3 M2 M1 M0
Örnek: A = 0; B = 1; C = 0; D = or(A,B) C = not(A) A = xor(D,C) Komut İşlem Operand X Operand Y Sonuç Z M3 M2 M1 İşlem M0 1 X Y not(X) not(Y) or(X,Y) and(X,Y) xor(X,Y) M5 M4 X A 1 B C D M7 M6 X A 1 B C D M9 M8 Z A 1 B C D Örnek: A = 0; B = 1; C = 0; D = or(A,B) C = not(A) A = xor(D,C) Z = İşlem (X,Y) Z Y X op Komut M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 A = 0 B = 1 C = 0 D = or(A,B) C = not(A) A = xor(D,C)
Örnek: A = 0; B = 1; C = 0; D = or(A,B) C = not(A) A = xor(D,C) Komut İşlem Operand X Operand Y Sonuç Z M3 M2 M1 operación M0 1 X Y not(X) not(Y) or(X,Y) and(X,Y) xor(X,Y) M5 M4 X A 1 B C D M7 M6 X A 1 B C D M9 M8 Z A 1 B C D Örnek: A = 0; B = 1; C = 0; D = or(A,B) C = not(A) A = xor(D,C) Z = İşlem (X,Y) Z Y X op Komut M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 A = 0 A - B = 1 B 1 C = 0 C D = or(A,B) D or C = not(A) not A = xor(D,C) xor
A = 0; D E C M U X M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 MUX MUX X Y D Q 7 D 3 CK 6 D Q C 5 2 CK D E C M U X D Q 4 B Z 3 1 CK 2 D Q A 1 CK 1 3 2 1 0 1 3 2 1 0 0 1 MUX MUX 0 1 2 X Y M8 M9 M7 M6 M5 M4 M0 M1 M2 M3 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 A = 0;
1 B = 1; D E C M U X 1 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 MUX MUX X Y D Q 7 CK 6 D Q C 5 2 CK D E C M U X D Q 4 B Z 3 1 CK 2 D Q A 1 CK 1 3 2 1 0 1 3 2 1 0 0 1 MUX MUX 0 1 2 X Y M8 M9 M7 M6 M5 M4 M0 M1 M2 M3 1 1 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 B = 1;
1 C = 0; D E C M U X 1 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 MUX MUX X Y D Q 7 CK 6 D Q C 5 2 CK D E C 1 M U X D Q 4 B Z 3 1 CK 2 D Q A 1 CK 1 3 2 1 0 1 3 2 1 0 0 1 MUX MUX 0 1 2 X Y M8 M9 M7 M6 M5 M4 M0 M1 M2 M3 1 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 C = 0;
1 1 D = or(A,B) D E C M U X 1 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 MUX MUX X Y D Q 7 D 3 CK 6 D Q C 5 2 CK D E C 1 1 M U X D Q 4 B Z 3 1 CK 2 D Q A 1 CK 1 3 2 1 0 1 3 2 1 0 0 1 MUX MUX 0 1 2 X Y M8 M9 M7 M6 M5 M4 M0 M1 M2 M3 1 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 D = or(A,B)
1 1 1 D = or(A,B) D E C M U X 1 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 MUX MUX X Y D Q 7 D 3 CK 6 D Q C 1 5 1 2 CK D E C 1 M U X D Q 4 B Z 3 1 CK 2 D Q A 1 CK 1 3 2 1 0 1 3 2 1 0 0 1 MUX MUX 0 1 2 X Y M8 M9 M7 M6 M5 M4 M0 M1 M2 M3 1 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 D = or(A,B)
1 1 C = not(A) D E C M U X 1 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 MUX MUX X Y D Q 7 D 3 CK 6 D Q C 5 2 CK D E C 1 M U X D Q 4 B Z 3 1 CK 2 D Q A 1 CK 1 3 2 1 0 1 3 2 1 0 0 1 MUX MUX 0 1 2 X Y M8 M9 M7 M6 M5 M4 M0 M1 M2 M3 1 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 C = not(A)
1 1 1 C = not(A) D E C M U X 1 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 MUX MUX X Y D Q 7 D 3 CK 6 D Q C 5 2 CK D E C 1 M U X D Q 4 B Z 1 3 1 CK 2 D Q A 1 CK 1 3 2 1 0 1 3 2 1 0 0 1 MUX MUX 0 1 2 X Y M8 M9 M7 M6 M5 M4 M0 M1 M2 M3 1 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 C = not(A)
1 1 1 1 1 A = xor(D,C) D E C M U X 1 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 MUX X Y D Q 7 D 3 CK 6 1 1 D Q C 5 2 CK D E C 1 M U X D Q 4 B Z 3 1 CK 2 D Q A 1 CK 1 3 2 1 0 1 3 2 1 0 0 1 MUX MUX 0 1 2 X Y M8 M9 M7 M6 M5 M4 M0 M1 M2 M3 1 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 A = xor(D,C)
1 1 1 A = xor(D,C) D E C M U X 1 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 MUX MUX X Y D Q 7 D 3 CK 6 1 D Q C 5 2 CK D E C 1 M U X D Q 4 B Z 3 1 CK 2 D Q A 1 CK 1 3 2 1 0 1 3 2 1 0 0 1 MUX MUX 0 1 2 X Y M8 M9 M7 M6 M5 M4 M0 M1 M2 M3 1 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 A = xor(D,C)
CPU M9 M8 M7 M6 M5 M4 M3 M2 M1 M0 D E C M U X MUX MUX X Y D Q 7 D 3 CK B Z 3 1 CK 2 D Q A 1 CK 1 3 2 1 0 1 3 2 1 0 0 1 MUX MUX 0 1 2 X Y M8 M9 M7 M6 M5 M4 M0 M1 M2 M3 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0
CPU clock Hesaplayıcı 3 bit 8 x 10 bit Hafıza [program counter] PC2 1 : [program counter] clock Hesaplayıcı 3 bit 8 x 10 bit Hafıza
PROBLEMLER Bu teorik tasarımda sonucu yazıcılarda saklı veriler üzerinde örneğin C=A+B’nin gibi işlemler yapılamamaktadır. Ayrıca sanal tasarımımızda hafızaya yazma da yapılmamaktadır. Tüm sonuçlar yazıcılar üzerindedir.