Sabtu, 01 Oktober 2011

Ahmad Farid


INTERFACE USB
DEFINISI

Universal Serial Bus adalah standar bus serial untuk perangkat penghubung, biasanya kepada komputer namun juga digunakan di peralatan lainnya seperti konsol permainan, ponsel dan PDA. USB ialah port yang sangat diandalkan saat ini dengan bentuknya yang kecil dan kecepatan datanya yang tinggi. Anda dapat menghubungkan hingga 127 produk usb dalam 1 komputer. USB versi 1.1 mendukung 2 kecepatan yaitu mode kecepatan penuh 12Mbits/s dan kecepatan rendah 1.5 Mbits/s. USB 2.0 mempunyai kecepatan 480Mbits/s yang dikenal sebagai mode kecepatan tinggi.
Sistem USB mempunyai desain yang asimetris, yang terdiri dari pengontrol host dan beberapa peralatan terhubung yang berbentuk pohon dengan menggunakan peralatan hub yang khusus.
Desain USB ditujukan untuk menghilangkan perlunya penambahan expansion card ke ISA komputer atau bus PCI, dan memperbaiki kemampuan plug-and-play (pasang-dan-mainkan) dengan memperbolehkan peralatan-peralatan ditukar atau ditambah ke sistem tanpa perlu mereboot komputer. Ketika USB dipasang, ia langsung dikenal sistem komputer dan memroses device driver yang diperlukan untuk menjalankannya.
Saat ini transfer data menggunakan port USB sudah semakin marak, port USB menjadi pilihan utama karena ukuran yang ringkas dan kecepatan transfer data yang cukup besar.  Sebagai perbandingan, Bus  PCI saat ini mendukung transfer data hingga 132 MB/s, dimana AGP (pada 66MHz) mendukung hingga 533 MB/s. AGP  dapat melakukan ini karena kemampuannya untuk mentransfer data pada ujung naik dan turun detak 66MHz.
Perbedaan paling mencolok antara versi 2.0 dan lama adalah kecepatan transfer yang jauh meningkat. Kecepatan transfer data USB dibagi menjadi tiga, antara lain:
·         High speed data dengan frekuensi clock 480.00Mb/s dan tolerasi pensinyalan data pada ± 500ppm.
·         Full speed data dengan frekuensi clock 12.000Mb/s dan tolerasi pensinyalan data pada ±0.25% atau 2,500ppm.
·         Low speed data dengan frekuensi clock 1.50Mb/s dan tolerasi pensinyalan data pada ±1.5% atau 15,000ppm.
USB 3.0 (Super-Speed ​​USB) meningkatkan data rate hingga 4,8 Gbit / s, 600 MB / s. USB 3.0 port dan kabel yang dirancang untuk memungkinkan kompatibilitas ke belakang, sehingga konektor baru dan kabel berisi antarmuka USB 3.0 dan USB 2.0 interface.
USB 3.0 konektor berisi pin warisan untuk antarmuka untuk perangkat USB 2.0, dan satu set baru pin untuk USB 3.0 konektivitas (kedua set berada di konektor yang sama).
Catatan editor, ketika standar baru pertama kali diumumkan USB 3.0 akan menambahkan sebuah antarmuka serat; 'masa depan-pemeriksaan untuk kemampuan optik'. Namun, standar akhir yang digunakan 'seperti' sebuah antarmuka PCIe untuk menambah kemampuan USB 3.0.
USB [Universal Serial Bus] mendefinisikan lapisan Mekanikal, Listrik dan Protokol antarmuka. USB terdiri dari 2 jenis perangkat keras, Hub dan Fungsi. Sampai dengan 127 perangkat dapat dihubungkan bersama-sama dalam Bus Topologi. Faktor pembatas terdiri 7 bit alamat. Segmen kawat fisik point-to-point antara Host, Hub, atau Fungsi. Sistem hanya dapat memiliki satu host, yang menghubungkan ke Hub seorang. Sebuah USB Hub dapat terhubung ke Hub lain atau ke Fungsi USB. Setiap lapisan transisi dari Hub ke Hub merupakan Tier lain. Hub USB memungkinkan koneksi ke bus USB, sementara Fungsi Usb adalah perangkat yang melakukan beberapa fungsi.

 

 

