embedded systems “gömülü sistemlerin temel bileşenleri
TRANSCRIPT
Embedded Systems
“Gömülü Sistemlerin
Temel Bileşenleri”
Dr. Cahit Karakuş, Mart - 2021
Gömülü sistem • Makine gücünün gerçekleştirdiği işleri bilgisayar denetiminde kontrol eden sisteme
otomasyon denir.
• Gömülü bir sistem, sistemlerin davranışlarını izlemek ve yönetmek amacıyla, fiziksel dünyadaki değişimleri tespit ederek, algılayarak ve ölçerek gerçek zamanlı hesaplama ve mantıksal işlevleri gerçekleştirecek tüm bileşenlerin üzerinde toplandığı özel tasarlanmış, mikroişlemci tabanlı bir donanım ve yazılım sistemidir.
• Gömülü bir sistemin karmaşıklığı, tasarlandığı göreve bağlı olarak önemli ölçüde değişir.
• Üretilen tüm mikroişlemcilerin yüzde 98 kadarı gömülü sistemlerde kullanılıyor.
History of Embedded Operating Systems • İlk modern, gerçek zamanlı gömülü bilgi işlem sistemi, 1960'larda Apollo Programı için
Massachusetts Teknoloji Enstitüsü'nden Dr. Charles Stark Draper tarafından geliştirilen Apollo Rehberlik Bilgisayarı idi. Apollo Kılavuz Bilgisayarı, verileri otomatik olarak toplamak ve Apollo Komuta Modülü ve Ay Modülü için görev açısından kritik hesaplamalar sağlamak üzere tasarlanmıştır.
• 1971'de Intel, piyasada bulunan ilk mikroişlemci birimi olan Intel 4004'ü piyasaya sürdü - destek mantık devreleri ve harici bellek gerektiren ilklerden bir mikroişlemcidir; 1978'de Ulusal Mühendislik İmalatçıları Derneği, programlanabilir mikro denetleyiciler için bir standart yayınladı ve gömülü sistem tasarımını geliştirdi; ve 1980'lerin başında, bellek, giriş ve çıkış sistemi bileşenleri işlemciyle aynı yongaya entegre edilerek bir mikro denetleyici oluşturuldu.
• Mikrodenetleyici tabanlı gömülü sistem, kredi kartı okuyucularından cep telefonlarına, trafik ışıklarından termostatlara kadar tüketicilerin günlük yaşamlarının her yönüne dahil edilmeye devam edecek.
Future Trends in Embedded Systems • Yapay Zeka (AI), Sanal Gerçeklik (VR) , İnteraktif etkileşim ve Artırılmış Gerçeklik (AR), makine öğrenimi, derin
öğrenme ve Nesnelerin İnterneti'nin (IoT) sürekli gelişimi ile gömülü sistemler endüstrisinin hızla büyümeye devam etmesi bekleniyor. Bilişsel gömülü sistem trendlerin merkezinde olacak: azaltılmış enerji tüketimi, gömülü cihazlar için geliştirilmiş güvenlik, bulut bağlantısı ve ağ oluşturma, derin öğrenme uygulamaları ve gerçek zamanlı verilerle görselleştirme araçları.
• Otonom algoritmalar: Veri yığınından kendine kendine öğrenerek insandan bağımsız davranış geliştiren algoritmalar ve matematiksel modeller.
• Gömülü sistemler endüstrisi için küresel pazar 2020'de 70 milyar dolar olarak değerlendirildi ve 2025'in sonunda 110 milyar dolara yükselmesi bekleniyor.
• Artificial Intelligence (AI),
• Sanal Gerçeklik (Virtual Reality - VR),
• Artıtılmış, Bütünleştirilmiş Gerçeklik (Augmented Reality - AR),
• Makine Öğrenmesi (Machine learning ),
• Derin Öğrenme (Deep learning),
• Nesnelerin İnterneti (Internet of Things - IoT).
Gömülü Sistem Disiplinleri
• Bilgisayar Organizasyonu • Yazılım: Python, C++, Assemble, Matlab • Elektronik ile ilgili, açık kaynaklı bir mikrodenetleyici uygulama platformu. G/Ç (I/O) kartı ve
Processing/Wiring dilinin bir uygulamasını içeren geliştirme ortamından oluşan bir fiziksel programlama platformu.
• Sayısal tasarım • Elektronik devre elemanları ve ölçümler • Elektronik pasif devre elemanları: Direnç, Kapiste, Endüktans • Elektronik aktif devre elemanları: Transistor, Diyot, Op-Amp • Sürücü sistemleri: Bir tarafı bilgisayar öte tarafı analog, sayısal giriş çıkış birimler ve
anahtarlama röle çıkışları olmalıdır. 24V DC Motor kontrol edilecek, açma kapama, besleme (yük altında çektiği akım), ileri-geri, hız, …
• Aktüatör: Bir sistemi kontrol eden veya hareket ettiren bir tür motordur. Bir enerji kaynağı tarafından çalıştırılır.
Gömülü Mikroişlemciler ve Mikrodenetleyiciler
• CPU işlevleri
• CPU Mimarisi ve Organizasyonu
• Yapısal CPU tasarımı
• Gömülü Sistem Tasarımı
• Arayüz ve bütünleştirme
Gömülü Sistem Ekipmanları
• Algılayıcılar
• Aktüatörler
• Dijital, Analog Giriş- Çıkış Birimleri
• Motor Sürücüler
• Şaft kodlayıcıları
• Fizksel arayüz standartları ve sistemleri
• Standart Protokolleri
Gömülü Sistemler için Programlama
• Assembly
• C++
• Matlab
• Gerçek Zamanlı Sistemler
• Tek bir kod setinin birden fazla işlemci tarafından farklı yürütme aşamalarında kullanılabildiği çoklu iş parçaıkları
• Veri Yapıları
• Programlama Teknikleri
• Cihaz Sürücü Yazılımları
Gömülü Sistem Bileşenleri
• Gömülü Sistemler
• CPU Organizasyonu
• Board Tasarımı
• Aktüatörler
• Algılayıcılar
• Kontrol Sistemleri
• Haberleşme Sistemleri
• İşaret İşleme
• Gömülü sistemler uygulama yazılımları
Sensing and actuation devices in embedded applications
Gömülü sistem, veri işler, kontrol eder ve yönetir.
11
Structure of Embedded Systems
Bir bilgisayarın temel bileşenleri
• CPU
• Memory
• I/O
• Haberleşme Yolları (System Bus)
CPU
Memory
I/O
Farklı yongalar (chip) aynı
board üzerinde bütünleşmiştir.
Gömülü Mikrodenetleyiciler
CPU ROM RAM
I/O
A single chip
Subsystems:
Timers, Counters, Analog
Interfaces, I/O interfaces
Memory
Operating System
15
Cross Development Tools
• Preprocessor
• Compiler
• Assembler
• Linker
• Libraries
• Loader
• Debugger
• Archiver
• Simulator
• Emulator
Predictable Computer Architecture
• What we need: – Timing Predictability – Isolation
• Göreceğimiz şey: bilgisayar mimarisi tasarımınızın bu tür gereksinimleri karşılamak için nasıl değişmesi gerektiği.
• Bu, mimarinin tüm ana bileşenlerini içerir: – Pipeline (and other elements of the core) – Ön Bellekler (Caches) – Ara Bağlantılar (Interconnects) – Memory controllers – I/O Çevre Birimleri (Peripherals)
16
Classification
Functionality • Bağımsız gömülü sistemler (Stand-alone
embedded systems)
• Gerçek zamanlı gömülü sistemler: Donanımsal gerçek zamanlı sistemler ve Yazılımsal gerçek zamanlı sistem
• Ağa bağlı gömülü sistemler (Networked embedded systems)
• Gezgin Gömülü sistemler (Mobile Embedded systems).
Performance
• Small scaled embedded system
• Medium scaled embedded
system
• Large scaled embedded system.
Embedded Systems
Stand-alone Embedded systems: Kendi kendine çalışır. Bilgisayar gibi herhangi bir ana sistem gerektirmeyen bağımsız bir cihazdır - Örneğin: Sıcaklık ölçüm sistemleri, MP3 çalarlar, dijital kameralar ve mikrodalga fırınlar. Real-time embedded systems: Belirli bir zamanda (Zaman sınırı) gerekli çıktıyı verir. Soft Real-Time system: Zaman kısıtlamalarının ihlali yalnızca kalitenin düşmesine neden olur, ancak sistem çalışmaya devam edebilir. EX: Çamaşır makinesi, TV kumandası Hard Real-Time system: Zaman kısıtlamalarının ihlali, kritik arızaya ve can veya mal kaybına veya felakete neden olacaktır. Ör: Füze kontrol gömülü sistemde son tarih, Gaz sızıntısı sırasında gecikmeli alarm, araba hava yastığı kontrol sistemi Networked embedded systems: Kaynaklara erişmek için ağ arayüzlerine sahip bir ağ ile ilgilidir. Bağlı ağ bir LAN veya WAN veya İnternet olabilir. Bağlantı kablolu veya kablosuz olabilir. Örneğin: Ev güvenlik sistemi. Mobile Embedded systems: Mobil ve cep telefonları, dijital kameralar, MP3 oynatıcılar, PDA. Sınırlama Bellek ve diğer kaynaklardır. Küçük ölçekli gömülü sistem: Yonga üzerinde RAM ve ROM ile 8–16 bitlik tek bir Mikroişlemci tarafından desteklenir.
Orta ölçekli gömülü sistem: Harici RAM ve ROM ile 16–32 bit Mikroişlemci / Mikroişlemci tarafından desteklenir.
Büyük ölçekli gömülü sistem: Dağıtılmış işleri gerçekleştirebilen 32-64 bit çoklu yongalarla desteklenir.
SINIFLANDIRMA
Applications Home Appliances: Dishwasher, washing machine, microwave, Top-set box, security system , HVAC system, DVD, answering machine, garden sprinkler systems etc.. Office Automation: Fax, copy machine, smart phone system, modern, scanner, printers. Security : Face recognition, finger recognition, eye recognition, building security system , airport security system, alarm system. Academia: Smart board, smart room, OCR, calculator, smart cord. Instrumentation: Signal generator, signal processor, power supplier, Process instrumentation. Telecommunication: Router, hub, cellular phone, IP phone, web camera Automobile: Fuel injection controller, anti-locking brake system, air-bag system, GPS, cruise control. Entertainment: MP3, video game, Mind Storm, smart toy.
Applications Conti...
Aerospace : Navigation system, automatic landing system, flight attitude controller, space explorer, space robotics. Industrial automation : Assembly line, data collection system, monitoring systems on pressure, voltage, current, temperature, hazard detecting system, industrial robot. Personal : PDA, smart phone, palmtop, data organizer. Medical : CT scanner, ECG , EEG , EMG ,MRI, Glucose monitor, blood pressure monitor, medical diagnostic device. Banking & Finance : ATM, smart vendor machine, cash register ,Share market Miscellaneous : Elevators, tread mill, smart card, security door etc.
Features
• Belirli bir görevi yerine getirmek için tasarlanır.
• Her zaman bağımsız cihazlar değildir.
• Sınırlı bilgisayar donanımı kaynaklarıyla çalışır: az bellek, küçük veya var olmayan klavye ve / veya ekran.
• Minimum boyut ve ağırlık için maksimum performans sunar
• Verimlilik.
• Güvenilirlik.
• Gerçek zamanlı kısıtlamalarla çalışır.
Components of Embedded Systems
Hardware: Processor/controller, Timers, Interrupt controller, I/O Devices, Memories, Ports, etc Application Software : Which may perform concurrently the series of tasks or multiple tasks RTOS (Real Time Operating System) : RTOS defines the way the system work. Which supervise the application software. It sets the rules during the execution of the application program. A small scale embedded system may not need an RTOS.
Gömülü Sistem Blok Şeması
oscillator Prog
Memory (ROM)
RAM timers/ counter
CPU
Bus expansion control
I/O ports Serial port/ UART
Frequency Reference
interrupt interrupt
control Ports/IO/ ADD/Data bus
Tx Rx
counters
Embedded System Features • The microcontroller is a processor
• The CPU can work on 8 bits of data at a time
• Clock
• The Embedded Systems has
• RAM and ROM
• Timers
• Serial porte
• I/O ports, each 8 bits wide
• External and internal interrupt sources
Block Diagram
28
Architecture
Von Neumann
• John von Neumann
• Tek depolama belleği (veri ve program).
• Bellekten tam talimat çıkarmak için daha fazla bellek döngüsü gerektirir.
• Özel "Tablo okuma" talimatları gerekli değildir.
• Ardışık düzende komut işleme mümkün değildir (Pipelining is not possible).
• Daha az verimli.
Harvard
• Depolama ve veri için ayrı hafızalar.
• Bellekten tam talimatı çıkarmak için daha az bellek döngüsü gerektirir.
• Özel "Tablo okuma" talimatları gereklidir.
• Doğru stratejilerle (Pipelining) ardışık düzende komut işleme mümkündür.
• Daha verimli.
Architecture
CPU
Program +
Data
Address Bus
Data Bus
Memory
Von Neumann
Architecture
CPU
Program
Address Bus
Data Bus
Harvard
Architecture
Memory
Data
Address Bus
Fetch Bus
0
0
0
2n
RAM ve ROM bellek tipleri nasıl ifade edilir? • RAM: Data • ROM: Program Data Bellek: Hem yazılır, hem okunur. Program bellek sadece okunur. Harvard mimarisinde data bellekte data bus kaç yönlüdür? • Çift yönlüdür. Harvard mimarisinde program bellekte data bus kaç yönlüdür? • tek yönlüdür.
Von Neumann Mimarisinde data bus kaç yönlüdür? • iki yönlüdür.
Adres bus bellek ve bellek gözünü seçer.
Princeton Architecture
• Princeton, program ve verileri depolamak için ortak bellek alanının kullanıldığı "Von Neumann" mimarisini sağladı.
• Bellek birimi, talimatların okunması, işlemci ve dahili yazmaçları (Registers) ile verilerin ileri geri iletilmesi arasındaki bellek boşluğuna keyfi erişimden sorumludur.
• Avantajlar: basit bellek arabirimi ve yönetimi. • Harvard, program depolama, işlemci yığını ve değişken RAM için ayrı bellek
bankaları kullanan bir tasarım önerir. • Avantaj: Talimatı Von Neumann'dan daha az döngüde yürütür.
Princeton architecture block diagram
program ROM
Variable RAM
Stack RAM
memory interface unit
Processor and built-in registers
instruction decode
Data
Add
Ctrl
Harvard architecture block diagram
program ROM Variable RAM PC Stack
Processor and built-in
registers
instruction decode
Data
Add
Ctrl
Data
Add
Ctrl
• CISC ve RISC
–RISC, "Azaltılmış Komut Seti Bilgisayarları" anlamına gelir. Talimatlar, kullanıcıların kendi işlemlerini tasarlamalarına izin vermek için olabildiğince çıplaktır.
–Gömülü sistemlerde RISC mimari kullanılır.
–CISC, "Karmaşık Komut Seti Bilgisayarları" anlamına gelir. Her biri aynı işlemin farklı bir permütasyonunu gerçekleştiren çok sayıda talimat.
Sample Embedded system on Microcontroller
Full resistive bridge sensor
MSP430 MCU
LCD
37
Mikrodenetleyiciler
(Microcontrollers)
Embedded System General Block Diagram
Microcontroller
(uC)
sensor
sensor
sensor
Sen
sor co
nditio
nin
g
Outp
ut in
terfaces
actuator
indicator
Power dist Control store
Reset control
Clock and timing RAM
Microcontroller block diagram
• Gömülü bir mikrodenetleyici, tüm destek işlevlerine (saat ayarı ve sıfırlama), belleğe ve cihazda yerleşik olarak bulunan G / Ç'ye sahip bir bilgisayar işlemcisi olan bir yongadır.
Gömülü sistem bir bilgisayar sistemidir.
Three criteria in Choosing a Microcontroller
• Bilgi işlem ihtiyaçlarını verimli ve uygun maliyetli bir şekilde karşılamak – Hız, ROM ve RAM miktarı, G / Ç bağlantı noktası ve zamanlayıcı sayısı, boyut, paketleme, güç
tüketimi – Yükseltme (upgrade), Güncelleme (Update) kolay – birim başına maliyet
• Yazılım geliştirme araçlarının kullanılabilirliği – Derleyiciler (assemblers), – Hata ayıklayıcılar (debuggers), – C derleyicileri, – Öykünücü (emulator), – Simülatör, – Teknik destek
• Mikrodenetleyicilerin geniş kullanılabilirliği ve güvenilir kaynakları
41
Embedded processors • Sistem üreticisi tarafından bir kez programlanır. • Birkaç parametre ile tek bir programı (veya sınırlı bir paketi) yürütür. • Göreve özgü özel uygulama için optimize edilebilir. • Çevre ile birçok şekilde etkileşime girer.
– doğrudan algılama ve sinyal kablolarının kontrolü – çevre ve diğer cihazlarla iletişim protokolleri – gerçek zamanlı etkileşimler ve kısıtlamalar
• Mikrodenetleyici türleri:
– Gömülü: Uygulamayı çalıştırmak için gerekli tüm donanım çip üzerinde sağlanmıştır. – Tipik olarak: güç, sıfırlama, saat, bellek ve GÇ. – Harici hafızabazı mikro denetleyiciler harici belleğin bağlanmasına izin verir.
Microcontroller features
• Clock/Oscillator
• IO pins
• interrupts
• timers
• Peripherals
• ADC inputs
• DAC outputs
• PWM outputs
Basic features
Comparing µC with µP
• General-purpose microprocessors contains o No RAM
o No ROM
o No I/O ports
• Microcontroller has o CPU (microprocessor)
o RAM
o ROM
o I/O ports
o Timer
o ADC and other peripherals
Applications Home Appliances, intercom, telephones, security systems, garage door openers, answering machines, fax
machines, TVs, cable TV tuner, VCR, camcorder, remote controls, video games, cellular phones, musical instruments, sewing machines, lighting control, paging, camera, pinball machines, toys, exercise equipment.
Office Telephones, security systems, fax machines, microwave, copier, laser printer, color printer, paging.
Auto Navigation system, engine control, air bag, ABS, instrumentation, security system, transmission
control, entertainment, climate control, cellular phone, keyless entry.
Examples of 8-bit µC
Motorola’s 6811
Intel’s 8051
Zilog’s Z8
Microchip’s PIC The 8051 family has the largest number of
diversified (multiple source) suppliers:
o Intel (original)
o Atmel
o Philips/Signetics
o AMD
o Infineon (formerly Siemens)
o Matra
o Dallas Semiconductor/Maxim
Common Microcontrollers •Atmel
•ARM
•Intel
•8-bit
•8XC42
•MCS48
•MCS51
•8xC251
•16-bit
•MCS96
•MXS296
•National Semiconductor
•COP8
•Microchip
•12-bit instruction PIC
•14-bit instruction PIC
•PIC16F84
•16-bit instruction PIC
•NEC
•Motorola
•8-bit
•68HC05
•68HC08
•68HC11
•16-bit
•68HC12
•68HC16
•32-bit
•683xx
•Texas Instruments
•TMS370, 16/32 bit
•MSP430 , 16 bit
•Zilog
•Z8
•Z86E02
48
Memory Organization
Gömülü Sistemlerde Bellek Tipleri
• Ön Bellek
• Ram
• Flash Bellek: Uygulama yazılımlarının saklandığı bellek. Elektrik kesildiğinde silinmez.
• Kontrol bellek
Gömülü Sistemlerde Kontrol Bellek Tipleri
–Program belleğidir.
–Önceden Yüklenir.
–Bu bellek alanı, mikro denetleyiciye yüklenebilen uygulamanın maksimum boyutudur ve uygulama ayrıca bir uygulamayı yürütmek için gerekli tüm düşük düzeyli kodu ve cihaz arayüzünü içerir.
–Uçucu olmayan bellektir.
–5 farklı tipte kontrol bellek vardır: ROM, PROM, EPROM ve EEPROM / Flash
–4 çeşit veri değişkenleri belleği vardır:
bits,
registers,
RAM,
PC stack.
–They are implemented as SRAM.
–Program counter stack
part of the RAM.
LIFO memory.
must be initialized by the starting address of the stack area.
Gömülü Sistemlerde Veri Değişkenleri Bellekleri
Bellek Hiyerarşisi
RAM - volatile: Data Memory
ROM - non volatile: Code Memory
EPROM
Flash/EEPROM
Örnek: Bellek gözü seçmek
8 bit veri gözlerine, 4 bit adres hattına sahip bir belleğin Seçilecek göz sayısı=2^n=16byte Burada, n: bellek adres hattı sayısıdır. Seçilecek gözlerin indislenmesi: 0, ..., 2^n-1 0,1,2, ... , 15
Bellek Kapasitesi Gösterim Formatı
Bellekler (D Boyut x N) formatında gösterilir. D belleğin kapasitesini byte olarak gösterir. (K:Kilobyte=2^10byte, M:Megabyte=2^20byte, G:Gigabyte=2^30byte, T: Terabeyte=2^40byte, P:Petabyte=2^50byte). N ise data bus hat sayısını bit olarak verir. N=8 bit(byte), 16bit(word), 32bit(Longword), 64 bit(Quadword) olur.
Soru: Bir belleğin gösterim formatı 16Kx8 ise belleğin veri saklama kapasitesini byte olarak, adres hattı sayısı adet olarak ve data bus hat sayısını bit olarak bulunuz.
• Belleğin veri saklama kapasitesi=16Kbyte (16Kx8)
• Belleğin adres hattı sayısının bulunması: Belleğin veri saklama kapasitesi=16KByte=2^14Byte’dır (2^4*2^10). O halde 2 üzeri üs ifadesi belleğin adres hattı sayısını verir ki, adres hattı sayısı=14 adet bulunur.
• Data bus hattı sayısı=8 bit’dir. (16Kx8)
56
CPU Bileşenleri
Haberleşme Yolları
Data bus & Address bus
Address Bus : Adres bus, Giriş çıkış birimlerinde ya da belleklerde fiziksel bir adres belirlemek için ayrılmış bilgisayar sistemi veri yolunun bir parçasıdır.
Data Bus : Sistem haberleşme yollarından veri yolu basitçe elektriksel olarak verileri taşır.
Adres bus’ın hat sayısı 32 bit ise, o zaman kaç tane bellek konumunu işleyecektir?
4,294,967,296
58
µp Memory
- I/O
Address Lines
Data Lines
System Bus
Interface
• Adres Bus: Belleğin yazılıp okunacak gözünü seçer ya da I/O seçer. Bu göz 1 byte=8bit.
• Data Bus: Belleğin gözüne ya da I/O birimine yazılıp okunacak veriyi taşır.
• Control Bus: Bellek ile CPU arasındaki iş akışını yönetir, izler, bilgi verir: Yaz, Oku, Dur, Reset, Yeniden başlat, …
Control Lines
59
Adres Bus: A15-A8; AD7-AD0 Data Bus: AD7-AD0 • Adres bus hat sayısı nedir: 16, • Adres bus indislenmesi: A15 .. A8 AD7 … AD0 • Adreslenecek fiziksel kapasite=2^16Byte=64Kbyte • Data hattı sayısı nedir? 8, • Data Bus insleme: AD7 … AD0 • Neden adres ve data bus’da ortak hatlar var? (AD7..AD0): Verinin
belleğe yada giriş-çıkış birimlerine yazma veya okuma çevriminde önce adres bus üzeirinden ilgili birim seçilir. Ardından veri yazılır ya da okunur.
• Adres ve data bus’da ortak hatların olmasının nedeni nedir? Pin sayısı azaltma hedeflenir. Adres bus ve Data bus üzerinde aynı anda işlem yapılmaz. Önce belleğin ya da giriş-çıkış birimim adresi seçilir. Sonra seçilen adrese veri yazılır ya da okunur.
• Control Bus hatları nelerdir? • ALE: Bellek ya da I/O veri yazmaya hazır… • IO/M’: 1 gelirse I/O seçilir. 0 gelirse bellek seçilir.
adres ve data bus’da ortak hatlar
Latch
A15-A8
Latch AD7-AD0
D7- D0
A7- A0
ALE
IO/M RD WR
1K Byte
Memory
Chip
WR RD
CS
A9- A0
A15- A10
Address
Decoding
Circuit
60
• Chip Selection Circuit, adres dekoding devresidir.
• Adres dekoding devresinin giriş sayısı 6 adettir. O halde çıkış sayısı=2^6=64. Toplam 64 adet bellekten birini seçer.
• Herbir belleğin kapasitesi=1Kbyte • Belleğin adres hattı sayısı=10 adettir.
2^10=1Kbyte • Latch devresi: ALE çıkışı aktif
olduğunda girişindeki değerleri çıkışına kurar. Bir sonraki ALE çıkışı aktif olana kadar çıkışlar durumlarını korur.
A12
A11
A10 - A0
Address decoders
61
• CPU’dan çıkan hat sayısı=13 adet. İndisleme: A12...A0
• CPU’nun Toplam Bellek kapasitesi kaç Kbyte’dır? Kapasite=2^13 byte=8Kbyte
• Bir belleğin kapasitesi nedir? İndis: A10..A0, 11 adet
• Belleğin Kapasitesi=2^11Byte =2KByte • A13 ne iş yapar? Adres Decoding
devresini enable eder. Çıkışını onaylar, aktif eder.
2 to 4 decoder
A12A,11:00 ise Bellek-1, 01 ise Bellek-2, 10 ise Bellek-3, 11 ise Bellek-4 seçilir.
Example: Memory-register map
up to 64 KB of external
EPROM/ ROM
up to 60 KB of external ROM/
EPROM
4 KB of internal ROM/ EPROM
21 SF registers
up to 64 KB of external RAM
128 KB internal RAM
or and
program memory RAM/data memory
0000
FFFF
0000
0FFF
FFFF
1000
0000
FFFF
0000
007F
0080
00F8
SF = Special Function
63
Assembly Language
Instruction Set
1. Movement Instructions 2. Arithmetic and Logic Instructions 3. Shift and Rotate Instructions 4. Flow of Control
Programmable state machine
Control
Data
Memory
ALU
Program
Memory
Instructions
Operations
ALU operations
- Add
- Mul
- Not
Data move
- Move
- Push
- Pop
Branch
- Compare
- Jump
- Loop
Overview
• Data transfer instructions
• Addressing modes
• Data processing (arithmetic and logic)
• Program flow instructions
Data Transfer Instructions
• MOV dest, source dest source
• Stack instructions PUSH byte ;increment stack pointer,
;move byte on stack
POP byte ;move from stack to byte,
;decrement stack pointer
• Exchange instructions XCH a, byte ;exchange accumulator and byte
XCHD a, byte ;exchange low nibbles of
;accumulator and byte
Addressing Modes Immediate Mode – specify data by its value
mov A, #0 ;put 0 in the accumulator
;A = 00000000
mov R4, #11h ;put 11hex in the R4 register
;R4 = 00010001
mov B, #11 ;put 11 decimal in b register
;B = 00001011
mov DPTR,#7521h ;put 7521 hex in DPTR
;DPTR = 0111010100100001
Addressing Modes
Immediate Mode – continue
MOV DPTR,#7521h
MOV DPL,#21H
MOV DPH, #75
COUNT EGU 30 ~
~
mov R4, #COUNT
MOV DPTR,#MYDATA ~
~
0RG 200H
MYDATA:DB “IRAN”
Addressing Modes Register Addressing – either source or destination is one of CPU
register MOV R0,A
MOV A,R7
ADD A,R4
ADD A,R7
MOV DPTR,#25F5H
MOV R5,DPL
MOV R,DPH
Note that MOV R4,R7 is incorrect
Addressing Modes Direct Mode – specify data by its 8-bit address Usually for 30h-7Fh of RAM
Mov a, 70h ; copy contents of RAM at 70h to a
Mov R0,40h ; copy contents of RAM at 70h to a
Mov 56h,a ; put contents of a at 56h to a
Mov 0D0h,a ; put contents of a into PSW
Addressing Modes Direct Mode – play with R0-R7 by direct address
MOV A,4 MOV A,R4
MOV A,7 MOV A,R7
MOV 7,2 MOV R7,R6
MOV R2,#5 ;Put 5 in R2
MOV R2,5 ;Put content of RAM at 5 in R2
Addressing Modes
Register Indirect – the address of the source or destination is specified in registers
Uses registers R0 or R1 for 8-bit address: mov psw, #0 ; use register bank 0
mov r0, #0x3C
mov @r0, #3 ; memory at 3C gets #3
; M[3C] 3
Uses DPTR register for 16-bit addresses: mov dptr, #0x9000 ; dptr 9000h
movx a, @dptr ; a M[9000]
Note that 9000 is an address in external memory
Data Processing Instructions
Arithmetic Instructions
Logic Instructions
Arithmetic Instructions
• Add
• Subtract
• Increment
• Decrement
• Multiply
• Divide
• Decimal adjust
Arithmetic Instructions
Mnemonic Description
ADD A, byte add A to byte, put result in A
ADDC A, byte add with carry
SUBB A, byte subtract with borrow
INC A increment A
INC byte increment byte in memory
INC DPTR increment data pointer
DEC A decrement accumulator
DEC byte decrement byte
MUL AB multiply accumulator by b register
DIV AB divide accumulator by b register
DA A decimal adjust the accumulator
ADD Instructions add a, byte ; a a + byte
addc a, byte ; a a + byte + C
These instructions affect 3 bits in PSW:
C = 1 if result of add is greater than FF
AC = 1 if there is a carry out of bit 3
OV = 1 if there is a carry out of bit 7, but not from bit 6, or visa versa.
Addition Example
; Computes Z = X + Y ; Adds values at locations 78h and 79h and puts them in 7Ah ;------------------------------------------------------------------ X equ 78h Y equ 79h Z equ 7Ah ;----------------------------------------------------------------- org 00h ljmp Main ;----------------------------------------------------------------- org 100h Main: mov a, X add a, Y mov Z, a end
The 16-bit ADD example ; Computes Z = X + Y (X,Y,Z are 16 bit) ;------------------------------------------------------------------ X equ 78h Y equ 7Ah Z equ 7Ch ;----------------------------------------------------------------- org 00h ljmp Main ;----------------------------------------------------------------- org 100h Main: mov a, X add a, Y mov Z, a mov a, X+1 adc a, Y+1 mov Z+1, a end
Subtract
SUBB A, byte subtract with borrow
Example:
SUBB A, #0x4F ;A A – 4F – C
Notice that There is no subtraction WITHOUT borrow. Therefore, if a subtraction without borrow is desired, it is necessary to clear the C flag.
Example:
Clr c
SUBB A, #0x4F ;A A – 4F
Increment and Decrement
• The increment and decrement instructions do NOT affect the C flag.
• Notice we can only INCREMENT the data pointer, not decrement.
INC A increment A
INC byte increment byte in memory
INC DPTR increment data pointer
DEC A decrement accumulator
DEC byte decrement byte
Example: Increment 16-bit Word
• Assume 16-bit word in R3:R2
mov a, r2
add a, #1 ; use add rather than increment to affect C
mov r2, a
mov a, r3
addc a, #0 ; add C to most significant byte
mov r3, a
Multiply
When multiplying two 8-bit numbers, the size of the maximum product is 16-bits
FF x FF = FE01
(255 x 255 = 65025)
MUL AB ; BA A * B
Note : B gets the High byte
A gets the Low byte
Division
• Integer Division
DIV AB ; divide A by B
A Quotient(A/B)
B Remainder(A/B)
OV - used to indicate a divide by zero condition. C – set to zero
Decimal Adjust
DA a ; decimal adjust a
Used to facilitate BCD addition. Adds “6” to either high or low nibble after an addition to create a valid BCD number. Example: mov a, #23h
mov b, #29h
add a, b ; a 23h + 29h = 4Ch (wanted 52)
DA a ; a a + 6 = 52
Logic Instructions
Bitwise logic operations (AND, OR, XOR, NOT)
Clear
Rotate
Swap
Logic instructions do NOT affect the flags in PSW
Bitwise Logic
ANL AND
ORL OR
XRL XOR
CPL Complement
Examples: 00001111
10101100 ANL
00001111
10101100 ORL
00001111
10101100 XRL
10101100 CPL
00001100
10101111
10100011
01010011
Address Modes with Logic
a, byte
direct, reg. indirect, reg, immediate
byte, a
direct
byte, #constant
a ex: cpl a
ANL – AND
ORL – OR
XRL – eXclusive oR
CPL – Complement
Uses of Logic Instructions
• Force individual bits low, without affecting other bits.
anl PSW, #0xE7 ;PSW AND 11100111
• Force individual bits high. orl PSW, #0x18 ;PSW OR 00011000
• Complement individual bits xrl P1, #0x40 ;P1 XRL 01000000
Other Logic Instructions
CLR - clear
RL – rotate left
RLC – rotate left through Carry
RR – rotate right
RRC – rotate right through Carry
SWAP – swap accumulator nibbles
CLR ( Set all bits to 0)
CLR A
CLR byte (direct mode)
CLR Ri (register mode)
CLR @Ri (register indirect mode)
Rotate • Rotate instructions operate only on a
RL a
Mov a,#0xF0 ; a 11110000
RR a ; a 11100001
RR a
Mov a,#0xF0 ; a 11110000
RR a ; a 01111000
Rotate through Carry
RRC a
mov a, #0A9h ; a A9
add a, #14h ; a BD (10111101), C0
rrc a ; a 01011110, C1
RLC a
mov a, #3ch ; a 3ch(00111100)
setb c ; c 1
rlc a ; a 01111001, C1
C
C
Rotate and Multiplication/Division
• Note that a shift left is the same as multiplying by 2, shift right is divide by 2
mov a, #3 ; A 00000011 (3)
clr C ; C 0
rlc a ; A 00000110 (6)
rlc a ; A 00001100 (12)
rrc a ; A 00000110 (6)
Swap
SWAP a
mov a, #72h ; a 27h
swap a ; a 27h
Bit Logic Operations
• Some logic operations can be used with single bit operands
ANL C, bit
ORL C, bit
CLR C
CLR bit
CPL C
CPL bit
SETB C
SETB bit
• “bit” can be any of the bit-addressable RAM locations or SFRs.
Program Flow Control
• Unconditional jumps (“go to”)
• Conditional jumps
• Call and return
Unconditional Jumps
• SJMP <rel addr> ; Short jump, relative
address is 8-bit 2’s complement number, so jump can be up to 127
locations forward, or 128 locations back.
• LJMP <address 16> ; Long jump
• AJMP <address 11> ; Absolute jump to anywhere
within 2K block of program memory
• JMP @A + DPTR ; Long indexed jump
Infinite Loops
Start: mov C, p3.7
mov p1.6, C
sjmp Start
Microcontroller application programs are almost always infinite loops!
Re-locatable Code Memory specific NOT Re-locatable (machine code)
org 8000h
Start: mov C, p1.6
mov p3.7, C
ljmp Start
end
Re-locatable (machine code)
org 8000h
Start: mov C, p1.6
mov p3.7, C
sjmp Start
end
Jump table Mov dptr,#jump_table
Mov a,#index_number
Rl a
Jmp @a+dptr
...
Jump_table: ajmp case0
ajmp case1
ajmp case2
ajmp case3
Conditional Jump
• These instructions cause a jump to occur only if a condition is true. Otherwise, program execution continues with the next instruction.
loop: mov a, P1
jz loop ; if a=0, goto loop,
; else goto next instruction
mov b, a
• There is no zero flag (z)
• Content of A checked for zero on time
Conditional jumps Mnemonic Description
JZ <rel addr> Jump if a = 0
JNZ <rel addr> Jump if a != 0
JC <rel addr> Jump if C = 1
JNC <rel addr> Jump if C != 1
JB <bit>, <rel addr> Jump if bit = 1
JNB <bit>,<rel addr> Jump if bit != 1
JBC <bir>, <rel addr> Jump if bit =1, &clear bit
CJNE A, direct, <rel addr> Compare A and memory, jump if
not equal
Example: Conditional Jumps
jz led_off
Setb P1.6
sjmp skipover
led_off: clr P1.6
mov A, P0
skipover:
if (a = 0) is true
send a 0 to LED
else
send a 1 to LED
More Conditional Jumps
Mnemonic Description
CJNE A, #data <rel addr> Compare A and data, jump if not
equal
CJNE Rn, #data <rel addr> Compare Rn and data, jump if not
equal
CJNE @Rn, #data <rel addr> Compare Rn and memory, jump if
not equal
DJNZ Rn, <rel addr> Decrement Rn and then jump if not
zero
DJNZ direct, <rel addr> Decrement memory and then jump if
not zero
Iterative Loops
For A = 0 to 4 do
{…}
clr a
loop: ...
...
inc a
cjne a, #4, loop
For A = 4 to 0 do
{…}
mov R0, #4
loop: ...
...
djnz R0, loop
Iterative Loops(examples)
mov a,#50h
mov b,#00h
cjne a,#50h,next
mov b,#01h
next: nop
end
mov a,#25h
mov r0,#10h
mov r2,#5
Again: mov @ro,a
inc r0
djnz r2,again
end
mov a,#0h
mov r4,#12h
Back: add a,#05
djnz r4,back
mov r5,a
end
mov a,#0aah
mov b,#10h
Back1:mov r6,#50
Back2:cpl a
djnz r6,back2
djnz b,back1
end
Call and Return
• Call is similar to a jump, but – Call pushes PC on stack before branching
acall <address ll> ; stack PC
; PC address 11 bit
lcall <address 16> ; stack PC
; PC address 16 bit
Return
• Return is also similar to a jump, but
– Return instruction pops PC from stack to get address to jump to
ret ; PC stack
Subroutines
Main: ...
acall sublabel
...
...
sublabel: ...
...
ret the subroutine
call to the subroutine
Initializing Stack Pointer
• SP is initialized to 07 after reset.(Same address as R7)
• With each push operation 1st , pc is increased
• When using subroutines, the stack will be used to store the PC, so it is very important to initialize the stack pointer. Location 2Fh is often used.
mov SP, #2Fh
Subroutine - Example square: push b
mov b,a
mul ab
pop b
ret
• 8 byte and 11 machine cycle
square: inc a
movc a,@a+pc
ret
table: db 0,1,4,9,16,25,36,49,64,81
• 13 byte and 5 machine cycle
Subroutine – another example
; Program to compute square root of value on Port 3
; (bits 3-0) and output on Port 1.
org 0
ljmp Main
Main: mov P3, #0xFF ; Port 3 is an input
loop: mov a, P3
anl a, #0x0F ; Clear bits 7..4 of A
lcall sqrt
mov P1, a
sjmp loop
sqrt: inc a
movc a, @a + PC
ret
Sqrs: db 0,1,1,1,2,2,2,2,2,3,3,3,3,3,3,3
end
reset service
main program
subroutine
data
Why Subroutines?
• Subroutines allow us to have "structured" assembly language programs.
• This is useful for breaking a large design into manageable parts.
• It saves code space when subroutines can be called many times in the same program.
example of delay
mov a,#0aah
Back1:mov p0,a
lcall delay1
cpl a
sjmp back1
Delay1:mov r0,#0ffh;1cycle
Here: djnz r0,here ;2cycle
ret ;2cycle
end
Delay=1+255*2+2=513 cycle
Delay2:
mov r6,#0ffh
back1: mov r7,#0ffh ;1cycle
Here: djnz r7,here ;2cycle
djnz r6,back1;2cycle ret ;2cycle
end
Delay=1+(1+255*2+2)*255+2
=130818 machine cycle
Long delay Example
GREEN_LED: equ P1.6
org ooh
ljmp Main
org 100h
Main: clr GREEN_LED
Again: acall Delay
cpl GREEN_LED
sjmp Again
Delay: mov R7, #02
Loop1: mov R6, #00h
Loop0: mov R5, #00h
djnz R5, $
djnz R6, Loop0
djnz R7, Loop1
ret
END
reset service
main program
subroutine
Example ; Move string from code memory to RAM
org 0
mov dptr,#string
mov r0,#10h
Loop1: clr a
movc a,@a+dptr
jz stop
mov @r0,a
inc dptr
inc r0
sjmp loop1
Stop: sjmp stop
; on-chip code memory used for string
org 18h
String: db ‘this is a string’,0
end
Example ; p0:input p1:output
mov a,#0ffh
mov p0,a
back: mov a,p0
mov p1,a
sjmp back
setb p1.2
mov a,#45h ;data
Again: jnb p1.2,again ;wait for data request
mov p0,a ;enable strobe
setb p2.3
clr p2.3
Example
; duty cycle 50%
back: cpl p1.2
acall delay
sjmp back
back: setb p1.2
acall delay
Clr p1.2
acall delay
sjmp back
Example
; duty cycle 66%
back: setb p1.2
acall delay
acall delay
Clr p1.2
acall delay
sjmp back
Usage Notes
• A lot of slides are adopted from the presentations and documents published on internet by experts who know the subject very well.
• I would like to thank who prepared slides and documents.
• Also, these slides are made publicly available on the web for anyone to use
• If you choose to use them, I ask that you alert me of any mistakes which were made and allow me the option of incorporating such changes (with an acknowledgment) in my set of slides.
Sincerely,
Dr. Cahit Karakuş