14-ma'ruza Interfeyslar

14-ma'ruza Interfeyslar
14-ma'ruza
Interfeyslar
14.1. I / O interfeyslari
14.2. Manzilni dekodlash
14.1. I / O interfeyslari
14.1. I / O interfeyslari
Hozirda turli xil I / O interfeyslari mavjud va yangilari doimiy ravishda paydo bo'lmoqda. Ularning eng keng tarqalgani UART, USART, CRT kontrolörleri, disk kontrolleri va PIO. UART (Universal asinxron qabul qilgich uzatuvchi) - bu ma'lumot uzatish avtobusidan baytni o'qiy oladigan va bitni ketma-ket qatorga yoki terminaldan uzatadigan kirish / kirish interfeysi. UART mikrosxemalarining ishlash tezligi har xil: 50 dan 19,200 bit / s gacha; belgilar kengligi 5 dan 8 bitgacha; 1, 1,5 yoki 2 to'xtash bitlari; Yagona yoki toq paritetsiz - barchasi dastur tomonidan boshqariladi. USART (Universal Sinxron Asenkron Qabul qilgich Transmitter) bir qator protokollar yordamida sinxron uzatishni amalga oshirishi mumkin va UART chipining barcha funktsiyalarini qo'llab-quvvatlaydi. Telefon modemlarining o'limidan so'ng, UART interfeysi endi ahamiyatli rol o'ynamaydi, biz parallel PIO interfeysni kirish / chiqish chipining namunasi sifatida ko'rib chiqamiz.
PIO interfeyslari
PIO (parallel kirish / chiqish) interfeysining odatiy namunasi Intel 8255A chipidir (3.55-rasm). U 24 I / O liniyasini o'z ichiga oladi va har qanday raqamli mantiqiy moslamalar (masalan, klaviatura, kalit, indikator, printer) bilan interfeysga ega.
CPU dasturi istalgan satrga 0 yoki 1 raqamini yozishi yoki har qanday satrning kirish holatini o'qishi mumkin, bu yuqori moslashuvchanlikni ta'minlaydi. PIO interfeysidan foydalangan holda protsessorga asoslangan kichik tizim turli xil fizik qurilmalarni - robotlar, toosterlar, elektron mikroskoplarni boshqarishi mumkin. Ko'pincha PIO interfeyslari ko'milgan tizimlarda uchraydi.
Shakl: 3.55. 8255A mikrosxemasi
PIO interfeysining konfiguratsiyasi, kirish (0) yoki raqamli chiqish (1) uchun uchta mustaqil 8-bitli portlardan foydalanish kerakligini aniqlaydigan 3 bitli registr tomonidan aniqlanadi. Mos keladigan qiymatni konfiguratsiya registriga yozish uchta portda o'zboshimchalik bilan I / O kombinatsiyasini amalga oshirishga imkon beradi. 8 bitli registr har bir port bilan bog'langan. Portga chiziqlarni sozlash uchun CPU tegishli registrga 8 bitli raqamni yozadi va 8-bitli raqam chiqish satrlarida paydo bo'ladi va registr qayta yozilguncha o'sha erda qoladi. Kirish uchun portni ishlatish uchun CPU shunchaki tegishli registrni o'qiydi.
Keyinchalik murakkab PIO interfeyslarini qurish mumkin. Masalan, bitta ommabop rejim tashqi qurilmalar bilan aloqa o'rnatishni o'z ichiga oladi. Masalan, qurilmaga ma'lumot yuborish uchun 8255A ma'lumotlarni chiqish portiga yuborishi mumkin va qurilma signal qabul qilinganligi va boshqalarni yuborish to'g'risida signal berilishini kutadi. Mikrosxemada bunday signallarni o'rnatish va markaziy protsessorga uzatish uchun zarur bo'lgan mantiqiy davrlar mavjud.
Rasmdagi PIO funktsional diagrammasidan. 3.55, biz uchta port uchun 24 pin bilan bir qatorda, 8255A mikrosxemasi to'g'ridan-to'g'ri ma'lumot avtobusiga ulangan sakkiz qatorni, xotira elementlarini tanlash liniyasini, o'qish va yozish satrlarini, ikkita manzil satrlarini va mikrosxemani qayta tiklash uchun chiziqni o'z ichiga olganini ko'ramiz.
Ikki manzil satrlari to'rtta ichki registrlardan birini tanlashga imkon beradi, ulardan uchtasi A, B va C portlariga to'g'ri keladi, to'rtinchisi - konfiguratsiya registri. Odatda, ikkita manzil liniyalari manzil avtobusining ikkita ahamiyatsiz bo'laklariga ulanadi. Namuna olish liniyasi sizga 24-bitli PIO interfeyslaridan yuqori sig'imli interfeyslarni yaratishga, qo'shimcha manzil qatorlarini qo'shish va ulardan mikrosxemaning namunaviy liniyasini o'rnatish orqali kerakli interfeysni tanlash uchun foydalanishga imkon beradi.
14.2. Manzilni dekodlash
Hozirgacha biz xotira chipini yoki kirish / chiqish qurilmasini qanday tanlash haqida batafsil to'xtalmadik. CPU, dasturni saqlash uchun 2K 8 bayt EPROM, ma'lumotlarni saqlash uchun 2K 8 bayt operativ xotira va PIO interfeysidan iborat oddiy 16 bitli kompyuterni ko'rib chiqing. Bunday kichik tizim arzon o'yinchoq yoki oddiy asbobga mos kelishi mumkin. Mahsulot ommaviy ishlab chiqarishga o'tgandan so'ng, EEPROM oddiy ROM bilan almashtiriladi.
PIO interfeysi ikkita usuldan biri bilan namuna olinishi mumkin: qurilma / xotira qismi sifatida. Agar biz PIO-ni I / O qurilmasi sifatida ishlatmoqchi bo'lsak, unda biz tegishli avtobus liniyasiga murojaat qilishimiz kerak, bu kirish xotiraga emas, balki I / O qurilmasiga tegishli ekanligini anglatadi. Yana bir yondashuv xotira bilan jihozlangan I / O deb nomlanadi. Bunday holda, mikrosxemaga uchta port va boshqaruv registri uchun 4 bayt xotira berilishi kerak. Bizning tanlovimiz biroz o'zboshimchalikdir. Xotiraga ulangan I / O-ni ko'rib chiqing, chunki bu yondashuv bir-biriga bog'liq bo'lgan ba'zi qiziqarli muammolarni namoyish etadi.
EPROM-ga 2 KB manzil maydoni, RAM-ga shuningdek 2 KB, PIO 4 bayt kerak bo'ladi. Bizning misolimizda manzil maydoni 64K manzil bo'lganligi sababli, biz ushbu uchta qurilmani qaerga qo'yishni tanlashimiz kerak. Mumkin bo'lgan variantlardan biri sek. 3.56. EPROM 2K, RAM - 32K dan 34K gacha, PIO - 4 bayt, 65532 dan 65535 gacha manzillar oralig'ini egallaydi. Dasturchi nuqtai nazaridan qaysi manzillardan foydalanish muhim emas, lekin interfeys uchun katta ahamiyatga ega. Agar biz PIO-ga I / O bo'sh joylari orqali kirgan bo'lsak, bizda xotira manzillari kerak emas (lekin biz to'rtta I / O bo'sh joy manzillariga muhtojmiz).
Shakl: 3.56. EPROM, RAM va PIO ning 64K manzillar oralig'ida joylashishi
Ushbu manzilni ajratish bilan EPROM-ni 16-bitli xotira manzili 00000xxxxxxxxxxx (ikkilik shaklida) yordamida hal qilish kerak. Boshqacha qilib aytganda, 0 ga teng eng muhim besh bit bo'lgan har qanday manzil 2K gacha bo'lgan xotira maydoniga tushadi, ya'ni EPROM-da. Shunday qilib, EPROM tanlash signali 5 bitli komparatorga ulanishi mumkin, bunda kirishlardan biri doimo 00000 ga ulanadi.
Xuddi shu natijaga yanada samaraliroq erishish mumkin: A11 dan A15 gacha manzil satrlari bilan bog'liq bo'lgan beshta kirishli OR eshikdan foydalanish. Chiqish signali 0 bo'lishi mumkin va agar barcha besh chiziq 0 ga teng bo'lsa. Bu holda CS signali o'rnatiladi. Ushbu manzilni aniqlash usuli sek. 3.57, a; u to'liq manzilni dekodlash deb ataladi.
Xuddi shu printsip RAMga ham qo'llanilishi mumkin. Shu bilan birga, RAM 10000xxxxxxxxxxx kabi ikkilik manzillarga javob berishi kerak, shuning uchun qo'shimcha inverter kerak (diagrammada ko'rsatilgan). PIO manzilini dekodlash biroz qiyin, chunki 11111111111111xx kabi 4 manzildan foydalanib tanlanadi.
Ushbu turdagi manzilni manzil avtobusida paydo bo'lgandagina CS signalini o'rnatadigan sxemaning mumkin bo'lgan variantlaridan biri rasmda ko'rsatilgan. U OR darvozasiga ulangan sakkiz kirishli ikkita NAND eshikdan foydalanadi.
3.57-rasm. U OR darvozasiga ulangan sakkiz kirishli ikkita NAND eshikdan foydalanadi.
Agar kompyuter faqat protsessor, ikkita xotira chipi va PIO dan iborat bo'lsa, manzilni dekodlash ancha osonlashadi. Gap shundaki, barcha EPROM manzillari uchun (va faqat EPROM-lar uchun) A15 eng muhim bit har doim 0 bo'ladi.
Shakl: 3.57. Manzil (lar) ning to'liq dekodlanishi; qisman manzilni dekodlash (b) Shuning uchun biz CS signalini A15 chizig'iga ulanishimiz mumkin. 3.58, b.
Endi RAMni 8000H ga o'rnatish to'g'risida qaror shu qadar o'zgacha ko'rinmaydi. E'tibor bering, 10xxxxxxxxxxxxxx kabi manzillar tezkor xotiraga tushadi, shuning uchun dekodlash uchun ikkita bit kifoya qiladi. Xuddi shunday, 11 dan boshlanadigan har qanday manzil PIO manzilidir. To'liq dekodlash mantig'i endi ikkita NAND eshik va inverterdan iborat.
Shaklda ko'rsatilgan mantiq. 3.58, b, manzillarning qisman dekodlanishi deb ataladi, chunki bu holda to'liq manzillar ishlatilmaydi. Ushbu dekodlash bilan 0001000000000000, 0001100000000000 va 0010000000000000 manzillaridan o'qish xuddi shunday natijani beradi. Aslida, manzillar maydonining pastki yarmidagi har qanday manzil EPROM tanlovini anglatadi. Qo'shimcha manzillar ishlatilmagani uchun bu yaxshi, lekin kelajakda kengaytiriladigan kompyuterni loyihalashda (o'yinchoqlar misolida), qisman dekodlashdan qochishingiz kerak, chunki u manzil maydonini sezilarli darajada cheklaydi.
Siz manzilni dekodlash uchun boshqa texnologiyadan ham foydalanishingiz mumkin - dekoder yordamida (3.12-rasmga qarang). Uchta kirishni eng muhim bitlarning uchta adresli liniyalari bilan ulash orqali biz birinchi 8K segmentdagi manzillarga mos keladigan sakkizta chiqishni, ikkinchi 8K segmentni va hokazolarni olamiz. 8K by 8 baytdan iborat 8 RAM mikrosxemalarini o'z ichiga olgan kompyuterda, bittasi. chip Agar kompyuterda 2K 8 baytdan iborat 8 xotira chipi bo'lsa, bitta dekoder ham dekodlash uchun kifoya qiladi, agar har bir xotira chipida 8K manzil maydoni mavjud bo'lsa. (Bizning kuzatishlarimizni eslab o'ting, xotira chiplari va I / O qurilmalari manzil maydoni ichida.)
http://fayllar.org
|