PERANGKAT INTERFACE

Konektor USB (Tipe A dan B)
Nomor kaki (dilihat pada soket):
USB TypeAB Connector Pinout.svg
Penetapan kaki[1]
Kaki
Fungsi

1
VBUS (4.75–5.25 V)

2
D−

3
D+

4

Shell


Konfigurasi pin konektor USB Standard A / B, dilihat dari wajah plug

Standard tipe A
Standard-A jenis konektor USB adalah persegi panjang pipih yang memasukkan ke dalam wadah "hilir-port" pada host USB, atau hub, dan membawa kedua daya dan data. Sumbat ini sering terlihat pada kabel yang secara permanen terpasang ke perangkat, misalnya sebagai salah satu menghubungkan keyboard atau mouse ke komputer melalui koneksi usb. Koneksi USB pada akhirnya aus sebagai mengendur koneksi melalui diulang plugging dan mencabut. Umur laki-laki A Konektor USB adalah sekitar 1.500 terhubung / disconnect siklus.
Ada konektor perempuan-perempuan.
Adaptor terdiri dari wadah B dan Standar-Standar-wadah A digunakan untuk menghubungkan dua kabel

Standar tipe B
Sebuah plug Standar-B-yang memiliki bentuk persegi dengan colokan eksterior sudut-biasanya miring ke dalam "stop kontak hulu" pada perangkat yang menggunakan kabel dilepas, misalnya printer. Sebuah plug Tipe B menghasilkan tenaga selain membawa data. Pada beberapa perangkat, wadah Tipe B tidak memiliki sambungan data, digunakan hanya untuk menerima daya dari perangkat hulu. Ini-konektor tipe skema dua (A / B) mencegah pengguna sebuah dari sengaja membuat loop listrik .


PERIPHERAL

Ada tiga komponen phisik pada USB sistem. Ini meliputi host ( komputer), hubs,
devise. Semua connectors adalah one-size-fits-all, maka suatu alat dapat diisi secara
langsung ke dalam host, ke dalam suatu pusat kegiatan yang mana  pada gilirannya diisi
ke dalam host.
USB dapat menghubungkan peralatan tambahan komputer seperti mouse, keyboard, pemindai gambar, kamera digital, printer, hard disk, dan komponen networking. USB kini telah menjadi standar bagi peralatan multimedia seperti pemindai gambar dan kamera digital.

Peripheral USB pada PC


Perancangan peralatan yang menggunakan USB

Untuk membuat suatu peralatan yang dapat berkomunikasi dengan protokol USB tidak perlu harus mengetahui secara rinci protokol USB. Bahkan kadang tidak perlu pengetahuan tentang USB protokol sama sekali. Pengetahuan tentang USB protokol hanya diperlukan untuk mengetahui spesifikasi yang dibutuhkan untuk alat kita. Pada kenyataannya untuk mengimplemetasikan USB protokol di FPGA. Field-Programmable Gate Array (FPGA) adalah komponen elektronika dan semikonduktor yang mempunyai komponen gerbang terprogram (programmable logic) dan sambungan terprogram ataupun perangkat bantu lain sangat tidak efisien dan banyak waktu terbuang untuk merancangnya. Menggunakan kontroler USB sangat lebih dianjurkan dalam membuat alat yang dapat berkomunikasi melalui protokol ini. Kontroler USB mempunyai banyak macam bentuk, dari microcontroller berbasis 8051 yang mempunyai input output USB secara langsung sampai pengubah protocol dari serial seperti I2C bus ke USB.
USB controller biasanya dijual dengan disertai berbagai fasilitas yang mempermudah pengembangan alat, diantaranya manual yang lengkap, driver untuk windows XP, contoh code aplikasi untuk mengakses USB, contoh code untuk USB controller, dan skema rangkaian elektronikanya.

Contoh Gambar FPGA

