Senin, 03 Oktober 2011

Alva Kosasih


Bab 1 Pendahuluan

1.1 Konsep Komunikasi serial pada Komputer
            Komunikasi serial ialah pengiriman data secara serial (data dikirim satu persatu secara berurutan), sehingga komunikasi serial jauh lebih lambat daripada komunikasi paralel.. Serial port lebih sulit ditangani karena peralatan yang  dihubungkan ke serial port harus berkomunikasi dengan menggunakan transmisi serial, sedang data di computer diolah secara paralel. Oleh karena itu data dari dan ke serial port harus dikonversikan ke dan dari bentuk paralel untuk bisa digunakan. Menggunakan hardware, hal ini bisa dilakukan oleh Universal Asyncronous Receiver Transmimeter (UART), kelemahannya kita butuh software yang menangani register UART yang cukup rumit dibanding pada parallel port.Kelebihan dari komunikasi serial ialah panjang kabel jauh dibanding paralel, karena serial port mengirimkan logika “1” dengan kisaran tegangan –3 V hingga –25 V dan logika 0 sebagai +3 Volt hingga +25 V sehingga kehilangan daya karena panjangnya kabel bukan masalah utama. Bandingkan dengan port paralel yang menggunakan level TTL berkisar dari 0 V untuk logika 0 dan +5 Volt untuk logika 1. Berikut contoh bentuk sinyal komunikasi serial . Umumnya sinyal serial diawali dengan start bit, data bit dan sebagai pengecekan data menggunakan parity bit serta ditutup dengan 2 stop bit. Level tengangan -3 V hingga +3 V dianggap sebagai undetermined region.


 
Gambar Bentuk sinyal serial

Komunikasi melalui serial port adalah asinkron, yakni sinyal detak tidak dikirim bersama dengan data. Setiap word disinkronkan dengan start bit, dan sebuah clock internal di kedua sisi menjaga bagian data saat pewaktuan (timing).

1.2 Definisi dan Pengenalan USB
Pengenalan
            Pada  suatu zaman dan hari di mana komputer pribadi digunakan untuk suatu
banyak sekali aplikasi, banyak alat baru  sudah tumbuh karena IBM'S yang dikenal
dengan dua port serial pada komputer pribadi sekitar duapuluh tahun yang lalu. Scanner,
portable harddisk, ZIP driver, dan force-feedback joysticks adalah hanya beberapa contoh
alat yang muncul pada desktop. Walaupun usaha telah dibuat untuk menyediakan empat
dari delapan port serial pada PC, tidak ada standard riil yang memperoleh penerimaan
tersebar luas. SCSI nampak menjadi solusi terkemuka untuk banyak penjual scanner dan
eksternal drive, bagaimanapun menghubungkan alat dan kartu adalah mahal dan standard
yang kekurangan kesatuan haruslah lengkap. Oleh karena itu, banyak mulai pekerjaan
pada spesifikasi untuk solusi saling behubungan, seperti IEEE 1394 (Firewire) dan USB.
Serial Universal Bus (USB) adalah solusi yang dipuji oleh tujuh para pemimpin
industri telekomunikasi dan  PC Compaq, DEC, IBM, Intel, Microsoft, NEC dan
Northerm Telecom (sekarang, Nortel Jaringan). Meskipun demikian lebih lambat
dibanding Firewire (IEEE  1394), USB masih membuat suatu data tingkat 12 Mbps
(mega-bits per detik) dan mengijinkan kamu untuk menghubungkan sampai kepada 127
alat ke PC yang dirancang untuk mendukung modem, keyboard, Mouse, 4x– 6x CD
ROM Drive, joysticks, tape/floppy/harddisk, scanner danPrinter. Sebagai tambahan,
suatu gelombang yang baru seperti telepon, para pembicara digital, snapshot digital dan
kamera gerakan, sarung tangan data dan digitizers akan mengambil keuntungan dari ini
menggairahkan dan alat penghubung baru yang serbaguna






Konektor USB (Tipe A dan B)

Konektor USB Tipe A

Definisi
            Bus Beruntut Semesta (USB)  adalah standar bus serial untuk perangkat penghubung, biasanya kepada komputer namun juga digunakan di peralatan lainnya seperti konsol permainan, ponsel dan PDA.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.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.
            Versi terbaru (hingga Januari 2005) USB adalah versi 2.0. Perbedaan paling mencolok antara versi baru 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.
