BBM 231 Yazmaçların Aktarımı Seviyesinde Tasarım! Hacettepe Üniversitesi Bilgisayar Müh. Bölümü
Bu derste! Büyük, karmaşık sayısal sistemlerin tasarımı ele alınacaktır. ASM ve ASMD çizgeleri Tasarım Örnekleri Denetleme Mantığı * yazmaç ve kod çözücüler ile * her bir durum için bir iki durumlu ile Çoklayılar ile Tasarım 2
Büyük Sayısal Sistemler! Büyük sayısal sistemleri, Durum sayıları çok fazla olduğundan, durum tablosu ile ifade edemeyiz. Modüler bir yaklaşım ile ele alınırlar. Sistem her biri bir işlevi yerine getiren daha küçük sistemlere bölünür. Bu modüller, yazmaçlar, kodlayıcılar, aritmetik elemanlar, kontrol mantığı gibi cihazlardan oluşur. Modüller, veri yolları ve kontrol sinyalları ile birbirlerine bağlanırlar. 3
Yazmaç Aktarımı Düzeyi! Yazmaçlar, bir sayısal sistemin temel bileşenleri arasında sayılırlar. Yazmaç aktarım düzeyi sistemdeki yazmaçlar kümesi yazmaçlarda saklanılan veri üzerindeki işlemler sistemdeki işlemlerin sırasını denetleyen denetim birimi 4
Gösterimler! Bir sayısal sistemde en çok karşılaşılan işlemler: 1. Aktarım işlemleri R2 ß R1 if(t3 == 1) then (R2 ß R1, R3ß R2) (T3: kontrol sinyali) 2. Aritmetik işlemler R1 ß R1 + R2 3. Mantıksal işlemler (e.g. OR) 4. Kaydırma işlemleri R4 ß shr R4 5
ASM : Algoritmasal Durum Makinaları (Algorithmic State Machines)! Sayısal sistemlerde saklanan ikili veri Veri Denetim Veri-işleme işlemleri : aritmetik işlemler, kaydırma, vb. Sayısal sistem tasarımı: 1. Veri işleme işlemlerini gerçekleştiren devrelerin tasarımı (datapath unit) 2. Çeşitli olayların hangi sırada olduğunu belirleyen denetim devrelerinin tasarımı (control unit) 6
Donanım Algoritması => bir sayısal sistemin denetim sırası ve datapath görevlerinin belirtilmesi. Donanım algoritmasının tanımlanması için kullanılan akış çizgeleri ASM (algorithmic state machine) 7
3 temel bileşen içerir: ASM çizgesi! 1. Durum kutusu (State box) 2. Karar kutusu (Decision box) 3. Koşullu kutu (Conditional Box) 8
ASM Çizgesi Bileşenleri 1/2! State Box: Decision Box: R 0, S_pause durumundan bir sonraki duruma geçişte gerçekleşir! Start_OP_A: Moore tipi sinyal 9
ASM Çizgesi Bileşenleri 2/2! Hiçbir veri- işleme işlemi barındırmayan ASM çizgesi 10
ASM Bloğu! Her bir blok, bir saat-vuruşu süresinde sistemin durumunu belirtir. Genel olarak, Moore türü çıkışlar state box lar ile, Mealy türü çıkışlar ise koşullu box lad ile üretilirler. 11
Eşdeğer Durum Çizeneği! 12
ASM de Zaman! Bir sonraki saat vuruşunda : A yazmacındaki değer arttırılır. Eğer E = 1 ise R temizlenir. Bir sonraki duruma geçilir. 13
ASMD Çizgesi (Algorithmic State Machine and Datapath ASM çizgesinden farkı. 1) Yazmaç işlemleri state box larda ifade edilmez. 2) Yazmaç işlemleri, çizgenin kenarlarında gösterilir. 3) conditional box lar yazmaç işlemlerini denetleyen sinyalleri belirtir. 14
Tasarım Örneği-1! Veriyolu (datapath) birimi E ve F diye iki tane JK ikidurumlusundan Bir tane 4-bit ikili sayaç : A[3:0] tan oluşur. A daki ikidurumlular A 3 A 2 A 1 A o dır. A 3 en yüksek öncelikli bittir. Start sinyali sistemi başlatır. A nın içeriği ve F sıfırlanır. Herbir saat vuruşunda sayaç 1 arttırılır. A 2 A 3 bitleri işlemlerin sırasını belirler. A 2 =0 ise E 0 lanır ve sayma devam eder. A 2 =1 ise E 1 lenir ve A 3 =0 ise sayma devam eder. A 2 =1 ise E 1 lenir ve A 3 =1 ise F 1 lenir ve bir sonraki saat vuruşunda sistem saymayı durdurur. - Start = 0 ise sistem ilk durumda kalır, 1 ise işlemler devam eder. 15
Tasarım Örneği-1: Blok diagram! Status signals A3 A2 clr_e set_e Datapath A Start Controller set_f clr_a_f E incr_a F reset_b clock (a) 16
Tasarım Örneği-1: ASMD Çizgesi! Zamanuyumsuz reset için Zamanuyumlu reset için 17
Tasarım Örneği-1 : Gelişmiş ASMD Çizgesi! Zamanuyumsuz reset için Eğer bir işlem koşulsuz ise Moore-türü sinyal A nın arttırılması (S_1) Koşullu ise Mealy-türü sinyal E nin 1lenmesi (S_1 ve A 2 =1) 18
Tasarım Örneği-1: İşlem Sırası! 19
Tasarım Örneği 1! 20
Tasarım Örneği-1: Durum Tablosu! 21
Tasarım Örneği-1! 22
Tasarım Örneği-2: İkili Çarpma! (register B) (register Q) partial product formed in register A, stored in registers A and Q carry after addition in flip-flop C number of bits in the multiplier initially in counter P 4. Bölümde, toplayıcılar ve AND geçitleri ile gerçekleştirmiştik. daha çok donanım ile fakat 1 saat vuruşunda gerçekleşir. Şimdi à 1 toplayıcı ve 1 kaydırma yazmacı ile gerçekleştireceğiz. daha az donanım ile fakat birden çok saat vuruşunda gerçekleşir. 23
Tasarım Örneği-2: Genel Görünüm! 24
Tasarım Örneği-2 : Yazmaçlar! 25
Tasarım Örneği-2: ASMD Çizgesi! 26
Tasarım Örneği-2: Çalışması! 27
Tasarım Örneği-2: Durum Çizeneği! Start 0 Zero 1 S_idle Start 1 S_add S_shift (a) Zero 0 State Transition Register Operations From To S_idle Initial state S_idle S_add A 0, C 0, P dp_width S_add S_shift P = P 1 if (Q[0]) then (A A B, C C out ) S_shift shift right {CAQ}, C < 0 28
Denetleme Mantığı (Control Logic)! Denetleyici, bir dizisel devredir. Bilinen dizisel devre tasarımı ile yapılabilir. Durum ve girişlerin çok olduğu durumlarda? İki tasarım yöntemi: Bir yazmaç ve kod çözücü ile (sequence register and decoder) Her bir durum için bir ikidurumlu ile (one-hot design: one flip-flop per state) 29
Bir Yazmaç ve Kod Çözücü ile Tasarım! 30
Bir Yazmaç ve Kod Çözücü ile Tasarım (1)! 31
Bir Yazmaç ve Kod Çözücü ile Next State Tasarım Logic (2)! Q[0] Zero D C 0 1 2 4 Decoder (S_add) T 1 (S_shift) T 2 G 1 T 3 Add_regs Decr_P Shift_regs C clock reset_b (a) Next State Logic Ready Start Q[0] D C G 0 0 (S_idle) T 0 Load_regs Add_regs (S_add) T 1 2 4 Decoder Decr_P Zero (S_shift) T 2 Shift_regs 1 D G 1 T 3 D G1 = T 1 D G0 = T 0 Start + T 2 Zero C clock reset_b 32
Her Bir Durum için İkidurumlu ile Tasarım! Maksimum sayıda ikidurumlu içerir. Bir önceki yöntemde 2 n durum için n ikidurumlu. Bu yöntemde 2 n durum için 2 n ikidurumlu. Avantajı basitliği durum ya da uyarma çizelgesine ihtiyaç yoktur. (D türü ikidurumlu için) ASMD ya da durum çizgesine bakarak tasarlanabilir. 33
Her Bir Durum için İkidurumlu ile Tasarım! 34
Çoklayıcılar ile Tasarım! Bir yazmaç ve kod çözücü ile tasarım İkidurumlular (durum değeri) Kod çözücü: denetim çıkışlarını üretir. Geçitler: bir sonraki durumu ve çıkış sinyallerini belirler. Geçitler yerine çoklayıcılar da kullanabiliriz. 35
Bir Örnek: Çoklayıcılar ile Tasarım! 00 durumunda w = 0 ise 00 durumuna w = 1 ise 01 durumuna 36
37
Bir Örnek: Çoklayıcılar ile Tasarım! 00 durumunda w = 0 ise 00 durumuna w = 1 ise 01 durumuna 38
Tasarım Örneği: Yazmaçtaki Birlerin Sayılması! R1 yazmacındaki birlerin sayısı R2 yazmacına aktarılır. Birim zamanda R1 den bir bit sola, E ikidurumlusuna aktarılır. E = 1 ise R2 yazmacındaki değer arttırılır. R1= 0 ise sona erer. Status signals E Zero data Load_regs E Datapath... R1 Start Ready Controller Shift_left Incr_R2 Shift_left... R2 reset_b clock count 39
Yazmaçtaki Birlerin Sayılması! 40
41
Yazmaçtaki Birlerin Sayılması! 42