Mikroişlemcili Sistem Tasarımı 2. Hafta Bellek Birimleri ve Programlamaya Giriş Yrd.Doç.Dr. Kubilay TAŞDELEN
Mikroişlemcili Sistem Tasarımı Bellekler Bellekler 0 veya 1 değerini alan bitlerin saklanabildiği entegre devrelerdir Dout Din D Q WR EN RD 1 Bit (0 veya 1) saklayabilen temel bellek ünitesi: D Flip Flop D Flip Flop için doğruluk tablosunu hatırlayınız. Mikroişlemcili Sistem Tasarımı
Bellek ünitelerine erişim Satır (Adres) Sütun (Veri) 1x1 Din Dout WR RD EN D Q 1 bitlik hafıza hücresi EN 1x2 EN D7 D6 D5 D4 D3 D2 D1 D0 1x8 1 Bayt EN A0 ? 2 Bayt 2x8 Mikroişlemcili Sistem Tasarımı
Mikroişlemci Sayı sistemi ADDRES Bellek Hücreleri 0 0 0 0 10110111 0 0 0 1 01110001 0 0 1 0 10001001 0 0 1 1 00001011 0 1 0 0 01000100 0 1 0 1 00000000 0 1 1 0 RAM/ROM Kullanılan tüm sayılar ikilik sayı sistemindedir, neden? Donanımın daha basit ve maliyetin az olması Bilgi depolamanın basitliği Mikroişlemcili Sistem Tasarımı
Mikroişlemcili Sistem Tasarımı Örnek Soru: 8 adet bellek ünitesine erişebilmek için kaç adet Adres hattına ihtiyaç duyulur? 2n=8 n=? A0 A1 A2 Bayt 4 Bayt 5 Bayt 6 Bayt 7 3→8 kod çözücü 1 0 0 1 0 1 1 1 0 1 1 1 A2A1A0 Bayt 0 Bayt 1 Bayt 2 Bayt 3 0 0 0 0 0 1 0 1 0 0 1 1 Soru: 65536 adet bellek ünitesine erişebilmek için kaç adet Adres hattına ihtiyaç duyulur? 2n=65536 n=16 (A15.......A0) Mikroişlemcili Sistem Tasarımı
Mikroişlemcili Sistem Tasarımı Bellek Türleri Mikroişlemci iç bellek türleri (8051) Kayıtçılar (registers) Akümülatör (A) B Kayıtçısı R0,R1,R2,R3,R4,R5,R6,R7 ( Bank0..Bank3 ) SP (Yığın İşaretçisi) PSW (Program Durum Kaydedicisi) DPTR (16-bit) PC (16-bit) Diğer özel fonkisyon Kayıtçıları (Mikrodenetleyici) RAM ve ROM (Mikrodenetleyici) Dış Bellek türleri RAM ve ROM ile türevleri Manyetik disk, teyp CD vs. Mikroişlemcili Sistem Tasarımı
CPU Sadeleştirilmiş iç yapısı (8051) Komut Kayıtçısı Program Sayıcı (Instruction Register) (Program Counter) Kayıtçılar (Registers) IR PC Komut Çözme Ve Kontrol Ünitesi Aritmetik ve Lojik işlem Ünitesi Mikroişlemcili Sistem Tasarımı
Mikroişlemcilerde Temel İşlevler Komut Okuma Komut Çözme Çalıştırma Giriş işlemleri Çıkış işlemleri Mikroişlemcili Sistem Tasarımı
Mikroişlemcili Sistem Tasarımı Komut Yapsı Mnemonics Kayıtçı Adı İvedi Adresleme MOV A, #55h Anlamı: A←55h 0111 0100 + 0101 0101 (74) + (55) 2 Byte Opcode Operand Mikroişlemcili Sistem Tasarımı
Mikroişlemcili Sistem Tasarımı Örnek 8051 Komutları 8051 komut setleri bayt adedine göre üçe ayrılır: Tek baytlık komutlar İki baytlık komutlar Üç baytlık komutlar SORU: Komutun bayt sayısı çalıştırma hızını etkiler mi? Mnemonics Opcode + operand Anlam Cycle Bayt Adedi NOP 0000 0000 İşlem Yok 1 INC A 0000 1000 A=A+1 MOV A,#55h 0111 0100 + 0101 0101 (74 55) A←55h 2 MOV A,#0xAA 0111 0100 + 1010 1010 (74 AA) A←AAh MOV DPTR,#55AAh 1001 0000 + 0101 0101 (90 55 AA) DPTR←55AAh 3 Tüm komutların listesi için: philips_80C51 Family Programmer's Guide .pdf Mikroişlemcili Sistem Tasarımı
CPU Komut İşleme Senaryosu (MOV A,#55h) Bayt 65535 FFFF Bayt 3 0003 Bayt 2 0002 0 1 0 1 0 1 0 1 0001 0 1 1 1 0 1 0 0 0000 Mikroişlemcili Sistem Tasarımı
CPU Komut İşleme Senaryosu (MOV A,#55h) Program Sayıcı “Opcode”un adresini tutar Adres “Adres yolu” na verilir Operand adresi adres yoluna verilir Adres Yolu CPU PC Veri Yolu IR Bayt 65535 FFFF Kayıtçılar (Registers) Bayt 3 0003 Komut Çözme Ve Kontrol Ünitesi Bayt 2 0002 A 0 1 0 1 0 1 0 1 0001 Operanda ulaşılır ve bilgi “Veri yolu” na iletilir 0 1 1 1 0 1 0 0 74h 0000 55h Opcode çözülür ve “ MOV A,” olduğu anlaşılır Opcode’a ulaşılır ve Kod bilgisi “Veri yolu” na iletilir Veri yolundaki bilgi A kayıtçısına gönderilir Komut İşlemci içindeki “Komut Kaydedicisine aktarılır. Mikroişlemcili Sistem Tasarımı
Mikroişlemcili Sistem Tasarımı KAYITÇILAR Mikroişlemcili Sistem Tasarımı
Accumulator, A Kayıtçısı Verilerin bellek ve kayıtçılar arası transferinde Veri üzerinde mantıksal ve aritmetik işlemlerin gerçekleştirilmesinde kullanılır 8 Bit Uzunluğundadır Mikroişlemcili Sistem Tasarımı
Mikroişlemcili Sistem Tasarımı B Kayıtçısı Geçici verilerin depolandığı bir kaydedicidir MOV B, A ;B ← A (2 byte) MOV B,#55 ;B ←55 MUL AB ; A ve B kaydedicilerini çarp Sonuc 16-bit: Sonuc_L=A, Sonuc_H=B DIV AB ; A’yı B’ye böl Bölüm=A, Kalan=B Mikroişlemcili Sistem Tasarımı
Program Status Word (PSW) BIT SEMBOL ADRES BİT TANIMI PSW.7 CY D7H Elde bayrağı PSW.6 AC D6H Yardımcı elde bayrağı PSW.5 F0 D5H Bayrak 0 PSW.4 RS1 D4H Bank seçme 1 PSW.3 RS0 D3H Bank seçme 0 00 = bank 0; adres 00H-07H 01 = bank 1; adres 08H-0FH 10 = bank 2; adres 10H-17H 11 = bank 3; adres 18H-1FH PSW.2 OV D2H Taşma bayrağı PSW.1 - D1H PSW.0 P D0H Çift eşlik biti (Even Parity bit) Mikroişlemcili Sistem Tasarımı
Program Status Word (PSW) Aritmetik işlemler sonucundaki değişen bayraklar CY: Carry Flag (Elde Bayrağı) Aritmetik işlemlerde bir elde ortaya çıktığında kurulur AC:Auxillary Carry (Harici Elde Bayrağı) D3 bitinden D4 bitine elde geçtiğinde kurulur, BCD işlemlerde kullanılır P: Parity (Eşlik biti) Çift eşlik (even) biti P=1, Akümülatör tek sayıda birlere sahipse Mikroişlemcili Sistem Tasarımı
Mikroişlemcili Sistem Tasarımı Örnek Toplama örneği MOV A,#12h ADD A,#3Fh 12 0001 0010 3F 0011 1111 CY = 0 AC = 1 P = 1 + + 5 1 0101 0001 Mikroişlemcili Sistem Tasarımı
Mikroişlemcili Sistem Tasarımı Kayıtçı Deposu (R0..R7) R0’dan R7’ye kadar toplam 8 kaydedici MOV A,R0 ;R0 kaydedicisini A kayıtçısına kopyala (1 byte) R0-R7 kaydedici grubları (Bank0..Bank3) RS0 PSW.3 RS1PSW.4 RS1 RS0 R-BANK Bank 0 1 Bank 1 Bank 2 Bank 3 MOV PSW, #18h ; Bank 3 seçildi MOV PSW, #08h ; Bank 1 seçildi 4 kayıtçı deposu ardışık adreslerdedir 4 kayıtçı deposu toplam 32byte Bank 0 varsayılan (Reset sonrası seçilen) banktır. Mikroişlemcili Sistem Tasarımı
Mikroişlemcili Sistem Tasarımı Örnek Bit Adres Bayt Adres FF F0 F7 F6 F5 F4 F3 F2 F0 F1 B E0 E7 E6 E5 E4 E3 E2 E0 E1 ACC MOV A,R7 D0 D7 D6 D5 1 D4 1 D3 D2 - D0 PSW SETB RS0 SETB RS1 MOV A,R7 = MOV A,0x1F MOV A,R7 (1 byte) MOV A,0x07 (2 byte) 1F 18 BANK 3 17 10 BANK 2 0F 08 BANK 1 İlk Kayıtçı Bankası R0-R7 07 00 Mikroişlemcili Sistem Tasarımı
Veri İşaretçisi (DPTR) 8051 2 adet 16-bit kaydedici içerir DPTR 16-bittir Harici belleğin veya kod alanının Adresini tutar Harici bellekten veya kod alanından veri transfer için kullanılır 16-bit veri depolama için de kullanılabilir Başvuru tablolarında (Look-up Tables) çok kullanışlıdır Dolaylı Adresleme MOV DPTR, #0xFFAA ; DPTR ←FFAAh MOVX A, @DPTR ; ACU ← RAM (FFAA) MOVC A,@A+DPTR Mikroişlemcili Sistem Tasarımı
Mikroişlemcili Sistem Tasarımı Program Sayacı (PC) PC her zaman bir sonraki erişilecek komut adresini tutar 16-bit Uzunluğundadır Bellekten getirilen bir komuttan (1 veya daha fazla bayt) hemen sonra, bir sonraki komutun adresine yükseltilir Sadece MOVC A,@A+PC komutunda kullanılır Sadece okunabilir özelliktedir Mikroişlemcili Sistem Tasarımı
SP (Yığın İşaretçisi, Stack Pointer) Yığın hafızası FILO tipindedir 8051’de yığın adresi artarak büyür (düşük değerli adresten, yüksek değerli adrese doğru) SP, yığındaki son kullanılan adresi gösterir Pop veriyi alır daha sonra SP bir azalır PUSH SP’yi artırır, yeni adrese veriyi kopyalar SP, Reset işleminden sonra 07’ye kurulur Bank 1,2 ve 3 yığının normal depo alanıdır SP, başka bir adrese yönlendirilebilir PUSH ACC ;Akümülatörü yığına kopyala Mikroişlemcili Sistem Tasarımı
Mikroişlemcili Sistem Tasarımı 8051 Komut Seti-1 Veri Transfer Komutları mov, movc, movx, push, pop, xch, xchd Mantıksal İşlem Komutları anl, orl, xrl, clr, cpl, rl, rlc, rr, rrc, swap Aritmetik İşlem Komutları add, addc, subb, inc, dec, mul, div Program Kontrol Komutları jmp, ajmp, ljmp, sjmp, jc, jnc, jb, jnb, jbc, jz, jnz, acall, lcall, cjne, djnz, ret, reti NOP Mikroişlemcili Sistem Tasarımı
Mikroişlemcili Sistem Tasarımı Önemli Assembly programı yazarken: Bütün komutları hatırlamak zorunda değilsiniz Sadece komutları mantıksal gruplara böl Komut setini önünüze koyarak, yapılmak istenen işi hangisinin hangi komutun veya komut grubunun yaptığını tespit et Her komutun farklı kaydedici ile çalıştırılması mümkün değildir MOV A,@DPTR (DOĞRU) MOV R0, @DPTR (YANLIŞ) Mikroişlemcili Sistem Tasarımı
Mikroişlemcili Sistem Tasarımı Çalışma Soruları Mikroişlemcileri farklı açılardan gruplandırınız. 8051 de kullanılan genel kaydediciler hangileridir? Komut seti nedir? Assembly dilinin genel özellikleri nelerdir? Mikroişlemcili Sistem Tasarımı