Dalam sisi pengembangan software aplikasi dalam personal computer, komunikasi antar hardware di dalam perangkat keras USB tidak terlalu diperhatikan karena Windows ataupun sistem operasi lain yang akan mengurusnya. Pengembang perangkat lunak hanya memberikan data yang akan dikirim ke alat USB di buffer penyimpan dan membaca data dari alat USB dari buffer pembaca. Untuk driver pun kadang-kadang Windows sudah menyediakannya, kecuali untuk peralatan yang mempunyai spesifikasi khusus kita harus membuatnya sendiri.

 

METODE PENGIRIMAN

 

Persinyalan USB

USB adalah host-centric bus di mana host/terminal induk memulai semua transaksi. Paket pertama/penanda (token) awal dihasilkan oleh host untuk menjelaskan apakah paket yang mengikutinya akan dibaca atau ditulis dan apa tujuan dari perangkat dan titik akhir. Paket berikutnya adalah data paket yang diikuti oleh handshaking packet yang melaporkan apakah data atau penanda sudah diterima dengan baik atau pun titik akhir gagal menerima data dengan baik.
Setiap proses transaksi pada USB terdiri atas:
  • Paket token/sinyal penanda (Header yang menjelaskan data yang mengikutinya)
  • Pilihan paket data (termasuk tingkat muatan) dan
  • Status paket (untuk acknowledge/pemberitahuan hasil transaksi dan untuk koreksi kesalahan)

 

Paket data umum USB

Data di bus USB disalurkan dengan cara mendahulukan Least Significant Bit(LSB). LSB adalah bagian dari barisan data biner (basis dua) yang mempunyai nilai paling tidak berarti/paling kecil.
 Paket-paket USB terdiri dari data-data berikut ini:
  • Sync
Semua paket harus diawali dengan data sync. Sync adalah data 8 bit untuk low dan full speed atau data 32 bit untuk high speed yang digunakan untuk mensinkronkan clock dari penerima dengan pemancar. Dua bit terakhir mengindikasikan dimana data PID dimulai.
  • PID (Packet Identity/Identitas paket)
Adalah field untuk menandakan tipe dari paket yang sedang dikirim. Tabel dibawah ini menunjukkan nilai-nilai PID:
Group
Nilai PID
Identitas Paket
Token
0001
OUT Token
Token
1001
IN Token
Token
0101
SOF Token
Token
1101
SETUP Token
Data
0011
DATA0
Data
1011
DATA1
Data
0111
DATA2
Data
1111
MDATA
Handshake
0010
ACK Handshake
Handshake
1010
NAK Handshake
Handshake
1110
STALL Handshake
Handshake
0110
NYET (No Response Yet)
Special
1100
PREamble
Special
1100
ERR
Special
1000
Split
Special
0100
Ping

Ada 4 bit PID data, supaya yakin diterima dengan benar, 4 bit di komplementasikan dan diulang, menjadikan 8 bit data PID. Hasil dari pengaturan tersebut adalah sebagai berikut.
PID0
PID1
PID2
PID3
nPID0
nPID1
nPID2
nPID3
  • ADDR (address)
Bagian alamat dari peralatan dimana paket digunakan. Dengan lebar 7 bit, 127 peralatan dapat disambungkan. Alamat 0 tidak sah, peralatan yang belum terdaftar harus merespon paket yang dikirim ke alamat 0.
  • ENDP (End point)
Titik akhir dari field yang terdiri dari 4 bit, menjadikan 16 kemungkinan titik akhir. Low speed devices, hanya dapat mempunyai 2 tambahan end point pada puncak dari pipe default. (maksimal 4 endpoints)
  • CRC
Cyclic Redundancy Check dijalankan pada data di dalam paket yang dikirim. Semua penanda (token) paket mempunyai sebuah 5 bit CRC ketika paket data mempunyai sebuah 16 bit CRC.
  • EOP (End of packet)
Akhir dari paket yang disinyalkan dengan satu angka akhir 0 (Single Ended Zero/SEO) untuk kira-kira 2 kali bit diikuti oleh sebuah J 1 kali.
Data yang dikirim dalam bus USB adalah salah satu dari 4 bentuk, yaitu control, interrupt, bulk, atau isochronous.

Interrupt


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Interface dengan Mikrokontroller

 

USB to Microcontroller UART Interface Circuit

 


