Bab 1
Bab 1
Parallel Port
Data 0
Data 1
: Data bit 1
Data 2
: Data bit 2
Data 3
: Data bit 3
Data 4
: Data bit 4
Data 5
: Data bit 5
Data 6
: Data bit 6
Data 7
nACK
BUSY
PaperEnd
Select
nAutoFeed
nError
nInit
nSelectIn
Ground
: Ground
Dalam paralel port terdapat 17 jalur data ( =17 bit ). Karena komputer
memiliki 8 bit per alamat maka dibutuhkan 3 alamat fisik untuk setiap alamat parallel
port: data ( 8 bit ), status ( 5 bit ) dan control ( 4 bit ). Alamat fisik yang digunakan
untuk keperluan ini disebut juga dengan register, sehingga dikenal register tersebut
berurutan, yakni jika alamat awal parallel port adalah 0378H, maka alamat 0378H ini
untuk register data, 0379H untuk status, dan 037AH untuk control. Alamat demikian
ini biasanya disebut offset, yakni jarak dari alamat awal.
Dari hal tersebut jelas bahwa register status hanya memakai 5 bit dari 8 bit
yang ada, dan register control hanya menggunakan 4 bit dari 8 bit. Sedang register
data memakai seluruh dari 8 bit yang ada.
Register status digunakan untuk mengecek status printer manakala komputer
akan mengeluarkan data melalui parallel port. Pada mulanya register control dalah
Write Only, karena digunakan untuk mengirimkan sinyal pemberitahuan ke printer
seperti inisial, auto linefeed, dsb. Namun demikian register control ini dapat juga
digunakan sebagai input ( Read ). Bit ke 5 dari register control, yakni Enable bidireksional (dua arah) digunakan pada port printer komputer ( mulai ) IBM PS/2 dan
sesudahnya, di mana jalur data pada port printer ( register data ) bisa berfungsi dua
arah : input / output. Jika bit Enable Bi-direksional ini bernilai 1 (tinggi), maka jalur
data akan dapat berfungsi sebagai input. Namun jika tidak diperlukan untuk
berkomunikasi dua arah, maka akan lebih baik bila mengeset bit ini ( bit 5 ) ke rendah
( = 0 ) daripada membiarkannya tetap dalam kondisi default
DB-25
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18-25
CENTRONICS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
32
31
36
19-30
IN/OUT
OUT
OUT
OUT
OUT
OUT
OUT
OUT
OUT
OUT
IN
IN
IN
IN
OUT
IN
OUT
OUT
Bi directional port
IBM menambahkan fasilitas baru pada parallel port-nya, yaitu dengan
kemampuan untuk berkomunikasi dua-arah. Ini melihat fakta bahwa komunikasi duaarah melalui parallel-port sudah mulai diperlukan.
Pada paraller port yang tidak dua arah, tidak terdapat 244 di dalamnya. Jadi
hanya menggunakan 74LS374 yang output Enable-nya secara permanen di-set rendah
sehingga data hanya bisa ditransfer satu arah, output saja. Jika kita membaca data dari
register data parallel port, maka data tersebut berasal dari 374 yang juga
dihubungkan ke pin data. Dengan meng-overdrive 374, maka bisa kita dapatkan
parallel port yang dua-arah (atau justru hanya input saja, jika kita mengisinya dengan
output latch).
Parallel port dua-arah menggunakan bit ke 5 dari register control untuk
dihubungkan dengan Output-Enable (nOE) dari 374, sehingga jika bit 5 ini kita set
tinggi ( =1 ) maka 374 tidak akan bekerja, dan data dari luar komputer. Pada saat
parallel port ini kita set seperti ini, maka data yang kita tuliskan ke register data
parallel port tidak akan sampai ke pin DB-25, karena 374 tidak menghantarkannya.
Nibble Mode
Nibble mode membaca 8 bit dengan menggunakan parallel port tanpa
mengubahnya ke dalam modus balik, artinya tanpa memerlukan pengesetan bit ke 5
dari register control. Mode ini diperkenalkan oleh Hawlett Packard sebelum IBM
memperkenalkan parallel port yang bidireksional.
IRQ pada Parallel Port
IRQ (Interrupt ReQuest) pada parallel port dapat di-dissable atau enable
melalui bit 4 control register, Enable IRQ Via Ack Line. Jika di-enable maka interupsi
akan muncul pada setiap transisi naik pada nAck, IRQ muncul pada transisi tinggi ke
rendah.
2.
3.
4.
Adapun deskripsi dari sinyal EPP tersebut diatas adalah sebagai berikut :
Sinyal EPP
nWrite
nData
nAddrStb
nReset
nIntr
nWait
AD[8:1]
User defined
: Belum
didefinisikan,
fungsi
diserahkan
pada
didefinisikan,
fungsi
diserahkan
pada
pemakai.
User defined
: Belum
pemakai.
User defined
: Belum
didefinisikan,
fungsi
diserahkan
pada
pemakai.
EPP digunakan secara luas untuk peralatan yang sifatnya non-printer, seperti
CD-ROM External, Tape Drive, Hard Drive, dll.
Register pada EPP tersusun dari 8 byte alamat di memory (offset), sehingga terdapat
lebih banyak register pada EPP jika dibandingkan dengan SPP. EPP TimeOut Bit ini
merupakan anjing penjaga yang otomatis akan time-out setelah 10 det ik (sedikit
lebih lama sinyal dari nWait yang 5 det ik ). Hal ini karena mode EPP sangat
bergantung pada pewaktuan (timing) bus ISA.
Extended Capability Port, ECP
Dalam berkomunikasi, protokol ECP mempunyai 2 siklus; baik dalam arah
maju maupun balik:
1. Siklus Data.
2. Siklus Command (perintah).
Siklus Command terbagi 2: Run-Length Count dan Channel Address. Ini
ditentukan oleh bit 7 dari register data (MSB). Jika bit 7 = 0 maka D0:6 adalah RunLength Count; digunakan dengan skema kompresi data. Jika bit 7 ini maka D0:6
adalah Channel Address.
Nama
HostClk
HostAck
1284Active
PeriphAck
nAckReverse
X-flag
: Extensibility flag.
nPeriphRequest : Di-set
rendah
oleh
peripheral
jika
memungkinkan
hardware, maka tidak di perlukan CPU untuk memproses software jabat tangan dan
transfer data di ECP. Hasilnya, ECP jadi lebih cepat dibandingkan SPP.
Run Length Encoding (RLE) & Channel Addessing
Protokol ECP menggunakan Run Length Encoding (RLE) sehingga
memungkinkan kompresi data secara real time yang akan meningkatkan
perbandingan kompresi hingga 64 : 1.
Interface Software dan Register ECP
Model register pada port ECP hampir sama dengan SPP (3 register awal ECP
bahkan sama persis dengan SPP), namun ada perbaikan penting pada desain bus ISA.
Juga bit 5 Control Port (Enable Bi-Di), di ECP bit ini menunjukkan arah transfer yang
sedang dilakukan ECP, dan berpengaruh pada bit FIFO Full dan FIFO Empty di
register ECP.
Register ECP dapat digunakan untuk mengenali apakah port ECP terpasang di
komputer. Deteksi secara software dapat dilakukan dengan mencoba mengakses
register ECP dengan menambah 0x402 H ke alamat base dari port LPT.
Spesifikasi ECP dari Microsoft mendefinisikan juga interface register umum
untk ISA yang didasarkan pada adhapter 1284 dengan ECP. Spesifikasi ini juga
mendefinisikan mode operasi yang bisa dipilih melalui Extended Control Register
(Offset base + 0x402H).
Mode Operasi
Pemilihan mode operasi ditentukan melalui 3 bit MSB dari Extended Control
Register ECP. FIFO Test Mode dapat digunakan untuk mengetahui buffer FIFO,
misalnya untuk memastikan ia bekerja dengan baik. Untuk mengetahui kapasitas
buffer FIFO, gunakan bit register FIFO Full / FIFO Empty di Extended Control
Register. Biasanya buffer ini 16 byte.
ECP Mode
Akhiran
Dari berbagai jenis parallel port di atas, ada kesamaan dan tentunya banyak
perbedaan. Kesamaannya adalah karena semua mengacu kepada standar parallel port
(SPP) sebagai standar karena alasan kompatibilitas. Perbedaan yang sangat nyata,
mode EPP dan ECP sudah menerapkan IEEE 1284.
berlawanan
dengan
keadaan
open-kolektor
tidak
akan
pernah
BAB V
Universal Serial Bus
Sekilas Tentang USB
USB mendukung plug n play dengan load dan unload driver yang dinamis.
Pemakaian tinggal menghubungkan piranti USB ke dalam bus, host (komputer) akan
mendeteksi kehadiran piranti ini, mengeceknya dan memasang driver yang
diperlukan. User tidak perlu khawatir akan terminasi, seting IRQ dan alamat port,
atau reboot komputer. Jika telaj selesai menggunakan piranti USB tersebut, tinggal
cabut saja dari host tanpa terlebih dahulu mematikan komputer, yang secara otomatis
akan mendeteksi ketidak-hadiran piranti USB ini, dan kemudian akan meng-unload
driver-nya. Proses ini dilakukan melalui kombinasi PID/VID (Product ID/Vendor ID).
VID disediakan oleh forum pemakai USB (USB Implement Forum), dan PID dibuat
oleh pembuat perangkat keras.
Konektor USB
Ada dua macam konektor USB : konektor A untuk hubungan ke atas (menuju
host) dan konektor B untuk hubungan ke bawah (terhubung ke piranti USB).
USB Function
USB function maksudnya adalah peralatan USB yang memiliki kemampuan
khusus seperti : printer, scanner, modem, dll.
Pipes
Pipe adalah hubungan secara logika antara host dan endpoint. Pipe ini
memiliki beberapa parameter antara lain berapa besar bandwith yang dialokasikan
untuknya, jenis transfer apa yang digunakan (apakah control, bulk, atau interupsi),
serta arah dari data yang mengalir padanya berikut ukuran maksimum paket (atau
ukuran buffer).
Pada USB didefinisikan 2 macam pipe, yaitu :
Stream Pipe yang tidak memiliki format yakni pemakai dapat mengirim
sembarang jenis data dan menerima data melalui ujung USB. Stream pipe ini bisa
di control baik oleh host maupun klien.
Message Type yang formatnya sudah tertentu, dan hanya dapat di control oleh
host. Dapat mentransfer data dalam dua arah, namun hanya mendukung jenis
transfer control.
harus
mampu
menangani
gelombang
kontinyu,
gelombang
tersebut
dihubungkan langsung ke pin data USB dari sebuah sumber tegangan dengan
impedansi output 39 .
Untuk koneksi USB yang kecepatan penuh 12 MHz digunakan kabel twistedpair terlindung dengan impedansi 90 15 % dan delay maksimumnya 26 ns.
Sedang impedansi pada drivernya harus antara 28 hingga 44 .
Jika diukur, arus yang masuk atau keluar piranti USB V1.1 tidak boleh
melebihi 10,71 VOH mA. Tagangan logika yang dimasukkan ke D+ dan D- tidak
boleh melebihi 0,3 VOH untuk logika rendah dan juga harus turun sebesar 0,7 VOH
untuk logika tinggi.
Karena ada piranti USB yang berkomunikasi pada kecepatan rendah 1,5 MHz, maka
kombinasi kabel dan piranti USB harus mengandung kapasitansi tunggal dengan nilai
200 pF hingga 450 pF di pin D+ dan D-. Perambatan delay pada kabel kecepatan
rendah harus kurang dari 18 ns.
Deteksi Kecepatan Piranti USB
Piranti USB kecepatan tinggi dan rendah dibedakan oleh posisi resistor pullup di ujung kabel downstream sebagai berikut :
Piranti full-speed diterminalkan dengan resistor pull-up terhubung di D+.
Piranti low-speed diterminalkan dengan resistor pull-up terhubung di D-.
Terminator pull-down di port down-stream adalah 15 k 5 % terhubung ke
ground.
Sinyal Penyambungan dan Pemutusan
Kondisi tak-terhubungnya suatu piranti USB dari port akan dideteksi jika host
atau hub tidak mendrive header (di jalur data) selama lebih dari 2,5 det ik . Jika
sebuah piranti dihubungkan, maka hub akan mendeteksi bahwa salah satu jalur
datanya tertarik hingga besar dari ambang VIH selama lebih dari 2,5 det ik . Hub
kemudian bisa (option) mendeteksi kecepatan piranti yang baru terhubung ini dengan
men-sampel keadaan bus segera sebelum men-drive SE0 untuk mereset piranti. Jika
diinginkan, hub dapat membuat bus mengambang sesudah meresetnya dan
menjalankan evaluasi bus sesudah 2,5 det ik tersebut.
Untuk mengirimkan paket data, USB menerapkan enkode data NRZI (Non
Return to Zero Invert). Dalam NRZI ini, logika 1 berarti tidak ada perubahan level
tegangan dan logika "0 ditunjukkan dengan adanya perubahan level tegangan.
Beberapa literatur menyebutnya dengan NRZS (S=Space).
Paket data dikirimkan ke bus USB berurutan dari bit yang berbobot paling
rendah (LSB, Least Significant Bit), diikuti LSB berikutnya, dan terakhir adalah bit
yang berbobot paling tinggi (MSB, Most Signficant Bit).
Penyisipan Bit
Penyisipan bit digunakan untuk memastikan kesempurnaan transisi sinyal.
Tujuannya agar penerima mendapat transisi data (logika) setidaknya sekali setiap 7
bit; untuk kepastian clock control dan data. Penyisipan bit dimulai dengan Sync
pattern dan seterusnya hingga akhir transmisi. Data 1 diakhir Sync Pattern
dianggap sebagai sebuah awal logika 1. Jika logika 1 ditemukan sebanyak 7 kali
berurutan maka dinyatakan ada error penyisipan bit dan data yang diterima akan
diabaikan.
Protokol USB
Setiap transaksi data dalam USB terdiri dari :
Status Packet, digunakan untuk cek transaksi data dan sekaligus berarti koreksi
kesalahan jika ada.
LSB
PID0
MSB
PID1
NPID3
Nama
OUT
PID[3:0]
0001B
Penjelasan
Alamat + nomor endpoint di transaksi host
IN
1001B
function
Alamat + nomor endpoint di transaksi
SOF
SETUP
0101B
1101B
function host
Tanda Start-of-Frame dan nomor frame
Alamat + nomor endpoint di transaksi hostfungsi untuk SETUP agar dapat mengontrol
Data
0011B
1011B
0010B
jalur
Paket Data PID genap
Paket Data PID ganjil
Receiver menerima
1010B
kesalahan
Rx tidak dapat menerima data atau Tx tidak
STALL
1110B
PRE
1100B
DATA0
DATA1
ACK
Jabat
tangan
NAK
Khusus
paket
data
tidak
tanpa
mendukung
bus
MSB
Addr0
Addr1
Addr2
Addr3
Addr4
Tabel 5.3 Field ADDR
Addr5
Addr6
Field endpoint ditetapkan hanya untuk PID token IN, SETUP, dan OUT. Semua
piranti harus mendukung control saluran default (alamat endpoint nol).
CRC (Cyclic Redundancy Check)
Untuk melindungi field non-PID di paket token dan data, digunakan CRC. CRC
dihitung dan disisipkan di field yang bersesuaian di bagian transmitter, sebelum
dilakukan penyisipan bit. Sebaliknya, CRC didekodekan oleh penerima sesudah
sisispan bit dihilangkan. Untuk penghitungan dan pengecekan CRC, register
geser di bagian pembangkit dan penyeleksi (pengecek), CRC diisi dengan
logika 1. Kesalahan CRC ditemui jika sisa penghitungan di akhir penerimaan
paket tidak sama dengan pola.
CRC Token dan Data
Pada paket token, 5 bit CRC ditambahkan kepada token tersebut dan ini sudah
mencakup field ADDR dan ENDP di token IN, SETUP, dan OUT, dan juga di token
SOF. Polinomialnya adalah :
G(x)=X5+X2+1
Dengan algorithma CRC seperti diatas maka polinomial persamaan ini sesuai
dengan pola bit biner 00101B. Jika semua bit diterima tanpa error, maka ke-5 bit sisa
di receiver adalah 01100B. Untuk bagian data, digunakan CRC 16-bit dengan
polinomial :
G(x)=X16+X15++X2+1
Pola
bit
biner
yang
menyajikan
polinomial
di
atas
adalah
1000000000000101B. dan jika semua bit diterima tanpa error maka ke-16 bit sisa
adalah 100000000000110B.
Format Paket
Dari semua frame di atas, tarsmisi melalui bus USB dilakukan dengan
menyusun frame berurutan sesuai keperluan. Sebuah token terdiri dari PID yang
menunjukkan tipe paket apakah IN, OUT, atau SETUP; field ADDR dan ENDP.
Paket token ditentukan oleh host.
Snyc
PID
ADDR
ENDP
CRC5
Tabel 5.4 Format Packet Token
EOP
Frame SOF dikeluarkan oleh host rata-rata sekali setiap 1mdet 0,0005 mdet.
Paket SOF terdiri dari sebuah PID yang menunjukkan jenis paket diikuti oleh field
nomor frame 11 bit sebagaimana pada tabel dibawah ini.
8 bit
Snyc
11 bit
PID
5 bit
Nomor-Frame
CRC5
Tabel 5.5 Paket SOF
EOP
Token SOF hanya untuk transaksi token yang mendistribusikan tanda SOF
dan menghubungkan nomor frame pada interval waktu yang tepat di awal tiap frame.
Pada paket data ada tiga field; sebuah PID, field data berisi data (dalam byte) dari nol
hingga 1023 dan CRC 16 bit seperti pada tabel dibawah.
8 bit
Sync
PID
0-1023 byte
16 bit
Data
CRC16
Tabel 5.6 Format Field Data
EOP
Ada dua jenis paket data yang dapat dibedakan dari PID-nya : DATA0 dan
DATA1. PID diperlukan untuk sikronisasi. Ada juaga untuk jabat tangan yang hanya
terdiri dari sebuah PID. Paket ini digunakan untuk melaporkan status transaksi dan
dapat mengembalikan nilai yang menunjukkan kesuksesan atau kegagalan
penerimaan data, penerimaan atau penolakan perintah, control aliran, dam kondisi
untuk halt (terkunci).
Sync
PID
Tabel 5.7 Format jabat tangan
CRC16
ACK, menunjukkan paket data diterima tanpa ada error pada data, CRC, dan PID.
NAK, berarti function tidak menerima data dari host (jika OUT) atau bahwa
function tidak mempunyai data untuk ditransmisikan ke host (jika IN).
STALL, dihasilkan oleh function jika ada token IN sesudah fase data dari
transaksi OUT.
Jabat tangan STALL digunakan dalam dua kondisi yang berbeda; (1) fungsional stall
jika fasilitas halt yang di hubungankan dengan endpoint di-set aktif, dan (2) protokol
stall yang mengontrol saluran secara unik.
Respon Jabat Tangan
Ada beberapa kemungkinan respon jabat tangan yang akan diperoleh dalam
suatu transaksi yang dijalankan :
Respon piranti atas transaksi IN
Token error
diterima
Ya
Tabel 5.8
Function Tx
Function dapat
Endpoint
Sembarang
Aksi Token
Tidak ada
Tidak
Set
Sembarang
respon
Muncul jabat
Tidak
Tidak di-set
Tidak
tangan STALL
Muncul jabat
Tidak
Tidak di-set
Ya
tangan NAK
Muncul paket
data
Tabel 5.9
Function dapat mengirim
data
Tidak ada
Tidak
Tidak
Tidak
Ya
Fitur Halt
Receiver
Tabel 5.10
Urutan bit
benar
Ya
Tidak
Tidak
Tidak
Tidak
Tidak ada
Set
Tidak di-set
Tidak di-set
Tidak di-set
Tidak ada
Tidak ada
Tidak
Ya
Ya
Function
dapat
menerima
data
Tidak ada
Tidak ada
Tidak ada
Ya
Tidak
Jabat
tangan oleh
function
Tidak ada
STALL
ACK
ACK
NAK
menerima SETUP harus menerima datanya dan merespon dengan jabat tangan ACK.
Jika data tidak benar, buang data tersebut dan jabat tangan tidak dikeluarkan.
Idle
Token
SETUP
Data
DATA0
Jabat tangan
ACK
Idle
Host
Function
semua
data
telah
dikirimkan
ke
host,
piranti
USB
harus
menginformasikan bahwa fase data sudah usai dengan mengembalikan paket yang
lebih pendek dari variabel MaxPacketSize. Sedang jika data yang ada merupakan
kelipatan bulat dari wMaxPacketSize, maka function akan mengembalikan paket
dengan panjang 0 (nol) untuk menunjukkan berakhirnya fase data.
Jika tidak diterima jabat tangan ACK dalam transaksi IN, endpoint dan host
sepakat bahwa transaksi tidak sukses. Jika ACK didapati di akhir IN dari fase data,
maka harus menggunakan mekanisme transaksi alternatif yang lain. Jika host dapat
menerima data IN yang terakhir, ia akan mengirim ACK. Jika piranti USB tidak
menerima ACK di akhir fase data, piranti akan menganggap awal fase status sebagai
pernyataan bahwa host sudah menerima data. Jika sebuah ACK diterima tidak
lengkap, host tidak akan maju ke fase status dan mengulang data terakhir.
Interupt Transfer
Cara kerjanya identik dengan sebuah penanganan Interupt Request di
mikrocontroller. Jika sebuah piranti USB memerlukan perhatian host, ia harus
menunggu hingga host mem-poolnya sebelum piranti tersebut bisa menggunakan
bus untuk dapat menyelesaikan keperluannya.
Isochronous Transfer
Transaksi isokronus muncul kontinyu dan periodik. Umumnya berisi informasi
yang peka akan waktu seperti aliran video dan audio. Pada transfer mode ini,
data mengalir antara end-point dan host secara real-time dan tidak ada koreksi
kesalahan (error correction). Transaksi isokronus (ISO) hanya memiliki fase
tekon dan data, tanpa jabat tangan.
Bulk Transfer
Transaksi bulk mempunyai kemampuan menjamin transfer data yang bebas
kesalahan antara host dan function. Bulk menggunakan tiga fase transaksi yang
terdiri dari paket token, data, dan jabat tangan.
Transfer bulk hanya dapat dilakukan pada piranti USB berkecepatan penuh dan
kecepatan tinggi. Pada USB kecepatan penuh, transfer dilakukan dengan
ukuran paket sepanjang 8, 16, 32 atau 64 byte. Pada USB kecepatan tinggi
panjang paket dapat mencapai 512 byte.
Aritmatika Modulo 2
Polinomial
Hendaknya MSB dan LSB bilangan pembagi ini (dalam biner) bernilai 1. Juga, pilih
bilangan pembagi ini 1 bit lebih dari FCS.