1.3 Cara kerja USB
  • Input yaitu peralatan yang menggunakan USB (Flashdisk, camera, joystick,dll)
  • Interface yaitu Port antarmuka yang menghubungkan USB
  • Chipset southbridge adalah I/O pengendali yang mengatur kecepatan transfer interface USB,Firewire,dll.
  • Output berupa keluaran dari hasil pemprosesan(monitor,printer,dll)
Gambar 1.3 Flowchart Cara Kerja dari USB

Beberapa keistimewaan USB
· Komputer bisa diposisikan menjadi sebuah host
· Lebih dari 127 perangkat dapat tersambung ke komputer secara langsung maupun menggunakan hub USB
· Kabel USB yang digunakan secara langsung bisa mencapai 5 meter. Sedangkan jika menggunakan perangkat hub bisa mencapai 30 meter.
· Perangkat USB bersifat ‘hot swappable’ artinya perangkat keras yang sudah menggunakan port USB bersifat plug and play







Bab II Pembahasan

2.1 Tatap muka secara fisik
            USB memindahkan isyarat dan kuasa atas suatu four-wire kabel, yang
ditunjukkan di dalam Gambar 6.2. Pemberian isyarat terjadi atas dua kawat pada atas
masing-masing point-to-point segmen.
 Ada tiga data menilai:
•  USB pemberian isyarat bit tingkat tarip kecepatan tinggi adalah 480 Mb/S.
•  USB kecepatan penuh pemberian isyarat bit tingkat tarip adalah 12 Mb/S.
•  Suatu kemampuan terbatas kecepatan rendah pemberian isyarat gaya adalah
juga digambarkan pada 1.5 Mb/S.
 
Gambar 2.1 USB kabel
            USB 2.0 kontrol host dan pusat kegiatan menyediakan kemampuan sedemikian sehingga
kecepatan penuh dan kecepatan rendah data  dapat dipancarkan pada kecepatan tinggi
antara control host dan pusat kegiatan, tetapi dipancarkan antara pusat kegiatan dan alat
pada kecepatan penuh atau kecepatan rendah. Kemampuan memperkecil dampak ini yang  Aplikasi Antarmuka Komputer  7 kecepatan penuh dan kecepatan rendah alat mempunyai atas luas bidang yang tersedia untuk alat kecepatan tinggi.
            Kecepatan rendah gaya dikenalkan  mendukung suatu jumlah terbatas low-
bandwidth alat, seperti mouse, sebab penggunaan yang umum akan menurunkan pangkat
bus pemanfaatan Jam dipancarkan, disandikan bersama dengan data diferensial. Jam yang
menyandi rencana adalah NRZI dengan pemuatan bit untuk memastikan transisi cukup.
Suatu SYNC bidang mendahului masing-masing paket untuk mengijinkan receiver(s) 
untuk mensinkronkan jam kesembuhan bit mereka.

Menerapkan Sudut pandang

            USB menyediakan jasa komunikasi antara suatu host dan memasang USB alat.
Bagaimanapun, yang memandang suatu pemakai akhir memberikan dalam memasang
satu atau lebih USB alat kepada suatu host, seperti di Gambar 6.3, kenyataannya sedikit
lebih rumit untuk menerapkan dibanding yang  ditandai oleh figur itu. Pandangan yang
berbeda menyangkut sistem diperlukan untuk menjelaskan USB kebutuhan spesifik dari
perspektif dari  yang berbeda  implementers.
 

Gambar 2.2 Simple USB Host/device view

Beberapa penting corak dan konsep harus didukung untuk menyediakan pemakai akhir
dengan operasi yang dapat dipercaya menuntut dari today’s komputer pribadi. USB
diperkenalkan di dalam suatu pertunjukan layered untuk menenangkan penjelasan dan
mengijinkan implementers USB produk tertentu untuk memusatkan pada detil
berhubungan dengan produk mereka. 
Gambar 2.3 USB Implementation Areas


Gambar 2.3 adalah suatu ikhtisar yang lebih dalam USB, mengidentifikasi lapisan
berbeda dari  sistem yang nantinya diuraikan secara lebih detil dalam sisa spesifikasi.
Khususnya, ada empat fokus area implementasi:
1.  • USB Phisik Alat: Suatu potongan perangkat keras pada akhir dari suatu USB
kabel yang melaksanakan beberapa akhir bermanfaat pemakai berfungsi.
2.  • Perangkat lunak Klien: Perangkat lunak yang melaksanakan pada host, sesuai
dengan suatu USB alat. Klien ini perangkat lunak secara khas disediakan bersama
dengan sistem operasi atau disajikan bersama dengan USB alat.
3.  • USB Perangkat lunak Sistem: Perangkat lunak yang mendukung USB dalam
sistem operasi tertentu . USB Perangkat lunak Sistem secara khas disediakan
bersama dengan sistem operasi, bebas dari USB tertentu perangkat lunak klien
atau alat.
4.  • USB Host control Perangkat keras  dan lunak yang mengijinkan USB alat
menjadi hubungan dengan suatu Host.