Implementation USB into microcontroller: IgorPlug-USB (AVR)






Level tegangan/ karakteristik elektrik
Data dikirim secara serial, maka piranti USB harus mampu menangani gelombang kontinyu. Gelombang ini di hubungkan langsung ke pin data USB dari sebuah sumber tegangan dengan impedansi output 39W. Sumber tegangan rangkaian terbuka untuk keperluan ini ada pada kemungkinan terburuk dari adanya overshoot dan undershoot.
Pada  koneksi USB dengan kecepatan 12 MHz digunakan kabel twisted-pair yang terlindung dengan impedansi 90W  kurang lebih 15% dan delay maksimumnya 26ns.Sedang impedansi pada drivernya harus antara 28W hingga 44W. Jika di ukur, arus yang masuk dan keluar piranti USB V1.1 tidak boleh melebihi 10,71 VOH mA. Tegangan logika yang di masukan 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 kapasitas tunggal dengan nilai 200pF hingga 450pF di pin D+ dan D-. Perambatan delay pada kabel kecepatan rendah harus kurang dari 18 ns. Data sinyal yang naik turun diukur dari 10% hingga 90% dari sinyal,dengan toleransi 10%. Waktu untuk ini dari 4ns hingga 20ns, tergantung kecepatan USB yang digunakan. 

Daya
USB 1.x dan 2.0 spesifikasi menyediakan 5 V pasokan pada kawat tunggal dari perangkat USB yang terhubung dapat menarik kekuasaan. Spesifikasi menyediakan tidak lebih dari 5,25 V dan tidak kurang dari 4,75 V (5 V ± 5%) antara jalur bus kekuatan positif dan negatif. Untuk USB 2.0 tegangan yang diberikan oleh powered hub port-rendah adalah 4,4 V sampai 5,25 V.
Sebuah beban unit didefinisikan sebagai 100 mA dalam USB 2.0, dan dibangkitkan untuk 150 mA dalam USB 3.0. Maksimal 5 unit muatan (500 mA) dapat diambil dari sebuah pelabuhan di USB 2.0, yang telah diangkat ke 6 (900 mA) di USB 3.0. Ada dua jenis perangkat: rendah daya dan daya tinggi. Low-power perangkat menarik beban paling lama 1 unit, dengan tegangan operasi minimum 4.4 V di USB 2.0, dan 4 V di USB 3.0. Daya tinggi perangkat menarik jumlah maksimum beban unit yang didukung oleh standar. Semua default perangkat sebagai daya rendah tetapi perangkat lunak dapat meminta daya tinggi selama daya tersedia pada bus menyediakan.
Beberapa perangkat seperti kecepatan tinggi drive disk eksternal mungkin membutuhkan lebih dari 500 mA saat ini dan oleh karena itu tidak dapat diaktifkan dari satu port USB 2.0. perangkat semacam ini biasanya datang dengan kabel berbentuk Y yang memiliki dua konektor USB yang akan dimasukkan ke dalam komputer. Dengan kabel perangkat yang dapat menarik daya dari dua port USB secara bersamaan.
Hub bus-powered diinisialisasi pada 1 beban unit dan transisi ke unit beban maksimal setelah konfigurasi hub diperoleh. Setiap perangkat yang terhubung ke hub akan menarik 1 unit beban terlepas dari menarik saat perangkat yang terhubung ke port lain dari hub (yaitu satu perangkat terhubung pada sebuah hub empat-port hanya akan menarik beban 1 unit terlepas dari kenyataan bahwa semua beban unit yang yang dipasok ke hub).
Sebuah hub bertenaga diri akan memasok beban maksimum yang unit yang didukung ke perangkat tersambung ke jaringan tersebut. Sebuah hub bertenaga baterai dapat menyediakan unit muatan maksimum ke pelabuhan. Selain itu, V BUS akan menyediakan 1 unit beban hulu untuk komunikasi jika bagian dari Hub powered bawah.
Dalam baterai Pengisian Spesifikasi, mode powering baru ditambahkan ke spesifikasi USB. Sebuah host atau hub Pengisian Hilir Port dapat menyediakan maksimum sebesar 1,5 A ketika berkomunikasi di bandwidth rendah atau full-bandwidth, maksimum 900 mA saat berkomunikasi di tinggi-bandwidth, dan sebanyak sekarang sebagai konektor aman akan menangani jika tidak ada komunikasi berlangsung; USB 2.0 standar-A konektor dinilai pada 1500 mA secara default. Sebuah Dedicated Port Pengisian dapat menyediakan maksimum 1,8 A saat ini sebesar 5,25 V. Perangkat portabel dapat menarik sampai 1,8 A dari Pengisian Dedicated Port. Yang didedikasikan Mengisi Port celana pendek D + dan D-pin dengan hambatan paling banyak 200 Ω. The menonaktifkan pendek transfer data, namun memungkinkan perangkat untuk mendeteksi Dedicated Port Pengisian dan memungkinkan sangat sederhana, pengisi arus tinggi akan diproduksi. Arus meningkat (lebih cepat, 9 pengisian W) akan terjadi setelah kedua host / hub dan perangkat mendukung spesifikasi pengisian baru.

