Tổng quan giao diện máy tính - Thiết kế giao diện USB sử dụng chip FT232BM

MỤC LỤC LỜI NÓI ĐẦU 4 CHƯƠNG 1 TỔNG QUAN CÁC GIAO DIỆN TRONG MÁY TÍNH 5 1.1. GIAO DIỆN TỐC ĐỘ THẤP 5 1.1.1. Cổng giao tiếp song song 6 1.1.2. Cổng giao tiếp nối tiếp 6 1.1.3. Giao tiếp theo chuẩn ISA 6 1.1.4. Giao tiếp theo chuẩn EISA 7 1.2. GIAO DIỆN TỐC ĐỘ CAO 8 1.2.1. Giao diện PCI 8 1.2.2. Giao diện AGP 11 1.2.3. Giao diện USB 12 CHƯƠNG 2 NGHIÊN CỨU GIAO DIỆN PCI 32 BÍT/33MHZ 15 2.1. MÔ TẢ CHÂN TÍN HIỆU TRÊN SLOT PCI. 15 2.2 CÁC LỆNH BUS. 19 2.3. GIAO THỨC CƠ BẢN CỦA BUS PCI. 20 2.4. ĐỊNH ĐỊA CHỈ TRÊN BUS PCI. 20 2.5. TỔ CHỨC KHÔNG GIAN CẤU HÌNH BUS PCI. 21 2.5.1. Thanh ghi lệnh. 22 2.5.2. Thanh ghi trạng thái. 23 2.6. CÁC THAO TÁC CƠ BẢN TRÊN BUS PCI. 25 2.6.1. Chu kỳ đọc dữ liệu với bus PCI 32 bít. 26 2.6.2. Chu kỳ ghi dữ liệu với bus PCI 32 bít. 28 2.6.3. Các thao tác trên bus PCI 66 Mhz. 28 2.7. SỰ KẾT THÚC QUÁ TRÌNH TRAO ĐỔI DỮ LIỆU. 30 2.7.1. Đối tượng điều khiển bắt đầu sự kết thúc quá trình giao dịch. 30 2.7.2. Đối tượng bị điều khiển bắt đầu sự kết thúc quá trình giao dịch. 31 2.7.3. Ngưng kết nối không cần sự kết thúc nhịp dữ liệu. 32 2.7.4. Sự giao dịch bị bãi bỏ bởi đối tượng bị điều khiển. 34 2.7.5. Sự giao dịch trễ. 35 2.8. ĐỒ HÌNH TRẠNG THÁI BUS PCI. 35 2.9. MODULE GIAO TIẾP BUS PCI 32 BÍT/33 MHZ. 37 CHƯƠNG 3 GIAO DIỆN USB VÀ THIẾT KẾ THIẾT BỊ SỬ DỤNG GIAO DIỆN USB 40 3.1. GIAO DIỆN USB. 40 3.1.1. Bộ kết nối USB. 40 3.1.2. Đắc tính điện của cổng USB. 41 3.1.3. Dòng trì hoãn. 41 3.1.4. Giao thức truyền USB. 42 3.1.5. Cấu trúc gói USB. 42 3.1.6. Các kiểu gói USB. 43 3.1.7 Các kiểu truyền USB. 44 3.1.8 Điều khiển dữ liệu. 44 3.1.9 Hệ thống USB 2.0. 46 3.2. CẤU TRÚC PHẦN CỨNG 47 3.3. NHỮNG ƯU ĐIỂM NỔI BẬT 47 3.4. SƠ ĐỒ KHỐI 50 3.5. CHỨC NĂNG CỦA TÍN HIỆU 54 3.6. VÍ DỤ VỀ KẾT CẤU CỦA IC 56 3.6.1 Kết cấu bộ tạo dao động 56 3.6.2 Cấu hình EEPROM 57 3.6.3 Kết cấu nguồn Bus USB 58 3.6.4 Kết cấu tự cấp nguồn USB 60 3.6.5 Kết cấu tự cấp nguồn (2) 61 3.6.6 Kết cấu giao diện UART 63 3.6.7 Kết cấu bộ chuyển đổi USB -> RS422 63 3.6.8 Kết cấu bộ chuyển đổi USB -> RS485 64 3.6.9 Kết cấu giao diện LED 64 3.6.10 Mạch tạo nguồn cho Bus với mức lôgic 3.3v/nguồn nuôi 65 3.6.11 Mạch cấp nguồn (100mA) với nguồn điều khiển 66 KẾT LUẬN 68 TÀI LIỆU THAM KHẢO 69

