Luận văn Kỹ thuật FPGA áp dụng thực hiện cho bộ mã FEC trong hệ DVB

Tài liệu Luận văn Kỹ thuật FPGA áp dụng thực hiện cho bộ mã FEC trong hệ DVB: i -------------------------------------------------------------------------------------------------------- ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TRẦN KHÁNH THÀNH KỸ THUẬT FPGA ÁP DỤNG THỰC HIỆN CHO BỘ MÃ FEC TRONG HỆ DVB LUẬN VĂN THẠC SĨ Hà Nội - 2009 ii -------------------------------------------------------------------------------------------------------- MỤC LỤC MỤC LỤC.......................................................................................................................... i THUẬT NGỮ VIẾT TẮT ................................................................................................. v DANH MỤC HÌNH VẼ..................................................................................................viii DANH MỤC BẢNG BIỂU ............................................................................................... x MỞ ĐẦU..................................................................................................

pdf89 trang | Chia sẻ: haohao | Lượt xem: 1020 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Luận văn Kỹ thuật FPGA áp dụng thực hiện cho bộ mã FEC trong hệ DVB, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
i -------------------------------------------------------------------------------------------------------- ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TRẦN KHÁNH THÀNH KỸ THUẬT FPGA ÁP DỤNG THỰC HIỆN CHO BỘ MÃ FEC TRONG HỆ DVB LUẬN VĂN THẠC SĨ Hà Nội - 2009 ii -------------------------------------------------------------------------------------------------------- MỤC LỤC MỤC LỤC.......................................................................................................................... i THUẬT NGỮ VIẾT TẮT ................................................................................................. v DANH MỤC HÌNH VẼ..................................................................................................viii DANH MỤC BẢNG BIỂU ............................................................................................... x MỞ ĐẦU........................................................................................................................... 1 CHƯƠNG 1: TỔNG QUAN VỀ FPGA ................................................................3 1.1. Mở đầu..............................................................................................................3 1.2. Tổng quan về FPGA..........................................................................................3 1.3. Xilinx FPGAs....................................................................................................5 1.3.1 Virtex-II CLB........................................................................................................ 5 1.3.2 Virtex-II IOB......................................................................................................... 7 1.3.3 Virtex-II Clock Tiles ............................................................................................. 7 1.3.4. VirtexII Pro .......................................................................................................... 8 1.4. VTsim ...............................................................................................................9 1.5. Các công trình liên quan tới VTsim: JHDL, JBits, JHDLBits và ADB...........10 1.5.1 JHDL................................................................................................................... 11 1.5.2 Cơ bản về JBits và ADB...................................................................................... 11 1.5.3 JHDLBits ............................................................................................................ 11 1.6. Những cải tiến JHDLBits và JBits ...................................................................12 1.7 Ứng dụng FPGA trong tính toán ô....................................................................14 1.7.1 Thiết kế mức cao tổng quát.................................................................................. 14 1.7.2. MULTIPLE........................................................................................................ 17 1.7.3 SINGLE .............................................................................................................. 19 1.7.4 BOOTH............................................................................................................... 21 1.7. 5 BIT..................................................................................................................... 23 1.8. Kết luận...........................................................................................................25 CHƯƠNG 2: MỘT SỐ ỨNG DỤNG CỦA FPGA..............................................27 2.1. Mở đầu............................................................................................................27 2.2. Ứng dụng FPGA cho trạm gốc 3G-UMTS.......................................................27 2.2.1. Tại sao lại lựa chọn FPGA .................................................................................. 27 2.2.1.1 Giảm rủi ro thiết kế....................................................................................... 27 2.2.1.2. Đáp ứng yêu cầu phát triển của BTS ............................................................ 27 2.2.2. Hạn chế của DSP ban đầu ................................................................................... 28 2.2.2.1 Thiết bị DSP ban đầu .................................................................................... 28 2.2.2.2. Các ưu điểm về hiệu năng của FPGA ........................................................... 28 2.2.3. Các tính năng chính của FPGA trong 3G ............................................................ 29 2.2.3.1. Tốc độ xử lý tín hiệu cao.............................................................................. 29 2.2.3.2 Kiểm tra lỗi đường truyền (FEC) .................................................................. 29 2.2.3.3. Chức năng bắc cầu và điều khiển ................................................................. 29 2.2.3.4. Các giao diện thích ứng với các chuẩn mạng khác nhau ............................... 30 2.2.4. Máy thu phát 3G................................................................................................ 30 2.2.4.1. Máy thu – phát ............................................................................................. 30 2.2.4.2 Máy thu Rake .............................................................................................. 31 2.2.5. Sơ đồ MUD ........................................................................................................ 31 2.2.6.1 Cơ sở ............................................................................................................ 32 2.2.6.2 Kiến trúc VLSI nhằm tới FPGA.................................................................... 35 2.2.6.3 Phương thức thực hiện ................................................................................. 39 2.2.6.4. Kết quả ........................................................................................................ 40 iii -------------------------------------------------------------------------------------------------------- 2.2.6. Phân vùng hệ thống ............................................................................................ 43 2.2.6.1. Phân vùng Mip cao ...................................................................................... 43 2.2.6.2. Phân vùng Mip thấp ..................................................................................... 44 2.2.6.3. Phân vùng quản lý hệ thống ......................................................................... 44 2.2.7. Mô hình FPGA với 64 kênh AMR ...................................................................... 44 2.3. Ứng dụng FPGA cho mã Turbo.......................................................................45 2.3.1. Bộ mã hóa TCC.................................................................................................. 45 2.3.1.1. Các tính năng ............................................................................................... 45 2.3.1.2. Ứng dụng ..................................................................................................... 45 2.3.1.3 Mô tả tổng quan ............................................................................................ 45 2.3.1.4. Hoạt động đa kênh ....................................................................................... 47 2.3.2. Bộ giải mã TCC.................................................................................................. 52 2.3.2.1. Giới thiệu:.................................................................................................... 52 2.3.2.2. Đặc tính: ...................................................................................................... 52 2.3.2.3. Ứng dụng ..................................................................................................... 52 2.3.2.4. Mô tả chung ................................................................................................ 52 2.4. Kết luận...........................................................................................................54 CHƯƠNG 3: KỸ THUẬT FPGA ÁP DỤNG THỰC HIỆN CHO BỘ MÃ FEC HỆ DVB………........................................................................................................55 3.1. Mở đầu............................................................................................................55 3.2. Bộ mã hoá và giải mã FEC, hệ DVB ...............................................................55 3.2.1. Tổng quan về FEC .............................................................................................. 55 3.2.1.2. Tổng quan về truyền hình số mặt đất ........................................................... 56 3.3. Sơ đồ mô phỏng bộ mã hoá giải mã FEC trong hệ DVB ..................................60 3.3.1. Sơ đồ khối chung ................................................................................................ 60 3.3.2. Bộ mã hoá .......................................................................................................... 60 3.3.2.1 Bộ trễ........................................................................................................... 61 3.3.2.2 Bộ mã hoá ngoài .......................................................................................... 61 3.3.2.3 Khối mã hoá chập ........................................................................................ 61 3.3.2.4 Khối mã hoá trong ....................................................................................... 62 3.3.2.5 Khối đục lỗ .................................................................................................. 62 3.3.3. Bộ giải mã .......................................................................................................... 63 3.3.3.1 Bộ giải mã hoá ngoài ................................................................................... 63 3.3.3.2 Khối giải mã hoá chập .................................................................................. 63 3.3.3.3 Khối giải mã hoá trong................................................................................. 64 3.3.2.3 Khối giải đục lỗ ........................................................................................... 64 3.4. Thực hiện và kết quả thu được.........................................................................64 3.4.1. Các bước thực hiện.......................................................................................64 3.4.1.1 Thực hiện trong phần mềm Math lab............................................................ 64 3.4.1.1 Thực hiện trong ISE..................................................................................... 65 3.4.1.1 Thực hiện trong FUSE ................................................................................. 65 3.4.1. Kết quả thu được cho bộ mã hoá...................................................................65 3.4.1.1 Đầu vào mã hoá ........................................................................................... 65 3.4.1.2 Đầu ra sau khi mã hoá.................................................................................. 65 3.4.1. Kết quả thu được cho bộ giải mã ..................................................................65 3.4.1.2 Đầu ra sau khi giải mã hoá ........................................................................... 65 3.4.1.2 Đầu ra giải mã sẵn sàng FIFO ...................................................................... 66 KẾT LUẬN ..................................................................................................................... 67 TÀI LIỆU THAM KHẢO................................................................................................ 69 PHỤ LỤC........................................................................................................................ 70 iv -------------------------------------------------------------------------------------------------------- 1.Liên hệ giữa Matlab và FPGA.............................................................................70 1.1. Tích hợp thuật toán Matlab vào trong thiết kế FPGA. ............................................ 70 1.2. Matlab một môi trường phát triển cho thiết kế FPGA............................................. 75 v -------------------------------------------------------------------------------------------------------- THUẬT NGỮ VIẾT TẮT A ADB Alternate Wire Database Cơ sở dữ liệu dây thay thế AHB Advanced High- Performance Bus Bus hiệu năng cao tăng cường AMR Adaptive Multi Rate Bộ thích ứng đa tốc độ API Application Programming Interface Giao diện lập trình ứng dụng ARIB Association of Radio Industries and Businesses ASIC Application Specific Intergrated Circuit Vi mạch tích hợp ứng dụng ATSC Advanced Television System Committee B BLER Block Error Rate Tỷ lệ lỗi khối BST- OFDM Band Segmented OFDM BTS Base Transceiver Station Trạm phát gốc C CC Convolutional Coding Mã hoá chập CDMA Code Device Multiplex Access Đa truy nhập phân chia theo mã CLB Configurable Logic Block Khối logic khả cấu hình CM Core Module Modun lõi D DCI Digitally Controlled Impedance Trở kháng điều khiển kỹ thuật số DCM Digital Clock Manager Bộ quản lý clock kỹ thuật số DDR Dual Data Rate Công nghệ lưu dữ liệu kép vi -------------------------------------------------------------------------------------------------------- DIGEG Digital Broadcasting Expert Group DSP Digital Signal Processing Xử lý tín hiệu số DVB-T Digital Video Broadcasting- Terrestrial F FPGA Field Programmable Gate Array Vi mạch mảng phần tử logic khả trình FSM Finite State Machine Thiết bị trạng thái hạn chế FEC Forward Error Correction Gửi bản tin tự sửa lỗi G GUI Graphical User Interface Giao diện đồ họa người dùng H HDL Hardware Description Languages Ngôn ngữ mô tả phần cứng I ISI Inter Symbols Interference Nhiễu xuyên ký tự ITU International Telecommunication Union Tổ chức viễn thông toàn cầu IOB Input/Output Block Khối vào ra J JHDL Java Hardware Desription language Ngôn ngữ mô tả phần cứng trên nền Java L LUT Look Up Table Bảng dò tìm LE Logical Element Phần tử logic LM Logic Module Modun logic M MIMO Multi Input Multi Output Nhiều đầu vào nhiều đầu ra vii -------------------------------------------------------------------------------------------------------- MMSE Minimum-Mean-Square-Error Lỗi trung bình quân phương tối thiểu MAI Multi-Access Interferences Nhiễu đa truy nhập MUD Multi User Detection Bộ dò đa người dùng O OVSF Orthogonal Variable Spreading Factor Hệ số trải phổ khả biến trực giao R RTL Register Transfer Level Mức chuyển đổi thanh ghi RTR Run Time Reconfiguration Đặt lại cấu hình thực RAM Random Access Memory Bộ nhớ truy cập ngẫu nhiên ROM Read Only Memory Bộ nhớ chỉ đọc RS Reed-solomon S SEU Single Event Upset Nhiễu biến cố đơn P PE Processing Elements Thành phần xử lý PLD Programmable Logic Device Thiết bị logic khả lập trình X XHWIF The Xilinx Hardware Interface Giao diện phần cứng Xilinx U UMTS Universal Mobile Telecommunications Service Dịch vụ viễn thông di động toàn cầu W WCDMA Wideband Code Division Multiple Access Đa truy nhập phân chia theo mã băng rộng 3GPP Third Generation Partnership Project Dự án hợp tác 3G viii -------------------------------------------------------------------------------------------------------- DANH MỤC HÌNH VẼ Hình 1. 1 Bốn lĩnh vực thiết kế chính của FPGA .................................................................... 3 Hình 1. 2 Kết cấu bên trong FPGA......................................................................................... 4 Hình 1. 3 Sơ đồ tile Virtex-II FPGA....................................................................................... 5 Hình 1. 4 Bố trí chức năng của LE ......................................................................................... 6 Hình 1. 5 Bố trí chức năng của LE ......................................................................................... 7 Hình 1. 6 Cấu hình bộ đệm clock toàn cục ............................................................................. 8 Hình 1. 7 Cấu tạo của JHDL ................................................................................................ 10 Hình 1. 8 Dòng thiết kế JHDLBits ....................................................................................... 12 Hình 1. 9 Quá trình xác nhận dòng bits ................................................................................ 14 Hình 1. 10 Thuật toán thực thi FPGA ................................................................................... 15 Hình 1. 11 Cấu trúc FPGA mức cao ..................................................................................... 16 Hình 1. 12 Cấu trúc hàng ô................................................................................................... 17 Hình 1. 13 Luồng nóng tính toán, công thức cho kiến trúc MULTIPLE................................ 18 Hình 1. 14 Các bộ nhân nguyên được canh chỉnh ................................................................. 18 Hình 1. 15 Cấu trúc ô cho kiến trúc MULTIPLE .................................................................. 19 Hình 1. 16 Các phép toán luồng nóng phân vùng cho kiến trúc SINGLE.............................. 20 Hình 1. 17 Các cấu trúc của bộ điều khiển và ô cho kiến trúc SINGLE ................................ 20 Hình 1. 18 Phần cứng cho thuật toán Booth.......................................................................... 21 Hình 1. 19 Thuật toán Booth cho bộ nhân bù hai.................................................................. 22 Hình 1. 20 Các phép tính luồng nóng cho kiến trúc BOOTH ................................................ 22 Hình 1. 21 Cấu trúc ô và bộ điều khiển cho kiến trúc BOOTH ............................................. 23 Hình 1. 22 Tuyến đầu tiên của kiến trúc BIT cho tính toán luồng nóng................................. 24 Hình 1. 23 Cấu trúc ô và bộ điều khiển cho kiến trúc BIT .................................................... 25 Hình 2. 1 Sự phức tạp của thiết bị và quá trình phát triển của FPGA .................................... 27 Hình 2. 2 Bản thiết kế DSP ban đầu ..................................................................................... 28 Hình 2. 3 Khối thực thi FPGA.............................................................................................. 28 Hình 2. 4 Sơ đồ máy phát 3G ............................................................................................... 30 Hình 2. 5 Sơ đồ máy thu 3G ................................................................................................. 30 Hình 2. 6 Mô hình máy thu Rake ......................................................................................... 31 Hình 2. 7 Sơ đồ khối bộ dò đa người dùng (CF-MUD)......................................................... 32 Hình 2. 8 Nguyên lý của khối lấy dấu (a) và khối tách sóng cho k người dùng (b)................ 34 Hình 2. 9 Ước tính hiệu năng của phương pháp MUD.......................................................... 35 Hình 2. 10 Kiến trúc phần cứng đơn giản hoá của CF-MUD ................................................ 36 Hình 2. 11 Ánh xạ CF-MUD lên phần tử xử lý và bộ nhớ trong ........................................... 38 Hình 2. 12 Tiến trình xử lý pipeline trong tiến trình xử lý lấy dấu ........................................ 41 Hình 2. 13 Chiến lược đường ống (pipeline) trong tiến trình xử lý tách ................................ 41 Hình 2. 14 Mô hình FPGA với 64 kênh AMR ...................................................................... 44 Hình 2. 15 Các cổng vào ra bộ mã hóa TCC......................................................................... 46 Hình 2. 16 Cấu trúc bên trongbộ mã hóa TCC...................................................................... 46 Hình 2. 17 Cấu trúc TCC RSC ............................................................................................. 47 Hình 2. 18 Thông lượng bộ đệm kép .................................................................................... 48 Hình 2. 19 Định thời đầu vào ............................................................................................... 49 Hình 2. 20 Định thời đầu ra (Bits đuôi) ................................................................................ 50 Hình 2. 21 Định thời đầu ra ( Không bit đuôi) ...................................................................... 50 Hình 3. 1 Máy thu VSB........................................................................................................ 57 Hình 3. 2 Sơ đồ khối và giao diện đo trong hệ thống DVB-T................................................ 58 ix -------------------------------------------------------------------------------------------------------- Hình 3. 3 Hệ thống thu phát truyền hình số mặt đất .............................................................. 59 Hình 3. 4 DVB-T Equipment by ITIS................................................................................... 59 Hình 3. 5. Sơ đồ khối và giao diện đo phía máy thu DVB-T................................................. 59 Hình 3. 6 Sơ đồ khối của bộ điều chế DVB-T ...................................................................... 60 Hình 3. 7 Sơ đồ khối mô phỏng bộ mã và giải mã FEC cho DVB với kênh giả nhiễu trắng .. 60 Hình 3. 8 Sơ đồ khối mã hoá ................................................................................................ 61 Hình 3. 9 Bộ trễ ................................................................................................................... 61 Hình 3. 10 Khối mã hoá ngoài.............................................................................................. 61 Hình 3. 11 Khối mã hoá chập ............................................................................................... 62 Hình 3. 12 Khối mã hoá trong .............................................................................................. 62 Hình 3. 13 Khối đục lỗ ......................................................................................................... 62 Hình 3. 14 Sơ đồ khối bộ giải mã ......................................................................................... 63 Hình 3. 15 Đầu ra sau khi giải mã hoá.................................................................................. 66 Hình p- 1 Bộ tạo hệ thống, giao diện AccelChip................................................................... 71 Hình p- 2 Kiến trúc bộ lọc ước tính Kalman......................................................................... 73 Hình p- 3 Sơ đồ khối bộ lọc Kalman .................................................................................... 73 Hình p- 4 Hệ thống Matlab công cụ đánh giá thuật toán ....................................................... 75 Hình p- 5 Matlab trên cơ sở RTL thiết kế luồng cho FPGA .................................................. 76 Hình p- 6 Chuỗi phát- thu HSDPA....................................................................................... 78 x -------------------------------------------------------------------------------------------------------- DANH MỤC BẢNG BIỂU Bảng 1.1: Kích cỡ và loại SelectRAM.................................................................................... 6 Bảng 2.1: Số người dùng hoạt động cùng lúc tối đa có thể phân biệt được............................ 41 Bảng 2.2: Tỷ lệ sử dụng phần cứng (%) tương ứng với số người dùng tối đa. ....................... 42 Bảng 2.3: Sử dụng tài nguyên và hiệu suất ........................................................................... 51 1 -------------------------------------------------------------------------------------------------------- MỞ ĐẦU Sự thành công của công nghệ kỹ thuật mới phụ thuộc rất nhiều vào khả năng tích hợp, hội tụ của các giải thuật, các thuật toán đã được nghiên cứu cho các vi mạch vào thực tế. Các hệ thống ngày càng tiến đến xu hướng hội tụ lại và trở nên mềm dẻo hơn, dễ dàng cấu hình cũng như khả năng phối kết hợp với các hệ thống khác. Trong những năm gần đây đòi hỏi về sử dụng các dịch vụ di động tốc độ cao, băng thông lớn đang ngày càng tăng. Yêu cầu về tốc độ dữ liệu cao dẫn tới lớp vật lý trở nên phức tạp hơn. Đã có rất nhiều mô hình được nghiên cứu và đưa và sử dụng thực tế như là MIMO, quá trình xử lý tín hiệu số tiên tiến, các mô hình sửa lỗi trước tiên tiến (FEC)…Rất nhiều chuẩn như là WCDMA (HSDPA), CDMA2000(1xEV-DO), Wi-MAX đã tích hợp các mô hình này. Cùng với đó các thuật toán phức tạp cũng được đề nghị để cải tiến hiệu năng của máy phát – thu. Mặc dù rất nhiều thuật toán đã được đề nghị nhưng không phải thuật toán nào cũng được đưa vào sử dụng trong thực tế do độ phức tạp của thuật toán và hạn chế về công nghệ. Hơn nữa, đối với các thiết bị di động thì các thuật toán này phải có khả năng trong việc sử dụng tài nguyên, gọn nhẹ và tiêu thụ ít năng lượng. FPGA cho phép cấu hình lại để thay đổi chức năng logic. Khả năng này cho phép nhà thiết kế có thể thoải mái phát triển, dễ dàng thay đổi chức năng phần cứng giống như đang thực hiện trên phần mềm.Thậm chí FPGA còn có thể tự động cấu hình để thực hiện các chức năng khác nhau trong những khoảng thời gian khác nhau. Phù hợp cho việc triển khai các thiết bị vô tuyến thông minh (Cognitive Radio System - CRS), vô tuyến định nghĩa bằng phân mềm (Software – Defined Radio - SDR). Khả năng cho phép cấu hình lại chức năng logic có thể ứng dụng trong nhiều kiểu hệ thống để cài đặt hệ thống tự khắc phục lỗi, tạo hệ thống có thể được cấu hình cho nhiều môi trường hoạt động, hoặc cài đặt thành phần cứng đa mục đích cho các ứng dụng khác nhau. Hơn nữa, sử dụng FPGA có thể dễ thiết kế và kiểm tra phần cứng cũng như khả năng nhanh chóng tung sản phẩm ra thị trường. Với những ưu thế của FPGA nó cho thấy lựa chọn FPGA là một tất yếu vào thời điểm hiện nay để đáp ứng các yêu cầu về thiết bị, làm cho khả năng triển khai các thuật toán cũng như giải thuật mới được đưa vào thực tế. Nhận thức được những vấn đề trên, cùng với sự định hướng của thầy giáo TS. TRỊNH ANH VŨ, tôi đã lựa chọn đề tài nghiên cứu của mình là “Kỹ thuật FPGA áp dụng thực hiện cho bộ mã hoá FEC trong hệ DVB” Theo đó, đồ án được tổ chức và trình bày trong ba chương Chương 1: Tổng quan về FPGA Trình bày chung về FPGA, Xilinx FPGAs, các cải tiến của JBits, các công trình trước đây và hiện nay có liên quan tới VTsim, các công cụ ảnh hưởng tới VTsim. Mô tả bốn kiến trúc tính toán ô thực hiện cho việc nghiên cứu, trình bày phần cứng FPGA mức cao dùng cho mỗi từng kiến trúc để thuận tiện tương tác với hệ thống phân loại dựa trên cách tính toán của mỗi kiến trúc. Bốn kiến trúc MULTIPLE, SINGLE, BOOTH, và BIT được phân biệt dựa vào cách mà chúng tính toán giải quyết bằng các cấp độ tương đương và bằng cách thực hiện các phép tính số học khác nhau. Phần cứng được 2 -------------------------------------------------------------------------------------------------------- thiết kế cụ thể cho từng vấn đề, bởi vậy mỗi kiến trúc bao gồm các khối số học rất nhỏ yêu cầu để tính toán vấn đề. Do đó, mỗi khối số học được dùng chỉ trong mỗi xung đồng hồ. Tính logic yêu cầu cho tương tác hệ thống được giảm nhỏ nhất để lưu trữ nhiều vùng chíp có thể cho tính toán ô. Chương 2: Một vài ứng dụng của FPGA Trình bày một số lý do tại sao sử dụng FPGA cho trạm gốc, một số tính năng chính của FPGA ứng dụng trong trạm gốc 3G, sơ đồ máy thu - phát, sơ đồ MUD, trình bày về hoạt động của các mạch thực tế cho việc mã hóa và giải mã Turbo. Chương 3: Ứng dụng FPGA trong bộ mã hoá FEC trong hệ DVB Trình bày tổng quan về FEC, về hệ DVB, về sơ đồ thiết kế cụ thể bằng Mathlab được cung cấp sẵn có bởi Xilinx mô phỏng bộ mã hoá FEC, các kết quả thu được. Được sự quan tâm giúp đỡ chỉ bảo tận tình trong nghiên cứu và cung cấp tài liệu của thầy giáo TS. Trịnh Anh Vũ và ý kiến đóng góp của các thầy cô giáo cùng với sự cố gắng, nỗ lực của bản thân đồ án được hoàn thành với nội dung được giao ở mức độ và phạm vi nhất định. Tuy nhiên do trình độ và thời gian có hạn, đồ án chắc chắn không tránh khỏi những sai sót, kính mong các thầy cô giáo và các bạn sinh viên chỉ bảo đóng góp ý kiến chỉnh sửa và định hướng nội dung cho hướng phát triển tiếp theo. Tôi xin chân thành cảm ơn thầy giáo TS. Trịnh Anh Vũ đã tận tình giúp đỡ trong thời gian học tập và làm đồ án tốt nghiệp. Hà Nội, ngày…..tháng…..năm 2009 Người làm đồ án HV. Trần Khánh Thành 3 -------------------------------------------------------------------------------------------------------- CHƯƠNG 1: TỔNG QUAN VỀ FPGA 1.1. Mở đầu Để đi đến việc trình bày ứng dụng FPGA trong thông tin vô tuyến cũng như 3G, cần có cái nhìn tổng quan về FPGA, các ưu việt của nó cũng như khả năng ứng dụng của FPGA. Muốn vậy, chương sẽ được tổ chức trình bày như sau:  Tổng quan về FPGA.  Xilinx FPGAs.  VTsim.  Các công trình liên quan tới VTsim: JHDL, JBits, JHDLBits và ADB.  Những cải tiến JHDLBits và Jbits. 1.2. Tổng quan về FPGA FPGAs xuất hiện lần đầu tiên vào giữa những năm 1980 nhằm mục đích thay thế cho các mạch logic đa chip bằng giải pháp tự tái cấu hình đơn. FPGAs đã có những phát triển mạnh, vượt lên trên vai trò thay thế cho vi mạch logic đa chip. Hiện nay, các ứng dụng FPGA bao gồm: Xử lý tín hiệu và hình ảnh, tăng tốc đồ hoạ, nhận dạng/phân tích mục tiêu quân sự, mã hoá, tính toán tái cấu trúc, đồng xử lý bộ nhớ off- chip. FPGAs được ứng dụng trong bốn lĩnh vực thiết kế chính: Tạo nguyên mẫu nhanh, mô phỏng, trước đặc chế, và đặc chế hoàn toàn. Hình 1.1 minh hoạ phạm vi ứng dụng FPGAs chia theo bốn lĩnh vực thiết kế. 30% 3% 30% 37% Tạo khuôn mẫu nhanh Mô phỏng Trước đặc chế Đặc chế hoàn toàn Hình 1. 1 Bốn lĩnh vực thiết kế chính của FPGA FPGAs là kết quả của việc kết hợp hai công nghệ khác nhau: Thiết bị logic khả trình (PLDs) và vi mạch bán dẫn chuyên dụng (ASICs). Một bộ PLD đơn giản bao gồm một mảng các cổng AND và OR để tạo ra các mạch cơ bản. ASICs là các loại chip do người dùng tạo ra, thường được sử dụng trong các ứng dụng lớn do chi phí kỹ thuật không đệ quy (NREs) cao hơn nhiều so với một chu kỳ FPGAs. FPGAs có cấu tạo bao gồm hàng ngàn cho tới hàng triệu cổng cùng nhiều tổ hợp, khối logic và công nghệ xử lý khác nhau. Cấu trúc bên trong của FPGA thường được xây dựng theo dạng tile đối xứng, bao 4 -------------------------------------------------------------------------------------------------------- gồm một mạng lưới các khối chuyển mạch, logic, kênh dây dẫn, khối vào ra. Hình 1.2 minh hoạ một ma trận gồm các khối chuyển mạch (SB), kênh dây dẫn và khối logic. Khối chuyển mạch trong kết cấu FPGA là bộ phận nối các dây dẫn bên trong với nhau. Khối chuyển mạch cho phép các đoạn dây ngang chuyển sang các đoạn dây dọc và ngược lại. Khối chuyển mạch cũng cho phép các đoạn dây ngang kết nối với các dây ngang khách cũng như dây dọc kết nối với nhau. SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB SB Logic Block Logic Block Logic Block Logic Block Logic Block Logic Block Logic Block Logic Block Logic Block Logic Block Logic Block Logic Block Logic Block Logic Block Logic Block Logic Block Logic Block Logic Block Logic Block Logic Block SB SB SB SB SB SB SB SB SB SB Hình 1. 2 Kết cấu bên trong FPGA Kích cỡ và thành phần của một khối logic rất khác nhau, tuỳ theo nhà sản xuất và nhu cầu thị trường. Ví dụ, FPGAs hướng đến các giải pháp đem lại hiệu quả về chi phí, thường có các khối logic đơn giản hơn là FPGA dành cho các ứng dụng hiệu năng cao. Mặc dù thành phần bên trong các khối logic có thể thay đổi theo cấu trúc, nhưng có hai khối cơ bản bên trong khối logic: Phần tử nhớ và bộ tạo hàm. Phần tử nhớ giúp cho các nhà thiết kế lưu trữ tạm thời dữ liệu cho đến khi đạt được điều kiện mong đợi. Bộ tạo hàm có thể đặt cấu hình để tạo hàm bất kỳ cho đến số đầu vào của bộ tạo hàm. Tuỳ thuộc vào cấu trúc, một số bộ tạo hàm có thể hoạt động ở các chế độ khác nhau như bộ nhớ truy cập ngẫu nhiên (RAM), bộ nhớ chỉ đọc (ROM), hoặc một số chế độ phức tạp hơn như thanh ghi thay đổi. FPGAs được đặt cấu hình thông qua một dòng bits nạp trong thiết bị. Dòng bits là một file tạo ra bởi các nhà sản xuất FPGA, đặt cấu hình cho các khối chuyển mạch, các khối logic và các mạch logic khác bên trong FPGA. FPGAs đã làm thay đổi ranh giới về điện tử kỹ thuật số khi cho phép nhà thiết kế xây dựng từng mảng. Nhiều nhà thiết kế có thể nhanh chóng kiểm tra và xác nhận chức năng của mỗi mảng trong hệ thống để bảo đảm chính xác nhiệm vụ của chúng 5 -------------------------------------------------------------------------------------------------------- khi kết hợp với phần còn lại của hệ thống. Trong bối cảnh kỹ thuật thiết lập lại cấu hình ngày càng được quan tâm nhiều hơn, FPGAs được thừa nhận là giải pháp khả thi và kinh tế nhất. Cho dù thiết kế có thể đặt cấu hình là ổn định hay linh hoạt thì với FPGAs, đều có thể thực hiện chu kỳ thiết kế nhanh chóng, linh hoạt, hiệu quả cao [4]. 1.3. Xilinx FPGAs Xilinx là công ty dẫn đầu trong thị trường FPGA, được thành lập năm 1984, sản phẩm FPGA đầu tiên của họ được thương mại hoá năm 1985. Hiện nay, Xilinx hướng cho họ sản phẩm Virtex-II FPGAs đến cấp thiết kế với mật độ và hiệu năng cao. Trong đồ án này trình bày về mạch logic khả trình, Virtex-II FPGAs là loại FPGAs tiên tiến, mang đến sự lựa chọn mật độ phong phú nhất trong lĩnh vực này, bao gồm mười một loại thiết bị từ 40 ngàn đến tám triệu cổng hệ thống . Virtex-II FPGA đã dành bộ nhân 18 bit x 18 bit, bộ cộng chuỗi bộ cộng nhớ nhanh và số lượng lên tới 93,184 thanh ghi bên trong. Các thiết bị Virtex-II được phân vào một ma trận tile đối xứng như đã mô tả trong phần trên. Sáu loại tile chính trong Virtex-II là: Khối vào/ra (IOBs), Khối logic cho phép đặt cấu hình (CLBs), bộ nhân phần cứng, SelectRAM khối 18Kbit và Mô-đun clock KTS (DCMs) [8]. Hình 1.3 minh hoạ sơ đồ tile của Virtex-II FPGA. Mỗi họ Virtex FPGA đều có một tập hợp các sản phẩm có thể lập trình lại lớn, bắt đầu với phiên bản Virtex đầu tiên được giới thiệu vào năm 1998. Virtex và Virtex-E đã trở thành sản phẩm đi đầu trong nền công nghiệp lúc đó ngay từ lần đầu giới thiệu. DCM DCM IOB Đồng hồ ghép kênh CLB Khối lựa chọn RAM Multiplier Logic khả cấu hình Các cổng vào ra khả lập trình Hình 1. 3 Sơ đồ tile Virtex-II FPGA 1.3.1 Virtex-II CLB Thành phần cho phép đặt cấu hình chính trong Virtex-II FPGA là CLB. CLBs chiếm phần lớn các tile trong thiết bị. Mỗi CLB bao gồm bốn slice và hai bộ đệm ba trạng thái. 6 -------------------------------------------------------------------------------------------------------- Bộ tạo hàm (Function Generator) Chuỗi chạy Chuỗi mang Phần tử nhớ (Memory Element) Hình 1. 4 Bố trí chức năng của LE Mỗi bộ tạo hàm có thể đặt cấu hình theo bốn cách khác nhau: Bốn bảng dò đầu vào (LUT), thanh ghi chuyển, SelectRAM phân tán 16 bit, hoặc ROM 16 bit. Trong chế độ LUT bốn đầu vào, bộ tạo hàm có thể thực thi hàm logic tổ hợp bất kỳ lên tới 4 đầu vào. Bộ tạo hàm nhân có thể xếp tầng hoặc sử dụng song song để tạo ra các hàm hoặc kích cỡ đầu vào tuỳ ý. Chế độ thanh ghi chuyển 16 bit có thể sử dụng độc lập với các bộ tạo hàm khác hoặc xếp tầng cùng nhau để tạo thành các thanh ghi chuyển dài hơn [8]. Có hai chế độ hoạt động dành cho bộ tạo hàm, hoạt động như một SelectRAM: SelectRAM đơn cổng và SelectRAM cổng kép. Một SelectRAM cổng đơn chỉ có một địa chỉ cổng, trong khi SelectRAM cổng kép có một cổng dành cho việc ghi đồng bộ, một cổng dành cho đọc không đồng bộ. Cổng thứ hai chuyên dùng cho việc đọc không đồng bộ. Thiết lập cấu hình cổng kép cho phép đọc và ghi đồng thời trên cùng SelectRAM. Mỗi CLB có thể đặt trong bảy cấu hình SelectRAM khác nhau như trong bảng 1.1. Chế độ bộ tạo hàm ROM khá giống với chế độ SelectRAM đơn cổng. Một LUT đơn có thể thực hiện một ROM 16x1 hoặc LUTs bội có thể xếp tầng cùng nhau để tạo thành một ROM có độ dài tuỳ ý [8]. Bảng 1.1: Kích cỡ và loại SelectRAM Loại SelectRAM Cỡ RAM Đơn cổng 16 x 8 bit Đơn cổng 32 x 4 bit Đơn cổng 64 x 2 bit Đơn cổng 128 x 1 bit Cổng kép 16 x 4 bit Cổng kép 32 x 2 bit Cổng kép 64 x 1 bit Hai phần tử nhớ trong một slice có thể thiết lập làm một flip flop loại D hoạt động theo cạnh hoặc chốt nhạy mức. Với mỗi phần tử nhớ, có sáu chế độ hoạt động khác nhau: 7 --------------------------------------------------------------------------------------------------------  Set và reset không đồng bộ (preset và clear/đặt trước và xoá).  Reset không đồng bộ (xoá).  Set không đồng bộ (đặt trước).  Reset đồng bộ.  Set đồng bộ .  Không set hoặc reset. 1.3.2 Virtex-II IOB Khối vào/ra (IOBs) là các tile trong FPGAs, tạo điểm truy cập đến và đi khỏi kết cấu bên trong của FPGA. IOBs được đặt xung quanh đường bao của kết cấu FPGAs, xem Hình 2.3, IOBs thường được sử dụng để nối các clock bên ngoài, tuyến dữ liệu vào/ra, và là bộ dò test trong các ứng dụng sửa lỗi. Mỗi IOB bên trong Virtex-II FPGA truy cập tới bốn bộ đệm bên ngoài. Hai bộ đệm có thể sử dụng cùng nhau để tạo thành cặp vi phân, độc lập như là bộ đệm một đầu hoặc trở kháng điều khiển kỹ thuật số (DCI). Virtex-II FPGA có một số chuẩn I/O khác nhau: Hai mươi lăm chế độ I/O một đầu, tám chế độ tín hiệu vi phân và hai mươi sáu chế độ DCI [8]. Ở bên trong, một IOB bao gồm sáu phần tử nhớ và một số bộ nhân để đặt cấu hình vào/ra tối đa. Các phần tử nhớ bên trong IOBs có chức năng tương tự như các phần tử nhớ trong CLB. Có ba đường dẫn riêng trong IOB: Một dành cho đầu vào, một cho đầu ra và có khả năng đặt đầu ra hoạt động ở chế độ ba trạng thái. Bên cạnh đó, tổ hợp hai đầu vào hoặc các flip-flop đầu ra cho phép sử dụng các thanh ghi DDR. IOBs được chia thành bảy vùng, như trong Hình 1.5. Hình bên trái trong Hình 1.5 thể hiện góc quan sát từ bên trên đối với gói nối dây, hình bên phải là góc nhìn từ bên trên đối với gói flip chip. Có một số quy tắc tổ hợp các chuẩn vào/ra khác nhau trong một vùng IOBs. Chi tiết về chế độ hoạt động và cấu hình IOB có trong phần bảng dữ liệu Virtex- II của Xilinx [8]. Dãy 0 Dãy 1 Dãy 4 Dãy 5 D ãy 2 D ãy 3 D ãy 6 D ãy 7 Dãy 1 Dãy 0 Dãy 5 Dãy 4 D ãy 7 D ãy 6 D ãy 3 D ãy 2 Hình 1. 5 Bố trí chức năng của LE 1.3.3 Virtex-II Clock Tiles Virtex-II FPGAs chứa hai tile đệm clock toàn cục riêng biệt: CLKT và CLK. CLKT được đặt ở hàng trên của FPGA, xem hình 1.3, và chứa tám bộ đệm nhân clock toàn cục; tile CLKB được đặt ở giữa của hàng bên dưới. Tile clock được đặt ở giữa của cả hàng trên và hàng dưới, tạo cho thiết bị có sự phân bố clock low-skew đều. Trong mỗi 8 -------------------------------------------------------------------------------------------------------- góc phần tư, chỉ có tám trong tổng số các clock toàn cục được sử dụng (trên cùng bên trái, trên cùng bên phải, dưới cùng bên trái và dưới cùng bên phải) trong thiết bị. Các clock toàn cục có thể được sử dụng kết hợp với DCMs hoặc điều khiển trực tiếp từ bộ đệm đầu vào clock [8]. Mỗi bộ đệm nhân clock toàn cục có thể đặt cấu hình là BUFG (bộ đệm tổng), một BUFGCE (global buffer with clock enable - bộ đệm tổng có clock), hoặc là BUFGMUX (bộ nhân lựa chọn clock) như minh hoạ trong Hình 1.6. Cấu hình đơn giản và phổ biến nhất dành cho clock toàn cục là bộ đệm đơn giản (BUFG). Có thể lập một clock cổng sử dụng cấu hình BUFGCE. Chế độ BUFMUX cho phép chuyển giữa hai clock không đồng bộ riêng biệt hoặc đồng bộ và bảo đảm thời gian cao hoặc thấp khi clock chuyển không bao giờ ngắn hơn thời gian cao hoặc thấp ngắn nhất [8]. I Hình 1. 6 Cấu hình bộ đệm clock toàn cục 1.3.4. VirtexII Pro Giải pháp Platform FPGA VirtexII Pro được cho là một kỹ thuật silicon phức tạp nhất và sản phẩm phần mềm trong công nghệ logic có thể lập trình lại được. Mục đích trong phát triển Virtex-II pro FPGA đưa ra một kiến trúc vượt trội, và được xây dựng lại từ đầu. Để đạt được điều này, các kỹ sư mạch và kiến trúc sư hệ thống từ IBM, MindSpeed và Xilinx cùng phát triển những tính năng tiên tiến của FPGA. Các đội kỹ sư từ các công ty phần mềm nhúng hàng đầu trên thế giới đã hợp tác để thiết kế. Các tính năng họ Virtex-II Pro  Có 5 họ chính với các ô logic 3168 tới 50832 và 216 tới 3888 Kb trên một Khối RAM.  Dựa trên kiến trúc nhúng IP Virtex-II.  Khối thu phát nối tiếp tốc độ cao lên tới hàng Gigabit, tới hơn 16 thiết bị.  Bộ xử lý nhúng, lên tới 4 thiết bị. Điểm nổi bật nhất của họ Virtex-II Pro Họ Virtex-II Pro bao gồm năm thành viên, bốn thành viên là 16RocketIOTM trên công nghệ Mindspeed SkyRailTM. Mạch này bao gồm bộ mã hóa và giải mã theo chuẩn 8B/10B cho băng tần cao hơn sử dụng đa kênh, và hỗ trợ tăng toàn bộ tính toàn vẹn tín hiệu thông qua sự biến đổi PCB. Thêm vào đó, RocketIO là khối thu phát FPGA nhúng đầu tiên để đạt được tốc độ báo lên tới 3.125 Gb/s. Bốn khối RocketIO cho phép PCB hỗ trợ song công tốc độ dữ liệu 10 Gbps. Công nghệ RocketIO cho phép băng tần hệ thống cao hơn và giảm tối đa chi phí theo thời gian đưa ra thị trường, giảm kích thước mạch và số thiết bị [8]. 9 -------------------------------------------------------------------------------------------------------- Các thành viên Virtex-II Pro cùng thiết kế tạo ra một vi xử lý chính PowerPC có tính năng mạnh. Mỗi chúng có dung lượng lớn hơn 300Mhz về tần số clock. PowerPC 405 hoàn toàn nhúng trong khung FPGA, tại tất cả các node xử lý được kết nối bởi tài nguyên định tuyến FPGA. Nó cung cấp công suất kiến trúc tối đa, tại đó các ứng dụng phức tạp có thể dễ dàng phân nhỏ với tốc độ cao theo logic và mềm dẻo khi thực thi phần mềm [8]. Sản phẩm Virtex-II Pro xây dựng trên kiến trúc Virtex-II với công nghệ nhúng IP. Các tính năng chung trên hệ Virtex-II với họ Virtex-II Pro – bao gồm SystemIOTM, XCITETM, bao hàm các giải pháp đánh xung đồng hồ, kiến trúc liên kết động tốc độ cao, mã hóa dòng bits [8]. 1.4. VTsim Bộ công cụ vi mạch mảng phần tử logic khả trình hiện đại (FPGA) được dùng để kiểm soát sự phức tạp của các thiết kế lớn bằng cách sử dụng môi trường thiết kế tích hợp đơn. Nhiều bộ công cụ bao gồm các bộ mô phỏng dáng điệu, thường dựa trên một mô hình kiến trúc độc lập, cho phép người dùng thay đổi chức năng của thiết kế. Bộ công cụ tiêu biểu: Xilinx ISE với với bộ mô phỏng tuỳ chọn ModelSim và Altium’s Nexar2004. Các dòng này dựa trên quan điểm cho rằng một thiết kế được xác nhận chức năng sẽ làm việc với phần cứng đúng theo theo chủ định và dự kiến của người dùng. Nếu chức năng của thiết kế không hoạt động đúng trong phần cứng, có thể sẽ gây ra một số vấn đề: FPGA bị lỗi, các công cụ thực thi có thể tính toán (inferred), đặt (placed), và định tuyến logic sai khác so với chủ định, hoặc không phát hiện được lỗi trong khâu kiểm tra. VTsim cung cấp cho các kỹ sư thiết kế Virtex-II FPGA một hệ biến hoá (paradigm): Mô phỏng luồng bits. Đầu vào cần thiết duy nhất của VTsim để hoạt động là dòng bits hợp lệ, cho phép bộ mô phỏng hoạt động độc lập trong quá trình thiết kế. VTsim là một bộ mô phỏng theo biến cố, cho đáp ứng tức thời, sử dụng bộ nhớ hiệu quả và hỗ trợ miền clock bội. Vào khoảng thời gian thực hiện đồ án này, bộ mô phỏng bao phủ xấp xỉ 90% thiết bị và mô hình hoá phần lớn logic thường dùng trong các mạch FPGA. Bằng cách sử dụng một số kỹ thuật tối ưu, VTsim tăng hiệu năng hoạt động lên tới 9,000% . Cấu trúc API linh hoạt đã được phát triển để bảo đảm sự tương tác thuận lợi và cho phép kết hợp các phần bổ sung trong tương lai. VTsim được tích hợp vào trong bộ thiết kế JHDLBits, có sẵn trong SourceForge.net, cho phép mô phỏng trong cả dòng JHDL và JBits, hoặc sử dụng như một công cụ mô phỏng độc lập. Bằng cách sử dụng VTsim, một kỹ sư thiết kế có thể truy cập và chỉnh sửa tất cả các giá trị nguồn trong FPGA ảo tại thời điểm bất kỳ, xem tình trạng của các flip-flop và tra bảng, kiểm tra hoặc thay đổi giá trị trên dây định tuyến. Để thực hiện các chức năng này, VTsim sử dụng hai công cụ bổ sung: JBits và ADB. JBits là một API, chophép truy cập vào nguồn tài nguyên cấu hình trong một Xilinx FPGA và được VTsim sử dụng cho thông tin cấu hình dòng bits và xử lý bit dòng bits (bitstream bit-manipulation). ADB (Alternate wire DataBase – cơ sở dữ liệu dây thay thế) là một công cụ hỗ trợ các dịch vụ định tuyến (routing) và tạo vết (tracing), bao phủ hoàn toàn thiết bị, sử dụng bộ nhớ hiệu quả, và hỗ trợ Virtex, Virtex-E, Virtex-II, and Virtex-II Pro FPGAs. Thông tin từ ADB được sử dụng để đặt 10 -------------------------------------------------------------------------------------------------------- cấu hình cho các kết nối của thiết bị ảo. Bộ mô phỏng thiết bị được dùng trong thiết kế cho phép đặt cấu hình lại. Khi đó, các khối logic được chèn và gỡ theo trạng thái đã biết của hệ thống. Trong các thiết kế thực hiện cấu hình lại từng phần, việc bố trí các khối logic cho trước thường được giữ nguyên/fixed. Phần lớn các bộ mô phỏng hiện nay không hỗ trợ đầy đủ cho các thiết kế cho phép đặt cấu hình lại. Do VTsim hoạt động ở mức dòng bits thấp nên có thể mô phỏng cả quá trình đặt cấu hình lại từng phần hoặc toàn bộ. Với việc bao hàm FPGA trong các ứng dụng không gian mission-critical (tạm dịch: nhiệm vụ tới hạn), như là FPGAs trong Phòng thí nghiệm phản lực (NASA/Jet Propulsion Laboratory (JPL)) cho nhiệm vụ thám hiểm sao Hoả (Mars exploration mission), việc phân tích và mô phỏng Single Event Upsets (SEUs) là một chủ đề quan trọng, thu hút được rất nhiều sự chú ý. Để mô phỏng và phân tích kết quả của SEU, một bộ mô phỏng cần phải có tri thức toàn diện và điều khiển các thông tin cấu hình của tất cả FPGA. Phần lớn các bộ mô phỏng chính không dựa vào thông tin cấu hình cấp thấp sử dụng bên trong FPGA vật lý, và không có khả năng thay đổi thông tin cấu hình, các bộ mô phỏng này gần như không có khả năng mô phỏng SEUs trong cấu hình FPGA. Đây là một vấn đề tạo cho VTsim một vị thế nổi bật hơn. Do VTsim cho phép truy cập các tài nguyên cấu hình trong FPGA, nên có thể phân tích và mô phỏng SEU một cách dễ dàng [4]. 1.5. Các công trình liên quan tới VTsim: JHDL, JBits, JHDLBits và ADB Phần này trình bày về các công cụ thiết kế liên quan tới VTsim. Một số công cụ cần sử dụng VTsim thực tế, một số được hỗ trợ hoặc hỗ trợ cho VTsim. Như đã đã đề cập, VTsim là bộ phận của đề án mã nguồn mở JHDLBits, được xúc tiến nhằm hỗ trợ điều khiển thao tác, đặt và định tuyến tài nguyên. JHDLBits là một công cụ dùng để chuyển các thiết kế JHDL cấp cao thành các dòng bits sử dụng JBits cho tương tác dòng bits và sử dụng ADB định tuyến. Cấu tạo của JHDLBits và mối quan hệ dự án JHDLBits được mô trả trong hình 1.7. VTsim dựa trên JBits để xử lý tất cả các thao tác dòng bits. Cần có kiến thức sơ bộ về JBits để hiểu cách xử lý cấu hình và thao tác dòng bits. VTsim cung cấp thông tin về định tuyến và thiết bị tuỳ thuộc vào ADB giống như một sơ đồ tile thiết bị và các vị trí CLB. Thông tin định tuyến cấp bởi ADB được sử dụng để tạo ra một danh sách mạng của các các kết nối bên trong. Ba phần dưới dây sẽ phác hoạ về JHDL, JBits và ADB, và JHDLBits [4]. JHDL JBits ADB JHDLBits Hình 1. 7 Cấu tạo của JHDL 11 -------------------------------------------------------------------------------------------------------- 1.5.1 JHDL Các nhà nghiên cứu tại Đại học Brigham Young đã phát triển một bộ thiết kế FPGA ngôn ngữ mô tả cấu trúc phần cứng trên nền Java (JHDL). Do tính chất dễ sử dụng, hướng đối tượng, có khả năng văn bản hoá đựng sẵn, tiện dụng và có tập Giao diện đồ hoạ người dùng (GUI) API đa dạng, tích hợp vào ngôn ngữ nên Java đã được lựa chọn. JHDL chứa API đơn, cho phép nhà thiết kế tạo ra cả thiết kế mạch cố định hoặc linh hoạt. Bộ mô phỏng JHDL có khả năng chạy trong cả chế độ phần cứng và mô phỏng. Trong chế độ mô phỏng, mọi giá trị của mạch được tính toán sơ bộ. Trong chế độ phần cứng, bộ mô phỏng lấy các giá trị phần tử nhớ từ một FPGA kích hoạt, như là flip flop, từ phần cứng vật lý và lan truyền giá trị qua tất cả các phần tử không nhớ, như là các cổng và bộ cộng. Tuy nhiên, bộ mô phỏng này không phải là một mô hình hoàn chỉnh của phần cứng do các giá trị phần tử không nhớ vẫn được mô phỏng sơ bộ. Thông qua việc sử dụng JHDLBits, VTsim đã được tích hợp vào trong JHDL để đóng vai trò như một bộ mô phỏng tại chỗ của phần cứng thực/actual hardware. Điều này cho phép nhà thiết kế mô phỏng phần cứng bằng cách sử dụng các bộ mô phỏng thiết bị [4]. 1.5.2 Cơ bản về JBits và ADB JBits là một API trên nền Java trợ giúp cho việc truy cập nguồn cấu hình bất kỳ trong họ Virtex FPGAs. Nguồn thiết bị có thể lập trình và thử khi chạy ngay cả khi FPGA đã kích hoạt trong hệ thống đang làm việc. JBits3 SDK hỗ trợ cho Virtex-II FPGAs, không giống như phiên bản Virtex-based JBits2.8. JBits cho phép người dùng thao tác với nguồn FPGA bằng hai phương pháp: getTileBits và setTileBits. getTileBits lấy toạ độ tile, và tên nguồn và cho các bit cấu hình kết hợp. setTileBits thì ngược lại. Trong phương pháp setTileBits, JBits cập nhật các bit cấu hình từ các tile phối hợp, tên nguồn và các bits cấu hình mới do người dùng định nghĩa. JBits3 là một API hoàn chỉnh để kiểm tra và chỉnh sửa cấu hình thiết bị, nhưng nó không bao gồm một bộ mô phỏng thiết bị hay bộ định tuyến. Phiên bản JBits2.8 trước đó bao gồm một bộ mô phỏng thiết bị, VirtexDS và một bộ định tuyến, JRoute - một bộ định tuyến đặt cấu hình chạy thực. Việc thiếu một bộ mô phỏng thiết bị trong JBits3 gây ra trở ngại đối với việc xác nhận thiết kế và sự phát triển của các hệ thống tái cấu hình chạy thực. Mặc dù JBits3 không có bộ định tuyến, nhưng một giao diện định tuyến đi kèm sẽ giúp cho người dùng bổ sung thêm bộ định tuyến riêng. Một ví dụ về bộ định tuyến plug-in là Alternate Wire Database - ADB. Hỗ trợ Virtex, Virtex-E, Virtex-II, và Virtex-II Pro FPGAs. ADB không thực hiện định tuyến điều khiển theo thời gian; nhưng sự đơn giản hoá này cho phép ADB định tuyến các mạng một cách nhanh chóng. Không giống như JRoute trong JBits2.8, ADB bao phủ thiết bị hoàn toàn và thực sự tiết kiệm bộ nhớ [4]. 1.5.3 JHDLBits JHDLBits là một đề án mã nguồn mở nhằm mục tiêu kết hợp điều khiển JBits cấp thấp và thiết kế của JHDL. Đề án JHDLBits bao gồm một tập các thành phần tích hợp chặt chẽ. Thông qua việc sử dụng ADB và JBits3, JHDLBits đã rút ngắn quá trình từ file thiết kế đến dòng bits. Hình 1.8 minh hoạ dòng thiết kế JHDLBits. 12 -------------------------------------------------------------------------------------------------------- Thiết kế JHDL Bộ trích Jbits -trích thông tin hình gốc Bộ sắp đặt (Placer) Nets Dimensions Instances Placement Directives Luồng Bit (Bitstream) ADB Jbits TechMapper JBits JHDLBits Bộ định tuyến ADB Builder -create Jbits ULPrimitives Hình 1. 8 Dòng thiết kế JHDLBits Bước đầu tiên trong dòng thiết kế JHDLBits là tạo ra một thiết kế công tác trong JHDL. Bước tiếp theo là tạo ra một file test cấp cao nhất đóng vai trò như một giao diện cho JHDLBits. Trong khi chạy file test, JHDLBits lấy ra tất cả các thông tin ban đầu và nets từ thiết kế JHDL rồi chuyển các nets, hình gốc vào trong JBits Nets và hình gốc. Sau khi chuyển nets và gốc, JHDLBits tạo ra các dòng bits đầu ra và có thể thoát hoặc tạo đối tượng/tạo nấc VTsim cho các test thiết kế sau này. Bộ mô phỏng JHDL cho phép người dùng mô phỏng hành vi các thiết kế trong phần mềm hoặc từ các phần tử nhớ trong phần cứng, mô phỏng hành vi các phần tử còn lại. JHDLBits hợp với VTsim vào dòng thiết kế bằng cách mở rộng bộ mô phỏng JHDL để thêm mô hình mô phỏng bổ sung. Trong mô hình này, bộ mô phỏng JDHL tương tác với bộ mô phỏng thiết bị thay vì phần cứng vật lý, cho phép người dùng đạt được các chức năng của phần cứng mà không cần đến phần cứng FPGA. Sử dụng VTsim trong bộ mô phỏng JHDL gặp phải các vấn đề về phần cứng riêng: Các phần tử không nhớ vẫn mặc định được tính. Nếu kết quả mô phỏng khác với dự kiến, nhà thiết kế không thể dò ra giá trị bên trong của FPGA thực ngoài các phần tử nhớ khác. Đây là một vấn đề thể hiện sự vượt trội về tính năng của VTsim. Các phiên bản JHDLBits trong tương lai sẽ cung cấp mô hình mô phỏng mới cho phép các nhà thiết kế lựa chọn VTsim là bộ mô phỏng thay cho bộ mô phỏng JHDL chuẩn. Lựa chọn VTsim giúp cho việc kiểm tra và thác tác tất cả các tài nguyên bên trong theo khung hoạt động JHDL chuẩn [4]. 1.6. Những cải tiến JHDLBits và JBits Mặc dù JBits3 là một API đầy đủ chức năng, nhưng nó có thể thân thiện hơn với người dùng nếu có năm thành phần quan trọng như sau: Một bộ mô phỏng thiết bị, một thư viện gốc, một cấu trúc liên kết mạch, một bộ đặt và một bộ định tuyến. Việc loại bỏ một bộ mô phỏng thiết bị gây trở ngại lớn đến sự phát triển thiết kế và xác nhận các thiết kế FPGA sử dụng JBits, đặc biệt là các thiết kế RTR. Thiếu một thư viện gốc sẽ giảm kết cấu mạch xuống mức thấp, tạo ra khó khăn trong việc mô phỏng mạch bất kỳ có nhiều cổng. Thiếu kết cấu kết nối sẽ loại bỏ công cụ đơn giản của nhà thiết kế để nối các mạch logic, và mở rộng trên các mô-đun đã được tạo ra. Không có bộ đặt và bộ định tuyến, người dùng không thể lập sơ đồ cho thiết kế của họ theo dạng mạch logic FPGA. Việc test và xác nhận thiết kế JBits sẽ gặp khó khăn nếu không có các bộ 13 -------------------------------------------------------------------------------------------------------- mô phỏng thiết kế, thư viện gốc, kết cấu kết nối mạch, bộ đặt và bộ định tuyến. Bước phát triển đầu tiên trong dự án JHDLBits là tạo ra thư viện gốc. Đây là tập hợp của các khối xây dựng thường được nhà thiết kế sử dụng. Các ví dụ về gốc là NAND, NOR và cổng logic đơn giản, flip flop bất kỳ với một enable (cho phép) (FDE), các flip flop với xoá và cho phép (clear and an enable) (FDCE), bộ cộng nhanh và các phần tử khác. Cấu trúc của thư viện gốc rất cần thiết để phát triển JHDLBits. Để đơn giản hoá việc chuyển đổi JHDLBits từ JHDL thành JBits, mỗi JBits gốc được thiết kế để phù hợp với gốc JHDL. Khi tìm được gốc JHDL trong quá trình phân tích JHDLBits, JHDLBits ánh xạ (map) gốc trực tiếp sang gốc JBits, một cách đơn giản hoá nâng cao tốc độ chuyển một cách mạnh mẽ và tiết kiệm bộ nhớ. Ngoài đề án JHDLBits, cần thiết phải có thư viện gốc cho các nhà thiết kế Jbits. Nhìn chung, người dùng JBits thường thiết kế ở mức gốc hoặc cao hơn. Việc loại bỏ thư viện gốc đã giảm sự quan tâm của người dùng đối với phiên bản JBits mới nhất. Không có thư viện gốc, việc thiết kế sẽ trở nên phức tạp hơn. VTsim đóng vai trò quan trọng trong quá trình xác nhận gốc qua việc cung cấp các phản hồi nhanh chóng về các gốc thiết kế mới mà không có nguy cơ hư hỏng các phần cứng đắt tiền. Về vấn đề phát triển, kết nối, test gốc, cần phải phát triển hạ tầng liên kết, bổ sung một số đặc tính hiện còn thiếu trong JBits3. Trong đó có lớp luồng bits, một đối tượng bắc cầu cho phép các truy cập tắt đối với cả các đối tượng JBits và bộ định tuyến và bổ trợ cho việc tạo gốc mà không phụ thuộc vào các lớp cấu trúc riêng. Bên cạnh đó, có một lớp mạng để cho phép nối các gốc bằng cách duy trì một danh sách các nguồn và các chân cắm chìm tạo nên mỗi mạng. Thông tin lớp mạng và dòng bits có thể đi qua bộ đặt và bộ định tuyến. Sau khi phát triển thư viện gốc và cấu trúc liên kết JHDLBits, cần phải thiết kế một bộ đặt giao diện với JBits. Hiện nay JHDLBits có một bộ đặt đơn giản, đánh giá kích cỡ của mỗi gốc và sắp xếp gốc vào các vị trí xác địn trong FPGA. Trong mô hình bộ đặt đơn giản, mỗi thành phần được đặt liền sau thành phần trước. Hiện nay, đang phát triển một bộ đặt phức tạp hơn, thông minh hơn, cấu trúc theo bậc. Mặc dù đơn giản nhưng bộ đặt là lựa chọn phù hợp cho các thiết kế không phụ thuộc nhiều vào nguồn định thời hoặc định tuyến. Trong giai đoạn test JHDLBits, một thiết kế định tuyến khá phức tạp đã thất bại do sắp xếp không tốt, tuy nhiên, các thiết kế này đã tận dụng được gần 100% tài nguyên của FPGA. JBits3 không có bộ định tuyến nhưng phiên bản này có giao diện bộ định được thiết kế, cho phép người dùng tạo và plug-in bộ định tuyến riêng. Một bộ định tuyến được thiết kế để hoạt động với JBits3 là ADB. ADB hỗ trợ Xilinx Virtex, Virtex-E, Virtex-II, và Virtex-II Pro FPGAs. Không giống như JRoute, phiên bản trước của nó, ADB bao phủ toàn bộ thiết bị và có kích cỡ gọn nhẹ hơn so với các dòng định tuyến khác. Một hạn chế của ADB là nó không tạo ra các tuyến dựa trên thông tin định thời; tuy nhiên sự đơn giản hoá này của ADB cho phép định tuyến rất nhanh. ADB tích hợp trong bộ thiết kế mã nguồn mở JHDLBits. Để bảo vệ FPGAs vật lý, VTsim được mở rộng sử dụng để xác nhận chức năng của các dòng bits phát JHDLBits. Ví dụ, một vi mạch được mô phỏng trong JHDL trải qua quá trình trích JHDLBits để tạo ra một dòng bits. Thiết kế tương tự JHDL cũng được chạy qua các công cụ chủ yếu để tạo ra một dòng bits thứ hai. Mỗi dòng bits được nạp riêng rẽ vào VTsim và phân tích kỹ lưỡng như trong Hình 1.9. Nếu chức 14 -------------------------------------------------------------------------------------------------------- năng của hai dòng bits không khớp nhau, cần phải chỉnh sửa gốc JBits. Khi chức năng của cả hai đã khớp nhau, gốc Jbits đã sẵn sàng để test trên phần cứng vật lý. Do đó, VTsim được phát triển cùng với gốc JBits và các cải tiến để xác nhận cả các gốc mới phát triển và bộ mô phỏng thiết bị. Thiết kế JHDL Các công cụ Xilinx ISE JHDLBits VTsim VTsim So sánh kết quả Hình 1. 9 Quá trình xác nhận dòng bits Với việc thiết kế các thành phần quan trọng này, có thể tạo ra các dòng bits JBits mẫu bằng cách sử dụng các cải tiến trong mô hình cây JHDLBits. Tuy nhiên, không thể xác nhận chức năng của các quá trình còn lại nếu không có bộ mô phỏng dòng bits. Bước logic tiếp theo trong dự án JHDLBits là tạo ra một bộ mô phỏng thiết bị [4]. 1.7 Ứng dụng FPGA trong tính toán ô 1.7.1 Thiết kế mức cao tổng quát Phần này mô tả các công việc được thực thi bởi FPGA. Chỉ có các phần thiết kế FPGA nói chung của từng kiến trúc được trình bày trong phần này. Các bước thực hiện bởi FPGA trong suốt một chu kì tính toán hoàn thành được chỉ trong hình 2.1. Ngay sau khi nguồn được bật lên, dữ liệu cấu hình từ bộ nhớ flash Logic Module (LM) được chuyển đến FPGA. Tại cùng thời điểm đó, Core Module (CM) khởi tạo Integrator/AP motherboard và sau đó chờ đợi các tham số đầu vào để gửi từ host PC. Sau khi CM nhận các tham số này, nó gửi chúng lên Bus hiệu năng cao tăng cường của bo mạch chính (AHB-Advanced High-performance Bus) đến LM. Tại thời điểm này, ghi lên không gian địa chỉ LM được chuyển tiếp đến LM SSRAM bởi FPGA. Trước khi, FPGA bắt đầu tính toán, nó đang chờ các tham số đầu vào đến đầu vào của LM SSRAM theo trật tự sau: iteration, result cell và đến lượt các tham số đầu vào. Iteration là một số các vòng lặp để tính toán, mà là từng bước cho trường hợp kiểm tra luồng nóng (heat flow). Nếu FPGA được cấu hình với N ô tính toán, sau đó result cell là một số giữa 1 và N và dữ liệu của ô đó sẽ được lưu trữ trong SSRAM. Cho vấn đề luồng nóng (heat flow), dữ liệu ô lưu trữ là một ma trận nhiệt độ tại từng bước. Các tham số đầu vào chính là rõ ràng, cho vấn đề luồng nóng, chúng là nhiệt độ áp dụng cho ô 1, nhiệt độ cho ô N, và tham số xử lý Γ. Bởi vì lược đồ số lượng được sử dụng trong thiết kế này, các tham số đầu vào đó phải là các số nguyên với các mức điểm cố định, Sau khi CM gửi đi các tham số đó, nó sẽ gửi đến FPGA một tín hiệu start chỉ ra rằng tính toán đã sẵn sàng để xử lý. Sau khi FPGA nhận tín hiệu này, nó lấy điều khiển của LM SSRAM và đọc các tham số đầu vào mô tả ở trên. Với các tham số đầu vào, thì hàng các ô tính toán được chỉ thị bắt đầu tính toán, và khi một vòng lặp được hoàn thành, kết quả ở trong result cell được ghi lên SSRAM ngay tức thì sau khi các tham số đầu vào ở ngay đầu không gian bộ nhớ. Các kết quả vòng lặp tiếp tục 15 -------------------------------------------------------------------------------------------------------- được ghi lên SSRAM cho đến khi các kết quả iteration đã được lưu trữ. Tại điểm này, FPGA giải phóng điều khiển của SSRAM và cho phép CM đọc các kết quả đã tính toán thông qua bus AHB. Các giá trị ban đầu được thiết lập lại, và FPGA đã sẵn sàng bắt đầu một chu kỳ tính toán mới. Nếu chu kì tính toán 1 giây nào đó bắt đầu, FPGA viết đè các kết quả lưu trữ từ chu kỳ đầu tiên. Bật nguồn Lặp thu Kết quả thu ô Tham số thu còn lại Đợi tín hiệu bắt đầu Lặp tìm nạp Tìm kết quả ô Tìm tham số còn lại Thu từ CM và chuyển tiếp tới LM SSRAM Lấy từ LM SSRAM Hàng ô bắt đầu tính toán Đợi quá trình lặp hoàn thành Chờ kết quả tới LM SSRAM Lặp lại? No Yes Thiết lập tín hiệu SSRAM đọc yêu cầu của CM Hình 1. 10 Thuật toán thực thi FPGA VHDL thực thi thủ tục mô tả ở trên được thiết lập có thể mở rộng bất kỳ vấn đề song song ô mà tường tự nhu trường hợp kiểm tra luồng nóng. Có thể có một số các tham số đầu vào theo sau iteration và result cell, và một số các ô bị hạn chế không gian cho phép của FPGA. Thay đổi các tham số đầu vào hay số các ô yêu cầu tổng hợp lại của thiết kế và cấu hình lại của FPGA, nhưng một số các vòng lặp tính toán bị hạn chế bởi kích thước của bộ nhớ SSRAM. Hình 1.11 chỉ ra cấu trúc của thiết kế FPGA mức cao mà thực thi thủ tục chỉ ra trong hình 2.1 16 -------------------------------------------------------------------------------------------------------- Mạch điều khiển hàng ô Mạch điều khiển ô Mạch điều khiển SSRAM Bên trong FPGA Duy nhất cho mỗi kiến trúc 1 N Hình 1. 11 Cấu trúc FPGA mức cao Bộ điều khiển hàng của ô là một thiết bị trạng thái hạn chế FSM ( Finite State Machine) mà chờ đợi tín hiệu start, đọc các tham số đầu vào SSRAM, bắt đầu tính toán hàng và gửi các kết quả đến SSRAM, và kiểm tra số các vòng lặp mà được hoàn thành. Một bộ điều khiển ô đơn FSM điều khiển tất cả các ô trong hàng và được phân biệt nhau cho mỗi loại kiến trúc. Bộ điều khiển SSRAM cung cấp các tín hiệu điều khiển chip và dễ dàng định thời đọc và viết. Các tuyến dữ liệu và điều khiển từ bus AHB và bộ điều khiển hàng được ghép vào nhau lên SSRAM, dữ liệu từ bộ điều khiển hàng và SSRAM được ghép với nhau đưa lên bus AHB. Tất cả các địa chỉ trong địa chỉ LM là có tính logic mà giải mã các địa chỉ từ bus AHB. Tất cả các địa chỉ trong không gian địa chỉ LM ngoại trừ một sẽ được đánh địa chỉ trong SSRAM. Một phép ghi từ CM đến địa chỉ đơn 0x0DDC0DE ở trong không gian địa chỉ của LM sẽ ghi tín hiệu start của FPGA, và một phép đọc của cùng địa chỉ đó sẽ đọc tín hiệu done của bộ điều khiển hàng (row controller) (tín hiện này chỉ ra rằng khi nào CM có thể bắt đầu đọc kết quả tính toán từ SSRAM. Phần không trình bày trong hình là khối logic điều khiển xung khả lập trình của FPGA và đèn LED chỉ thị của LM. Các ô tính toán trong FPGA chạy trong từng xung đồng hồ riêng biệt từ xung đồng hồ bus AHB để mà chúng không bị ràng buộc vào tần số bus. Như vậy, dữ liệu được chuyển tải giữa hai vùng có xung đồng hồ không đồng bộ, tuy nhiên, bắt tay được thực hiện để đảm bảo chuyển dữ liệu một cách phù hợp. Bắt tay được thiết lập cho phép kết hợp các tần số đồng hồ ô và bus kết hợp với nhau. Nhìn một cách chi tiết của cấu trúc hàng ô được chỉ ra ở hình 2.3. Giải quyết phức tạp ở trong công thức   iji jmi jmi jmi jm cTTbaTT     1 1,1 1,,, chỉ thị cấu trúc này, và nó yêu 17 -------------------------------------------------------------------------------------------------------- cầu mà mỗi ô kết nối đến các hàng xóm bên trái hay bên phải của nó và nó cho phép truy cập đến các dữ liệu đã được tính trong vòng lặp trước. Mỗi ô tính toán các công thức    ,11. 1111   ijijijijij Kta    1.1,, .1   i jmi jpi jp TttTT ,            37.2,0 37.2,37.299,25 1 , 1 , 21 , ,2,1 i jm i jm i jm approx T TT K và lưu trữ vào ma trận và các nhiệt độ nhỏ cho từng bước đơn. Nói chung, các giá trị lưu trữ trình bày nhiệt độ phân tán qua các phần của vật liệu của các ô. Tất cả các ô được cập nhật song song nhau, và tốc độ tính toán không phụ thuộc vào số các ô, N. Kết quả được lấy từ các ô tính toán nhỏ có thể bằng cách đưa hầu hết các điều khiển ra bên ngoài ô mặc dù là có một bộ điều khiển tập trung trái ngược. Các ô này được tái tạo cho đến khi toàn vùng FPGA được sử dụng [4]. Đặt nhiệt độ phải Đặt nhiệt độ trái 1 2 N-1 N Hình 1. 12 Cấu trúc hàng ô 1.7.2. MULTIPLE Phần này thảo luận về bộ điều khiển ô và tính toán cấu trúc ô của kiến trúc MULTIPLE. Kiến trúc có tên là MULTIPLE vì mỗi ô tính toán xảy ra nhiều bộ cộng và bộ nhân: một trong số mỗi bộ cộng và nhân xảy ra trong các công thức dưới đây được tính toán. Các phép tính được hoàn thành bằng kết hợp các phép tính logic, vì vậy các giá trị mới được khởi tạo trong mỗi xung đồng hồ. Tuy nhiên, do bắt tay cần để viết các kết quả đến SSRAM, mỗi vòng lặp làm trong hai xung đồng hồ. Do vậy, bộ điều khiển ô là vô cùng đơn giản FSM mà kết nối hai trạng thái. Trong từng trạng thái, giá trị được tính, và trong suốt trạng thái khác, giá trị được lưu trữ trong bộ nhớ. Kiến trúc MULTIPLE chiếm lấy một số không gian chip lớn vì vậy nó không hữu ích so với các kiến trúc khác. VHDL hỗ trợ các phép toán số học chuẩn, vì vậy các phép toán cần thiết cho tính hoán có thể được viết trực tiếp trong phần cứng. Tuy nhiên, thật sự thoải mái để đặt các phép toán trong dạng các số các phép nhân vì nhiều phần cứng chiếm tốn nhiều vùng hơn phép cộng. Do vậy, luồng nóng tính toán cho kiến trúc MLTIPLE được thực thi chỉ ra ở hình 2.4. Các biến tạm vàtt 21, được dùng để đảm bảo rằng phần mềm tổng hợp làm các phép toán logic không cần thiết. Để kiểm tra, kiến trúc MULTIPLE thực thi theo chiều rộng so với phần cứng. 18 --------------------------------------------------------------------------------------------------------           2 1 ,, 1 , 1 1, 1 1,22 1 ,, 1 1 , 1 ,2 1 , 11 21 1 , 1 ,1 2 ,)1(. )(,0 )( tTT TTT x ttTT TTtt CTCttt CT CTt i jp i jp i jm i jm i jm i jm i jm i j i j i jm i jp b i jm i j i ja b i jm b i jm                               Hình 1. 13 Luồng nóng tính toán, công thức cho kiến trúc MULTIPLE Tất cả các biến và tham số trong hình 2.4 là các số nguyên W-bit theo thang đo có dấu phẩy cố định, vì thế các kết quả của các phép nhân phải đúng đơn vị đo như thế. Đầu tiên, một phép nhân VHDL chuẩn được thực hiện sẽ tạo ra một kết quả là 2W-bit. Kết quả số nguyên theo thang đo của phép nhân này nằm trong kết quả 2W bit như trình bày trong hình 2.5 với S bit số nguyên. Đối với kiến trúc này và các kiến trúc khác, W=25 và S=5. W được chọn theo đồ thị nhiệt độ sử dụng các tính toán theo dấu phẩy cố định và dấu phẩy động và W tăng cho tới khi đồ thị theo thang dấu phẩy cố định bị “khoá” chính xác. 2W 1 WW+1 W-S 2W-S Kết quả nhân nguyên được căn chỉnh Kết quả nhân VHDL Hình 1. 14 Các bộ nhân nguyên được canh chỉnh Cấu trúc ô cho kiến trúc MULTIPLE được chỉ ra ở hình 2.6. Số lượng các khối cộng và nhân ở trong hình chỉ ra tại sao mỗi ô chiếm nhiều vùng chip. Mỗi khối nhân thực hiện phép toán chỉ ra ở hình 2.5. Tín hiệu enable cho phép các kết quả mới để gắn các thanh ghi và khởi tạo bởi trạng thái 2 FSM trong bộ điều khiển ô [6]. 19 -------------------------------------------------------------------------------------------------------- + 2X scaled + scaled + scaled scaled scaled Y N 0 + + Tm Tp + + - aCt. scaled -1 -Cb Cb 2/ xt t scaled α Thanh ghi To neighbors Tm,j+1 Tm,j-1  Cell Clock Reset Enable W W W Hình 1. 15 Cấu trúc ô cho kiến trúc MULTIPLE 1.7.3 SINGLE Phần này thảo luận bộ điều khiển ô và tính toán cấu trúc ô của kiến trúc SINGLE Kiến trúc có tên là SINGLE bởi vì mỗi một ô chia sẻ theo thời gian một bộ nhân hoặc một bộ cộng theo một chuỗi các phép toán mà thực thi các phép toán luồng nóng. Do vậy, nó dùng ít vùng hơn so với MULTIPLE nhưng nhiều chu kỳ xung đồng hồ hơn, mặc dù tốc độ bit có thể cao hơn vì các tín hiệu chỉ là ở mức bộ nhân để truyền thông thay vì đa mức như trong MULTIPLE. Mỗi chu trình hoạt động đơn bao gồm phép nhân và phép cộng. Thời gian chia sẻ các tài nguyên số học đạt được thông qua nhiều trạng thái FSM, để bộ điều khiển cho SINGLE phức tạp hơn bộ điều khiển của bộ MULTIPLE [6]. Nếu một phép cộng không được làm để thực thi phép toán nào đó, thì tài nguyên bộ cộng ở trạng thái rỗi và tiêu tốn chu kỳ xung đồng hồ. Trạng thái tương tự giữ mặc dù phép nhân không cần thiết. Do vậy, thật sự thoải mái để phân vùng các phép toán trong các phép toán phụ mà bao gồm cả nhân lẫn cộng, như chỉ ra ở hình 2.7. Các biến tạm 21 tvàt là chủ yếu và cộng đến một số các bit nguyên yêu cầu bởi mỗi cell, mặc dù thật sự không hữu ích trong vấn đề cho các flip-flop-rich của FPGA. Một vài các phép toán đặc biệt được làm theo trật tự hiệu năng ô cao nhất. Tuyến 5 và 11 ở trong hình 2.7 làm hai phép gán đồng thời cho mục đích lưu lại xung đồng hồ. Hai số A và B có thể trừ bởi thực phép toán như là -1xB+A=A-B, nhưng phần cứng không hỗ trợ trực tiếp phép trừ như là AxB-C. 20 --------------------------------------------------------------------------------------------------------       11,, 1, 1 ,1 1 1 ,21 1221 1 1, 1 1,2 1 1 ,1 11 211 1 21 11 2 1 ,1 1 , 1 111 1 ,1 112 ,011 2110 9 18 7 06 ,5 )1(4 )(,0. )(,0 3 02 11 tTtT tTTtt tTt x tt tt x tt TTt tTtt tt ttttt t CTtCt CT t ttt CTt i jp i jp i jm i jm i jm i jm i jm i jp i j i j i j i j b i jma b i jm b i jm                                              Hình 1. 16 Các phép toán luồng nóng phân vùng cho kiến trúc SINGLE Các cấu trúc bộ điều khiển và ô cho kiến trúc SINGLE được chỉ ra ở hình 2.8. Các khối cộng và nhân thì giống như mà dùng bởi MULTIPLE, nhưng đó chỉ là một trong số của kiến trúc này. Mỗi trạng thái trong 12 trạng thái FSM của bộ điều khiển ô xác định các đầu vào được dùng cho bộ nhân và bộ cộng cũng như các thanh ghi đích mà sẽ gắn chặt kết quả của phép toán nhân và cộng. Bộ điều khiển cũng phân tán các đầu vào tham số cố định đến tất cả các ô. Mặc dù không được chỉ ra ở hình 2.8, mỗi ô bao gồm một bộ so sánh giống nhau như là MULTIPLE [6]. scaled + Tp α Tm T1 T2 Điều khiển ô 12-State FSM Tm,j+1 Tm,j-1 Tham số bộ nhân nguồn Cộng tham số nguồn Lựa chọn nguồn nhân Lựa chọn nguồn cộng Lựa chọn đích Thanh ghi ô W W W Lân cận Hình 1. 17 Các cấu trúc của bộ điều khiển và ô cho kiến trúc SINGLE 21 -------------------------------------------------------------------------------------------------------- 1.7.4 BOOTH Phần này thảo luận về bộ điều khiển ô và tính toán các cấu trúc ô của kiến trúc BOOTH. Chiếc lược giảm tải tiêu tốn thời gian có thể đạt được hơn nữa bởi loại trừ ra một số lượng lớn khối phép nhân trong SINGLE và làm tất cả các phép toán với một bộ cộng W bit đơn. Cách để thực hiện phép nhân với số đã được gán dùng một bộ công là thuật toán Booth, mà là phương pháp dùng cho kiến trúc này và lý do đó nó đặt tên là BOOTH. Dùng phương pháp này, mỗi phép toán nhân làm trong nhiều chu kỳ đồng hồ W, nhưng các phép toán cộng có thể được làm trong một chu kỳ. Tần số đồng hồ có thể đạt được cao hơn cho SINGLE vì các tín hiệu trong kiến trúc BOOTH đi thông qua một bộ cộng hơn một bộ nhân theo sau bởi một bộ cộng. Như SINGLE, kiến trúc BOOTH yêu cầu điều khiển phức tạp theo trật tự trải dài các phép toán vượt quá thời gian theo một trật tự đúng. Một chuỗi W bit 0121 ..... aaaa ww  trình bày phần bù bởi:            2 0 1 0 1 1 1 2.2.2. w i w i i ii i i w w aaaaA Nếu a-1=0. Do đó, nếu A được nhân bởi số nguyên bù B:       1 0 1 ,.2.. w i i ii BaaBA Ở đây mỗi phép cộng A, phép trừ B, hay cộng 0 để mỗi phần tổng phụ thuộc trên nếu ai-1ai là 10, 01, hay 00/11. Thuật toán Booth dùng các sự kiện này và sự kiện mà nhân bởi 2i có thể được dịch chuỗi bits. Thuật toán Booth và phần cứng yêu cầu được chỉ ra ở hình 2.9 và hình 3.10. A và B là hai toán tử để nhân và C tích lũy thành phép cộng từng phần. Phép nhân bởi 2i được làm bởi phép dịch C và A sang phải. Bộ cộng chứa phần cứng them vào cho bộ trừ B và cho cộng ). Kết quả thông thường của bộ nhân là một số nguyên bù hai mà tập trung trong vào các thanh ghi C và A, nhưng bởi vì các số nguyên canh chỉnh được dùng, kết quả không coi là hợp lệ ở trong C và A tại điểm chỉ ra ở hình 2.5. + B C A ai ai-1 W W Bộ nhân Cộng B, -B hoặc 0 Số nhân Kết quả sau w chu kỳ Hình 1. 18 Phần cứng cho thuật toán Booth 22 -------------------------------------------------------------------------------------------------------- A  Bộ nhân B  Số nhân C  0 ai-1  0 i  W C  C+B C  C-B Chuỗi số học bên phải C A ai-1 i  i-1 Kết quả tại C A i=0 N Y ai-1 ai 01 10 00/11 Hoạt động nhân Hình 1. 19 Thuật toán Booth cho bộ nhân bù hai Giống như kiến trúc MULTIPLE, ưu điểm để tính toán các phép toán luồng nóng dùng ít nhất các phép toán nhân, nhưng không giống như MULTIPLE, lý do này là không thể bởi vì kích thước nhưng bởi vì thời gian: các phép toán nhân là W lần dài hơn phép cộng ở trong kiến trúc BOOTH. Do vậy, các phép toán luồng nóng cho kiến trúc BOOTH là phần được chỉ ra ở hình 2.11. Tuyến 11 và 12 thực thi và làm trong hai phép toán cộng trong hai chu kỳ xung đồng hồ hơn phép nhân, mà làm trong W xung đồng hồ, như với SINGLE, các biến tạm 21 tvàt là chủ yếu và cộng đến thanh ghi đếm trong mỗi ô. 2 1 ,, 21, 22 1 , 1 ,2 211 222 1 .22 1 ,22 1 1, 1 1,2 18 17 16 15 14 13 12 11 10 tTT ttT ttt TTt ttt x ttt Ttt Ttt TTt i jp i jp i jm i jm i jp i jm i jm i jm i jm                    Hình 1. 20 Các phép tính luồng nóng cho kiến trúc BOOTH Các cấu trúc bộ điều khiển và ô cho kiến trúc BOOTH được chỉ ra ở hình 2.12. Mỗi ô dùng một bộ cộng đơn, nhưng các thanh ghi C và A cần cho thuật toán Booth     1 ,11 11 1 1 211 22 11 2 11 1 ,21 1 , 1 1 .,1 9 8 7 6 15 4 .3 )(, )(,0 2 )(1                      i jm i j i j i j i j a b i jm b i jm b i jm Ttt tt t ttt tt t Cttt CTtt CT t CTt   23 -------------------------------------------------------------------------------------------------------- tăng bộ đếm thanh ghi của ô. Thanh ghi B của thuật toán Booth là không rõ ràng nhưng là thanh ghi ô mà vượt qua phép chọn logic đầu vào 2. Điều này yêu cầu bộ điều khiển ở trạng thái giữ các tuyến được chọn phù hợp cho đến khi phép nhân được hoàn thành. Mỗi một trạng thái trong bộ điều khiển ô 18 trạng thái FSM xác định cả các đầu vào bộ cộng và thanh ghi đến mà gắn chặt vào kết quả phép toán. Bộ điều khiển cũng phân tán một đầu vào tham số đến tất cả các ô và chọn phép toán cộng hay là phép toán nhân. Bộ điều khiển ô có khả năng chọn phép toán trừ như A-B có thể được thực hiện. Mặc dù không chỉ ra ở hình 2.12, mỗi ô bao gồm một khối bitwise less-than và chỉ ra việc kiểm tra trong suốt tuyến 2 ở hình 2.11, mà phép toán nhân có cùng số chu kỳ đồng hồ như kiểm tra less-than. Dùng kếp như thế này trong các chu kỳ đồng hồ W tiết kiệm không gian mà giành bởi khối less-than. Bộ đếm trong bộ điều khiển ô đếm W chu kỳ cho phép tính nhân và được thực thi thanh ghi dịch dịch đơn gian hơn và làm tăng tốc độ. Trong phần thực thi này, các phép tính nhân làm W+2 chu kỳ yêu cầu khởi tạo, nhưng nó có thể xây dựng một thiết kế như là chúng lấy W chu kỳ. Khởi tạo -B bằng phép toán nghịch, B được cung cấp và +1 được khởi tạo trong phép logic, mà cộng lẫn nhau để tạo ra B phủ định [6]. Tp α Tm T1 T2 Lân cận C A ai + Carry Logic Logic chọn đầu vào 2 ai-1 Logic chọn đầu vào 1 Tín hiệu điều khiển khác W W W ô Kết quả lựa chọn Lựa chọn đích Lựa chọn nguồn Tham số đầu vào Bộ nhân Tm,j-1 Tm,j+1 Bộ điều khiển ô 18-State FSM Counter i Hình 1. 21 Cấu trúc ô và bộ điều khiển cho kiến trúc BOOTH 1.7. 5 BIT Phần này thảo luận bộ điều khiển ô và tính toán cấu trúc ô của kiến trúc BIT. Kiến trúc MULTIPLE là một kiến trúc yêu cầu ít không gian và tiêu tốn thời gian lớn. Để đạt được điều này bằng cách thực hiện các phép toán một bit tại một thời điểm, mà kiến trúc BIT được dùng, do đó mới được đặt tên là như thế. Giống như BOOTH, kiến trúc BIT dùng thuật toán Booth để thực thi nhiều phép nhân, nhưng mỗi phép cộng là một chuỗi bits nối tiếp. Do vậy, nhiều phép nhân làm nhiều chu kỳ W2 và phép 24 -------------------------------------------------------------------------------------------------------- cộng thực thi W chu kỳ mặc dù tần số chu kỳ có thể cao hơn so với BOOTH bởi vì các tín hiệu của kiến trúc BIT đi tới bộ cộng 1 bit hơn bộ cộng toàn bộ. Mặc dù kiến trúc BIT chiếm ít không gian của ô, mô tả VHDL của nó là phức tạp nhất trong bốn kiến trúc do yêu cầu của bộ điều khiển thời gian. Bởi vì kiến trúc BIT tương tự với BOOTH, các phép toán luồng nóng được phân vùng gần với cái cách của kiến trúc BOOTH. Sự khác nhau giữa phần BOOTH được chỉ ra ở hình 2.11 và phần BIT là bốn tuyến đầu tiên. Bốn phép toán đầu tiên của kiến trúc BIT được chỉ ra ở hình 2.13. Lý do cho sự khác biệt này ở trong các tuyến này là do sự ràng buộc quan trọng mà các phép toán nhân có thể được thực thi bởi kiến trúc BIT. Hai toán tử của phép nhân được dịch thông qua phần cứng một bit tại một thời điểm nhưng tốc độ khác nhau: toán tử phải quay sau mỗi chu kỳ xung đồng hồ, trong khi toán tử trái quay với thanh ghi đích mỗi W chu kỳ đồng hồ. Do vậy, toán tử phải không có cùng thanh ghi đích, tại sao cả hai biến 21 tvàt được gán cho tuyến 1 và tại sao 2t được thiết lập ở tuyến 3: để các phép toán ở trong tuyến 2 và 4 có thể được thực thi. Cũng như SINGLE và MULTIPLE, 21 tvàt là các biến tạm chủ yếu.         1 22 1 211 211 1 , 1 , 1 , 21 4 ,.3 2 , ,0 ,1               i j i ja b i jmb i jm b i jm tt tCttt ttt CTCT CT tt   Hình 1. 22 Tuyến đầu tiên của kiến trúc BIT cho tính toán luồng nóng Các cấu trúc của ô và bộ điều khiển cho kiến trúc BIT được chỉ ra ở hình 3.14. Tất cả các thanh ghi được dịch để mà có thể được đọc và viết một bit tại một thời điểm, nhưng chỉ có các thanh ghi C và Tm được thực thi với flip-flop. Các thanh ghi khác được thực thi như các thanh ghi dịch LUT, nói khác chúng chiếm nhanh tất cả các flip- flop FPGA do số lượng lớn các ô mà có thể phù hợp trên chip. Giống như BOOTH, thanh ghi B của thuật toán Booth ngăn chặn, nhưng thanh ghi A cũng bị chặn trong kiến trúc BIT bởi vì các bit kết quả có thể được dịch đến thanh ghi đích của chúng như chúng được khởi tạo. Không giống như BOOTH, chọn các bit kết quả chính xác yêu cầu điều khiển định thời phức tạp trong bộ định khiển ô. Bởi vì thanh ghi B bị chặn, bộ điều khiển ô phải giữ các tuyến chọn đầu vào 2 thông qua phép nhân và quay tổng cộng W2lần. Yêu cầu định thời đạt được dùng 2 bộ đế m chu kỳ W, mỗi phần thực thi như là thanh ghi dịch đơn giản để tiết kiệm không gian và tăng tốc độ. Trong phần thực thi này, các phép toán cộng và nhân làm W2+W và W+1 chu kỳ, do yêu cầu khởi tạo, nhưng nó có thể xây dựng một thiết kế mà chúng lấy W2 và W chu kỳ. Mỗi trạng thái trong các bộ điều khiển ô 19 trạng thái FSM xác định các đầu vào bộ cộng 1bit và thanh ghi đích sẽ quay các bit kết quả như chúng được khởi tạo. Bộ điều khiển được phân tán đầu vào tham số hằng số một bit tại một thời điểm đến tất cả các ô và chọn phép toán để cộng hay là nhân. Bộ điều khiển ô có khả năng hoạt động phép trừ để hoạt động như A-B có thể được thực thi. Kiến trúc BIT yêu cầu 19 trạng thái thay vì 18 trong BOOTH bởi vì kiểm tra bitwise less-than yêu cầu một phép toán riêng biệt, mà xảy ra trước khi tuyến 1 trong hình 2.13. Các trạng thái khác yêu cầu cho việc khởi 25 -------------------------------------------------------------------------------------------------------- tạo và đồng bộ với SSRAM, nhưng một vài chúng xảy ra một khi tại điểm bắt đầu chu kỳ tính toán [6]. Lân cận TP Tm α t1 t2 + Logic lựa chọn đầu vào 2 ai ai-1 0 Lựa chọn nguồn Tham số đầu vào Bộ nhân Tín hiệu điều khiển khác Bộ điều khiển ô 18-State FSM Counter i Counter j Lựa chọn đích Chấp nhận xoay Ô Tm,j-1 Tm,j+1 Carry Logic Logic lựa chọn đầu vào 1 Chuỗi Logic Hình 1. 23 Cấu trúc ô và bộ điều khiển cho kiến trúc BIT 1.8. Kết luận Trong chương đã trình bày được về tổng quan và cấu trúc căn bản của FPGA, về các cải tiến của Jbits bổ sung cho khung hoạt động JHDLBits bao gồm một thư viện gốc, một cấu trúc liên kết và một số lớp nối nhằm mục đích đơn giản hoác quá trình thiết kế JHDLBits. Các cải tiến JHDLBits và JBits quá trình từ JHDL cho đến Jbits. Trình bày các vấn đề cơ bản liên quan tới VTsim, tập trung vào các công cụ ảnh hưởng đến VTsim và giới thiệu một số thuật ngữ mô phỏng phổ biến. Mô tả bốn kiến trúc tính toán ô thực hiện cho việc nghiên cứu, nhưng chương cũng trình bày phần cứng FPGA mức cao dùng cho mỗi từng kiến trúc để thuận tiện tương tác với hệ thống. Bốn kiến trúc MULTIPLE, SINGLE, BOOTH, và BIT được phân biệt dựa vào cái cách mà chúng tính toán giải quyết bằng các cấp độ tương đương và bằng cách thực hiện các phép tính số học khác nhau. Phần cứng được thiết kế cụ thể cho từng vấn đề, bởi vậy mỗi kiến trúc bao gồm các khối số học rất nhỏ yêu cầu để tính toán vấn đề. Do đó, mỗi khối số học được dùng chỉ trong mỗi xung đồng hồ. Tính logic yêu cầu cho tương tác hệ thống được giảm nhỏ nhất để lưu trữ nhiều vùng chíp có thể cho tính toán ô. Ngoài trừ tính logic mà điều khiển tần số đồng hồ của FPGA, 26 -------------------------------------------------------------------------------------------------------- thì giao diện logic hệ thống giống nhau cho cả bốn kiến trúc. Theo đó chương được tổ chức như sau:  Thiết kế mức cao tổng quát.  Kiến trúc MULTIPLE.  Kiến trúc SINGLE.  Kiến trúc BOOTH.  Kiến trúc BIT. Chương đã mô tả bốn kiến trúc tính toán ô thực hiện cho việc nghiên cứu, cũng như trình bày phần cứng FPGA mức cao dùng cho mỗi từng kiến trúc để thuận tiện tương tác với hệ thống. Bốn kiến trúc MULTIPLE, SINGLE, BOOTH, và BIT được phân biệt dựa vào cái cách mà chúng tính toán giải quyết vấn đề bằng cách dùng các cấp độ tương đương và bằng cách thực hiện các phép tính số học khác nhau. Phần cứng được thiết kế cụ thể cho từng vấn đề, bởi vậy mỗi kiến trúc bao gồm chỉ là các khối số học rất nhỏ yêu cầu để tính toán vấn đề. Ngoài trừ tính logic mà điều khiển tần số đồng hồ của FPGA, thì giao diện logic hệ thống giống nhau cho cả bốn kiến trúc. 27 -------------------------------------------------------------------------------------------------------- CHƯƠNG 2: MỘT SỐ ỨNG DỤNG CỦA FPGA 2.1. Mở đầu Mục tiêu của chương là tìm hiểu và trình bày về một số ưu điểm nổi bật của FPGA, tính khả thi của nó trong hệ thống 3G-UMTS. Chương được tổ chức trình bày như sau:  Ứng dụng FPGA cho trạm gốc 3G- UMTS.  Ứng dụng FPGA cho mã Turbo. 2.2. Ứng dụng FPGA cho trạm gốc 3G-UMTS 2.2.1. Tại sao lại lựa chọn FPGA 2.2.1.1 Giảm rủi ro thiết kế Platform FPGA cho phép “phân hệ mềm” của các hệ thống, có khả năng thiết kế phần mềm và phần cứng song song. Trong khi đó, BTS lại là một phần mềm mức cao, gồm mã DSP và lớp logic tốc độ cao. Khi đó, chúng có thể được thiết kế song song, do vậy tiết kiệm tối đa chi phí. FPGA cho phép kiểm lỗi thông minh và có nhiều ứng dụng cho tương lai, do vậy các chức năng này có thể được thêm vào trong sản phẩm nhằm ứng dụng cho phát triển sau này. Mặt khác một BS thực sự phức tạp, và rất có thể bị thay đổi tất cả mọi thứ kể từ phiên bản đầu tiên. 2.2.1.2. Đáp ứng yêu cầu phát triển của BTS Hình dưới đây mô tả hệ thống phát triển của các kiến trúc của FPGA. Sự phát triển của họ kiến trúc đáp ứng từng giai đoạn phát triển của hệ thống viễn thông. Thế hệ 1G là hệ kiến trúc XC2000-XC3000; 2G là XC4000, Virtex; 3G là VirtexII và phân hệ đáp ứng cho tương lai 3G+ là VirtexII Pro. 1G 2G 3G Glue Logic Khối chức năng mức hệ thống Nền tảng FPGAs Nền tảng hệ thống khả lập trình DLLs High Part.VO Khối RAM Bộ nhớ phân tán IP Immersion 840 Mbps LVDS TripleDES XCITE Multiplier DCM PowerPC RocketIO Đ ộ p hứ c tạ p c ủ a th iế t b ị XC 2000-XC 3000 XC 4000, Virtex Virtex-II Virtex-II Pro 1985 1992 2000 2002 2004 Hình 2. 1 Sự phức tạp của thiết bị và quá trình phát triển của FPGA 28 -------------------------------------------------------------------------------------------------------- 2.2.2. Hạn chế của DSP ban đầu 2.2.2.1 Thiết bị DSP ban đầu Kiến trúc DSP ban đầu được thiết kế trên công nghệ Von Neumann. Dạng thiết kế được cho như hình 3.2. Reg Dữ liệu vào Dữ liệu ra Khối MAC Thuật toán lặp 256 lần Hình 2. 2 Bản thiết kế DSP ban đầu Theo kiến trúc này, sau khi dòng dữ liệu vào sẽ đi qua cổng dữ liệu sẽ đi qua khối xử lý Mac, thuật toán lặp 256 lần. Ví dụ, nếu có 256 điểm lọc xung thì ta cần 256 phép toán cộng và nhân MAC trên một mẫu dữ liệu. Những hạn chế còn tồn tại trên thiết bị DSP ban đầu này:  Kiến trúc cố định, không linh hoạt. Số khối hoạt động MAC ít, 1-4 khối; băng thông cố định.  Việc xử lý nối tiếp làm giới hạn thông lượng dữ liệu. Việc xử lý này dựa trên việc chia sẻ thời gian làm việc, chính vì vậy tốc độ xử lý càng cao khi tần số thực hiện càng lớn. Nhưng do giới hạn của công nghệ hiện tại nên việc phát triển hệ thống là khá khó khăn. 2.2.2.2. Các ưu điểm về hiệu năng của FPGA Hiệu năng của FPGA có sự phát triển vượt bậc so với DSP, khi công việc thực hiện có thể được phân ra thành nhiều khối thực hiện nhỏ, như hình 2.3 sau: Reg0 Reg1 Reg2 Reg255 C0 C1 C2 C255 Dữ liệu vào Dữ liệu ra Thực hiện 256 MAC trong một chu kỳ clock Hình 2. 3 Khối thực thi FPGA 29 -------------------------------------------------------------------------------------------------------- Như vậy, nếu như trong khối DSP ban đầu, công việc thực hiện sẽ phải thực hiện 256 clock, thì tại thiết kế FPGA này chỉ cần 1 clock có thể thực hiện xong toàn bộ khối việc phải xử lý. Các ưu điểm của FPGA so với DSP là:  Kiến trúc mềm dẻo, phân tán về tài nguyên, việc xử lý và bộ nhớ.  Xử lý song song cùng lúc nhiều phép tính, do vậy tối đa về thông lượng dữ liệu.  FPGA cũng hỗ trợ xử lý nối tiếp. 2.2.3. Các tính năng chính của FPGA trong 3G Một trong các tính năng quan trọng của trạm thu phát sóng 3G là card xử lý băng cơ bản. Card này đưa ra tín hiệu vô tuyến được số hóa và điều khiển trạm và tín hiệu đầu vào; sau đó sẽ tạo ra đồng thời nhiều kênh cho cùng lúc nhiều người sử dụng bao gồm cả kênh dữ liệu và thoại. Xử lý băng tần có thể dựa vào tốc độ xử lý ký hiệu và tốc độ xử lý chíp. Việc thực thi tốc độ ký hiệu cho người dùng thoại khác rất nhiều so với người sử dụng dữ liệu. Tốc độ ký hiệu cho thoại có thể dùng bộ mã hóa/ giải mã Viterbi, trộn/ giải trộn. Xử lý ký hiệu sử dụng chức năng mã hóa Turbo và tăng tốc độ chip. 2.2.3.1. Tốc độ xử lý tín hiệu cao Kỹ thuật xử lý tín hiệu như bộ lọc FIR, FFT/IFFT và mã xoắn, mã Turbo và xử lý tín hiệu băng cơ sở. Có rất nhiều phép tính phức tạp và yêu cầu đến hàng triệu phép tính nhân và cộng trên một giây. Tính năng ưu việt của FPGA là đó là có thể xử lý cùng lúc rất nhiều kênh, tốc độ xử lý cao hơn rất nhiều so với bộ xử lý DSP, trong khi giá thành lại rẻ hơn nhiều. 2.2.3.2 Kiểm tra lỗi đường truyền (FEC) Việc xây dựng chương trình FPGA và hiệu năng DSP cao có thể đạt được nhờ việc xử lý song song. Và tốc độ xử lý FEC cao còn tùy thuộc vào tốc độ xử lý băng tần. Sự mềm dẻo và lập trình mở cũng yêu cầu việc tính toán tỷ lệ lỗi bit cho nhiều lược đồ khác nhau.Việc lập trình mở cho phép nhà phát triển download nhiều lược đồ FEC khác nhau trên cùng một platform phần cứng để kiểm tra và đánh giá hiệu năng của lược đồ FEC trên môi trường hệ thống. Điều này cho phép tính toán IP trước khi thực thi hệ thống. Mã xoắn Turbo (TCC) cung cấp hiệu năng cao về độ tin cậy truyền dẫn thông qua môi trường nhiều tạp âm. Mã TCC hoạt động tốt dưới điều kiện tỷ số tín trên tạp thấp và cng cấp hiệu năng gần như tối ưu theo định nghĩa giới hạn của Shannon. Mã xoắn Turbo hỗ trợ thay đổi kích thước động, cho phép sự mềm dẻo, chỉnh sửa lỗi chuyển tiếp hiệu năng cao. Trong hệ thống 4G, xử lý MIMO tăng đáng kể băng tần truyền thông giữa máy phát và máy thu bằng sử dụng nhiều anten để tạo ra nhiều kênh vô tuyến song song. 2.2.3.3. Chức năng bắc cầu và điều khiển Có khả năng kết nối ASSP, ASIC, các bộ xử lý và bộ nhớ với nhau. 30 -------------------------------------------------------------------------------------------------------- 2.2.3.4. Các giao diện thích ứng với các chuẩn mạng khác nhau Tối ưu hóa các thay đổi thiết kế hệ thống để cho phép các sản phẩm phù hợp với các giao thức và chuẩn mạng khác nhau. 2.2.4. Máy thu phát 3G 2.2.4.1. Máy thu – phát Sơ đồ các khối của máy phát – thu 3G cơ sở, nguyên lý làm việc được thể hiện trên hình vẽ [2]. CRCTurbo/ Mã hóa xoắn Bộ trộn Mã định kênh (OVSF) Mã trộn Polyphase RRC and Halfband Filter Polyphase RRC and Halfband Filter NCO S CRC p/2 DAC Reference) Reference) Multiply Hình 2. 4 Sơ đồ máy phát 3G Bộ xử lý DSP Backplane •LVDS •PCI •Gigabit Serial Phần mềm điều khiển nhúng Filtering Down- Conversion Beam Former Máy thu RAKE Bộ phân tập anten Bộ dò đa người dùng Giải mã FEC RFFE Chức năng điều khiển và giao diện hệ thống Matched Filter Acquire Tracking De-spread Channel estimation maximum ratio combining Equal ratio combining FPGA Hình 2. 5 Sơ đồ máy thu 3G 31 -------------------------------------------------------------------------------------------------------- 2.2.4.2 Máy thu Rake Rake Hình 2. 6 Mô hình máy thu Rake Trong các hệ thống di động, có hiện tượng đa đường do máy thu nhận được nhiều phiên bản của tín hiệu đến trên nhiều đường với thời gian khác nhau. Những tín hiệu này thường có thể đến tại một máy thu, “đối pha” (180o) với nhau và có thể gây triệt tiêu nhiễu. Các hệ thống 3G sử dụng các máy thu để chống suy yếu đa đường. Các máy thu này được thiết kế để nhận các tín hiệu đa đường đến tại một anten thu với những độ lệch thời gian khác nhau, tương quan với chúng, rồi tổng hợp chúng lại thành một tín hiệu đồng bộ đơn. Điều này đã cải tiến chất lượng cuộc gọi và vùng phủ tốt hơn [2]. 2.2.5. Sơ đồ MUD Thế hệ di động thứ 3 được thông qua cho các dịch vụ tốc độ cao và hiệu quả sử dụng tài nguyên phổ. Trong hệ thống UMTS, giản đồ đa truy nhập phân chia theo mã băng rộng được sử dụng. Thông lượng mong đợi cho hệ thống 3G là 144 kbps với phương tiện di chuyển, 384 kbps với người đi bộ và 2 Mbps với môi trường trong nhà. Bộ thu trong hệ thống 3G phải đựa vào tính toán không chỉ nhiễu liên ký hiệu (ISI) mà quan trọng hơn là nhiễu đa truy nhập (MAI) tăng nhanh theo số lượng người dùng và tốc độ dữ liệu. Các bộ dò đa người dùng (MUD) được áp dụng để loại trừ MAI và trở nên thật sự có ý nghĩa để triển khai một mạng 3G có hiệu quả. Khía cạnh thuật toán của MUD trở thành một vấn đề nghiên cứu quan trọng trong hàng thập kỉ trước. Mô hình hướng tới FPGA cũng được đề xuất. Các công trình nghiên cứu trước đây đã chứng minh một số giới hạn trong các hệ thống thực theo các ràng buộc phần cứng, theo định thời và theo thuật toán (thuật toán phức tạp, yêu cầu truy nhập bộ nhớ, luồng dữ liệu). Thêm vào đó, không có công trình nghiên cứu nào thực hiện để tối đa hóa số người dùng trên một chíp (hay trên một thiết bị trong trường hợp của FPGA). Tối đa hóa số người dẫn đến việc tăng dung lượng cell và xử lý đa anten. Bởi vì bộ thu dựa trên lỗi trung bình quân phương tối thiểu (MMSE) cho phép độ lợi đáng kể về mặt hiệu suất, bộ lọc hai tầng tuyến tính tương thích MUD (CF-MUD) dựa trên bộ thu MMSE được đề xuất cung cấp sự cân bằng giữa hiệu suất và tính phức tạp. Thuật toán này thể hiện tính phức tạp thấp và tính cân đối hợp lý ảnh hưởng đến việc thực thi FPGA. CF-MUD dựa trên hai khối, khối dấu và khối dò. Mỗi khối hoạt động như một bộ lọc để triệt ISI và MAI. Trong các nghiên cứu trước, các thực thi FPGA của khối dấu được trình bày. Dựa trên thuật toán CF-MUD, mô tả một kiến trúc thiết kế đầy đủ dành cho các thành phần FPGA hiện thời - Virtex-II and Virtex-II Pro của Xilinx bao gồm các khối dấu và khối dò [2]. 32 -------------------------------------------------------------------------------------------------------- Channel baseband model Lấy dấu 1 Lấy dấu K Khối lấy dấu Khối dò Dò rtrain btrain r ̃ ŷ1 ŷK b1 bK Hình 2. 7 Sơ đồ khối bộ dò đa người dùng (CF-MUD) 2.2.6.1 Cơ sở a. Mô hình DS-CDMA cơ sở Trong mô hình hệ thống DS-CDMA, ta xem số ký tự truyền dẫn người dùng di động K từ E={-1,1}. Ký hiệu của mỗi người dùng được trải phổ bởi chuỗi mã PN với chiều dài cN gọi là mã dấu. T chỉ chu kỳ ký hiệu và cT chỉ chu kỳ chíp, trong đó c c T TN  là một số tự nhiên. Người dùng thứ k phát ký hiệu )(nkb Trạm BTS nhận tín hiệu băng cơ sở có thể viết như sau :        1 0 1 1 , )()( , )( ~ )()()( b kN n K k L l lk n k n lk n kk tnTtshbAtr  (2.1) Trong đó t là thời gian, kL là số tuyến truyền dẫn, )( ,nlkh và lk , tương ứng là độ lợi phức và trễ truyền dẫn của tuyến l cho người dùng k. bN thể hiện số ký hiệu phát. kA là biên độ phát của người dùng k. )(nkS là dấu riêng của người dùng k; và )(t là nhiễu Gauss trắng cộng với phương sai 2n . Để tăng hiệu suất và dung lượng của hệ thống truyền thông, ISI và MAI phải được tối thiểu hóa. Vì thế việc thiết kế MUD có khả năng xử lý để triệt nhiễu là vấn đề rất quan trọng. Phần sau mô tả tổng quan về CF-MUD [2]. b. Bộ dò đa người dùng bộ lọc phân tầng. Sơ đồ khối của bộ dò đa người dùng CF-MUD để thực hiện một FPGA được mô tả trong hình 2.7. Ta có thể phân biệt hai khối : Dấu và dò. Mỗi khối hoạt động như một bộ lọc tương thích để triệt ISI và MAI. MUD tương thích tuyến tính được đề xuất là dựa trên phương thức tương thích trung bình quân phương tối thiểu (LMS). Bộ lọc này, tuy nhiên, cần chuỗi training để phỏng theo hệ số bộ lọc. So sánh với TDMA được sử dụng trong GSM, hệ thống UMTS không cung cấp truy nhập đến dữ liệu đã 33 -------------------------------------------------------------------------------------------------------- biết trừ bits hoa tiêu – để điều chỉnh hệ số của bộ lọc. Một điều quan trọng cần chú ý là để đảm bảo hội tụ, cả hai khối bộ lọc cần nhiều bits hoa tiêu hơn trong trường hợp phading nhanh. Chuỗi training biết trước train r ~ được tạo ra cục bộ dựa trên các tham số kênh (biên độ và trễ) từ kỹ thuật đánh giá kênh. Nguyên tắc của CF-MUD được mô tả tổng quan trong hình 2.8. Chuyển mạch này mô hình hóa pha training và pha dò. Khối đầu tiên của CF-MUD là khối dấu, phỏng theo dấu của người dùng mà không nhận biết độ ưu tiên mã PN của họ, Trong bước thứ nhất, đồng bộ tín hiệu nhận được )( ~ nr dựa trên trễ truyền dẫn được đánh giá cho mỗi người dùng. Trong pha training, ta sẽ sử dụng phương trình sau cho người dùng k (k=1,2…K) : ,0)0()),()(()( ^~^^  k train H kk WnrnWny (2.2) ),()()( ^ nynbna k train kk  (2.3) ,)()()()1( * ~^^ nanrnWnW k train kk  (2.4) Với: ,))1((),...,2(),(),()( ,...,),(),()( ~~~~~ )(1, ^ 1, ^ 0, ^^ T cccc T nNkkk TNnTrTnTrTnTrnTrnr vàwnwnwnW c           (2.5) Trong đó )(,1)dim()dim( ~^  c train k NrW định nghĩa giá trị thực của số phức, H)( định nghĩa hoạt động Hermitian và * là phép hợp. Các ký hiệu sau được sử dụng : ^ x là giá trị được đánh giá của x, )( ^ ny k là đầu ra tương thích của người dùng k, )( ^ nW k là vector của hệ số bộ lọc của người dùng k, )(nb traink là chuỗi dữ liệu training phát tổng hợp, )( ~ nr train là vector dữ liệu training thu tổng hợp từ chuỗi dữ liệu phát )(nb traink được truyền thông qua các tham số kênh được đánh giá; )(nak là bước tương thích của bộ lọc tương thích trong khối dấu. Khối dò để triệt phần dư của MAI và ISI dựa trên dữ liệu của tất cả người dùng được đánh giá sử dụng tín hiệu đầu ra của khối dấu. Từ tất cả người dùng, ta sẽ tạo ra vector )( ^ nyT ở đầu ra khối dấu như sau : T KKKT nynynynynynyny      )1(),...,1(),(),....,(),1(),....,1()( ^ 1 ^^ 1 ^^ 1 ^^ (2.6) Trong pha training, ta sử dụng phương trình sau cho người dùng k (k= 1,2,…k) : 34 -------------------------------------------------------------------------------------------------------- ,)()()()1( ),()()( ,0)0(),()()( * ^^^ ^ ^^^^ nnynvnv nonbn vnynvno kTTkTk k train kk TkT H Tkk      (2.7) Trong đó )(,13))(dim())(dim(,)(),...,(),()( ^^^ ,3 ^ ,2 ^ ,1 ^^ noKnynvnvnvnvnv kTTk T kKkkTk     , là đầu ra tương thích của người dùng k tương ứng với đầu ra của bộ lọc tương thích tương ứng tương, )( ^ nvTk là vector hệ số bộ lọc của người dùng k, )(nk là lỗi tương thích của việc dò và v là bước tương thích của bộ lọc tương thích trong khối dò. Channel baseband model Dấu  w 1 Dấu  w k Dấu  w K G hép )(1 nb train + - )(1 ny  )(nbtraink + - )(nyk  )(nbtrainK + - )(nyK  Dò  v 1 Dò  v k Dò  v K )(1 nb train + - )(1 ny  )(nbtraink + - )(nyk  )(nbtrainK + - )(nyK  )(nbtrain r ̃train(n) r(̃n) ô1(n) ôk(n) ôK(n) (a) (b) Hình 2. 8 Nguyên lý của khối lấy dấu (a) và khối tách sóng cho k người dùng (b) Trong pha dò, dữ liệu được truyền dẫn của người dùng d

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

  • pdfLUẬN VĂN-KỸ THUẬT FPGA ÁP DỤNG THỰC HIỆN CHO BỘ MÃ FEC TRONG HỆ DVB.pdf
Tài liệu liên quan