Powered USB
Powered USB menggunakan USB standar sinyal dengan penambahan kabel listrik tambahan. Ini menggunakan empat pin tambahan untuk memasok hingga 6 A pada baik 5 V, 12 V, atau 24 V (tergantung keying) dengan alat tambahan. Kabel dan kontak pada bagian USB telah ditingkatkan untuk mendukung arus yang lebih tinggi pada baris V 5, juga. Hal ini umumnya digunakan dalam ritel sistem dan memberikan kekuatan yang cukup untuk mengoperasikan stasioner barcode scanner, printer, bantalan pin, tanda tangan perangkat menangkap, dll ini modifikasi dari interface USB adalah proprietary dan dikembangkan oleh IBM , NCR , dan FCI / Berg . Hal ini pada dasarnya dua konektor ditumpuk sedemikian rupa sehingga konektor bawah menerima plug USB standar dan konektor atas mengambil konektor power.


Contoh program dlm bahasa C/C++ untuk aplikasi USB

USB Controller Source Code

main.c

#include "xparameters.h"
#include "xbasic_types.h"
#include "xio.h"

#define ADDR_CM 0x01800000  // XIO_Out
#define ADDR_FIFO_RD 0x01800004 // XIO_In 
#define ADDR_FIFO_WR 0x01800008 // X_IO_Out
#define ADDR_SIG_INTERRUPT 0x01800010
#define ADDR_READ_INTERRUPT 0x01800014
#define ADDR_EMPTY_FLAG 0x01800018
#define DESC_LENGTH 0x42
#define BASE_ADDR 0x01800000

#define TEMP1 0x01800004
#define TEMP2 0x01800000
#define TEMP3 0x01800008

Xuint8 short_descriptor[6]= {
180, 
4, 
2,
16,
1,
0 
};

Xuint8 descriptor[66] = {
// Descriptor for USB Remote Control - values written in integer format
// Philip Li 
//  Device Descriptor  (ALL in INTEGER FORMAT)
18,     //descriptor length
01,     //descriptor type
00,02,     //specification version BCD
00,     //device class
00,     //device subclass
00,     //protocol 
64,     //max packet size for EP0
64, 64,  //VID Vendor ID
64, 64,  //PID Product ID
64, 64,  //Device ID
00,     //Manucfacturer String Index
00,     //Product String Index
01,     //Number of configurations
// DeviceQualDscr
10,   //descriptor length
06,    //descriptor type  
00,02,  //BCD
00,   //device class
00,   //device subclass
  1800,   //device sub-sub-class
64,    //max packet size
01,    //number of configuration
00,   //reserved
//HighSpeedConfigDscr
9,  //Dscr length 
02, //Dscr type
46,00,  //total data length ( 46 bytes)
1,  //number of interfaces
1, //configuration number
0,  //configuration string 
160,  //attibutes self powered, no remote wakeup 10100000
50,  //power requirement (50mA)
//Interface Descriptor 
9,      //Dscr length 
04,      //Dscr type
00,      //#index of interface
00,      //alternate setting
02,      //num of endpoints
03,      //interface class (HID)
00,      //interface subclass
01,      //interface sub-subclass (ProtocolCcode,0-None,1-Keyboard,2-
Mouse)
00,      //interface dscr string index
//Class Descriptor (HID interface)
9, //Dscr length
33,  //Dscr type - HID 0x21
00,01,  //HID spec release number 
00,  //hardware target country
01,  //number of HID class dscr to follow
34,  //Descriptor type 0x22  ???
//total length of report descriptor
// Endpoint Descriptor EP2 
07,      // Dscr length 
05,      // Dscr type
02,      // Endpoint number and direction
03,      // Endpoint type  0000 0011 - OUT interrupt transfer (Read
p.113 USBComplete)
00,      // Max packet size LSB 512bytes 
02,      // Max packet size MSB (0x0200)
01,      // polling interval maximum latency p.114 USBComplete
// Endpoint Descriptor EP6
07,      // Dscr length 
05,      // Dscr type
134,      // Endpoint number and direction
03,      // Endpoint type  1000 0110 -IN interrupt transfer (Read
p.113 USBComplete)
00,      // Max packet size LSB 512bytes 
02,      // Max packet size MSB (0x0200)
01      // polling interval maximum latency p.114 USBComplete
};