doc73 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2742 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Tổng quan giao diện máy tính - Thiết kế giao diện USB sử dụng chip FT232BM, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
mức tích cực, nhịp dữ liệu cuối cùng được báo hiệu tại chu kỳ clock thứ 6 và nó được hoàn thành tại chu kỳ clock thứ 8. 2.6.3. Các thao tác trên bus PCI 66 Mhz. Bus PCI 66 Mhz thao tác tới tốc độ tối đa là 66 Mhz bằng cách giảm thời gian trễ. Không có nhều sự khác nhau giữa bus 33 Mhz và 66 Mhz, cả hai đều dùng chung giao thức bus, các đường tín hiệu và sự sắp đặt điểm nối. Để nhận dạng thiết bị PCI 66 Mhz, một tín hiệu tĩnh được bổ sung để xác định lại sự tồn tại của chân đất, và một bít được đặt thêm vào thanh ghi cấu hình trạng thái (bít thứ 5 trong thanh ghi trạng thái). Một thiết bị PCI 66 Mhz hoạt động như một thiết bị PCI 33 Mhz khi nó được kết nối đến một bus PCI 33 Mhz. Tương tự, nếu bất kỳ một thiết bị PCI 33 Mhz nào được kết nối tới bus PCI 66 Mhz thì bus PCI 66 Mhz đó sẽ hoạt động như một bus PCI 33 Mhz và mô hình lập trình cho bus PCI 66 Mhz, 33 Mhz là như nhau. - Sự xác định thiết bị PCI 66 Mhz được thực hiện khi bít 66 Mhz Capable (là bít thứ 5 của thanh ghi trạng thái PCI) đặt lên mức 1. - Card bổ sung và bus phân đoạn không có khả năng thao tác trong chế độ 66 Mhz phải nối chân M66EN với đất. Một board hệ thống hoặc phân đoạn PCI 66 Mhz phải cung cấp một điện trở tăng cường đơn cho nguồn thiên áp Vcc trên chân M66EN. 3.3 Volt Clock 0.5 Vcc 0.4 Vcc 0.3 Vcc 0.4 Vcc,p-to-p (minimum) 0.6 Vcc 0.2 Vcc Thigh Tlow Tcyc Hình 2.7: Chu kỳ Clock trên bus PCI - Xung Clock theo chuẩn PCI trong khi trao đổi dữ liệu với tần số 33/66 Mhz có các tham số như được chỉ ra trên hình 2.7. 66 MHz 33 MHz4 Symbol Parameter Min Max Min Max Units Notes Tcyc CLK Cycle Time 15 30 30 ns 1.3 Thigh CLK High Time 6 11 ns Tlow CLK Low Time 6 11 ns - CLK Slew Rate 1.5 4 1 4 V/ns 2 Bảng tham số của chu kỳ Clock trên bus PCI 2.7. SỰ KẾT THÚC QUÁ TRÌNH TRAO ĐỔI DỮ LIỆU. Sự kết thúc của giao dịch PCI có thể được bắt đầu bởi đối tượng điều khiển hoặc đối tượng bị điều khiển. Trong thực tế không thể dừng quá trình giao dịch đơn phương. Phần còn lại của đối tượng điều khiển trong sự điều khiển cuối cùng và mang lại tất cả các quá trình giao dịch có thứ tự và có tính hệ thống. Tất cả quá trình giao dịch sẽ được kết thúc khi tín hiệu FRAME# và IRDY# được chuyển về mức không tích cực. 2.7.1. Đối tượng điều khiển bắt đầu sự kết thúc quá trình giao dịch. Cơ cấu kỹ thuật sử dụng trong đối tượng điều khiển bắt đầu kết thúc quá trình giao dịch trong khi tín hiệu FRAME# ở mức không tích cực và tín hiệu IRDY# ở mức tích cực. Những tín hiệu này chỉ cho đối tượng bị điều khiển biết rằng giai đoạn dữ liệu cuối cùng được tiến hành. Qúa trình trao đổi dữ liệu cuối cùng xảy ra khi cả 2 tín hiệu IRDY# và TRDY# ở mức tích cực. Quá trình giao dịch hoàn thành khi cả 2 tín hiệu FRAME# và IRDY# ở mức không tích cực (trạng thaí bus rỗi). Đối tượng điều khiển bắt đầu thực hiện quá trình giao dịch cuối cùng với 2 lý do sau: * Một là: Sự hoàn thành quá trình giao dịch khi đối tượng điều khiển có sự kết thúc giao dịch như mong muốn. * Hai là: Thời gian ấn định cho sự kết thúc giao dịch khi tín hiệu GNT# của đối tượng điều khiển ở mức không tích cực và bên trong bộ định thời trễ mất hiệu lực. Master – abort: Đối tượng điều khiển kết thúc quá trình trao đổi dữ liệu mà không cần quan tâm đến phản ứng của đối tượng bị điều khiển. Hình 2.8 cho ta thấy giai đoạn dữ liệu cuối cùng được hoàn tất khi tín hiệu FRAME# ở mức không tích cực và cả hai chân tín hiệu IRDY#, TRDY# ở mức tích cực. Như vậy, bus có trạng thái rỗi khi tín hiệu IRDY# không ở mức tích cực, điều đó chỉ xảy ra ở xung clock thứ 4. Lưu ý: Tín hiệu TRDY# không được yêu cầu ở mức tích cực tại xung clock thứ 3. Trên hình bên trái tín hiệu FRAME# ở mức không tích cực tại xung clock thứ 3 bởi vì bộ định thời mất hiệu lực và đối tượng điều khiển sẵn sàng cho quá trình truyền dữ liệu cuối cùng. 1 2 3 4 1 2 3 4 CLK GNT# FRAME# IRDY# TRDY# Hình 2.8: Đối tượng điều khiển bắt đầu kết thúc trao đổi. T.O T.O Tín hiệu FRAME# và IRDY# có quan hệ mật thiết với nhau trong tất cả các quá trình giao dịch. Tín hiệu FRAME# có thể ở mức không tích cực trước khi tín hiệu IRDY# ở mức tích cực. Cầu nối bus chủ trong hệ thống PC tương thích phải trở về xung thứ nhất trên một quá trình giao dịch đọc và loại bỏ dữ liệu trên một qúa trình giao dịch khi đã kết thúc với Master - abort. 2.7.2. Đối tượng bị điều khiển bắt đầu sự kết thúc quá trình giao dịch. Có 3 kiểu đối tượng bị điều khiển bắt đầu sự kết thúc giao dịch: + RETRY: Nó được đưa vào kết thúc yêu cầu trước khi bất kỳ dữ liệu nào được truyền đi bởi đối tượng bị điều khiển và tạm thời không cho phép tiến hành giao dịch. Điều kiện này có thể xảy ra bởi vì đối tượng bị điều khiển không có độ trễ ban đầu như yêu cầu. Retry là một trường hợp đặc biệt của sự ngưng kết nối không cần quan tâm đến quá trình trao đổi dữ liệu cuối cùng đã kết thúc hay chưa. + DESCONET: Yêu cầu cuối cùng sau khi dữ liệu được truyền tại giai đoạn dữ liệu đầu bởi vì đối tượng bị điều khiển không cho phép đáp ứng trong phạm vi độ trễ được yêu cầu. Lưu ý là Disconet # Retry. + TAGERT - ABORT: Là yêu cầu kết thúc bất thường bởi vì đối tượng bị điều khiển đã tìm ra một sai số tiền định hoặc nó không cho phép hoàn thành yêu cầu của đối tượng điều khiển. Ví dụ khi đối tượng điều khiển yêu cầu đọc dạng DWORD tất cả các Byte trong không gian địa chỉ vào/ra, nhưng đối tượng bị điều khiển được thiết kế chỉ để trao đổi dạng byte. Từ đó đối tượng bị điều khiển không thể hoàn thành yêu cầu, nó kết thúc yêu cầu với Tagert - abort. 1 2 3 4 5 6 7 8 CLK FRAME# IRDY# TRDY# Hình 2.9: Ngưng kết nối dạng thứ 1 STOP# DEVSEL# Data Phase Data Phase Data Phase Data Phase Data tranfer Data tranfer 2.7.3. Ngưng kết nối không cần sự kết thúc nhịp dữ liệu. Hình 2.9 chỉ ra cho ta thấy một quá trình giao dịch bị chấm dứt với việc ngưng kết nối không cần đến sự kết thúc nhịp dữ liệu. Một quá trình giao dịch bắt đầu khi tín hiệu FRAME# ở mức tích cực trên xung clock thứ 2 và chân IRDY# ở mức tích cực trên xung clock thứ 3. Đối tượng điều khiển đang yêu cầu truyền khối dữ liệu bởi vì cả hai tín hiẹu FRAME# và IRDY# đều được ở mức tích cực trên xung clock thứ 3. Đối tượng bị điều khiển khẳng định sự giao dịch thông qua tín hiệu DEVSEL# tại xung clock thứ 4. Nhịp dữ liệu đầu tiên hoàn thành trên xung clock thứ 4 và nhịp thứ hai hoàn thành trên xung clock thứ 5. Tại xung clock thứ 6 đối tượng điều khiển muốn tiếp tục truyền dữ liệu bởi vì cả 2 tín hiệu FRAME# và IRDY# vẫn còn ở mức tích cực. Tuy nhiên đối tượng bị điều khiển không thể hoàn thành bất cứ nhịp dữ liệu nào nữa và tại xung clock thứ 6 thì chân STOP# ở mức tích cực còn chân TRDY# không ở mức tích cực. Khi đó thì chân IRDY# và STOP# đều ở mức tích cực tại xung clock thứ 6, lúc đó nhịp dữ liệu thứ 3 hoàn thành. Đối tượng bị điều khiển vẫn tiếp tục giữ tín hiệu STOP# ở mức tích cực vì tín hiệu FRAME# vẫn còn ở mức tích cực tại xung clock thứ 6. Nhịp thứ 4 và là nhịp dữ liệu cuối cùng được hoàn thành tại xung clock thứ 7. Bus quay trở lại trạng thái nhàn rỗi tại xung clock thứ 8. Trong ví dụ này, hai nhịp dữ liệu đầu tiên hoàn thành sự truyền dữ liệu trong khi hai nhịp cuối cùng thì không. Đối tượng bị điều khiển có thể hoàn thành hai nhịp dữ liệu đầu tiên nhưng nhịp thứ ba thì không được hoàn thành. 1 2 3 4 5 6 7 8 CLK FRAME# IRDY# TRDY# Hình 2.10: Ngưng kết nối dạng thứ 2 STOP# DEVSEL# Data Phase Data Phase Data Phase Data tranfer Data tranfer Hình 2.10 cho ta thấy răng quá trình giao dịch cũng như được mô tả trên hình 2.9 ngoại trừ đối tượng điều khiển chèn thêm một trạng thái đợi ở xung clock thứ 6. Khi đó tín hiệu FRAME# đã được ở mức tích cực tại xung clock thứ 5, đối tượng điều khiển đưa vào ít nhất một nhịp dữ liệu và phải hoàn thành nó. Đối tượng điều khiển hoàn toàn không cho phép để chuyển tiếp bus tới trạng thái nhàn rỗi bởi tín hiệu FRAME# không ở mức tích cực và giữ tín hiệu IRDY# không ở mức tích cực. Khi đối tượng điều khiển sẵn sàng để xác nhận IRDY#, nó chỉ ra sự không xác nhận tín hiệu FRAME# tại nhịp dữ liệu cuối cùng và nhịp dữ liệu cuối cùng sẽ hoàn thành tại xung clock thứ 7, khi đó tín hiệu STOP# ở mức tích cực. Trong ví dụ này chỉ gồm có 3 nhịp dữ liệu trong khi đó ở ví dụ trước là 4, bởi vì đối tượng điều khiển đã chèn thêm một trạng thái đợi nên đã cho phép đối tượng điều khiển hoàn thành quá trình giao dịch bus với 3 nhịp dữ liệu. 1 2 3 4 CLK STOP# FRAME# IRDY# TRDY# Hình 2.11: Sự giao dịch bị bãi bỏ bởi đối tượng bị điêu khiển. DEVSEL# 2.7.4. Sự giao dịch bị bãi bỏ bởi đối tượng bị điều khiển. Hình 2.11 chỉ cho biết là đối tượng bị điều khiển yêu cầu một quá trình giao dịch để ngưng và không muốn đối tượng bị điều khiển lặp yêu cầu một lần nữa. Đôi lúc trước xung clock thứ 1 đối tượng điều khiển đã xác nhận tín hiệu FRAME# để khởi đầu sự yêu cầu và đối tượng bị điều khiển yêu cầu truy cập bơỉ sự xác nhận DEVSEL#. Nhịp dữ liệu có thể hoặc không thể hoàn thành trước xung clock 1. Tại xung clock thứ 2, đối tượng bị điều khiển xác định rằng đối tượng điều khiển có yêu cầu một quá trình giao dịch mà với quá trình giao dịch đó thì đối tượng bị điều khiển không có khả năng để hoàn thành hoặc xác định rằng có một lỗi không thể sửa được đã xảy ra. Tín hiệu DEVSEL# phải ở mức tích cực cho một hoặc nhiều hơn một xung clock. Đối với tín hiệu Target-abort thì TRDY# phải ở mức không tích cực khi tín hiệu DEVSEL# ở mức không tích cực và tín hiệu STOP# ở mức tích cực. Nếu bất cứ dữ liệu nào đã được truyền trong suốt nhịp dữ liệu trước đó của quá trình giao dịch hiện thời, vì tín hiệu STOP# đã ở mức tích cực tại xung clock thứ 2 và đối tượng điều khiển có thể xác nhận tín hiệu IRDY# tại xung clock thứ 3, nó không xác nhận FRAME# tại xung clock thứ 3. Quá trình giao dịch có thể hoàn thành tại xung clock thứ 3 bởi vì tín hiệu IRDY# và STOP# ở mức tích cực. Tại xung clock thứ 4, đối tượng điều khiển không xác nhận tín hiệu IRDY# và đối tượng bị điều khiển cũng không xác nhận tín hiệu STOP#. 2.7.5. Sự giao dịch trễ. Sự giao dịch trễ được thực hiện bởi đối tượng bị điều khiển và nó không thể hoàn thành nhịp dữ liệu ban đầu. Có hai kiểu thiết bị sẽ sử dụng thực hiện sự giao dịch trễ: Bộ điều khiển vào/ra và cầu nối (đây là cầu PCI-to-PCI). Một cách tổng quát bộ điều khiển vào/ra sẽ điều khiển sự giao dịch trễ đơn (delayed transaction) tại một thời điểm, trong khi đó cầu nối có thể chọn để điều khiển sự truyền khối để cải thiện sự thực thi hệ thống. Một thuận lợi của sự giao dịch trễ đó là bus không được giữ ở trạng thái đợi trong khi hoàn thành một truy cập tới thiết bị thấp hơn trong khi đối tượng điều khiển gốc tái phân giải cho bus. 2.8. ĐỒ HÌNH TRẠNG THÁI BUS PCI. Vì bus PCI đồng bộ hoàn toàn nên tất cả các thao tác đều hoạt động theo đồng hồ hệ thống. Hình 2.12 mô tả sự chuyển biến trạng thái trên bus PCI. 0 4 3 2 5 6 7 Reset Bắt đầu chu kỳ ghi Bắt đầu chu kỳ đọc Bus trống Kết thúc một chu kỳ Hình 2.12: Đồ hình trạng thái bus PCI Trạng thái 4: Bus đang ở trạng thái nghỉ, điểm đầu của 1 chu kỳ bus được phát hiện theo điều kiện này. Nó chuyển sang trạng thái 2 hoặc trạng thái 5 khi chu kỳ I/O được khởi hoạt cho thiết bị đích. Nó chuyển sang trạng thái 0 nếu chu kỳ bus bắt đầu mà không liên quan đến thiết bị này. Trạng thái 0: Bus ở trạng thái nghỉ, bất kỳ một tác vụ nào khác cũng được thực hiện. Nó đợi cho đến khi có điều kiện nghỉ thì từ trạng thái này nó không chuyển về trạng thái mới. Trạng thái 2: Một chu kỳ bus I/O được thực hiện cho thiết bị này. Thiết bị này sẽ xác nhận tín hiệu DEVSEL# và đáp ứng chu kỳ bus. Trong cùng thời gian thiết bị đích xác nhận tín hiệu TRDY# và báo rằng nó có thể nhận dữ liệu, lúc này nó khoá dữ liệu và chuyển về trạng thái 3 khi tín hiệu IRDY# được xác nhận và tín hiệu FRAME# không ở mức tích cực. Trạng thái 3: Các tín hiệu DEVSEL# và TRDY# không ở mức tích cực. Thông thường tín hiệu DEVSEL# và TRDY# được phát ở xung clock tiếp theo và chuyển về trạng thái nghỉ. Nhưng nó chuyển trực tiếp về trạng thái 2 hoặc trạng thái 5 mà không phải đi qua trạng thái chờ khi nó gặp thiết bị ở trạng thái này và lệnh đọc ghi I/O được đưa ra một lần nữa (trở nhanh về tác vụ ngược). Trạng thái 5: Bắt đầu chu kỳ đọc. Trạng thái 6: Chu kỳ đọc đang được thực hiện. Thiết bị đích xác nhận tín hiệu DEVSEL# và đáp trả chu kỳ đọc. Cùng lúc đó nó xuất dữ liệu đọc tới các đường tín hiệu AD và xác nhận tín hiệu TRDY#. Lúc này, nó chuyển về trạng thái 7 khi tín hiệu IRDY# được đặt mức tích cực (bộ khởi hoạt có thể tiếp nhận dữ liệu đọc) và tín hiệu FRAME# không có mức tích cực (nhịp dữ liệu cuối cùng). Trạng thái 7: Chu kỳ đọc kết thúc. Thiết bị đích bỏ các tín hiệu DEVSEL#, TRDY#. Sau đó phát tín hiệu DEVSEL#, TRDY# ở clock tiếp theo và nó chuyển về trạng thái nghỉ. Trạng thái 1: Không được xác định ngay cả khi nó gặp trạng thái này vì lý do lỗi thì nó cũng chuyển về trạng thái 0. 2.9. MODULE GIAO TIẾP BUS PCI 32 BÍT/33 MHZ. Sau khi nghiên cứu cấu tạo, đặc trưng kỹ thuật, cách tổ chức và nguyên tắc điều khiển giao diện PCI ta thấy khi thiết kế Card giao tiếp theo chuẩn PCI thì vần đề tổ chức không gian địa chỉ vào/ra, mã hoá, giải mã lệnh và trạng thái phải đảm bảo những yêu cầu quan trọng như: Tốc độ xử lý cao, hoạt động tin cậy...Một mạch tổ hợp sử dụng các linh kiện chuẩn sẽ không đáp ứng được yêu cầu này mà nó phải được thực hiện dựa trên việc sử dụng vi mạch chế tạo theo công nghệ ASIC (như vi mạch FPGA của hãng Xilink, Altera...). Sơ đồ khối môdun giao tiếp chuẩn PCI 32 bít/33 Mhz như hình 2.13. Trường thanh ghi cấu hình bus Logic điều khiển giao diện chủ Đệm, kích hoạt ĐC/DL, lệnh CLK RST# Slot PCI IDSEL# AD[32..0] C/BE[3..0]# GNT# REQ# FRAME# IRDY# TRDY# Logic điều khiển giao diện đích DEVSEL# STOP# INTA# Tạo, kiểm tra chẵn lẻ PAR# PERR# SERR# DATA[31..0] ADD[31..0] CSi RD/WR CSi+1 STATUS Hình 2.13: Sơ đồ khối môdun giao tiếp PCI 32bít/33Mhz Thiết bị ngoại vi Môdun được thiết kế để đảm bảo các yêu cầu cơ bản như: - Giao diện chủ và đích có thể hoạt động độc lập để tạo ra thông lượng lớn nhất và sử dụng bus PCI một cách hiệu quả, bảo đảm chính xác việc định thời và tuân thủ giao thức đã thiết kế. - Có các thanh ghi cấu hình, tạo ra tính thích nghi, khả năng thay đổi tỷ lệ, có thể sử dụng trong nhiều dạng tín hiệu có các yêu cầu khác nhau. Chức năng của các khối như sau: - Khối trường thanh ghi cấu hình: Thực hiện tất cả các thanh ghi cấu hinh theo yêu cầu của đặc tính bus cục bộ PCI. Có thể cài được các thanh ghi theo yêu cầu của hệ thống bằng cách đặt các tham số. Bao gồm các thanh ghi: * Các thanh ghi tham số hoá: ID thiết bị, ID hãng cung cấp, mã lớp, thanh ghi địa chỉ cơ sở BAR0-BAR5, ID hệ con, độ trễ lớn nhất, con trỏ liệt kê chức năng, ROM BAR mở rộng. * Thanh ghi địa chỉ cơ sở mặc định hoặc đặt trước, và thanh ghi địa chỉ cơ sở ROM mở rộng. * Các thanh ghi không tham số: Thanh ghi lệnh, trạng thái, dạng tiêu đề, bộ định thời mức trễ, kích thước cache, chân ngắt, đường ngắt. - Khối đệm, kích hoạt địa chỉ dữ liệu lệnh: Đệm địa chỉ, dữ liệu. Gộp và đăng ký tất cả các tín hiệu kích hoạt byte địa chỉ, dữ liệu, lệnh cho giao diện phía thiết bị ngoại vi. - Khối lôgic điều khiển giao diện chủ: Hoạt động ở chế độ chủ trên bus PCI. Có hỗ trợ ứng dụng cầu chủ. - Khối lôgic điều khiển giao diện đích: Hoạt động ở chế độ đích (bị điều khiển) trên bus PCI, có nhiệm vụ. * Hỗ trợ con trỏ dạnh mục chức năng. * Phát hiện lỗi chẵn lẻ. * Có 6 thanh ghi địa chỉ để thay đổi kích thước và kiểu bộ nhớ * Hỗ trợ ROM BAR mở rộng. * Phía thiết bị ngoại vi có thể yêu cầu huỷ đích, làm lại, hoặc huỷ kết nối. * Yêu cầu ngắt từ phía cục bộ. - Khối tạo và kiểm tra chẵn lẻ: Có trách nhiệm tạo và kiểm tra chẵn lẻ. Nó cũng khẳng định tín hiệu lỗi chẵn lẻ và các bít thanh ghi trạng thái cần thiết khác. Sau khi thiết kế và chế tạo xong phần cứng thì mã lệnh của trình điều khiển môdun được tạo ra dưới sự hỗ trợ của các bộ công cụ chuyên dụng, ví dụ như WinDriver (được giới thiệu chi tiết ở chương 3). Bằng các ngôn ngữ lập trình quen thuộc (C/C++, Delphi, Visual Basic...) để phát triển mã lệnh của trình điều khiển môdun do WinDriver hỗ trợ thành những hàm chức năng của môdun cần thiết kế. Chương này nghiên cứu những vấn đề cơ bản nhất của PCI nói chung và đề xuất một giải phát thiết kết môdun giao tiếp tốc độ cao 32 bít/33Mhz. Chương 3 tiếp tục nghiên cứu về giao diện USB – một chuẩn tốc độ cao đang được các nhà sản xuất thiết bị tập chung phát triển, nó cho phép nối máy tính với hầu hết các thiết bị ngoại vi thông dụng. CHƯƠNG 3 GIAO DIỆN USB VÀ THIẾT KẾ THIẾT BỊ SỬ DỤNG GIAO DIỆN USB 3.1. GIAO DIỆN USB. 3.1.1. Bộ kết nối USB. 2 1 3 4 1 2 3 4 Receptacle type A Receptical type B Hình 3.1: Bộ kết nối USB Tất cả các thiết bị USB có một sự kết nối ngược chiều tới máy chủ và tất cả máy chủ có một sự kết nối ngược chiều tới các thiết bị khác. Sự kết nối ngược chiều và thuận chiều thì không thể thay thế cho nhau một cách máy móc. Có hai kiểu khá phổ biến cho bộ kết nối USB, gọi là kiểu A và kiểu B. Hình 3.1 dưới đây cho ta biết hai kiểu kết nối trong USB: Kiểu A cắm mặt ngược chiều. Lỗ cắm kiểu A là loại lỗ cắm phổ biến nhất trong bảng mạch chủ của máy tính. Lỗ cắm kiểu B luôn luôn được kết nối thuận chiều và chính vì vậy lỗ cắm kiểu B luôn luôn được thiết lập trên thiết bị. Kiểu A có dây nối kiểu dây thẳng và một ma trận của USB có sự thay đổi trong một vài trạng thái lưu trữ của máy tính. Với lỗ cắm kiểu B sẽ cho ta có thể tối thiểu hoá các thiết bị kết nối. Hướng kết nối kiểu B có miền kết nối rộng và dễ dàng kết nối với các thiết bị ngoại vi khác. Thường kiểu màu của cáp dùng cho USB quy định như sau: Pin Number Cable Colour Function 1 Red VBUS (5 volts) 2 White D - 3 Green D + 4 Black Ground Bảng chức năng của chân tín hiệu trong bộ nối USB Với bảng này có thể cho biết nhận dạng các dây nối qua cổng USB. 3.1.2. Đắc tính điện của cổng USB. USB sử dụng một cặp biến đổi sai phân cho dữ liệu. Trên một thiết bị giao tiếp có tốc độ thấp và đầy đủ, nếu tín hiệu sai phân là ‘1’ thì dữ liệu được truyền qua chân D+ với mức điện áp trên 2.8V với một điện trở 15KW kéo xuống đất và qua chân D- (chân 2) có mức điện áp dưới 0.3V cùng một điện trở 1.5KW lên tới 3.6V. Nếu tín hiệu sai phân là ‘0’ thì trên một kênh điều khiển khác chân D- lớn hơn 2.8V và chân D+ ít hơn 0.3V cùng một giới hạn điện trở thích hợp. Thiết bị thu xác định một tín hiệu sai phân ‘1’ khi D+ là 200mV lớn hơn D- và là ‘0’ khi D+ ít hơn D-. Cực tính của tín hiệu bị đảo ngược tín hiệu phụ thuộc vào tốc độ của bus. Máy phát USB có cả tín hiệu sai phân và một tín hiệu ra. Tất nhiên trạng thái bus được chỉ ra bởi một tín hiệu trên D+, D- hoặc cả hai. Bus có tốc độ thấp hoặc cao có đặc tính trở kháng 90KW +/-15%. Đặc tính này rất quan trọng để quan sát dạng dữ liệu khi chọn trở kháng thoả mãn chuỗi điện trở cho D+ và D-. Chế độ tốc độ cao (480Mb/s) có dòng điện cố định 17.78mA cho việc truyền tín hiệu để giảm nhiễu. 3.1.3. Dòng trì hoãn. Chế độ trì hoãn tạm thời có tính bắt buộc với mọi thiết bị. Dòng hoãn có giá trị tối đa tương ứng với một đơn vị tải được mặc định là 500mA. Tại máy truy cập chủ cả D+ và D- có điện trở ngược là 15KW và tại thiết bị ngoại vi có điện trở 1.5KW. Rất nhiều thiết bị USB hoạt động với mức điện áp 3.3V. Một thiết bị USB có chế độ hoãn khi ở thiết bị đó không có hoạt động trên bus. Sự duy trì kết nối tới chế độ hoãn của máy truy cập chủ hoặc máy chủ thì thiết bị USB vẫn phải cung cấp nguồn để nó tăng cường sự lựa chọn điện trở trong suốt chế độ hoãn. 3.1.4. Giao thức truyền USB. Không giống giao thức truyền nối tiếp thông thường. Mỗi giao dịch USB bao gồm: - Gói dấu hiệu: Chứa địa chỉ. - Gói tính chất dữ liệu. - Gói trạng thái. Gói dấu hiệu được tạo ra bởi thiết bị chủ để mô tả gói tiếp theo và thao tác đối với dữ liệu là gì (đọc hay ghi), gói tiếp theo thường là gói dữ liệu mang theo dung lượng và cuối cùng là gói dùng để bắt tay, thông báo dữ liệu đã được nhận thành công hay có lỗi khi giao dịch. 3.1.5. Cấu trúc gói USB. Cấu trúc gói thông dụng bao gồm các trường: - Đồng bộ: Có độ dài 8 bít, dùng đồng bộ xung đồng hồ của đối tượng truyền và nhận dữ liệu. Group PID Value Packet Identifier Token 0001 OUT Token 1001 IN Token 1010 SOF Token 1101 SETUP Toke Data 0011 DATA0 1011 DATA1 0111 DATA2 1111 MDATA Handshake 0010 ACK Handshake 1010 NAK Handshake 1110 STALL Handshake 0110 NYET (No Resonse Yet) Special 1100 PREamlbe 1100 ERR 1000 Split 0100 Ping 0000 Reserved - Mã gói: Được mã hoá bởi 4 bít trong thanh ghi 8 bít, các kiểu cấu trúc gói như sau: - Thanh ghi PID. PID0 PID1 PID2 PID3 nPID0 nPID1 nPID2 nPID3 - Địa chỉ: Dùng 7 bít để dùng định địa chỉ 127 thiết bị ngoại vi. Và các trường khác như: Định điểm cuối, kiểm tra chu kỳ thừa, kết thúc gói. 3.1.6. Các kiểu gói USB. Có 4 kiểu gói khác nhau. - Gói dấu hiệu: Chỉ kiểu giao dịch: + Vào: Thông báo thiết bị USB HOST muốn đọc thông tin. + Ra: Thông báo thiết bị USB HOST muốn gửi thông tin. + Thiết lập: Bắt đầu điều khiển sự trao đổi. Định dạng của gói như sau: Sync PID ADDR ENDP CRC5 EOP - Gói dữ liệu: Có 2 kiểu, mỗi kiểu có thể truyền 0 đến 1023 byte dữ liệu. Đều có định dạng. Sync PID Data CRC16 EOP - Gói bắt tay: Có 3 kiểu. ACK: Thông báo gói đã được nhận thành công. NAK: Báo thiết bị không thể trao đổi dữ liệu. STALL: Thiết bị yêu cầu sự can thiệp của thiết bị điều khiển USB. Sync PID EOP - Gói bắt đầu của khung: Gồm 11 bít được thiết bị điều khiển USB gửi mỗi 1ms. Có định dạng sau: Sync PID Frame Number CRC5 EOP 3.1.7. Các kiểu truyền USB. - Truyền đẳng thời: Có mã thông báo và một nhịp dữ liệu. Nếu thiết bị điểu khiển USB đưa ra thông báo IN thì thiết bị USB đưa dữ liệu tới thiết bị điều khiển USB. Nếu thiết bị USB nhận dữ liệu từ thiết bị điều khiển USB ngay sau khi có mã thông báo OUT. Không có sự bắt tay trong cách truyền này. - Truyền khối: Giống như truyền đẳng thời nhưng nó có sự bắt tay sau khi nhận dữ liệu, để khẳng định dữ liệu đã được thu, phát một cách chính xác. Tín hiệu ACK sẽ được phát bởi thiết bị USB hoặc thiết bị điều khiển USB nếu dữ liệu nhận không lỗi. Thiết bị USB có 2 tín hiệu báo lỗi: + NAK báo tạm thời không thực hiện yêu cầu của thiết bị điều khiển USB. + STALL báo có 1 điều kiện sai, cần dến sự can thiệp của thiết bị điều khiển USB. - Truyền dẫn có điều khiển: Có 2 hoặc 3 trạng thái: Cài đặt, trạng thái và dữ liệu (tuỳ chọn). - Truyền có ngắt: Tương tự như truyền khối nhưng nó chỉ có một mã thông báo IN. Thiết bị USB cho phép truyền lại dữ liệu, nếu không có ngắt dữ liệu mới thì sẽ thực hiện bắt tay bằng tín hiệu NAK. Nếu thiết bị USB cần đến sự can thiệp của thiết bị điều khiển thì nó sẽ lại bắt tay bằng tín hiệu STALL. 3.1.8. Điều khiển dữ liệu. Sync PID ADDR ENDP CRC5 EOP 1. In Token Address & Endpoint Number Sync PID Data0 CRC16 EOP 2. Data1 Packet fist 8 byte of Device Descriptor Sync PID EOP 3.Ack Handshake Host Acknowledges Packet Máy chủ gửi thẻ khoá SETUP báo cho hàm biết rằng gói tiếp theo sẽ nằm trong gói SETUP. Trường địa chỉ giữ địa chỉ của thiết bị mà máy chủ đang yêu cầu bộ mô tả từ đó. Số thứ tự của điểm kết thúc là Zero để xác định ống mặc định. Khi đó máy chủ sẽ gửi gói Data0. Nó có dung lượng hữu ích 8 byte. Hàm USB xác nhận gói SETUP đã được đọc đúng. Nếu gói được nhận là sai thì thiết bị nhận sẽ bỏ qua gói này. Khi đó máy chủ sẽ gửi lại gói sau một khoảng thời gian trễ nhỏ. Ba gói trên mô tả tác vụ thứ nhất của USB. Thiết bị USB sẽ giải mã 8 byte nhận được và xác định xem đó có phải là yêu cầu của thiết bị hay không. Lúc đó thiết bị sẽ thử gửi bộ mô tả thiết bị và đó là tác vụ tiếp theo của USB. Sync PID ADDR ENDP CRC5 EOP 1. Setup Token Address & Endpoint Number Sync PID Data0 CRC16 EOP 2. Data0 Packet Device Descriptor Request Sync PID EOP 3.Ack Handshake Device ACK. Setup Packet Sync PID ADDR ENDP CRC5 EOP 1. In Token Address & Endpoint Number Sync PID Data1 CRC16 EOP 2. Data0 Packet Second 8 byte of Device Descriptor Sync PID EOP 3.Ack Handshake Host Acknowledges Packet Sync PID ADDR ENDP CRC5 EOP 1. In Token Address & Endpoint Number Sync PID Data0/1 CRC16 EOP 2. Data1/0 Packet last 8 byte of Device Descriptor Sync PID EOP 3.Ack Handshake Host Acknowledges Packet Trong trường hợp này, giả sử dữ liệu hữu ích là 8 byte. Máy chủ gửi thẻ khoá IN để báo cho thiết bị biết nó có thể gửi dữ liệu cho điểm cuối này. Vì kích thước gói dữ liệu lớn nhất là 8 byte nên ta có thể phân chia bộ mô tả thiết bị 12 byte ra để gửi. Khi bộ mô tả thiết bị đã được gửi thì tiếp theo sẽ là tác vụ trạng thái. Nếu tất cả các tác vụ thành công thì máy chủ sẽ gửi 1 gói chiều dài không để báo toàn bộ tác vụ đã thành công. Sync PID ADDR ENDP CRC5 EOP 1. Out Token Address & Endpoint Number Sync PID Data0 CRC16 EOP 2. Data0 Packet Zero Length Packet Sync PID EOP 3.Ack Handshake Function Ack. Entire Transactions 3.1.9. Hệ thống USB 2.0. Hệ thống cơ sở USB 2.0 được thiết kế để hỗ trợ thiết bị tốc độ cao, thiết bị tốc độ đầy đủ (full-speed) đến thiết bị tốc độ thấp. USB 2.0 tương thích ngược với thiết bị USB 1.x và cả hai có một số đặc trưng giống nhau như: Sử dụng cùng đầu nối. Dùng cáp tốc độ đầy đủ cho thiết bị tốc độ cao. Tận dụng cùng một mô hình truyền thông. Sử dụng cùng sự dự đoán đi kèm thiết bị. Sử dụng cùng kiểu cấu hình thiết bị. Hình 3.2: Minh hoạ hệ thống USB 2.0 cùng những thiết bị dùng nhiều loại cổng khác nhau. LS Dev LS Dev 2.0 Host Controller PCI Bus 1.x Hub FS Dev HS Dev 2.0 Hub HS Dev FS Dev LS Dev HS Dev Hình 3.2: USB 2.0 và những thiết bị USB 1.x FS Dev Phần tiếp theo ta sẽ thực hiện bài toán thiết kế mạch lập trình cho chíp FT232BM trong việc truyền dữ liệu dạng nối tiếp không đồng bộ. 3.2. CẤU TRÚC PHẦN CỨNG: FT232BM là một chíp sử dụng cho 1 USB, truyền dữ liệu dạng nối tiếp không đồng bộ. Nó có đầy đủ các tín hiệu bắt tay (handshaking) và tương thích Modem. Bộ UART hỗ trợ 7/8 bit dữ liệu, 1/2 bit stop và các bit Odd/Even/Mark/Space/No Parity. Tốc độ dữ liệu đạt tới 3Mbaud (TLL), 1Mbaud (RS232) và 3Mbaud (RS422/RS485). Chíp có bộ đệm thu 384 byte/bộ đệm phát 128byte với thông lượng dữ liệu lớn và có thể điều chỉnh được thời gian chờ của bộ đệm RX. FT232BM tự động điều khiển bộ đệm với RS485, hỗ trợ USB ngắt/khôi phục thông qua chân SLEEP# và RI#. Có chân PWREN# hỗ trợ cho cấp nguồn cho bus USB. Tích hợp bộ chuyển đổi trong UART và điều khiển tín hiệu tương thích với mức lôgíc 5V và 3.3V. FT232BM tích hợp bộ điều chỉnh 3.3V cho USB IO, mạch Power-On-Reset và bộ nhân tần PLL 6Mhz – 48Mhz. Có các chế độ truyền dữ liệu Khối và truyền đồng bộ cách biệt. Có thể hoạt động với nguồn đơn 4.4V đến 5.25Vvà nhiều các tính năng khác. 3.3. NHỮNG ƯU ĐIỂM NỔI BẬT: Tích hợp mạch Power-On-Reset (POR): FT232BM được kết hợp bên trong chức năng POR. Chân RESET# được duy trì cho phép các mạch ngoài reset lại IC nếu cần thiết, tuy nhiên với nhiều ứng dụng chân này có thể bỏ qua hoặc nối thẳng với Vcc. Thêm vào đó, một có chân ra RESET mới (RSTO#) để cho phép một mạch POR cung cấp một chức năng reset ổn định tới các bộ MCU hay các thiết bị bên ngoài. RSTO# là chân TEST ở các thế hệ IC trước. Tích hợp mạch RCCLK: Trong các thế hệ trước, mạch RC bên ngoài là rất cần thiết để bảo đảm cho bộ tạo dao động và bộ nhân tần PLL ổn định trước khi kích hoạt đồng hồ bên trong của IC. Mạch này hiện nay đã được đưa onchip - chân ấn định cho chức năng này được thiết kế giống như chân TEST và được nối đất khi hoạt động bình thường. Tích hợp bộ chuyển đổi mức trong giao diện UART và các tín hiệu điều khiển: ở các chíp thể hệ trước phải điều khiển UART và tín hiệu điều khiển ở mức lôgíc 5V CMOS. Bây giờ IC này đã có chân Vcc-IO riêng cho phép IC tương thích trực tiếp với 3.3V và các họ lôgic khác mà không cần IC chuyển đổi mức bên ngoài. Cải tiến điều khiển nguồn cho Bus USB, dòng điện thiết bị cao: Các thế hệ trước có chân USBEN, trở thành mức tích cực khi các thiết bị được đếm bởi USB. Để điều khiển nguồn, chân này phải trở thành cổng ngoài (bật, tắt) với chân SLEEP# và RESET#. Tác động của cổng này bây giờ được thực hiện onchip – USBEN nay đã được thay bằng PWREN#, nó có thể được sử dụng để điều khiển trực tiếp transistor hoặc MOSFET kênh P với ứng dụng yêu cầu bật tắt nguồn của mạch ngoài. Một khối EEPROM giúp cho nối đất bảo đảm hơn các dây giao diện UART của IC khi mà nguồn tắt (chân PWREN# ở mức cao). Trong chế độ này, bất kỳ điện áp dư nào ở mạch ngoài cũng được đưa xuống đất khi mà không cấp nguồn, qua đó bảo đảm rằng mạch ngoài được điều khiển bằng chân PWREN# reset một cách an toàn khi mà nguồn được khôi phục. Dòng điện ngắt thấp hơn: Sự tích hợp RCCLK trong IC và những cải tiến bên trong của mạch làm giảm dòng điện ngắt của FT232BM xuống dưới 200mA (trừ khi nối lên dương nguồn chân USB DP qua điện trở 1.5k) ở chế độ ngắt. Điều này cho phép nhiều thiết bị ngoài vi hơn gắn với USB ngắt trong giới hạn dòng điện là 500mA. Hỗ trợ cho USB truyền đồng bộ cách biệt: Khi truyền khối USB là lựa chọn tốt nhất để truyền dữ liệu thì thời gian sắp xếp dữ liệu không được bảo đảm. Với những ứng dụng để sắp xếp thì góc trễ (của ổ đĩa) sẽ ưu tiên cho dữ liệu toàn vẹn như là audio và dữ liệu video dải thông hẹp, với IC thế hệ mới cung cấp một lựa chọn của truyền dữ liệu đồng bộ cách biệt USB qua bit lựa chọn trong EEPROM. Có thể chương trình hoá thời gian chờ của bộ đệm thu: Trong các IC thế hệ trước, thời gian chờ của bộ đệm thu được sử dụng để làm cho dữ liệu còn lại từ bộ đệm thu được ổn định trong thời gian chờ 16ms. Thời gian chờ này bây giờ được chương trình hóa qua USB trong mỗi 1ms từ 1ms tới 255ms, qua đó cho phép IC trở nên tối ưu hơn cho các giao thức yêu cầu thời gian đáp ứng từ gói dữ liệu ngắn. Chân định thời TXDEN: TXDEN bây giờ đã được chuyển đổi để chuyển thời gian trễ ngoài mà trước đây được yêu cầu cho ứng dụng RS485 ở tốc độ baud cao. TXDEN đã hoạt động một cách chính xác trong điều kiện truyền “send-break”. Giảm các cấu trúc hỗ trợ bên ngoài cũng như đã loại bỏ hệ thống RCCLK và với hầu hết các ứng dụng cần thiết cho mạch reset bên ngoài, nhà sản xuất cũng loại bỏ điện trở 100k nối tới nguồn ở EECS để chọn hoạt động 6Mhz. Khi FT245BM được sử dụng không có kết cấu EEPROM thì EECS, EESK và EEDATA có thể loại bỏ. Với mạch yêu cầu thời gian reset dài (Khi mà thiết bị được reset từ bên ngoài sử dụng IC tạo tín hiệu reset, hoặc reset được điều khiển bởi cổng IO của MCU…) thì một mạch transistor cũng không cần thiết nữa giống như một điện trở 1.5k ở chân USB DP có thể nối với chân RESETO# thay cho 3.3V. Chú ý: RESETO# ra ở mức 3.3V, không phải ở mức 5 V. Kết cấu này thích hợp cho thiết kế mới. Trong một vài cấu trúc, RSTO# có thể được sử dụng để reset mạch bên ngoài hay MCU. Hỗ trợ EEPROM bên ngoài:Ở các thế hệ trước chỉ hỗ trợ loại EEPROM 93C46 (128x16 bit). Thế hệ này có thể làm việc được với cả EEPROM loại 93C56 (256x16 bit) và 93C66 (512x16 bit). Không gian mở rộng không sử dụng bởi IC này mà nó để sử dụng cho các MCU, các hệ bên ngoài khi mà FT245BM bị giữ ở chế độ Reset. USB 2.0 (Tuỳ chọn tốc độ): một khối EEPROM lựa chọn sẽ cho phép FT232BM trở lại thiết bị USB 2.0 khi xung đột với USB 1.1. Chú ý: IC nên ở chế độ Full Speed USB 2.0 (12Mb/s) khi xung đột với chế độ High Speed USB 2.0 (480Mb/s). Hỗ trợ nhiều thiết bị mà không có EEPROM: khi không có EEPROM (hay EEPROM trắng hoặc lỗi) được gắn vào IC thì FT245BM không cần phải thông báo số Seri (như một phần trong nhận dạng) nữa. Nó cho phép nhiều thiết bị được nối đồng thời tới cùng một PC. Tuy nhiên các nhà sản xuất vẫn khuyến cáo rằng nên sử dụng EEPROM, khi không có số Seri thì thiết bị chỉ được nhận dạng bởi cổng Hub trong cây USB được kết nối tới, nó có thể thay đổi nếu người sử dụng sau cắm lại thiết bị vào cổng khác. 3.4. SƠ ĐỒ KHỐI: Hình 3.3 Sơ đồ khối FT232BM Chức năng cụ thể của các khối: Bộ điều chỉnh LDO 3.3V: Khối 3.3V LDO Regulator cấp điện áp 3.3V để điều khiển bộ đệm ra của khối thu phát USB. Nó yêu cấu phải có một tụ điện ở ngoài được gắn với chân ra 3.3V OUT của bộ điều chỉnh. Nó cũng có tác dụng cấp nguồn 3.3 V cho chân RSTOUT#. Nhiệm vụ chính của khối này là cấp nguồn cho bộ thu phát USB (USB Transceiver) và khối Reset Generator, ngoài ra nó còn có thể cấp nguồn cho một số mạch ngoài. Tuy nhiên có một số mạch ngoài yêu cầu 3.3V với dòng điện không vượt quá 5mA cũng có thể lấy nguồn tại chân 3.3V OUT. Bộ thu phát USB (USB Transceiver): Khối USB Transceiver cho phép USB 1.1/USB 2.0 tương thích về mặt tốc độ vật lý cao nhất đối với cáp USB. Bộ điều khiển ra cấp mức 3.3V cho điều khiển tín hiệu tốc độ chậm, khi mà một bộ thu vi sai và 2 đường dây đơn bộ thu cung cấp dữ liệu USB vào, SEO và điều kiện Reset USB được nhận biết. USB DPLL: Khối này khoá đối với dữ liệu USB NRZI tới, cấp mạch đồng hồ xung nhịp riêng và tín hiệu dữ liệu tới khối SIE. Bộ tạo dao động 6Mhz: Khối tạo dao động 6Mhz cấp xung đồng bộ 6Mhz tới đầu vào của bộ x8 Clock Multiplier. X8 Clock Multiplier: Lấy xung nhịp 6Mhz từ khối tạo dao động 6Mhz và cấp dao động 12Mhz cho SIE, USB Protocol Engine và khối điều khiển FIFO. Nó cũng cung cấp cho khối USB DPLL dao động 48Mhz. Động cơ giao diện tuần tự SIE(Serial Interface Engine): Biến đổi dữ liệu USB từ nối tiếp thành song song và ngược lại. Tương ứng với cấu trúc kĩ thuật của USB 1.1, nó cho phép nén hoặc không nén bit và phát CRC5/CRC16 (mã kiểm tra quay vòng dư) để kiểm tra luồng dữ liệu USB. Động cơ giao thức USB (USB Protocol Engine): Quản lý luồng dữ liệu từ thiết bị USB nhờ điều khiển điểm cuối. Nó sử dụng giao thức USB ở mức thấp, yêu cầu được phát ra bởi mạch điều khiển USB chủ và nhờ các lệnh để điều khiển các tham số chức năng UART. Bộ đệm TX cổng kép (128 byte) (Dual Port TX Buffer): Dữ liệu phát từ USB được giữ trong Bộ đệm TX và đưa từ bộ đệm tới thanh ghi phát UART dưới sự điều khiển của bộ điều khiển UART FIFO. Bộ đệm RX cổng kép (384 byte) (Dual Port RX Buffer): Dữ liệu từ thanh ghi thu UART được giữ trong bộ đệm RX trước khi được chuyển đi bởi SIE theo yêu cầu gửi dữ liệu từ USB chứa trong điểm cuối. Bộ điều khiển UART FIFO (UART FIFO Controller): Bộ điều khiển UART FIFO quản lý việc truyền dữ liệu giữa bộ đệm cổng kép RX & TX và thanh ghi thu, phát. UART: UART thực hiện biến đổi dữ liệu 7/8 bit dữ liệu song song thành nối tiếp và nối tiếp thành song song một cách không đồng bộ tại giao diện RS232 (RS422 và 485). Các tín hiệu điều khiển được hỗ trợ bởi UART bao gồm RTS, CTS, DSR, DTR, DCD và RI. Bộ UART cung cấp bộ phát cho phép tín hiệu điều khiển (TXDEN) hỗ trợ bộ thu RS485. UART hỗ trợ các chế độ bắt tay RTS/CTR, DSR/DTR và X-On, X-Off. Chế độ bắt tay là cần thiết, nó quản lý bởi phần cứng để bảo đảm thời gian đáp ứng nhanh. UART cũng hỗ trợ cho việc thiết lập tín hiệu BREAK của RS232 và điều kiện dò sóng mang. Bộ phát tốc độ Baud (Baud Rate Generator): Bộ phát tốc độ Baud cung cấp mạch đồng hồ x16 đưa vào UART từ đồng hồ 48MHz và gồm có mạch đếm gộp 14 bit và 3 thanh ghi bit nhằm cung cấp một điều chỉnh ổn định cho tốc độ Baud (thường dùng để chia cho một số cộng với một phân số). Bộ này xác định tốc độ của UART mà có thể chương trình hoá từ 183 Baud tới 3 triệu Baud. Giao diện EEPROM (EEPROM Interface): Cho dù FT232BM không bắt buộc phải làm việc với EEPROM, nhưng một EEPROM bên ngoài 93C46(93C56, 93C66) có thể được sử dụng để điều chỉnh USB VID, PID, số Seri … của FT232BM. EEPROM cũng cần thiết cho những ứng dụng mà có nhiều FT232BM kết nối với 1 PC đơn nhờ các bộ điều khiển dựa vào một số Seri duy nhất cho mỗi thiết bị để gắn với một cổng COM ảo cho mỗi thiết bị riêng. Các tham số được điều khiển nhờ EEPROM bao gồm “Đánh thức từ xa” (Remote Wake Up), Chế độ truyền đẳng thời (isochronous Transfer mode), Soft Pull Down on Power-Off và chế độ nhận diện USB2.0. EEPROM có thể có cấu hình 16bit giống như MicroChip 93LC46B hay tương đương với tốc độ đồng hồ 1Mb/s tại điện áp Vcc = 4,4V tới 5,25V. Nếu không có EEPROM được gắn vào (hoặc EEPROM trắng) thì FT232BM sẽ sử dụng VID, PID,… ngầm định. Trong trường hợp thiết bị sẽ không có số seri giống như phần nhận diện USB. Figure 1 Hình 3.4 Sơ đồ chân nối cắm đầu ra thiết bị 3.5. CHỨC NĂNG CỦA TÍN HIỆU: Nhóm giao diện UART: Chân Tín hiệu Vào ra Chức năng 25 TXD OUT Truyền dữ liệu ra không đồng bộ 24 RXD IN Nhận dữ liệu vào không đồng bộ 23 RTS# OUT Request To Send 22 CTS# IN Clear To Send 21 DTR# OUT Data Terminal Ready 20 DSR# IN Data Set Ready 19 DCD# IN Data Carrier Detect 18 RI# IN Ring Indicator. Khi ở chế độ “Đánh thức từ xa” trong EEPROM, đặt RI ở mức thấp có thể khôi phục hoạt động của bộ điều khiển chủ PC USB từ chế độ ngắt. 16 TXDEN OUT Cho phép truyền dữ liệu với chuẩn RS485 Nhóm giao diện USB: Chân Tín hiệu Vào ra Chức năng 7 USBDP I/O Tín hiệu vi sai dương của USB (khi cần thiết có thể nối lên chân 3.3V OUT hoặc RSTOUT# thông qua điện trở 1.5k) 8 USBDM I/O Tín hiệu vi sai âm của USB Nhóm giao diện EEPROM: Chân Tín hiệu Vào ra Chức năng 32 EECS I/O Chọn chíp EEPROM. Khi hoạt động ở 48Mhz nối EECS với đất qua điện trở 10k. Khi hoạt động ở 6 Mhz nối đất không cần điện trở. Quá trình reset ở 3 trạng thái. 1 EESK OUT Tín hiệu đồng hồ cho EEPROM. ở 3 trạng thái khi reset hoặc điều khiển ngoài 2 EEDATA I/O Được nối trực tiếp với chân Data-In của EEPROM và với Data-Out của EEPROM qua điện trở 2.2k. Đồng thời nối chân Data-Out của EEPROM với Vcc qua điện trở 10k khi hoạt động bình thường. Quá trình Reset ở 3 trạng thái. Nhóm điều khiển nguồn: Chân Tín hiệu Vào ra Chức năng 10 SLEEP# OUT ở mức thấp với chế độ ngắt USB. Thông thường được dùng để tắt nguồn IC biến đổi TTL ngoài thành mức RS232 trong USB -> ứng dụng thiết kế bộ chuyển đổi RS232. 15 PWREN# OUT ở mức thấp sau khi IC được định cấu hình thông qua USB, tiếp đó ở mức cao khi USB ngắt. Có thể được sử dụng để điều khiển nguồn cho mạch lôgíc ngoài thông qua 1 MOSFET kênh P chuyển đổi. Cho phép “tuỳ chọn tương thích nối đất” trong EEPROM khi sử dụng chân PWREN# theo cách này. 14 PWRCTL IN Cấp nguồn cho Bus – nối đất / Tự cấp nguồn – nối nguồn. Nhóm tín hiệu tổng hợp: Chân Tín hiệu Vào ra Chức năng 4 RESET# IN Có thể được sử dụng bởi thiết bị ngoài để RESET lại FT232BM. Nếu không cần thiết thì nối với Vcc 5 RSTOUT# OUT Là đầu ra của bộ Reset Generator bên trong. ở trở kháng cao trong khoảng 2ms sau khi Vcc>3,5V và đồng hồ bên trong khởi động, sau đó giữ đầu ra của nó đúng 3.3V đầu ra của bộ điều chỉnh bên trong. 12 TXLED# O.C Điều khiển LED – Là các xung âm khi dữ liệu truyền qua USB 11 RXLED# O.C Điều khiển LED – Là các xung âm khi dữ liệu nhận qua USB 27 XTIN IN Đầu vào của khối tạo dao động 6Mhz. Chân này cũng có thể được điều khiển bởi đồng hồ bên ngoài 6Mhz. Chú ý: Ngưỡng biến đổi của chân này là Vcc/2, do vậy nếu điều khiển từ nguồn bên ngoài thì nguồn này phải được điều khiển ở mức 5V CMOS hoặc nguồn xoay chiều có giá trị trung bình là Vcc/2 28 XTOUT OUT Đầu ra của bộ tạo dao động 6Mhz. XTOUT ngừng dao động khi USB ngắt, tuy nhiên phải cẩn trọng nếu sử dụng tín hiệu này tạo dao động cho mạch ngoài. 31 TEST IN Đưa IC về chế độ Test – Khi hoạt động bình thường phải nối đất tín hiệu này. Nhóm tín hiệu đất và nguồn: Chân Tín hiệu Vào ra Chức năng 6 3V3OUT OUT Là đầu ra của bộ điều chỉnh L.D.O. Chân này nên được tách với GND thông qua 1 tụ gốm 33nF. Mục đích chính của chân này là cung cấp nguồn 3.3V bên trong cho bộ đệm thu USB và chân RSTOUT#. Với dòng điện nhỏ (£5mA) có thể qua chân này để cấp nguồn cho mạch lôgic bên ngoài 3.3V nếu cần thiết. 3,26 Vcc PWR Cấp +4.4V tới 5.25V tới mạch, LDO và các chân giao diện không phải là UART 13 VccIO PWR Cấp 3V tới 5.25V cho các chân giao diện UART 10..12, 14..16 và 18..25. Nếu tương thích với mạch lôgíc 3.3V thì nối VccIO tới nguồn 3.3V bên ngoài, còn không thì nối với Vcc để điều khiển ra ở mức 5V CMOS 9,17 GND PWR Chân nối đất 30 AVCC PWR Nguồn nuôi Analog cho bộ nhân tần x8 bên trong 29 AGND PWR Nối đất Analog cho bộ nhân tần x8 bên trong. 3.6. VÍ DỤ VỀ KẾT CẤU CỦA IC: 3.6.1 Kết cấu bộ tạo dao động: Hình 3.5 Cấu hình bộ tạo dao động với các bộ cộng hưởng 2 chân và 3 chân. Hình 3.6 Cấu hình EEPROM Cấu hình EEPROM: Hình trên mô tả cách nối FT232 với EEPROM. Chân EECS (chân 32) được nối trực tiếp với chân chip select của EEPROM. EESK (chân 1) được nối tới chân đồng hồ (SK) của EEPROM. EEDATA (chân 2) nối trực tiếp với Data In của EEPROM. Do cùng điều kiện điện thế nên chân Data Output (Dout) của EEPROM có thể đồng thời điều khiển bởi chân EEDATA của FT232BM. Để tránh xung đột dữ liệu trong điều kiện này thì chân Dout của EEPROM được nối với EEDATA của FT232BM qua điện trở 2,2k. Trong quá trình USB khởi động hay reset thì FT232BM sẽ kiểm tra EEPROM để kiểm tra xem có EEPROM nối với nó khôngvà dữ liệu trên đó có hợp lệ không? Nếu cả 2 điều kiện trên thoả mãn thì FT232BM sẽ sử dụng dữ liệu trong EEPROM, nếu không thì nó sẽ sử dụng giá trị ngầm định. Nếu một lệnh hợp lệ được phát tới EEPROM từ FT232BM thì EEPROM sẽ báo cho biết đã nhận được lệnh bằng cách đưa chân Dout của nó xuống mức thấp. Để kiểm tra điều kiện này, cần thiết phải đưa Dout lên mức cao bằng cách sử dụng điện trở 10k (nối với Vcc). Nếu không nhận được lệnh thì EEDATA sẽ ở mức cao do điện trở 10k nối với Vcc trong mỗi phần của chu kì và thiết bị sẽ nhận một lệnh không hợp lệ hoặc không có EEPROM. Có 2 loại EEPROM trên thị trường – một loại có dung lượng bus 16 bits và loại kia là 8 bits. FT232BM đòi hỏi EEPROM với độ rộng bus 16 bit ví dụ như loại 93LC46B. EEPROM phải có khả năng đọc dữ liệu với tốc độ đồng hồ 1Mb với nguồn nuôi 4.4V tới 5.25V. Hãy xét chân 6 và 7 của EEPROM. Một số thì ghi rõ nó không để kết nối gì cả, còn một số lại sử dụng nó để chọn chế độ 8/16 bit hoặc để kiểm tra. Do vậy cần phải xem xét cẩn thận các chế độ của nó. Ta hoàn toàn có thể “chia sẻ” EEPROM giữa FT232BM với các thiết bị ngoại vi khác như là MCU. Tuy nhiên điều này chỉ được thực hiện khi FT245BM ở chế độ Reset, tương ứng với EEPROM ở chế độ 3 trạng thái tại thời điểm đó. Với một kết cấu thông thường có thể sử dụng 4 bit của một cổng IO của MCU. 1 bit có thể sử dụng để giữ cho FT232BM sử dụng chế độ Reset khi đang hoạt động, còn 3 bít còn lại có thể kết nối tới chân EECS, EESK và EEDATA của FT232BM để cho phép đọc/ghi dữ liệu vào EEPROM tại thời điểm đó. Khi mà MCU đọc/ghi dữ liệu vào EEPROM thì nó có thể đặt chân RESET# lên mức cao và cho phép FT232BM tự định dạng và đếm thông qua USB. Kết cấu nguồn Bus USB: Hình dưới mô tả kết cấu cấp nguồn cho Bus USB thông dụng. Một bộ nguồn Bus USB sẽ lấy năng lượng từ Bus USB. Nguyên tắc cơ bản của thiết bị nguồn Bus USB như sau: Khi cắm vào thì thiết bị phải hoạt động ở dòng điện không lớn hơn 100mA. Một thiết bị nguồn Bus USB cao (mà dòng điện lớn hơn 100mA) nên sử dụng chân PWREN# để giữ cho dòng hiện thời 100mA khi cắm vào và 500mA khi USB ngắt. Khi USB ngắt thì thiết bị có dòng không quá 500mA. Một thiết bị sử dụng dòng trên 100mA không được phép cắm vào Hub của thiết bị nguồn Bus USB. Bất kì thiết bị nào >500mA không được nối vào Bus USB. Hình 3.7 Kết cấu nguồn bus USB Chân POWERCTL (14) sẽ xuống thấp để cho biết thiết bị đang sử dụng chức năng nguồn Bus USB. Mô tả nguồn trong EEPROM có thể được chương trình hoá để cho biết dòng điện trong thiết bị. Một cuộn cảm có thể được mắc nối tiếp với nguồn Bus để ngăn tạp âm từ thiết bị và mạch tổ hợp phân tán qua cáp USB tới Chủ PC. Giá trị của cuộn cảm tuỳ thuộc vào mạch. Kết cấu tự cấp nguồn USB: Hình 2.8 Sơ đồ kết cấu tự cấp nguồn USB Hình trên mô tả cách tự cấp nguồn cho USB. Một thiết bị USB tự cấp nguồn sẽ lấy nguồn từ chính nguồn nuôi của nó và không có dòng điện chạy trên Bus USB. Nguyên tắc cơ bản của thiết bị tự cấp nguồn USB như sau: Thiết bị tự cấp nguồn không gây dòng điện chạy trên Bus USB khi mà Chủ USB và Hub USB đã cắt nguồn. Một thiết bị tự cấp nguồn có thể có dòng điện lớn như hoạt động bình thường và khi ngắt giống với nguồn nuôi của nó. Một thiết bị tự cấp nguồn USB có thể sử dụng với bất kỳ Chủ USB và với đồng thời Hub và Bus tự cấp nguồn USB. Chân POWERCTL (14) lên mức cao cho biết thiết bị đang sử dụng chức năng tự cấp nguồn. Mô tả nguồn trong EEPROM có thể được chương trình hoá ở giá trị ‘0’. Những yêu cầu: Một mạch nối nguồn 1.5k ở USB DP phải được điều chỉnh để chống lại dòng điện chạy trên USB DP qua điện trở 1.5k nối nguồn khi mà chủ và hub USB tắt nguồn. Lỗi này có thể gây cho một số chủ USB hay bộ điều khiển Hub bật lên một cách bất thường. Có thể dùng một transistor (2N3906) để tạo nguồn cho Bus USB. Nó được nối dạng emitơ lặp lại do đó khi có nguồn trên bus USB thì transistor sẽ bão hoà và điện trở 1.5k được nối trực tiếp với RSTOUT#. Khi nguồn USB tắt thì Transistor cũng tắt theo do đó chặn không cho dòng điện chạy vào dây USB DP. Kết cấu tự cấp nguồn (2): Hình dưới mô tả một cách mạch cấp nguồn tương tự kết cấu 1. Lúc này điện trở 1.5k ở chân USB DP đươc nối với RSTOUT# như ở mạch cấp nguồn cho Bus. Tuy nhiên, cấp nguồn cho bus USB được sử dụng để điều khiển chân RESET# của FT232BM. Khi Chủ USB hay nguồn Hub tắt, RESET# sẽ ở mức thấp và thiết bị sẽ được giữ ở trạng thái Reset. Reset ở mức thấp làm cho RSTOUT cũng ở mức thấp, do vậy không có dòng điện chạy trên dây USB DP qua điện trở 1.5k trở nên. Chú ý: Khi FT232BM ở chế độ RESET thì các chân ghép nối UART đều là dạng 3 trạng thái. Các chân này có điện trở trong 200k nối tới Vcc-IO, do vậy nó sẽ ở mức cao trừ khi được điều khiển bởi một số thiết bị bên ngoài. Trong 2 kết cấu trên, việc sử dụng phụ thuộc vào thiết kế của thiết bị ngoại vi. Với kết cấu đầu tiên thì FT232BM là “Live” – khi cổng USB tắt thì sẽ không có hoạt động trên USB bus và thiết bị sẽ ở trạng thái nghỉ trong một vài ms. ở kết cấu này thì chân RESET# có thể vẫn hoạt động nếu cần thiết. Ở kết cấu thứ hai, FT232BM giữ ở trạng thái RESET khi mà USB tắt. Khi Reset, bộ tạo dao động 6Mhz của FT245BM vẫn hoạt động và thiết bị sẽ không ở trạng thái nguồn thấp. Hình 2.9 Sơ đồ Kết cấu tự cấp nguồn (2) Kết cấu giao diện UART: Kết cấu bộ chuyển đổi USB -> RS422: Kết cấu bộ chuyển đổi USB -> RS485: Kết cấu giao diện LED: Mạch tạo nguồn cho Bus với mức lôgic 3.3v/nguồn nuôi: Hình trên cho biết cách kết cấu FT232BM để tương thích với thiết bị mức lôgic 3.3V. Trong ví dụ này, một bộ phát 3.3V riêng biệt được sử dụng để tạo mức lôgíc 3.3V từ nguồn nuôi USB. VccIO được nối với đầu ra của bộ điều chỉnh 3.3V, khi hoạt động có thể làm cho các chân IO của giao diện FIFO điều chỉnh ra ở mức 3.3V. Với mạch cấp nguồn cho Bus USB, cần phải cân nhắc khi chọn bộ điều chỉnh. Bộ điều chỉnh phải có khả năng duy trì điện áp đầu ra với điện áp đầu vào là 4.4V. Phải chọn bộ điều chỉnh LDO (Low Drop Out) Dòng điện tĩnh của bộ điều chỉnh phải thấp để khi USB ngắt, dòng điện tổng yêu cầu của USB £ 500mA Khi sử dụng FT232BM với thiết kế tự cấp nguồn USB, thì chỉ nối đơn giản Vcc IO với nguồn 3.3V của thiết bị ngoài. Dòng điện ngắt không được quan tâm trong thiết kế tự cấp nguồn. Trong một số trường hợp, khi chỉ yêu cầu một dòng điện nhỏ (<5mA), nó có thể hoàn toàn sử dụng bộ điều chỉnh gắn liền của FT232BM để cấp nguồn 3.3V mà không yêu cầu bất kỳ một thành phần thêm nào. Trong trường hợp này, nối VccIO với chân 3.3V OUT của FT232BM. Mạch cấp nguồn (£100mA) với nguồn điều khiển: Mạch cấp nguồn cho Bus USB cần để có thể hạ thấp nguồn trong chế độ ngắt USB nhằm đạt được dòng điện ngắt yêu cầu £500mA (gồm cả ngoại vi lôgic). Một số ngoại vi lôgíc có thể tự hạ thấp nguồn xuống trạng thái dòng điện thấp bằng cách điều chỉnh chân POWEREN#. Với các ngoại vi lôgic không thể tự hạ thấp nguồn thì FT232BM cung cấp một cách đơn giản nhưng hiệu quả để tắt nguồn mạch ngoại vi khi USB ngắt. Hình trên cho thấy cách sử dụng một MOSFET kênh P để điều khiển nguồn của mạch ngoại vi lôgic. Thiết bị hợp lý có thể là Fairchild NDT456P hay tương đương. Kết cấu này phù hợp để cấp nguồn cho ngoại vi lôgic mà dòng điện của nguồn nuôi bình thường £100mA và được điều khiển không phát ra dòng điện đáng kể khi tăng nguồn. Để bật nguồn ngoại vi lôgíc mà vượt quá 100mA hay phát ra dòng đáng kể khi bật, thì nên thiết kế IC bật nguồn chuyên dụng với chế độ “Soft-Start” gắn liền thay cho sử dụng MOSFET (Chẳng hạn IC: MIC2025-2BM hoặc tương đương). Hãy chú ý đến những điểm sau khi kết nối với nguồn điều khiển: Thiết bị lôgíc được điều khiển phải có mạch Reset cho nó mà nó sẽ tự động reset nó khi mà nguồn được ứng dụng lại không có ngắt. Đặt lựa chọn nối đất cho EEPROM của FT232BM. Với mạch điều khiển nguồn 3.3V VccIO không được phép nối qua mạch ngoại vi (chân PWREN# lấy nguồn Vcc từ VccIO). Có thể nối chuyển mạch nguồn với đầu ra của bộ điều chỉnh 3.3V và ngoại vi lôgic 3.3V hoặc nguồn VccIO từ chân 3.3V OUT của FT232BM nếu thích hợp. KẾT LUẬN Sau gần bốn tháng bằng sự cố gắng của bản thân và được sự giúp đỡ của các thầy cô khoa VTĐT em đã hoàn thành tất cả các nội dung được giao cụ thể. Đồ án đã trình bày tổng quan giao diện máy tính và đã đi sâu vào tìm hiểu về cấu trúc, phương pháp tổ chức, troa đổi dữ liệu của giao diện PCI. Sau đó, nghiên cứu giao diện đang được các nhà sản xuất tập trung phát triển, đó là giao diện USB. Ngoài ra chương 3 đưa ra ví dụ về thiết kế giao diện USB sử dụng chíp FT232BM. Hướng phát triển tiếp theo của đề tài là tiếp tục nghiên cứu và tìm hiểu giao diện tốc độ cao nhằm phát triển hơn nữa các ứng dụng sử dụng trong trình điều khiển tự động. Cuối cùng, tôi xin chân thành cảm thầy giáo PGS.TS Đỗ Xuân Tiến và thầy giáo Th.S Lê Trọng Cự đã tận tình giúp đỡ em hoàn thành bản đồ án này. Học viên Phạm Đức Hạnh Tài liệu tham khảo Đỗ Xuân Tiến, Kỹ thuật lập trình và điều khiển hệ thống, NXB Khoa học và Kỹ thuật, Hà Nội 1999. Đỗ Xuân Tiến, Kỹ thuật vi xử lí và lập trình ASSEMBLY, NXB Khoa học và Kỹ thuật, Hà Nội 2001. Universal Serial Bus Specification Revision 2.0, 2000 FT232BM Designers Guide Version 2.0, 2002/2003

Các file đính kèm theo tài liệu này:

  • docTổng quan giao diện máy tính - Thiết kế giao diện USB sử dụng chip FT232BM.doc