Ứng Dụng Của FPGA Tại Việt Nam - Tài Liệu Text - 123doc
- Trang chủ >>
- Luận Văn - Báo Cáo >>
- Công nghệ thông tin
Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.57 MB, 64 trang )
ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệpMỤC LỤCBẢNG KÝ HIỆU VIẾT TẮTKý Hiệu Diễn GiảiASIC Application Specific Integrated CircuitADC Analog to Digital ConverterALU Arithmetic Logic UnitASM Auto Senquencing Memory CPLD Complex Programmable Logic DeviceCPU Central Processing Unit DSP Digital Signal ProcessingDAC Digital to Analog ConverterDPU Data Processing Unit FIR Finite Impulse Response FPGA Field Programmable Gate ArrayHDL Hardware Description Language IC Integrated Circuit IEEE Institute of Electrical and Electronics EngineersJTAG Joint Test Action GroupLED Light Emitting DiodeLUT Look Up TableLMS Least Mean SquarePAL Programmable Array LogicPLA Programmable Logic ArrayNguyễn Anh Cường1ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệpPCI Peripheral Component InterconnectPE Process ElementRAM Random Access MemoryROM Read Only MemoryRS232 Recommended Standard 232SoC System on chipSRAM Static Random Access MemorySPLD Simple Programable Logic Device USB Universal Serial BusVHDLVery High Speed Itergrated Circuit Hardware Description Language VHSIC Very High Speed Itergrated CircuitNguyễn Anh Cường2ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệpLỜI MỞ ĐẦUNgày nay, xử lý tín hiệu và lọc số là một ngành phát triển hết sức mạnh mẽ, các công nghệ, thuật toán ngày càng được đổi mới và tối ưu hoá nhằm nâng cao tính hiệu quả của nó. Tuy nhiên, công nghệ phát triển càng cao thì đòi hỏi phần cứng phải đủ nhanh để xử lý. Các mạch lọc tương tự trước đây không còn đủ khả năng để đáp ứng yêu cầu đó nữa. Vì vậy, FPGA đã ra đời như một giải pháp cung cấp môi trường làm việc hiệu quả cho các ứng dụng thực tế. Tính linh động cao trong quá trình thiết kế cho phép FPGA giải quyết những bài toán phức tạp mà trước kia chỉ thực hiện nhờ phần mềm máy tính. Ngoài ra, nhờ mật độ cổng logic cao, FPGA được ứng dụng cho những bài toán đòi hỏi khối lượng tính toán lớn và dùng trong các hệ thống làm việc theo thời gian thực. Những ứng dụng trong thực tế của FPGA rất rộng rãi, bao gồm: các hệ thống hàng không, vũ trụ, quốc phòng, tiền thiết kế mẫu ASIC(ASIC prototyping), các hệ thống điều khiển trực quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mật mã học, mô hình phần cứng máy tính...Đặc biệt, với khả năng tái lập trình, người sử dụng có thể thay đổi lại thiết kế của mình chỉ trong vài giờ.Chính vì tính thiết thực mà FPGA đã mang lại, em quyết định chọn FPGA làm hướng nghiên cứu của mình. Trong bài khoá luận này, em xin trình bày một ứng dụng cụ thể của FPGA trong xử lý tín hiệu số đó là “Thực hiện bộ lọc FIR thích nghi dùng thuật toán LMS”. Đề tài được thực hiện tại phòng thí nghiệm mục tiêu “Các hệ tích hợp thông minh ( SIS LAB)” trực thuộc trường Đại học Công nghệ - ĐHQG HN.Em xin chân thành cảm ơn các thầy cô giáo đặc biệt là PGS.TS Trần Quang Vinh và Th.S Nguyễn Kiêm Hùng đã tận tình hướng dẫn và giúp đỡ em để hoàn thành bản luận văn này một cách tốt đẹp. Do thời gian và kiến thức có hạn nên công trình này không thể tránh khỏi sai sót, vì vậy em rất mong nhận được các ý kiến đóng góp của các thầy cô và các bạn.Em xin chân thành cảm ơn ! Hà Nội, Ngày 27 Tháng 3 Năm 2008Nguyễn Anh CườngNguyễn Anh Cường3ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệpChương 1TỔNG QUAN VỀ FPGA VÀ NGÔN NGỮ VHDL1.1. TỔNG QUAN VỀ FPGA1.1.1. Lịch sử ra đời của FPGAFPGA được thiết kế đầu tiên bởi Ross Freeman, người sáng lập công ty Xilinx vào năm 1984, kiến trúc mới của FPGA cho phép tích hợp số lượng tương đối lớn các phần tử bán dẫn vào 1 vi mạch so với kiến trúc trước đó là CPLD. FPGA có khả năng chứa tới từ 100.000 đến hàng vài tỷ cổng logic, trong khi CPLD chỉ chứa từ 10.000 đến 100.000 cổng logic; con số này đối với PAL, PLA còn thấp hơn nữa chỉ đạt vài nghìn đến 10.000.CPLD được cấu trúc từ số lượng nhất định các khối SPLD (Simple programable logic device) thuật ngữ chung chỉ PAL, PLA. SPLD thường là một mảng logic AND/OR lập trình được có kích thước xác định và chứa một số lượng hạn chế các phần tử nhớ đồng bộ (clocked register). Cấu trúc này hạn chế khả năng thực hiện những hàm phức tạp và thông thường hiệu suất làm việc của vi mạch phụ thuộc vào cấu trúc cụ thể của vi mạch hơn là vào yêu cầu bài toán.Kiến trúc của FPGA là kiến trúc mảng các khối logic, mỗi khối này nhỏ hơn nhiều nếu đem so sánh với một khối SPLD, ưu điểm này giúp FPGA có thể chứa nhiều hơn các phần tử logic và phát huy tối đa khả năng lập trình của các phần tử logic và hệ thống mạch kết nối, để đạt được mục đích này thì kiến trúc của FPGA phức tạp hơn nhiều so với CPLD.Một điểm khác biệt nữa với CPLD là trong những FPGA hiện đại được tích hợp nhiều bộ logic số học đã được tối ưu hóa, hỗ trợ RAM, ROM, tốc độ cao, hay các bộ nhân, cộng dùng cho những ứng dụng xử lý tín hiệu số.Ngoài khả năng cấu trúc lại vi mạch ở mức toàn cục, một số FPGA hiện đại còn hỗ trợ cấu trúc lại ở mức cục bộ, tức là khả năng cấu trúc lại một bộ phận riêng lẻ trong khi vẫn đảm bảo hoạt động bình thường cho các bộ phận khácNguyễn Anh Cường4ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệp1.1.2. Khái niệm cơ bản và cấu trúc của FPGAFPGA (Field-programmable gate array) là vi mạch dùng cấu trúc mảng phần tử logic mà người dùng có thể lập trình được. Chữ field ở đây muốn chỉ đến khả năng tái lập trình “bên ngoài” tuỳ theo mục đích ứng dụng của người sử dụng, không phụ thuộc vào dây chuyền sản xuất phức tạp của nhà máy bán dẫn. Kiến trúc tổng quan về FPGA được mô tả như hình 1:Hình 1: Kiến trúc tổng quan của FPGANguyễn Anh Cường5ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệpVi mạch FPGA được cấu thành từ các bộ phận:• Các khối logic cơ bản lập trình được (logic block)Phần tử chính của FPGA là các khối logic (logic block). Khối logic được cấu thành từ LUT và một phần tử nhớ đồng bộ flip-flop. LUT (Look up table) là khối logic có thể thực hiện bất kì hàm logic nào từ 4 đầu vào, kết quả của hàm này tùy vào mục đích mà gửi ra ngoài khối logic trực tiếp hay thông qua phần tử nhớ flip-flop.Khối logic được mô tả như hình 2:Hình 2: Khối logic lập trình được của FPGATrong tài liệu hướng dẫn của các dòng FPGA của Xilinx còn sử dụng khái niệm SLICE, 1 Slice gồm 4 khối logic tạo thành, số lượng các Slices thay đổi từ vài nghìn đến vài chục nghìn tùy theo loại FPGA.• Hệ thống mạch liên kết lập trình được Mạng liên kết trong FPGA được cấu thành từ các đường kết nối theo hai phương ngang và đứng, tùy theo từng loại FPGA mà các đường kết nối được chia thành các nhóm khác nhau, ví dụ trong XC4000 của Xilinx có 3 loại kết nối: ngắn, dài và rất dài. Các đường kết nối được nối với nhau thông qua các khối chuyển mạch lập trình được (programable switch), trong một khối chuyển mạch chứa một số lượng nút chuyển lập trình được, đảm bảo cho các dạng liên kết phức tạp khác nhau.• Khối vào/ra (IO Pads) Khối vào/ra nhiều hay ít là tuỳ thuộc vào từng loại FPGA. Chúng có thể được kết nối với các thiết bị bên ngoài như LED, USB, RS232, RAM....tuỳ theo mục đích sử dụng• Các phần tử tích hợp sẵnNgoài các khối logic, tùy theo các loại FPGA khác nhau mà có các phần tử tích hợp thêm khác nhau, ví dụ để thiết kế những ứng dụng SoC, trong dòng Virtex 4, 5 của Xilinx có chứa nhân xử lý PowerPC, hay cho những ứng dụng xử Nguyễn Anh Cường6ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệplý tín hiệu số trong FPGA được tích hợp các DSP Slice là bộ nhân, cộng tốc độ cao, thực hiện hàm A*B+C, ví dụ dòng Virtex của Xilinx chứa từ vài chục đến hàng trăm DSP slices với A, B, C 18-bit.1.1.3. Các ứng dụng của FPGAỨng dụng của FPGA bao gồm: xử lý tín hiệu số, các hệ thống hàng không, vũ trụ, quốc phòng, tiền thiết kế mẫu ASIC(ASIC prototyping), các hệ thống điều khiển trực quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mật mã học, mô hình phần cứng máy tính...Do tính linh động cao trong quá trình thiết kế cho phép FPGA giải quyết lớp những bài toán phức tạp mà trước kia chỉ thực hiện nhờ phần mềm máy tính, ngoài ra nhờ mật độ cổng logic lớn FPGA được ứng dụng cho những bài toán đòi hỏi khối lượng tính toán lớn và dùng trong các hệ thống làm việc theo thời gian thực.1.2. TỔNG QUAN VỀ NGÔN NGỮ VHDLThiết kế hay lập trình cho FPGA được thực hiện chủ yếu bằng các ngôn ngữ mô tả phần cứng HDL như VHDL, Verilog ...các hãng sản xuất FPGA lớn như Xilinx, Altera thường cung cấp các gói phần mềm và thiết bị phụ trợ cho quá trình thiết kế, cũng có một số các hãng thứ ba cung cấp các gói phần mềm kiểu này như Synopsys, Synplify... Các gói phần mềm này có khả năng thực hiện tất cả các bước của toàn bộ quy trình thiết kế IC chuẩn với đầu vào là mã thiết kế trên HDL (còn gọi là mã RTL).Trong bài Luận văn này, có sử dụng ngôn ngữ mô tả phần cứng VHDL, do đó ta chỉ tập chung tìm hiểu về ngôn ngữ VHDL.1.2.1. Giới thiệu về ngôn ngữ mô tả phần cứng VHDLVHDL là ngôn ngữ mô tả phần cứng cho các mạch tích hợp tốc độ rất cao, là một loại ngôn ngữ mô tả phần cứng được phát triển dùng cho trương trình VHSIC( Very High Speed Itergrated Circuit) của bộ quốc phòng Mỹ. Mục tiêu của việc phát triển VHDL là có được một ngôn ngữ mô phỏng phần cứng tiêu chuẩn và thống nhất cho phép thử nghiệm các hệ thống số nhanh hơn cũng như cho phép dễ dàng đưa các hệ thống đó vào ứng dụng trong thực tế. Ngôn ngữ VHDL được ba công ty Intermetics, IBM và Texas Instruments bắt đầu nghiên cứu phát triển vào tháng 7 năm 1983. Phiên bản đầu tiên được công bố vào tháng 8-1985. Sau đó VHDL được đề xuất để tổ chức Nguyễn Anh Cường7ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệpIEEE xem xét thành một tiêu chuẩn chung. Năm 1987 đã đưa ra tiêu chuẩn về VHDL( tiêu chuẩn IEEE-1076-1987). VHDL được phát triển để giải quyết các khó khăn trong việc phát triển, thay đổi và lập tài liệu cho các hệ thống số. Như ta đã biết, một hệ thống số có rất nhiều tài liệu mô tả. Để có thể vận hành bảo trì sửa chữa một hệ thống ta cần tìm hiểu kỹ lưỡng tài liệu đó. Với một ngôn ngữ mô phỏng phần cứng tốt việc xem xét các tài liệu mô tả trở nên dễ dàng hơn vì bộ tài liệu đó có thể được thực thi để mô phỏng hoạt động của hệ thống. Như thế ta có thể xem xét toàn bộ các phần tử của hệ thống hoạt động trong một mô hình thống nhất. VHDL được phát triển như một ngôn ngữ độc lập không gắn với bất kỳ một phương pháp thiết kế, một bộ mô tả hay công nghệ phần cứng nào. Người thiết kế có thể tự do lựa chọn công nghệ, phương pháp thiết kế trong khi chỉ sử dụng một ngôn ngữ duy nhất. Và khi đem so sánh với các ngôn ngữ mô phỏng phần cứng khác đã kể ra ở trên ta thấy VHDL có một số ưu điểm hơn hẳn các ngôn ngữ khác: - Thứ nhất là tính công cộng: VHDL được phát triển dưới sự bảo trợ của chính phủ Mỹ và hiện nay là một tiêu chuẩn của IEEE. VHDL được sự hỗ trợ của nhiều nhà sản xuất thiết bị cũng như nhiều nhà cung cấp công cụ thiết kế mô phỏng hệ thống. - Thứ hai là khả năng hỗ trợ nhiều công nghệ và phương pháp thiết kế. VHDL cho phép thiết kế bằng nhiều phương pháp, ví dụ phương pháp thiết kế từ trên xuống, hay từ dưới lên dựa vào các thư viện sẵn có. VHDL cũng hỗ trợ cho nhiều loại công cụ xây dựng mạch như sử dụng công nghệ đồng bộ hay không đồng bộ, sử dụng ma trận lập trình được hay sử dụng mảng ngẫu nhiên. - Thứ ba là tính độc lập với công nghệ: VHDL hoàn toàn độc lập với công nghệ chế tạo phần cứng. Một mô tả hệ thống dùng VHDL thiết kế ở mức cổng có thể được chuyển thành các bản tổng hợp mạch khác nhau tuỳ thuộc công nghệ chế tạo phần cứng mới ra đời nó có thể được áp dụng ngay cho các hệ thống đã thiết kế . - Thứ tư là khả năng mô tả mở rộng: VHDL cho phép mô tả hoạt động của phần cứng từ mức hệ thống số cho đến mức cổng. VHDL có khả năng mô tả hoạt động của hệ thống trên nhiều mức nhưng chỉ sử dụng một cú pháp chặt chẽ thống nhất cho mọi mức. Như thế ta có thể mô phỏng một bản thiết kế bao gồm cả các hệ con được mô tả chi tiết. Nguyễn Anh Cường8ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệp- Thứ năm là khả năng trao đổi kết quả: Vì VHDL là một tiêu chuẩn được chấp nhận, nên một mô hình VHDL có thể chạy trên mọi bộ mô tả đáp ứng được tiêu chuẩn VHDL. Các kết quả mô tả hệ thống có thể được trao đổi giữa các nhà thiết kế sử dụng công cụ thiết kế khác nhau nhưng cùng tuân theo tiêu chuẩn VHDL. Cũng như một nhóm thiết kế có thể trao đổi mô tả mức cao của các hệ thống con trong một hệ thống lớn (trong đó các hệ con đó được thiết kế độc lập). - Thứ sáu là khả năng hỗ trợ thiết kế mức lớn và khả năng sử dụng lại các thiết kế: VHDL được phát triển như một ngôn ngữ lập trình bậc cao, vì vậy nó có thể được sử dụng để thiết kế một hệ thống lớn với sự tham gia của một nhóm nhiều người. Bên trong ngôn ngữ VHDL có nhiều tính năng hỗ trợ việc quản lý, thử nghiệm và chia sẻ thiết kế. Và nó cũng cho phép dùng lại các phần đã có sẵn. 1.2.2. Cấu trúc một mô hình hệ thống mô tả bằng ngôn ngữ VHDLMục đích của phần này sẽ nhằm giới thiệu sơ qua về cấu trúc khung cơ bản của VHDL khi mô tả cho một mô hình thiết kế thực. Thông thường một mô hình VHDL bao gồm ba phần: thực thể, kiến trúc và các cấu hình. Đôi khi ta xử dụng các gói (packages) và mô hình kiểm tra hoạt động của hệ thống (testbench). + Thực thể (entity): Khai báo thực thể trong VHDL là phần định nghĩa các chỉ tiêu phía ngoài của một phần tử hay một hệ thống. Thực chất của việc khai báo thực thể chính là khai báo giao diện của hệ thống với bên ngoài. Ta có thể có tất cả các thông tin để kết nối mạch vào mạch khác hoạc thiết kế tác nhân đầu vào phục vụ cho mục đích thử nghiệm. Tuy nhiên hoạt động thật sự của mạch không nằm ở phần khai báo này + Kiến trúc (Architecture): Phần thứ 2 trong mô hình VHDL là khai báo kiến trúc. Mỗi một khai báo thực thể đều phải đi kèm với ít nhất một kiến trúc tương ứng. VHDL cho phép tạo ra hơn một kiến trúc cho một thực thể. Phần khai báo kiến trúc có thể bao gồm các khai báo về các tín hiệu bên trong, các phần tử bên trong hệ thống, hay các hàm và thủ tục mô tả hoạt động của hệ thống. Tên của kiến trúc là nhãn được đặt tuỳ theo người sử dụng. Có hai cách mô tả kiến trúc của một phần tử ( hoặc hệ thống) đó là mô hình hoạt động (Behaviour) hay mô tả theo mô hình cấu trúc (Structure). Tuy nhiên một hệ thống có thể bao gồm cả mô tả theo mô hình hoạt động và mô tả theo mô hình cấu trúc. + Mô tả kiến trúc theo mô hình hoạt động: Mô hình hoạt động mô tả các hoạt động của hệ thống ( hệ thống đáp ứng với các tín hiệu vào như thế nào và đưa ra kết quả Nguyễn Anh Cường9ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệpgì ra đầu ra) dưới dạng các cấu trúc ngôn ngữ lập trình bậc cao. Cấu trúc đó có thể là PROCESS, WAIT, IF, CASE, FOR-LOOP… + Mô tả kiến trúc theo mô hình cấu trúc: Mô hình cấu trúc của một phần tử (hoặc hệ thống) có thể bao gồm nhiều cấp cấu trúc bắt đầu từ một cổng logic đơn giản đến xây dựng mô tả cho một hệ thống hoàn thiện. Thực chất của việc mô tả theo mô hình cấu trúc là mô tả các phần tử con bên trong hệ thống và sự kết nối của các phần tử con đó. Như với ví dụ mô tả mô hình cấu trúc một flip-flop RS gồm hai cổng NAND có thể mô tả cổng NAND được định nghĩa tương tự như ví dụ với cổng NOT, sau đó mô tả sơ đồ móc nối các phần tử NAND tạo thành trigơ RS + Cấu trúc Process: Process là khối cơ bản của việc mô tả theo hoạt động. Process được xét đến như là một chuỗi các hành động đơn trong suốt quá trình dịch. Cấu trúc tổng quát:+ Môi trường kiểm tra (testbench): Một trong các nhiệm vụ rất quan trọng là kiểm tra bản mô tả thiết kế. Kiểm tra một mô hình VHDL được thực hiện bằng cách quan sát hoạt động của nó trong khi mô phỏng và các giá trị thu được có thể đem so sánh với yêu cầu thiết kế. Môi trường kiểm tra có thể hiểu như một mạch kiểm tra ảo. Môi trường kiểm tra sinh ra các tác động lên bản thiết kế và cho phép quan sát hoặc so sánh kết quả hoạt động của bản mô tả thiết kế. Thông thường thì các bản mô tả đều cung cấp chương trình thử. Nhưng ta cũng có thể tự xây dựng chương trình thử (testbench). Mạch thử thực chất là sự kết hợp của tổng hợp nhiều thành phần. Nó gồm ba thành phần: mô hình VHDL đã qua kiểm tra, nguồn dữ liệu và bộ quan sát. Hoạt động của mô hình VHDL được kích thích bởi các nguồn dữ liệu và kiểm tra tính đúng đắn thông qua bộ quan sát. Chương 2Nguyễn Anh Cường10[tên nhãn]: process[(danh sách các yếu tố kích thích hoạt động)][khai báo các biến]begin[các câu lệnh]end process;ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệpBỘ LỌC FIR2.1. BỘ LỌC FIR TRUYỀN THỐNGBộ lọc FIR là bộ lọc có đáp ứng xung chiều dài hữu hạn, tức là đáp ứng xung chỉ khác không trong một khoảng có chiều dài hữu hạn N (từ 0 đến N-1). Bộ lọc FIR với bậc của bộ lọc là N được biểu diễn như hình 3:Hình 3: Cấu trúc của bộ lọc FIR truyền thốngTrong đó:x[n]: là tín hiệu lối vào của mạchy[n]: là tín hiệu lối ra của mạchh[n]: là đáp ứng xung của mạchLối ra y[n] và lối vào x[n] liên hệ với nhau bởi công thức:y[n] = ∑−=−10][][NkknxkhĐể tính được các giá trị y[k] từ các mẫu lối vào x[k] thì các mẫu lần lượt qua các bộ trễ, bộ nhân và bộ cộng. Với bộ lọc FIR có bậc là N thì phải sau N phép nhân và N-1 phép cộng thì mới tính được giá trị của lối ra.Như vậy, bộ lọc FIR có cấu trúc như trên có nhược điểm là khả năng đáp ứng chậm, các mẫu lối ra không được liên tục mà sau một khoảng thời gian tính toán xong các phép nhân và phép cộng mới được xuất ra.Để khắc phục nhược điểm đó, ta sử dụng kiến trúc systolic array để nâng cao khả năng đáp ứng của mạchNguyễn Anh Cường11ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệp2.2. BỘ LỌC FIR SỬ DỤNG KIẾN TRÚC SYSTOLIC ARRAY2.2.1. Tổng quan về systolic arraySystolic array là cấu trúc xử lý song song đặc biệt chứa các khối xử lý dữ liệu (data processing unit gọi tắt là DPU), các khối xử lý này được sắp xếp thành một mạng. DPU tương tự như CPU nhưng nó không có bộ đếm chương trình. Từng khối DPU như là một trigger truyền thông bởi sự luân chuyển dữ liệu từ DPU này đến các DPU lân cận. Thông thường, những dữ liệu khác nhau thì sẽ luân chuyển theo các hướng khác nhau. Các luồng dữ liệu tới và rời khỏi các cổng DPU được phát từ ASM (Auto senquencing memory là thành phần không thể thiếu của cấu trúc Non-Von-Neumann. Trong cấu trúc này, cơ chế senquencing đóng vai trò là bộ đếm chương trình). Mỗi ASM đóng vai trò là bộ đếm dữ liệu. Trong hệ thống này, luồng dữ liệu vào có thể vào từ đầu ra của thiết bị ngoại vi và ngược lại. Các bộ xử lý (DPU) tính toán dữ liệu, lưu trữ dữ liệu theo những cách độc lập với nhau. Các bộ xử lý này có thể có một vài thanh ghi và khối ALU. Các DPU có khả năng lưư trữ và xử lý dữ liệu độc lập với nhau. Mỗi DPU sau khi xử lý dữ liệu xong sẽ chia sẻ dữ liệu cho các Cell lân cận. Trong hình 4, mô tả kiến trúc Systolic array một chiều, dữ liệu chuyển động theo một hướng Hình 4: Cấu trúc systolic array một chiềuHình 5 mô tả kiến trúc systolic array hai chiều, dữ liệu chuyển động hai hướng theo chiều của mũi tên qua các bộ DPU. Dữ liệu ra cũng theo hai hướngNguyễn Anh Cường12PE PE PE PE PEĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệpHình 5: Kiến trúc systolic array hai chiều2.2.2. Bộ lọc FIR thực hiện theo kiến trúc systolic array một chiềuĐể cho việc xử lý dữ liệu được nhanh hơn, bộ lọc FIR theo kiến trúc Systolic array sẽ bao gồm một dãy các phần tử xử lý hay còn gọi là PE (Process Element). Trong cùng một thời điểm, các PE sẽ thực hiện đồng thời các nhiệm vụ riêng, và do đó, tín hiệu ở lối ra sẽ được đưa ra một cách liên tục mà không phải mất một khoảng thời gian để tính toán do nó đã được tính từ trước đó.Cấu trúc của một PE của bộ lọc FIR SYSTOLIC được trình bày như trong hình 6Hình 6: Cấu trúc của một PENhư vậy, cấu trúc của bộ lọc FIR Systolic với bậc bộ lọc là N, gồm N+1 PE được trình bày như hình 7Nguyễn Anh Cường13ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệpKhác với bộ lọc FIR thông thường, đầu ra của bộ cộng lại được đưa qua 2 bộ chốt để làm trễ, nó có tác dụng chia đường truyền tín hiệu của mạch thành những đoạn nhỏ, do đó làm tăng tần số hoạt động của mạch, đồng thời làm cho tín hiệu xin và yin vào bộ cộng cùng một lúc, do đó, tín hiệu ra sẽ được liên tục, đáp ứng nhanh, bởi việc tính toán đã được thực hiện trước đó. Với việc chia đường truyền dài nhất của mạch thành những đoạn nhỏ nhờ các thanh ghi chốt, ta còn có thể tối ưu bộ lọc FIR systolic hơn nữa. Hình 8 mô tả cấu trúc tối ưu của bộ lọc FIR systolic.Mô hình này về ý tưởng vẫn giống mô hình trước, bao gồm các thanh ghi chốt, bộ cộng, bộ nhân của mô hình trước, tuy nhiên, có sự thay đổi vị trí của các thanh ghi chốt, trước bộ nhân và bộ cộng ta chèn thêm một thanh ghi chốt vào để chia nhỏ đường truyền tín hiệu. Do đó, làm cho tần số hoạt động của mạch tăng lên.Nguyễn Anh Cườngx aN+…..…..x ao+xinYinxoutHình 7: Cấu trúc bộ lọc FIR systolic bậc Nyoutx aN+…..…..x ao+xinYinxoutHình 8: Cấu trúc tối ưu của bộ lọc FIR systolic bậc N yout14ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệpChương 3BỘ LỌC FIR THÍCH NGHI DÙNG THUẬT TOÁN LMS3.1. ĐẶT VẤN ĐỀThuật ngữ lọc dùng để chỉ tất cả các hệ thống có khả năng khôi phục lại dạng của các thành phần tần số của tín hiệu lối vào để tạo ra tín hiệu lối ra thỏa mãn các yêu cầu mong muốn. Với bộ lọc FIR trình bày ở trên, thì hệ số của bộ lọc luôn không đổi. Do đó, nếu có sự thay đổi đột ngột của một hoặc một vài yếu tố đầu vào(như tín hiệu nhiễu chẳng hạn) thì bộ lọc sẽ không còn được tối ưu nữa. Hay nói cách khác, ta không thu được tín hiệu mong muốn.Để khắc phục nhược điểm trên, người ta đưa ra một bộ lọc FIR có cấu trúc mới, mà trong đó, các hệ số của bộ lọc có thể thay đổi được để có thể thích ứng với sự thay đổi bất ngờ của các yếu tố lối vào. Mạch lọc FIR có các hệ số thay đổi như vậy được gọi là mạch lọc FIR thích nghi. Giản đồ khối của mạch lọc như vậy được trình bày trong hình 9.Trong sơ đồ này, tín hiệu lối vào là một dãy thời gian rời rạc x[n], mạch lọc được đặc trưng bởi đáp ứng xung h[n], còn tín hiệu lối ra ở thời điểm n là một dãy y[n]. Nguyễn Anh Cườngh[n]=h0,h1...+Tín hiệu vào x[n]__Hình 9: Giản đồ khối của mạch lọc thích nghiy[n]15Tín hiệu mong muốnd(n) Tín hiệu sai số e[n]+ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệpLối ra này được sử dụng để xác định một đáp ứng mong muốn d[n]. Các hệ số của mạch lọc phải được chọn lựa sao cho dãy tín hiệu mong muốn có dạng phù hợp nhất với tín hiệu lối vào. Điều này có thể được thực hiện nếu dãy tín hiệu sai số e[n] hội tụ về không nhanh nhất. Để làm được điều này, ta phải tối ưu hoá một hàm sai số được xác định theo phương pháp thống kê hoặc phương pháp quyết định. Đối với phương pháp thống kê, thì hàm sai số được sử dụng là giá trị toàn phưong trung bình của tín hiệu sai số e[n]. Nếu tín hiệu vào và tín hiệu mong muốn là những tín hiệu dừng, thì việc cực tiểu hoá sai số toàn phương trung bình đưa đến một mạch lọc rất nổi tiếng đó là mạch lọc Wiener, được gọi là tối ưu theo nghĩa toàn phương trung bình. Hầu hết các thuật toán thích nghi là áp dụng cho các loại mạch lọc Wiener. Trong phương pháp quyết định, cách chọn hàm sai số là một tổng trọng số của tín hiệu sai số toàn phương. Việc cực tiểu hoá hàm này dẫn đến một mạch lọc tối ưu đối với dãy dữ liệu đã cho.Như vậy, mạch lọc được thiết kế hoặc bằng các công thức thống kê hoặc bằng các công thức xác định. Trong các thiết kế xác định, cần phải tính toán một số đại lượng trung bình khi sử dụng dãy dữ liệu đã cho mà mạch lọc cần xử lý. Nói cách khác, để thiết kế được mạch lọc Wiener cần phải biết trước các tính chất thống kê của các tín hiệu cơ sở. Trong trường hợp này, các dãy tín hiệu cơ sở thường được cho là tín hiệu dừng và trung bình theo thời gian bằng trung bình thống kê.Mặc dù phép đo trực tiếp các giá trị trung bình của tín hiệu có thể được thực hiện để thu được những thông tin cần thiết cho việc thiết kế mạch lọc Wiener hoặc các mạch lọc tối ưu, nhưng trong nhiều ứng dụng thực tế, các giá trị trung bình của tín hiệu lại được sử dụng theo cách gián tiếp, trong đó sai số lối ra của mạch lọc tương quan với các mẫu của tín hiệu vào của mạch lọc theo một số cách và sử dụng kết quả của phương trình đệ quy để điều chỉnh các hệ số của mạch theo kiểu lặp.Sử dụng phương pháp lặp có thể đưa đến các lời giải thích nghi có khả năng tự hiệu chỉnh. Có nghĩa là nếu các tính chất thống kê của tín hiệu thay đổi đối với thời gian, thì nhờ nghiệm lặp, các hệ số của mạch lọc có thể tự điều chỉnh để thích nghi với các tính chất thống kê mới. Nghiệm lặp, nói chung rất được ưa chuộng vì nó dễ mã hoá trong phần mềm và dễ thực thi trong phần cứng hơn các nghiệm không lặp.Nguyễn Anh Cường16ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệp3.2. CẤU TRÚC CỦA MẠCH LỌC THÍCH NGHI Cấu trúc thường được sử dụng trong mạch lọc thích nghi được mô tả như hình 10:Hình 10: Cấu trúc của mạch lọc FIR thích nghiTrong đó:x[n] : Vector tín hiệu đầu vào của mạch lọc.x[n] = [xn xn-1xn-2… xn-N+1]Tw: Là vector trọng số của bộ lọc thích nghiw = [w0 w1…wN-1]Ty[n] : là lối ra của mạch lọcy[n] = ∑−=−10][][NkknxkwwT x[n] (3.1) d[n] : là lối ra mong muốne[n] : là sai số giữa tín hiệu mong muốn d[n] và tín hiệu đầu ra y[n]e[n]=d[n]-y[n] (3.2)Bài toán thích nghi sẽ tự điều chỉnh ma trận các trọng số w sao cho sai số e[n] là nhỏ nhất.Nguyễn Anh Cườngz-1z-1xz-1+x xwo[n]] w1[n]wN-1[n]x[n] x[n-1]+e[n]xThuật toán thích nghi17x[n-N+1]y[n]d[n] +-ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệp3.3. MẠCH LỌC WIENER FIRVì wTx[n] là một vô hướng nên bằng chuyển vị của nó, tức là:wTx[n]=xT[n]w.Do đó, từ (3.1) và (3.2) ta có:e[n]=d[n]-y[n]=d[n]-wTx[n]=d[n]-xT[n]w (3.3)Đối với mạch lọc Wiener, hàm hiệu năng được chọn là sai số toàn phương trung bình:J= E[|e[n]|2] (3.4)Trong đó ký hiệu E[.] là kỳ vọng thống kê. Thay (3.3) vào (3.4) ta được:J= E[(d[n]-wTx[n])(d[n]-xT[n]w)] (3.5)Khai triển (3.5) và chú ý w có thể đưa ra ngoài toán tử E[.] vì nó không phải là biến số thống kê, ta thu được:J=E[d2[n]]–wTE[x[n]d[n]]– E[d[n]xT[n]]w + wTE[x[n]xT[n]]w (3.6)Ta định nghĩa vector tương quan chéo bậc Nx1:P = E[x[n]d[n]] = [P0 P1 … PN-1 ] T(3.7)Và ma trận tương quan:R00R01R02 ……R0 N-1R10R11R12 ……R1 N-1 R=E[x[n]xT[n]] = .. .. .. …… ….(3.8) .. .. .. …. …. .. .. …. ..... …RN-1 0RN-1 1RN-1 2 ……RN-1 N-1Chú ý là: E[d[n]xT[n]] = PT; wTP = PTw, ta thu được:J = E[d2[n]] – 2wTP + wTRw (3.9)Nguyễn Anh Cường18ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệpĐể thu được táp trọng số ứng với hàm phí tổn J có giá trị cực tiểu, ta cần phải giải hệ phương trình được tạo thành từ đạo hàm bậc nhất của J đối với mỗi táp trọng số wi bằng không, tức là:wiJ∂∂ = 0 , với i = 0,1,2…N-1 (3.10)Các phương trình trên có thể viết dưới dạng ma trận:∇J = 0 (3.11)ở đây ∇ là toán tử vi phân được xác định như một vectơ cột:∇ = −∂∂∂∂∂∂]1[...]1[]0[Nwww(3.12)Để tìm các đạo hàm riêng của J đối với các táp trọng số wi của mạch lọc, trước hết phải khai triển hệ thức (3.9) thành dạng tường minh:J = E[d2[n]] – 2∑−=10][][NkkwkP +∑∑−=−=1010],[][][NkNmmkRmwkw (3.13)Tổng kép trong (3.13) có thể khai triển dưới dạng: ∑∑−=−=1010],[][][NkNmmkRmwkw=∑∑−=−−1#01#0],[][][NikkNimmmkRmwkw+wi∑−=1#0],[][NikkikRkw+wi∑−=1#0],[][NkmmmkRmw +wi2R[k,i](3.14)Thay (3.14) vao` (3.13), sau đó lấy đạo hàm riêng phần của J theo wi và thay thế m cho k ta được:Nguyễn Anh Cường19ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệp][iwJ∂∂= -2Pi + ∑−=+10],[],[]([NkkiRikRkw) , với i=0,1,2,…,N-1 (3.15)Trong trường hợp này ta thấy:Rki = E[x[n-k]x[n-i]] = Φxx[i-k] (3.16)ở đây Φxx[i-k] là hàm tự tương quan của x[n]Tương tự:Rik = Φxx[k-i] (3.17)Do tính chất đối xứng của hàm tự tương quan nên Φxx[k] =Φxx[-k], ta thu được:Rki = Rik (3.18)Thay (3.18) vào phương trình (3.15) ta được:][iwJ∂∂= -2Pi + 2 ∑−=10][],[NkkwkiR, với i = 0,1,2…,N-1 (3.19)Phương trình trên có thể biểu diễn dưới dạng ma trận:∇J = 2Rw – 2P (3.20)Đặt ∇J=0 ta sẽ thu được phương trình tối ưu hoá táp trọng số của mạch lọc Wiener Rwo = P (3.21) Đây là phương trình Wiener-Hopf đối với vetor trọng số tối ưu wo:wo = R-1P (3.22)Thay giá trị wo vừa tìm được từ phương trình Wiener-Hopf và Rwo=P vào phương trình (3.9) ta sẽ tìm được giá trị cực tiểu của hàm phí tổn J:Jmin = E[d2[n]] - woT P = E[d2[n]] - woTRwo(3.23)Đó là sai số cực tiểu mà mạch lọc Wiener FIR W(z) có thể đạt được khi táp trọng số của nó là nghiệm của phương trình Wiener-Hopf, nghĩa là nghiệm tối ưu ở (3.22)Nguyễn Anh Cường20ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệp3.4. CÁC THUẬT TOÁN THÍCH NGHI VÀ ỨNG DỤNGTrong phần này, chúng ta nghiên cứu chủ yếu thuật toán toàn phương trung bình tối thiểu LMS. Thuật toán này được áp dụng rộng rãi trong xử lý số thích nghi và thống kê do tính chất bền vững và đơn giản của nó. Nhờ thuật toán này mà dãy sai số hội tụ về không với tốc độ nhanh, tuỳ theo bước giảm cấp. Vì vậy, dựa trên thuật toán này, người ta đã phát triển nhiều thuật toán nhanh3.4.1. Phương pháp giảm bước nhanh nhấtĐây là phương pháp lặp để tìm táp trọng số tương ứng với điểm cực tiểu của mặt sai số của mạch lọc Wiener FIR. Trong phương pháp này, hàm phí tổn cần cực tiểu hoá được giả thiết là phân kỳ và xuất phát từ một đểm bất kỳ trên mặt sai số, ta lấy một bước nhỏ theo hướng mà trong đó hàm phí tổn giảm nhanh nhất. Tại điểm đó, hàm phí tổn của mạch lọc Wiener sẽ có giá trị tối ưu.Hình 11: Mạch lọc Wiener FIRĐối với mạch lọc Wiener như hình, dãy tín hiệu vào mạch lọc là x[n] và dãy tín hiệu mong muốn d[n] và táp trọng số wi được giả thiết là những dãy số thực. Khi đó, dãy lối ra của mạch lọc:y[n] = wTx[n] = w xT[n] (4.1)Nguyễn Anh Cườngz-1z-1xz-1+x xwo[n]] w1[n]wN-1[n]x[n] x[n-1]+e[n]Thuật toán thích nghixy[n] __d[n]21+ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệpNhắc lại rằng khi hàm phí tổn đạt giá trị cực tiểu thì táp vector trọng số đạt đến giá trị tối ưu, thoả mãn phương trình Wiener-Hopf:Rwo=P (4.2)Ở đây, thay cho việc giải phương trình một cách trực tiếp, ta giải bài toán bằng cách tìm một phương pháp lặp.Theo phương pháp này, xuất phát từ giá trị dự đoán trước đối với wo, gọi là w(0), nhờ tính toán đệ quy thực hiện nhiều phép lặp để hội tụ tới wo. Thuật toán lặp này thường xuyên được sử dụng trong các mạch lọc thích nghi.Phương pháp giảm bước nhanh nhất được thực hiện theo các bước sau:1. Xuất phát từ các thông số dự đoán ban đầu mà các giá trị tối ưu của nó tìm được để cực tiểu hoá hàm phí tổn.2. Tìm gradient của hàm phí tổn ứng với các thông số tại điểm xuất phát3. Cập nhật các thông số bằng cách lấy một bước theo hướng ngược với vector gradient thu được trong bước 2. Điều đó tương ứng với bước giảm nhanh nhất trong hàm phí tổn. Ngoài ra, kích thước của bước được chọn tỉ lệ với kích thước của vector gradient4. Lặp lại các bước 2 và 3 cho đến khi không thể thay đổi được nữa trong các thông sốTheo các thủ tục trên, nếu w(k) là vector táp trọng số tại phép lặp thứ k, thì phương trình truy hồi sau đây có thể được sử dụng để cập nhật w(k):w(k+1) = w(k) - µ∇kJ (4.3)trong đó:∇kJ = 2Rw(k)-2P (4.4)Thông số µ là đại lượng vô hướng dương được gọi là kích thước của bước. Đây là thông số rất quan trọng vì tốc độ hội tụ của w(k) tới giá trị tối ưu wo phụ thuộc vào thông số này, tức là vào kích thước của bước đã lựa chọn. Nếu kích thước bước lớn có thể sự hội tụ sẽ nhanh hơn, nhưng bù lại tính ổn định sẽ kém hơn Thay (4.4) vào (4.3) ta được:Nguyễn Anh Cường22ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệpw(k+1) = w(k) - 2µ(Rw(k) – P) (4.5)Để có thể thấy sự cập nhật các giá trị w(k) cho hội tụ tới wo, ta viết lại (4.5) :w(k+1) - wo = (I-2µR)(w(k)-wo) (4.6)Ta định nghĩa vector:v(k) = w(k) - wo(4.7)Khi đó (4.6) trở thành:v(k+1) = (I-2µR)v(k) (4.8)Phương trình (4.8) sẽ có dạng đơn giản hơn nữa nếu ta đưa ma trận tương quan R về dạng chéo. Nghĩa là ta đặt:R=QλQT(4.9)Và thay ma trận đơn vị I=QQT, khi đó (4.8) trở thành:v(k+1) = (QQT - 2µQλQT)v(k) = Q(I-2µλ)QTv(k) (4.10)Trong đó λ là ma trận chéo được tạo thành từ các giá trị riêng của ma trận tương quan R, còn Q là ma trận được tạo thành từ các vector riêng trực giao tương ứngĐặt:v’(k) = QTv(k) (4.11)Như vậy ta thu được phương trình truy hồi đối với vector v’(k) như sau:v’(k+1) =(I-2µλ)v’(k) (4.12)phương trình vector (4.12) có thể tách thành các phương trình vô hướng :v’i(k+1) = (1-2µλi) v’i(k) với i=0,1,…,N-1 (4.13)ở đây, v’i(k) là phần tử thứ i của vector v’(k)Nếu bắt đầu từ dãy giá trị ban đầu v’o(0), v’1(0),…,v’N-1(0) và sau k phép lặp chúng ta sẽ thu được:v’i(k) = (1-2µλi)v’i(0) với i=0,1,…,N-1 (4.14)Từ (4.7) và (4.11) ta thấy rằng w(k) hội tụ tới wo khi và chỉ khi v’(k) hội tụ tới vector không. Nhưng (4.14) lại cho thấy v’i(k) hội tụ tới không khi và chỉ khi thông số bước µ được chọn sao cho:Nguyễn Anh Cường23ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệp|1-2µλi| < 1 , với i=0,1,…,N-1 (4.15)Khi (4.15) thoả mãn thì thành phần thứ i của vector v’i(k) sẽ hội tụ nhanh về không theo hàm e-mũ khi số lượng phép lặp tăng lên. Ngoài ra (4.15) cũng là điều kiện để chọn kích thước của bước µ sao cho thuật toán giảm cấp nhanh nhất và ổn định. Điều kiện đó có thể khai triển dưới dạng :-1<1-2µλi<1 hay: 0 < µ < iλ1(4.16)Do kích thước bước µ được áp dụng cho tất cả các giá trị của i, nên tính chất hội tụ và ổn định của thuật toán giảm bước nhanh nhất được đảm bảo khi:0 < µ <max1λ(4.17)Với λmax là giá trị riêng cực đại của các giá trị riêng: λ0,λ1,… λN-1Bây giờ ta viết thuật toán giảm bước nhanh nhất cho vector táp trọng số w(k) của mạch lọc. Ta thấy :w(k) = wo + v(k) = wo + Qv’(k) = wo+[qo q1…qN-1 ] [v’o(k) v’1(k) ….v’N-1(k)]T= wo + ∑−=10)](['][Nikiviq(4.18) ở đây qo,q1,…qN-1, là các vector riêng gắn với các giá trị riêng λo, λ1,… λN-1 của ma trận tương quan R.Thay (4.14) vào (4.18) ta thu được:w(k) = wo+ ∑−=10'Nivi(0)(1-2µλi)k qi(4.19)Kết quả này cho thấy mỗi giá trị riêng λi xác định một kiểu hội tụ riêng theo một hướng được xác định bởi vector riêng tương ứng qi của nó. Các kiểu hội tụ khác nhau hoạt động độc lập với nhau. Với một giá trị chọn lựa của thông số bước µ, thì thừa số 1-2µλi xác định giá trị λi để kiểu hội tụ thứ i hội tụ nhanh nhất.3.4.2. Thuật toán toàn phương trung bình tối thiểu (LMS)Thuật toán toàn phương trung bình tối thiểu LMS (Least – Mean –Square) là thuật toán được áp dụng rộng rãi trong xử lý số tín hiệu thích nghi. Nó thuộc họ các thuật toán gradient thống kê lần đầu tiên được Windrow-Hoff áp dụng năm 1960 và sau đó phát triển thành nhiều thuật toán mới nhờ tính chất đơn giản và bền vững của thuật toán này. Nguyễn Anh Cường24ĐH Công Nghệ- ĐHQG Hà Nội Khoá luận tốt nghiệpNó là thuật toán lọc thích nghi tuyến tính bao gồm hai quá trình: quá trình lọc và thích nghi. Trong quá trình lọc, thuật toán này sử dụng mạch lọc ngang tuyến tính có lối vào x(n) và lối ra y(n). Quá trình thích nghi được thực hiện nhờ sự điều khiển tự động các táp trọng số của các hệ số của mạch lọc sao cho nó tương đồng với tín hiệu sai số là hiệu của tín hiệu lối ra với tín hiệu mong muốn d(n). Sơ đồ của thuật toán như trong hình. Hình 12: Mạch lọc FIR thích nghi dùng thuật toán LMSGiả sử mạch lọc ngang có N- táp trọng số và là dãy số thực, khi đó tín hiệu lối ra được viết:y[n] = ∑−=10Nkwk[n] x[n-k] (4.20)Trong đó táp trọng số wo[n]…..,wN-1 [n] được chọn lựa như thế nào để sai số:e[n]= d[n] - y[n] (4.21)có giá trị cực tiểu. Nói chung trong mạch lọc thích nghi, táp trọng số là hàm của chỉ số thời gian n, vì chúng được thích nghi liên tục với sự thay đổi thống kê của tín hiệu. Thuật toán LMS điều chỉnh táp trọng số của mạch lọc sao cho sai số e[n] được cực tiểu hoá theo nghĩa toàn phương trung bình, vì thế mới có tên là thuật toán toàn phương trung bình tối thiểu. Khi các quá trình x[n] và d[n] là các quá trình ngẫu nhiên dừng, thì Nguyễn Anh Cườngz-1z-1xz-1+x xwo[n]] w1[n]wN-1[n]x[n] x[n-1]+e[n]xy[n] __25Thuật toán LMS + d[n]
Trích đoạn
- KẾT QUẢ THU ĐƯỢC VỚI BỘ LỌC FIR TRUYỀN THỐNG Lưu đồ tiến hành thực hiện bộ lọc FIR truyền thống như hình 15:
Tài liệu liên quan
- Giải phỏp hoàn thiện cụng tỏc trả lương và các khoản trích theo lương của các công ty xây dựng Nhà nước tại Việt Nam.doc.DOC
- 22
- 655
- 0
- Ứng dụng của FPGA tại Việt Nam
- 64
- 1
- 13
- Giải pháp hoàn thiện công tác trả lương và các khoản trích theo lương của các công ty xây dựng nhà nước tại Việt Nam
- 22
- 613
- 1
- Phân tích dự án ứng dụng nhắn tin miễn phí Zalo, quá trình phát triển ứng dụng và users tại việt namx
- 25
- 1
- 2
- Tình hình ứng dụng E- marketing tại việt nam hiện nay và những đề xuất giải pháp mang tính ứng dụng cao
- 65
- 681
- 1
- TÌM HIỂU ỨNG DỤNG MARKETING TRỰC TUYẾN của NOKIA tại VIỆT NAM
- 35
- 400
- 1
- Tình hình ứng dụng e-Marketing tại Việt Nam hiện nay và những đề xuất giải pháp mang tính ứng dụng C
- 103
- 472
- 0
- Tài liệu Luận văn: Giải pháp mở rộng và nâng cao hiệu quả hoạt động tín dụng của NHTM ở Việt Nam hiện nay pptx
- 33
- 546
- 0
- Tài liệu Báo cáo " Vấn đề thu hút và sử dụng hỗ trợ phát triển chính thức (ODA) của Pháp tại Việt Nam" pot
- 9
- 510
- 1
- Luận văn: Nghiên cứu hệ thống điện, kết cấu kỹ thuật và công nghệ của xe đạp điện hiện đại đang được sử dụng rộng rãi tại Việt Nam potx
- 66
- 1
- 0
Tài liệu bạn tìm kiếm đã sẵn sàng tải về
(2.98 MB - 64 trang) - Ứng dụng của FPGA tại Việt Nam Tải bản đầy đủ ngay ×Từ khóa » Fpga ứng Dụng
-
FPGA – Wikipedia Tiếng Việt
-
Nền Tảng FPGA Cho Ứng Dụng AI - Giải Pháp Advantech
-
Khái Niệm Cơ Bản Về Kiến Trúc Và Ứng Dụng FPGA
-
Tại Sao Lại Sử Dụng FPGA ? Cấu Trúc FPGA Như Thế Nào ?
-
FPGA Là Gì? Kiến Thức Về Cấu Trúc FPGA Và Lập Trình | UNIDUC
-
Làm Chủ Công Nghệ Thiết Kế Vi Mạch SoC FPGA Cho ứng Dụng IoT ...
-
Thiết Bị Kiểm Tra Tự động Của FPGA - Intel
-
Vi Mạch SoC FPGA Cho ứng Dụng IoT Cần Tốc độ Và Bảo Mật Cao
-
ỨNG DỤNG CÔNG NGHỆ FPGA ĐỂ THIẾT KẾ BỘ TRUYỀN, NHẬN ...
-
Hỏi Về ứng Dụng Của FPGA. - Dien Tu Viet Nam
-
FPGA Là Gì? FPGA được Sử Dụng để Làm Gì? - Mobitool
-
Đề Tài: Nghiên Cứu Công Nghệ FPGA Và Phát Triển ứng Dụng, HOT
-
Ứng Dụng FPGA.pdf (.docx) | Tải Miễn Phí Với 1 Click