// USB address is from 0000 0001 1000 0000 to 0000 0001 1000 0111
int main()
{
  // variables for reading DSCR file 
    
  19  //variables

  int ready=0;
  int i;
  Xuint32 incoming_byte;
  Xuint32 incoming_byte1;
  Xuint32 incoming_byte2;
  Xuint32 incoming_byte3;
  Xuint32 incoming_byte4;
  Xuint32 incoming_byte5;
  Xuint32 incoming_byte6;
  Xuint8 incoming_byte8;
  Xuint8 incoming_byte7;
  Xuint8 outgoing_byte;

 
  // write register 0x1
  outgoing_byte = 0x5;
  write_register(0x01, outgoing_byte);
  
  print("write 0xf2 to register0x07\r\n");
  outgoing_byte = 0xf2;   // 11110010
  write_register(0x06, outgoing_byte);
  
  print("finish writing\r\n");

  for(i=0; i<1000; i++){}
  incoming_byte7 = read_register(0x07);
  print("\r\n");
  print("read from the register and the byte is \r\n");
  putnum(incoming_byte6);

  print("write the descriptor now\r\n");
  write_descriptor2();
  
}



Xuint8 read_register ( Xuint8 regaddress ){
  int ready = 0;
  Xuint32 incoming;
  low_level_command_write(0xC0 + regaddress);
  while( ready == 0){
    XIo_In32(ADDR_CM);
    incoming =  XIo_In32(ADDR_SIG_INTERRUPT);
    print("\r\n");
    print("addr_sig_interrupt is \r\n");
    putnum(incoming);
    if (incoming != 0x0)ready =1;
  }; 
  
  incoming =  XIo_In32(ADDR_READ_INTERRUPT);
  print("incoming\r\n");
  putnum(incoming);
  return incoming;
}
  20


void write_register (Xuint8 regaddress, Xuint8 data){
  low_level_command_write(0x80 + regaddress); // command address byte
  low_level_command_write(0xF & (data>>4)); // command data byte one
  low_level_command_write(0xF & data); // command data byte two
}

void low_level_command_write(Xuint8 data){
  Xuint32 outgoing_byte;
  outgoing_byte = (0xFF & data);
  putnum(outgoing_byte);
  print("\r\n");
  //  XIo_In32(ADDR_CM);
  XIo_Out32(ADDR_CM, outgoing_byte);
}

void write_descriptor2(){
  Xuint8 lengthOfRegister = 0x06; // Descriptor length = 6 
  int i;
  low_level_command_write(0x80 + 0x30); // command address byte 0x30 is
the Desc RAM
  low_level_command_write(lengthOfRegister);
  low_level_command_write(0);
  
  for ( i = 0; i <6 ; i ++){
    low_level_command_write(short_descriptor[i]);
  }

}