2.2 Konektor A dan konektor B
            Konektor USB hanya ada 2 macam, yakni konektor type A dan konektor type B seperti terlihat dalam
Gambar. Konektor type A dipakai untuk menghubungkan kabel USB ke terminal USB yang
ada pada bagian belakang komputer produksi berapa tahun terakhir ini. Konektor type B dipakai untuk menghubungkan kabel USB ke terminal USB yang ada pada peralatan, untuk peralatan USB yang sederhana, misalnya mouse, biasanya tidak pakai konektor B, untuk menghemat beaya kabel langsung dihubungkan ke bagian dalam mouse.
Dalam acuan baku ditentukan pesayaratan yang sangat ketat untuk kabel USB, tidak sembarang kabel bisa dipakai, lebih-lebih untuk USB dengan kecepatan transfer data penuh sampai 1.2 Mega bps. Sehingga kabel USB selalu dijual dalam bentuk sudah jadi, ujung yang satu terpasang konektor type A dan ujung satunya terpasang konektor type B, tidak ada yang menjual konektor USB secara lepas! Pada komputer, biasanya terdapat dua buah terminal untuk konektor type A, jadi dengan
mudah bisa dipasangkan 2 buah peralatan USB. Perusahaan pembuatan mother board ada yang
membuat terminal USB tambahan, bisa dibeli jika ingin menambahkan lebih dari 2 peralatan USB.
Terminal USB pada komputer dinamakan sebagai ‘Root Hub’

2.3 Contoh penggunaan peralatan USB (metode perancangan)
            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 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.
            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.
2.4 Komunikasi data USB (Metode pengiriman)
            Komunikasi USB dikatakan sebagai sistem master  tunggal, artinya semua aktivitas komunikasi data diawali oleh komputer. Data yang dikirim melalui saluran USB, merupakan data  sebanyak 8 byte sampai 256 byte yang dikemas menjadi paket-paket data untuk satu kali pengiriman. Komputer yang aktip minta data dari peralatan dan peralatan wajib memberi data ke komputer. Pengiriman data terjadi dalam kerangka waktu tiap 1 mili- detik sekali, dalam kerangka waktu tersebut komputer bisa berhubungan dengan beberapa peralatanan secara bergantian. Perlatanan yang berkecepatan rendah, mengirim data  dengan kecepatan 1.5 Mega bit per detik, atau setiap bit  dikirim dalam waktu 666.7 nano-detik. Sedangkan peralatan dengan kecepatan penuh mengirim data dengan kecepatan 12 Mega bit per detik, atau waktu pengiriman data 1 bit adalah 88.3 nano-detik. Kecepatan tersebut ditentukan oleh komputer, sedangkan semua peralatan harus menyesuaikan kecepatan tersebut. Pengiriman data ini dilakukan secara asinkron, dengan demikian peralatan USB yang terpasang masing-masing harus membangkitkan sendiri clock untuk penerimaan data.
2.5    Level Tegangan


2.6 Timing Diagram





2.7  USB interface dan mikrokontroller

- USB to Microcontroller UART Interface Circuit

UART
 










Implementation USB into microcontroller: IgorPlug-USB (AVR)
  

2.8  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,
};

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








2.9 Karakteristik Rangkaian



Bab III Kesimpulan

            Sejak komputer pribadi telah meningkatkan  dari suatu alat bisnis kecil kepada
suatu peralatan informasi umum didalam rumah tangga yang modern, permintaan
menempatkan pada hal tersebut dalam kaitan dengan usabilas juga telah mengubah. Para
pemakai adalah lebih sedikit bersikap toleran ke permasalahan dengan susunan dan
instalasi. USB hanya saja langkah yang lain  semakin dekat untuk membuat komputer
pribadi rumah tangga peralatan yang terakhir yang akan menjawab panggilan dan buatan
kopi.

1 komentar:

  1. Play Now (New York) - MapYRO
    Play Now (New York) | 논산 출장안마 656 Casino St, New York, United States - Find out 영천 출장샵 what's popular at nearby restaurants, bars 진주 출장안마 and other popular 군산 출장마사지 attractions 평택 출장샵 near

    BalasHapus