void write_descriptor(){
  Xuint8 lengthOfRegister = 0x42; // Descriptor length = 66 
  int i;
  low_level_command_write(0x80 + 0x30); // command address byte 0x30 is
the Desc RAM
  low_level_command_write(lengthOfRegister);
  low_level_command_write(0);
  
  for ( i = 0; i <66 ; i ++){
    low_level_command_write(descriptor[i]);
  }

}


pb_usb_ v2_1_0.mpd

 ###################################################################
##
## Microprocessor Peripheral Definition
##
###################################################################

BEGIN opb_usb, IPTYPE = PERIPHERAL, EDIF=TRUE

BUS_INTERFACE BUS = SOPB, BUS_STD = OPB, BUS_TYPE = SLAVE

## Generics for VHDL
PARAMETER c_baseaddr     = 0xFFFFFFFF, DT = std_logic_vector, MIN_SIZE
= 0xFF
PARAMETER c_highaddr     = 0x00000000, DT = std_logic_vector
PARAMETER c_opb_awidth   = 32,         DT = integer
PARAMETER c_opb_dwidth   = 32,         DT = integer

## Ports
PORT opb_abus    = OPB_ABus,    DIR = IN, VEC = [0:(c_opb_awidth-1)],    
BUS = SOPB
PORT opb_be      = OPB_BE,      DIR = IN, VEC = [0:((c_opb_dwidth/8)-
1)], BUS = SOPB
PORT opb_clk     = "",          DIR = IN,         BUS =
SOPB
PORT opb_dbus    = OPB_DBus,    DIR = IN, VEC = [0:(c_opb_dwidth-1)],    
BUS = SOPB
PORT opb_rnw     = OPB_RNW,     DIR = IN,                                 
BUS = SOPB
PORT opb_rst     = OPB_Rst,     DIR = IN,                                
BUS = SOPB
PORT opb_select  = OPB_select,  DIR = IN,                                
BUS = SOPB
PORT opb_seqaddr = OPB_seqAddr, DIR = IN,                                
BUS = SOPB
PORT sln_dbus    = Sl_DBus,     DIR = OUT, VEC = [0:(c_opb_dwidth-1)],   
BUS = SOPB
PORT sln_errack  = Sl_errAck,   DIR = OUT,                               
BUS = SOPB
PORT sln_retry   = Sl_retry,    DIR = OUT,                               
BUS = SOPB
PORT sln_toutsup = Sl_toutSup,  DIR = OUT,                               
BUS = SOPB
PORT sln_xferack = Sl_xferAck,  DIR = OUT,                               
BUS = SOPB


# User Ports
PORT PB_D   = "", DIR = INOUT, VEC = [0:15], 3STATE=FALSE,
IOB_STATE=BUF
PORT PB_A  = "",   DIR = OUT, VEC = [0:2], 3STATE=FALSE,
IOB_STATE=BUF
PORT PB_OE  = "",   DIR = OUT
PORT PB_SLRD   = "",   DIR = OUT
PORT PB_SLWR   = "",   DIR = OUT
  31PORT PB_PKTEND  = "",   DIR = OUT
PORT USB_IFCLK  = "",   DIR = OUT
PORT USB_CS   = "",   DIR = OUT
PORT USB_FLAGA   = "",   DIR = IN 
PORT USB_FLAGB   = "",   DIR = IN 
PORT USB_FLAGC   = "",   DIR = IN 
PORT USB_READY   = "",   DIR = IN 
PORT USB_INT   = "",   DIR = IN 


PORT BUTTON_S1   = "",   DIR = IN
PORT BUTTON_S2  = "",   DIR = IN
PORT BUTTON_S4  = "",   DIR = IN

END


Referensi :

www.cs.columbia.edu/~sedwards/classes/2005/4840/.../USBMedia.pdf








TIMING DIAGRAM


Sumber :
http://id.wikipedia.org/wiki/Universal_Serial_Bus.htm
http://www.pulsewan.com/data101/usb_basics.htm
www.cs.columbia.edu/~sedwards/classes/2005/4840/.../USBMedia.pdf
http://www.kaskus.us/showthread.php?p=395852963
http://www.toko-elektronika.com/tutorial/pcinterfacing.htm

Tidak ada komentar:

Posting Komentar