Đề tài "Thiết kế khối ma trận bàn phím" có ứng dụng rất cao trong thực tế nhờ vào lợi ích nó mang lại.Nhu cầu về bàn phím có hiệu suất cao và khả năng thích ứng trong các hệ thống giao t
Giới thiệu đề tài
Mục tiêu đề tài
1 Hiểu hoạt động của bàn phím ma trận:
• Khám phá các nguyên tắc và cơ chế hoạt động của bàn phím ma trận.
• Nghiên cứu cấu trúc của bàn phím ma trận, tập trung vào các hàng, cột và các phím giao nhau.
2 Kết nối bàn phím ma trận với FPGA:
• Thiết kế mạch kết nối giữa bàn phím ma trận và FPGA.
1 FPGA (Field-Programmable Gate Arrays) là các mạch tích hợp mạnh mẽ cung cấp sự linh hoạt và đa dạng trong thiết kế phần cứng số.
2 do-it-yourself (tự mình làm lấy), chỉ hoạt động tự thiết kế, sửa chữa hay tạo ra những vật dụng mới mẻ ngay tại nhà, thay vì thuê người khác làm.
• Đảm bảo tích hợp liền mạch để hỗ trợ truyền dữ liệu từ bàn phím sang FPGA.
3 Sử dụng VHDL để lập trình:
• Áp dụng VHDL (Ngôn ngữ mô tả phần cứng VHSIC) để lập trình cho FPGA.
• Thực hiện các chức năng như quét bàn phím ma trận, mã hóa tín hiệu và truyền dữ liệu ra thiết bị bên ngoài.
4 Đánh giá hiệu suất, độ tin cậy và hiệu quả năng lượng:
• Tiến hành kiểm tra kỹ lưỡng để đánh giá hiệu năng của khối bàn phím ma trận được thiết kế.
• Đánh giá các số liệu về độ tin cậy, xem xét các yếu tố như độ chính xác của nhận dạng khóa.
• Đo hiệu suất năng lượng để hiểu đặc điểm tiêu thụ điện năng của bàn phím ma trận dựa trênFPGA.
Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu bao gồm việc tìm hiểu và hiểu chi tiết:
1 Cấu trúc bàn phím ma trận:
• Nghiên cứu cấu trúc của bàn phím ma trận, nhấn mạnh vào hàng, cột và nút giao chính.
• Hiểu cách tạo ra tín hiệu điện khi nhấn phím và truyền đến FPGA.
• Khám phá kiến trúc của Mảng cổng lập trình được dạng trường (FPGA).
• Kiểm tra tính chất có thể cấu hình lại của FPGA, cho phép tùy chỉnh các chức năng logic dựa trên yêu cầu của người dùng.
• Đi sâu vào chi tiết cụ thể của ngôn ngữ lập trình VHDL.
• Hiểu cú pháp và cấu trúc của VHDL để lập trình FPGA, nhấn mạnh vai trò của nó trong việc thực hiện các chức năng liên quan đến bàn phím.
4 Triển khai thực tế với Board Altera DE2-115:
• Sử dụng bảng phát triển Altera DE2-115 để kết nối vật lý giữa bàn phím ma trận và FPGA.
• Thực hiện mạch được thiết kế và lập trình bằng bảng Altera DE2-115.
Phạm vi nghiên cứu bao gồm việc tìm hiểu các thành phần liên quan đến ma trận bàn phím:
• Nghiên cứu các khía cạnh lý thuyết của bàn phím ma trận, bao gồm hoạt động, ưu điểm và nhược điểm của chúng.
• Khám phá nền tảng lý thuyết của FPGA, bao gồm kiến trúc, nguyên tắc hoạt động và ứng dụng của nó.
2 Lập trình và mô phỏng VHDL:
• Tìm hiểu và áp dụng VHDL để lập trình FPGA, tập trung vào các chức năng chính như quét bàn phím ma trận.
• Mô phỏng các chương trình VHDL bằng phần mềm Quartus II để đảm bảo chức năng và xác định các vấn đề tiềm ẩn.
3 Thiết kế mạch và thực hiện vật lý:
• Thiết kế mạch kết nối giữa bàn phím ma trận và FPGA trên bo mạch phát triển Altera DE2-115.
• Triển khai thực tế mạch được thiết kế trên bo mạch Altera DE2-115 để tạo khối bàn phím ma trận chức năng.
4 Kiểm tra và đánh giá:
• Tiến hành thử nghiệm toàn diện để đánh giá hiệu suất, độ tin cậy và hiệu quả sử dụng năng lượng của khối bàn phím ma trận.
• So sánh kết quả với các loại bàn phím khác để đưa ra đánh giá toàn diện.
Ứng dụng
1 Ứng dụng của đề tài:
• Khám phá các ứng dụng của khối bàn phím ma trận được thiết kế trong giao diện người-máy, góp phần phát triển các thiết bị đầu vào khác nhau.
• Hãy xem xét khả năng thích ứng của nó để tích hợp vào các hệ thống đa dạng, từ thiết bị điện tử tiêu dùng đến bảng điều khiển công nghiệp.
• Đóng góp vào sự hiểu biết khoa học bằng cách khám phá nền tảng lý thuyết và triển khai thực tế của bàn phím ma trận và FPGA.
• Nâng cao kiến thức trong lĩnh vực hệ thống nhúng, thiết bị logic lập trình và lập trình VHDL.
• Làm nổi bật ý nghĩa thực tế của các ứng dụng trong thế giới thực của khối bàn phím ma trận, nhấn mạnh đến khả năng thích ứng, khả năng phản hồi và tiềm năng tiết kiệm năng lượng.
• Nhấn mạnh tính hiệu quả về mặt chi phí và khả năng tiếp cận của việc phát triển FPGA so với chip ASIC, làm cho nó phù hợp với nhiều đối tượng hơn và các dự án khác nhau.
Các nội dung chính
Chương 1: Giới thiệu tổng quan về FPGA và ngôn ngữ VHDL được sử dụng trong FPGA
Chương 2: Giới thiệu linh kiện
Chương 3: Giới thiệu phần mềm
Chương 4: Thiết kế khối ma trận bàn phím
Chương 5: Kết luận và tài liệu tham khảo
1 Chương 1: Tổng quan về FPGA và VHDL
FPGA
Kiến trúc của FPGA
FPGA là viết tắt của Field Programmable Gate Array, về cơ bản nó là một phần cứng có thể được lập trình bao nhiêu lần tùy thích và nó có thể chuyển đổi hoặc thực hiện bất kỳ phương trình tùy ý nào thành dạng phương trình boolean, do đó, thực hiện điều này dưới dạng logic tổ hợp và tuần tự Nói một cách đơn giản, FPGA có thể được sử dụng để thực hiện bất kỳ hàm logic nào.
Lịch sử FPGA bắt đầu vào năm 1980 khi, Ross Freeman, tạo ra tên FPGA đầu tiên XC2064, như thể hiện trong Hình 1, bao gồm một lưới 8 * 8 của khối logic có thể cấu hình (CLB) Từ bằng sáng chế FPGA ban đầu, người ta có thể thấy cấu trúc cơ bản của FPGA Trong FPGA đơn giản hóa này, có 64 CLB Mỗi CLB có bốn đầu vào (A, B, C, D) và hai đầu ra (X và Y) Ở giữa là logic tổ hợp, có thể được lập trình để thực hiện bất kỳ chức năng logic mong muốn nào CLB cũng chứa một flip flop, cho phép FPGA thực hiện logic tuần tự, tức là bộ đếm, thanh ghi ca, máy trạng thái và các mạch trạng thái khác Có các bộ ghép kênh, có thể được lập trình để đi qua bất kỳ đầu vào nào của chúng để thực hiện logic tổ hợp Các bộ ghép kênh cho phép CLB được cấu hình cho một tác vụ cụ thể Nhiều CLB cũng có thể được lập trình để thực hiện một chức năng duy nhất Việc giao tiếp giữa các CLB có thể được thực hiện thông qua kiến trúc kết nối.
Vì vậy, tóm lại, mỗi FPGA có ba yếu tố cơ bản thiết yếu có thể là cốt lõi của kiến trúc FPGA hiện đại:
1 Khối logic có thể cấu hình:CLB bao gồm ba yếu tố thiết yếu: LUT, ghép kênh, Flipflop LUT là phần tử chính có thể thực hiện hàm logic và bộ ghép kênh được sử dụng để chọn đầu ra dữ liệu giữa logic tổ hợp và tuần tự Flip Flops đang được sử dụng để thực hiện logic tuần tự, như thể hiện trong Hình 2.
Bảng tra cứu: Một trong những yếu tố quan trọng nhất trong kiến trúc FPGA là LUT – đó là cốt lõi của kiến trúc FPGA LUT được thiết kế để thực hiện bất kỳ phương trình Boolean nào Bên trong LUT, có các bộ ghép kênh và các ô SRAM chứa các đầu ra dựa trên các dòng được chọn Để triển khai LUT đầu vào k (k-LUT) — một LUT có thể thực hiện bất kỳ chức năng nào của k đầu vào — cần có 2bit SRAM k và bộ ghép kênh 2k: 1 Hình 3 cho thấy 3-LUT, bao gồm 8 bit SRAM và bộ ghép kênh 8: 1 được triển khai dưới dạng cây ghép kênh 2: 1 3-LUT có thể thực hiện bất kỳ chức năng nào của 3 đầu vào (A, B, C) bằng cách đặt giá trị thích hợp trong mặt nạ tế bào SRAM LUT.
2 Kiến trúc kết nối:Tất cả các yếu tố logic bên trong FPGA được kết nối với một kết nối Kết nối là một ma trận định tuyến bao gồm các thiết bị chuyển mạch và dây có thể lập trình Các phần tử định tuyến cung cấp kết nối giữa các khối Đầu vào / Đầu ra, khối logic và giữa CLB này với CLB khác. Kết nối lập trình, như thể hiện trong Hình 4, bao gồm các công tắc và dây dẫn cho mục đích kết nối.
3 Khối đầu vào / đầu ra:Khối I / O là khối đầu vào / đầu ra có thể được sử dụng cho cả đầu vào và đầu ra Các đường dẫn đầu vào và đầu ra chứa dép xỏ ngón D được kích hoạt cạnh Mục đích của các khối I / O là cung cấp giao diện người dùng từ thế giới bên ngoài đến kiến trúc bên trong FPGA. Các khối I / O bao gồm các mục sau:
• Đầu vào từ bên ngoài FPGA đến chân FPGA.
• Một phần tử độ trễ cho đầu vào, có đầu ra để cung cấp độ trễ cho tín hiệu đầu vào.
• Một bộ ghép kênh đang cung cấp tín hiệu đầu vào bị trì hoãn.
• Thanh ghi / chốt đang cung cấp tín hiệu đầu ra thanh ghi / chốt.
• Một đường đặt / đặt lại để cung cấp tín hiệu đặt / đặt lại
• Bộ giải mã để cung cấp tín hiệu đã đặt hoặc tín hiệu đặt lại đáp ứng với tín hiệu đặt / đặt lại.
• Bộ khuếch đại có đầu ra để cung cấp tín hiệu khuếch đại cho một tài nguyên liên quan trongFPGA.
Ưu điểm của FPGA
Có rất nhiều lợi ích của FPGA đối với thiết kế hệ thống nhúng Một số ưu điểm của FPGA là khả năng cấu hình lại, khả năng làm việc song song, xử lý quan trọng về thời gian và hiệu suất tối ưu, khiến chúng rất phù hợp cho nhiều ứng dụng.
• Hiệu suất tốt hơn:Một trong những ưu điểm đầu tiên của FPGA là hiệu suất Một CPU nói chung không thể thực hiện xử lý song song, mang lại cho FPGA ưu thế vì chúng có thể thực hiện xử lý và tính toán song song với tốc độ nhanh hơn FPGA được thiết kế cẩn thận có thể thực thi bất kỳ chức năng nào nhanh hơn CPU đang chạy mã phần mềm theo kiểu tuần tự FPGA có thêm cổng và hệ thống dây điện cho phép chúng linh hoạt và có thể lập trình được Chi phí chung này đi kèm với chi phí và do đó làm cho FPGA chạy chậm hơn ASIC.
• Khả năng lập trình:Lợi thế lớn nhất mà FPGA có so với bất kỳ giải pháp thay thế nào khác là thực tế là chúng có thể lập trình lại Điều này có nghĩa là ngay cả sau khi mạch đã được thiết kế và triển khai, FPGA vẫn có thể được sửa đổi, cập nhật và thay đổi hoàn toàn chức năng của nó để thực hiện một nhiệm vụ hoàn toàn khác so với trước đây Khả năng lập trình lại làm giảm những nỗ lực và chi phí cần thiết cho việc bảo trì lâu dài các chip này Bạn không cần phải đầu tư vào việc thay thế hoặc thiết kế lại phần cứng mới khi phần cứng cũ trở nên lỗi thời - bạn chỉ cần cập nhật mã của nó và lập trình nó tại hiện trường với chức năng mới.
• Hiệu quả chi phí:Vì FPGA có thể được lập trình lại nhiều lần, chúng chứng tỏ là cực kỳ hiệu quả về chi phí trong thời gian dài mặc dù chúng có thể gây ra chi phí đơn vị cao hơn Đây rõ ràng là những ưu điểm của kiến trúc FPGA Họ loại bỏ bạn khỏi nhu cầu trang trải cho bất kỳ chi phí liên quan đến lỗi định kỳ nào mà bạn có thể gặp khó khăn khi trả tiền nếu bạn chọn ASIC ASIC cũng có chi phí không định kỳ nặng nề bị bỏ qua hoàn toàn khi nói đến FPGA, ngoài thực tế là bạn không yêu cầu sử dụng bất kỳ công cụ tốn kém và đắt tiền nào để thiết kế hoặc cấu hình chip FPGA của mình. ASIC cũng tỏ ra đắt hơn về lâu dài vì chúng phải được thiết kế lại hoàn toàn cùng với phần cứng nếu cần cập nhật và cải tiến FPGA không chia sẻ các chi phí này vì chúng có thể được lập trình lại mà không có gì.
• Hiệu suất tác vụ song song:Các chip thực hiện xử lý dữ liệu một cách tuần tự có xu hướng không được sử dụng các ứng dụng quan trọng về thời gian FPGA có thể được thiết kế để bao gồm nhiều khối xử lý dữ liệu song song Điều này có nghĩa là nó có thể cung cấp khả năng mở rộng lớn hơn nhiều so với các bộ xử lý khác như ASIC và MCU cũng như xử lý dữ liệu quan trọng về thời gian.
• Prototyping: Như đã đề cập trước đây, một trong những ưu điểm của FPGA là chúng có thể lập trình lại và tái sử dụng Điều này làm cho chúng trở thành sự lựa chọn hoàn hảo cho mục đích tạo mẫu - đặc biệt là cho mục đích xác thực ASIC Trước khi bạn giảm dần ASIC của mình, điều quan trọng là phải xác định xem thiết kế ASIC của bạn có hoạt động và đạt được thành công mục đích mà nó đã được thiết kế hay không ASIC rất khó và cực kỳ tốn kém để sản xuất, điều đó có nghĩa là nếu bạn kết thúc với một con chip cần sửa đổi, bạn sẽ phải đầu tư một lượng thời gian và tiền bạc đáng kể để thiết kế lại ASIC Với FPGA, tính năng lập trình lại cho phép bạn thực hiện chạy thử bằng cách thao tác lập trình và xác định cấu hình lý tưởng chỉ trên một chip Khi bạn đã hoàn thành việc tạo mẫu và xác định giải pháp tốt nhất là gì, bạn có thể dễ dàng chuyển đổi FPGA thành ASIC vĩnh viễn và triển khai nó để sử dụng.
• Thời gian đưa ra thị trường nhanh hơn: Một trong những lợi thế đáng kể nhất của FPGA là nó cho phép bạn hoàn thành việc phát triển sản phẩm của mình trong một khoảng thời gian rất ngắn, có nghĩa là thời gian đưa ra thị trường ngắn hơn Các công cụ thiết kế FPGA rất dễ sử dụng và không yêu cầu đường cong học tập dài.
Thêm vào đó, FPGA được thiết kế bằng ngôn ngữ mô tả cao hơn gọi là HDL, cũng là một mã lập trình mô-đun Sử dụng mã HDL, chẳng hạn như VHDL hoặc Verilog làm cho quá trình thiết kế cực kỳ nhanh chóng và hiệu quả.
FPGA có thể dễ dàng được lập trình lại tại phần mềm để kiểm tra và xác nhận thiết kế trong phòng thí nghiệm Sửa đổi có thể diễn ra rất nhanh, cho phép sửa lỗi trong một thời gian chu kỳ ngắn.
• Chu kỳ thiết kế đơn giản hơn:So với ASIC, FPGA có chu kỳ thiết kế đơn giản hơn có nghĩa là các công cụ thiết kế tự chăm sóc chức năng chính bao gồm vị trí, định tuyến và thời gian liên quan đến các thông số kỹ thuật bạn đã đặt cho nó Do đó, chúng yêu cầu hầu như ít hoặc không cần can thiệp thủ công khi chuyển đổi mã chương trình thành thiết kế có thể tải xuống.
Nếu thiết kế không hoạt động như mong đợi, một mã có thể tải xuống mới có thể được chuẩn bị trong vài giờ - làm cho toàn bộ chu trình thiết kế trở nên đơn giản và nhanh chóng.
• Khả năng thích ứng:Do khả năng lập trình lại của chúng, FPGA cho phép bạn thích ứng và sửa đổi ở cấp độ khách hàng thay vì tạo lại sản phẩm bất cứ khi nào bạn cần thực hiện bất kỳ cập nhật nào Ngay cả sau khi sản phẩm đã được hoàn thiện, phát triển và phân phối, bạn có thể cập nhật và điều chỉnh nó theo nhu cầu của khách hàng với sự phiền phức tối thiểu.
• Ứng dụng thời gian thực:Như đã đề cập trước đây, FPGA hoàn hảo cho các hệ thống quan trọng về thời gian do kiến trúc xử lý hiệu quả hơn của chúng Do đó, chúng lý tưởng cho các ứng dụng thời gian thực vì chúng có thể thực hiện xử lý nhiều hơn trong một khoảng thời gian ngắn hơn so với các giải pháp thay thế khác trên thị trường.
• Hệ thống trên chip:Kể từ những năm 90, FPGA đã trở nên lớn hơn về số lượng cổng Điều này cho phép bao gồm các lõi CPU bên trong FPGA - từ một lõi đơn đến nhiều lõi, cùng với mã phần cứng tùy chỉnh Bằng cách kết hợp lõi CPU và mã phần cứng trong một chip duy nhất làm cho FPGA hoạt động như hệ thống trên chip.
Ứng dụng của FPGA
Xem xét các tính năng có lợi khác nhau của chip FPGA, người ta có thể suy ra loại ứng dụng mà FPGA sẽ phù hợp nhất Chúng thường được sử dụng cho các dự án khối lượng thấp và độ phức tạp cao vì chúng cung cấp tùy chỉnh Các ứng dụng FPGA chính là: Y tế, xử lý video &; hình ảnh, viễn thông &; datacom,máy chủ & đám mây và quốc phòng và không gian Chip FPGA được sử dụng trong cả truyền thông có dây và không dây Trong truyền thông có dây, nó được sử dụng trong bảng nối tiếp và truyền thông không dây, nó được sử dụng cho các giải pháp mạng và giải quyết các tiêu chuẩn của WiMAX và, 5G / 6G và HSDPA. FPGA được sử dụng ở phía cơ sở hạ tầng giúp xử lý dữ liệu ở tốc độ cao Trong lĩnh vực ứng dụng y tế, chip FPGA được sử dụng cho mục đích chẩn đoán và theo dõi Chúng được sử dụng trong thiết bị y tế để xử lý dữ liệu Trong lĩnh vực ứng dụng hàng không vũ trụ và quốc phòng, chip FPGA được sử dụng để xử lý hình ảnh, cấu hình lại một phần cho SDR, cũng như để tạo dạng sóng Công nghệ FPGA cung cấp cho các công ty ASIC cơ hội tạo mẫu nhanh, nơi các ý tưởng và khái niệm có thể được kiểm tra mà không cần trải qua một quá trình dài FPGA được sử dụng để cải thiện thời gian đưa ra thị trường các sản phẩm công nghệ khác nhau và giảm chi phí kỹ thuật tổng thể phát sinh trong một số quy trình bao gồm tự động hóa và giám sát công nghiệp Vì FPGA được sử dụng để cấu hình lại và theo kịp các sửa đổi, nó làm giảm chi phí bảo trì dài hạn cần thiết cho hệ thống Ngay cả các nhà phát triển của Microsoft cũng có quyền truy cập vào chip FPGA và chúng hoạt động với các công cụ nguồn mở được gọi là Microsoft Cognitive Toolkit. Microsoft đang sử dụng Intel FPGA, để họ có thể tăng cường sử dụng Al trong các hoạt động của mình. Trên thực tế, FPGA đang được sử dụng nổi bật để phát triển các mạng nơ-ron sâu hoặc DNN, cuối cùng sẽ dẫn đến việc sản xuất và bảo trì các hệ thống thông minh nhân tạo FPGA hiệu suất cao có thể giúp ích nhiều hơn cho một ứng dụng khi so sánh với GPU và do đó được ưa thích cho mục đích phát triển công nghệ học máy Việc mua lại gần đây của Intel (mua Altera) và AMD (mua Xilinx) cho thấy FPGA quan trọng như thế nào trong thị trường máy chủ và máy tính, đây có lẽ là một phân khúc thị trường sẽ cho thấy sự tăng trưởng cho thị trường FPGA.
• FPGA trong viễn thông Chip FPGA được sử dụng trong cả truyền thông có dây và không dây. Trong truyền thông có dây, chúng được sử dụng trong bảng nối đa năng và trong truyền thông không dây, chúng được sử dụng trong các trạm gốc di động Ngày nay FPGA được sử dụng cho các giải pháp mạng và giải quyết các tiêu chuẩn WiMAX, 5G / 6G và HSDPA FPGA trong truyền thông có dây và không dây cũng được sử dụng để xử lý tín hiệu, và mục đích loại bỏ tiếng ồn là tốt FPGA có thể được sử dụng trong các ô nhỏ để macro cell sub – 6 GHz đến mmWave Chúng tôi sẽ tìm thấy FPGA trong các trạm gốc 5G hiệu suất cao Hình 1 cho thấy ứng dụng First in First out (FIFO) trong các hệ thống truyền thông Hãy xem xét một ứng dụng luồng dữ liệu cần lọc ra để loại bỏ nhiễu và có được mẫu dữ liệu mong muốn cần phải đi qua khối ánh xạ tài nguyên để FPGA có thể phân bổ băng thông thích hợp cho dữ liệu, sau đó chuyển dữ liệu đến bộ lọc FIR để loại bỏ nhiễu khi dữ liệu được truyền trên kênh có dây hoặc kênh không dây trong cả hai trường hợp, nó phải chịu tiếng ồn của bộ lọc FIR Tốt nhất để loại bỏ tiếng ồn và chọn tín hiệu quan tâm Hơn nữa, chúng ta có thể sử dụng sê-ri IFFT song song và song song với khối nối tiếp để chọn băng thông tần số chính xác Ứng dụng này rất hữu ích để loại bỏ tiếng ồn khỏi tín hiệu và chọn tần số.
• FPGA trong các ứng dụng quốc phòngCác giải pháp tiên tiến của FPGA cho phép các radar ngày nay được sử dụng trong hệ thống quốc phòng và tình báo điện tử đạt được thành công trong nhiệm vụ Vì CPU hoặc GPU không thể đạt được những gì FPGA có thể làm do tính chất lập trình của nó Việc lập trình lại không chỉ để thay đổi dạng sóng mà cả các thuật toán cũng như sử dụng logic lập trình Tạo chùm tia thích ứng là điển hình cho bất kỳ hệ thống RADAR nào yêu cầu theo dõi và hướng dẫn chính xác-chính xác trong phổ được phân bổ Các giải pháp dựa trên Hình 2 cho phép các nhà thiết kế RADAR xây dựng phần cứng thông qua lập trình đáp ứng hiệu suất tốt nhất Ứng dụng này có thể được sử dụng để thu thập dữ liệu Tần số vô tuyến và thực hiện chuyển đổi tương tự sang kỹ thuật số vì dữ liệu ở định dạng tương tự, nhưng FPGA chỉ hiểu định dạng kỹ thuật số của dữ liệu, vì vậy ADC là bắt buộc Khi dữ liệu được chuyển đổi sang định dạng kỹ thuật số, các thuật toán lọcFPGA được phát triển bằng ngôn ngữ RTL để chuyển đổi dữ liệu thô thành beamforming tương ứng hoặc lọc tương ứng để đạt được kết quả mong muốn FPGA có thể sử dụng bất kỳ kiểu dữ liệu DSP nào, tức là cố định, nổi, đôi FPGA hiện đại cũng được trang bị Ethernet, PCIe, Interlaken, SRIO hoặc bất kỳ giao diện tùy chỉnh nào giúp xử lý dữ liệu nhanh hơn với độ trễ tối thiểu.
• FPGA trong các ứng dụng không gianFPGA có các ứng dụng trong không gian để truyền dữ liệu từ mặt đất đến các đơn vị không gian như vệ tinh và vệ tinh đến trạm mặt đất FPGA có thể được sử dụng để xử lý dữ liệu quang học độ phân giải cao và hình ảnh radar Nó có thể được sử dụng trong không gian để điều khiển quỹ đạo để giao tiếp với các cảm biến Nó cũng có thể được sử dụng để xử lý video để nén và giải nén dữ liệu theo yêu cầu băng thông dữ liệu Hình 3 cho thấy một bitstream cấu hình vệ tinh đơn giản của mảng FPGA trong các ứng dụng không gian thường gặp phải các sự cố khó chịu sự kiện đơn lẻ do môi trường cứng bức xạ trong không gian, có thể dẫn đến tính toàn vẹn của dữ liệu trong bộ nhớ và dẫn đến các lỗi ngẫu nhiên Đối với bộ nhớ thương mại được sử dụng trong quỹ đạo Trái đất cao (HEO), lỗi đơn bit và giải thích lỗi byte kép cho một số lượng lớn Vì vậy, các sơ đồ phát hiện và sửa lỗi (EDAC), ví dụ, dự phòng ba mô-đun, mã khối tuyến tính, lọc bộ nhớ, được sử dụng trong đó cấu hình được lưu trữ bên trong bộ nhớ dễ bị bức xạ và cấu hình trong FPGA dựa trên SRAM để bất cứ khi nào có trục trặc bộ nhớ, một cấu hình vàng đã được tải vào SRAM từ mảng bộ nhớ.
• FPGA trong các ứng dụng ô tô Phát hiện và phạm vi ánh sáng (LiDAR) muốn có nhu cầu đặc biệt về khả năng cảm nhận và độ chính xác Hệ thống LiDAR dựa trên phương pháp cảm biến có thể cảm nhận được vị trí của môi trường xung quanh; FPGA có thể xử lý tất cả các loại dữ liệu vì LiDAR cung cấp khả năng cảm nhận tư duy tiến bộ cần thiết cho nhận thức, kiểm soát và lập kế hoạch đường dẫn Xử lý hình ảnh trong camera phía trước, cho dù dựa trên thị giác máy tính (CV) hay mạng thần kinh (NN), tất cả đều có thể được xử lý bởi FPGA Hình 4 cho thấy vị trí LiDAR để xác định lại khoảng cách Dữ liệu cho các biến khác nhau từ cảm biến LiDAR được xử lý bên trong FPGA, dữ liệu hỗ trợ vị trí ban đầu, thay đổi vị trí liên quan đến tốc độ của vật thể chuyển động để FPGA có thể xác định vị trí mới của vật thể dựa trên thông tin ánh sáng của nó.
• FPGA trong ứng dụng máy chủFPGA có thể được sử dụng cho các máy chủ / trung tâm dữ liệu khi nhu cầu về tốc độ xử lý dữ liệu tăng lên từng ngày Điều quan trọng là phải thực hiện xử lý dữ liệu thời gian thực trong giới hạn thời gian và không gian hạn chế Các chức năng mới được yêu cầu để có kết quả tốt hơn, chẳng hạn như phân tích dữ liệu và siêu dữ liệu và xử lý dữ liệu Các thiết bị FPGA có mật độ cao nhất dưới dạng BRAM và có thể cung cấp kết nối với các yếu tố lưu trữ dữ liệu bên ngoài giúp đẩy nhanh quá trình xử lý dữ liệu trên chip FPGA có thể thêm các tính năng bổ sung như khả năng mã hóa không mất dữ liệu hoặc mất dữ liệu để truyền dữ liệu không mất dữ liệu giữa các FPGA trong việc cung cấp không gian, chi phí và tiết kiệm năng lượng đáng kể Hình 5 cho thấy vai trò của FPGA trong Máy chủ dữ liệu nơi một số CPU được kết nối với FPGA trung tâm và FPGA đang thực hiện xử lý gói vào đó, do đó, gói tin đến trong trường hợp bất kể CPU liên quan của nó, FPGA có thể xử lý dữ liệu phù hợp với một trong những ứng dụng của vai trò FPGA trong trung tâm dữ liệu / máy chủ FPGA cung cấp khuôn khổ để xử lý gói dữ liệu cao nhất và quản lý lưu lượng dữ liệu giữa các máy chủ và cả giao tiếp dữ liệu nội tuyến Việc mua lại gần đây của Intel (mua Altera) và AMD (mua Xilinx) cho thấy FPGA quan trọng như thế nào trong thị trường máy chủ và máy tính, đây có lẽ là một phân khúc thị trường sẽ cho thấy sự tăng trưởng cho thị trường FPGA.
• FPGA trong các ứng dụng y tếTrong lĩnh vực ứng dụng y tế, chip FPGA được sử dụng cho mục đích chẩn đoán và theo dõi Chúng được sử dụng trong thiết bị y tế để xử lý dữ liệu FPGA được sử dụng trong MRI, CT scan, Siêu âm, hệ thống theo dõi bệnh nhân ECG FPGA được trang bị bộ thu phát nối tiếp tốc độ cao để làm cho chúng trở thành lựa chọn tuyệt vời cho các giao diện tiết kiệm năng lượng và nhanh chóng để xử lý một lượng dữ liệu đáng kể, giảm đáng kể nhu cầu về IO song song và giảm công suất cho chúng một tình huống lý tưởng cho các ứng dụng y tế Hình 6 là một trong những ví dụ về hình ảnh y tế trên FPGA, trong đó hình ảnh đã được xử lý trên FPGA sau khi lấy hình ảnh từ máy ảnh và nó xử lý hiệu chỉnh DC, nội suy IFFT để xác định tần số và DMA đang được sử dụng để truy cập bộ nhớ, tất cả các chức năng này có thể được sử dụng trên FPGA Nó cũng cho thấy FPGA thoải mái xử lý dữ liệu như thế nào Một đơn vị tính toán duy nhất có thể làm tất cả những gì cần thiết.
• FPGA trong ứng dụng AIVì FPGA được sử dụng để cấu hình lại và theo kịp các sửa đổi, nó làm giảm chi phí bảo trì dài hạn cần thiết cho hệ thống Ngay cả các nhà phát triển của Microsoft cũng có quyền truy cập vào chip FPGA và chúng hoạt động với các công cụ nguồn mở được gọi là Microsoft Cognitive Toolkit Microsoft đang sử dụng Intel FPGA để họ có thể tăng cường sử dụng Al trong các hoạt động của mình FPGA đang được sử dụng nổi bật để phát triển mạng nơ-ron sâu hoặc DNN, cuối cùng dẫn đến việc sản xuất và bảo trì các hệ thống thông minh nhân tạo FPGA hiệu suất cao có thể giúp ích rất nhiều cho một ứng dụng khi so sánh với GPU và do đó được ưu tiên phát triển công nghệ học máy.
Lập trình FPGA
Thông thường các mạch thiết kế kỹ thuật số dựa trên các khối xây dựng được gọi là cổng logic Các cổng logic được định nghĩa là các thiết bị vật lý thực hiện chức năng Boolean như AND, NOT, XOR, NAND, v.v Khi các hàm Boolean này được sắp xếp theo một cách nhất định, một hàm bắt buộc sẽ đạt được và kết quả là HW kỹ thuật số sau đó được sử dụng trong suốt vòng đời của nó với chức năng đó Các thiết bị phần cứng này được gọi là ASICs (Application Specific Integrated Circuit) Chúng được gọi là ASIC vì chúng dành riêng cho một chức năng nhất định và không thể thay đổi sau này để thực hiện một chức năng khác bằng cách sử dụng cùng một cổng logic Tuy nhiên, FPGA là một thiết bị cho phép các cổng logic này được sắp xếp và sắp xếp lại nhiều lần, do đó chúng có thể thực hiện các chức năng khác nhau trong suốt cuộc đời của chúng Và do đó, tên của chúng bao gồm Mảng cổng có thể lập trình tức là các mảng của các cổng lập trình Từ Field xuất phát từ thực tế, rằng chúng có thể được lập trình lại ngay cả khi chúng ở ngoài trường, tức là được cài đặt tại một số trang web của khách hàng Điều này mang lại một lợi ích bổ sung là các bản cập nhật HW có thể được xem dưới dạng cập nhật SW và khách hàng không phải thay đổi
HW của họ với bất kỳ bản cập nhật / tính năng mới nào được yêu cầu.
Các khối xây dựng của bất kỳ FPGA nào là cổng logic (để thực hiện các chức năng / chức năng phụ cần thiết), dây (để kết nối các cổng logic khác nhau), thanh ghi (để cho phép HW hoạt động ở tốc độ xung nhịp cao hơn) và bộ nhớ (để lưu trữ / truy xuất dữ liệu) Các yếu tố này trong FPGA được gọi chung là lõi hoặc vải của FPGA (màu xanh lá cây và màu xanh lam trong hình bên dưới) Tùy thuộc vào gia đình và nhà cung cấp FPGA, lõi / vải có thể được sắp xếp theo cách khác nhau để cho phép các nhà thiết kế thực hiện chức năng / hệ thống cần thiết.
Ngoài lõi, FPGA hiện đại còn được trang bị IP cứng (thể hiện trong các hộp màu xám trong hình bên dưới).
IP cứng là các thành phần / khối HW ở đó để thực hiện chức năng chuyên dụng, ví dụ: bộ điều khiển DDR để cho phép ghi / đọc bộ nhớ DDR bên ngoài và truyền dữ liệu đến lõi của FPGA Một số ví dụ về IP cứng là bộ xử lý, ADC, DAC, khối DSP.C
• Ngôn ngữ lập trình FPGAChúng ta biết rằng FPGA là các cổng / phần tử logic khác nhau được kết nối với nhau có thể được cấu hình theo yêu cầu để tạo HW để thực hiện chức năng đặc biệt,nhưng làm thế nào chúng ta có thể định cấu hình các khối / phần tử đó theo một cách cụ thể Ngôn ngữ cụ thể để thực hiện các chức năng đó có thể là Verilog, System Verilog hoặc VHDL Tất cả các ngôn ngữ này là Ngôn ngữ mô tả phần cứng (HDL) vì chúng được sử dụng để mô tả HW kỹ thuật số sẽ trông như thế nào Tất cả các ngôn ngữ này có thể mô hình hóa HW kỹ thuật số ở 3 cấp độ trừu tượng khác nhau:
2 Đăng ký cấp độ chuyển nhượng
Verilog rất gần với ngôn ngữ C về cú pháp và toán tử, v.v Tiêu chuẩn IEEE đầu tiên cho Verilog được đưa ra vào năm 1995 (Tiêu chuẩn IEEE 1364) Hệ thống Verilog là dẫn xuất của Verilog mang lại sự linh hoạt và tiện ích mở rộng / tính năng hơn nhiều so với Verilog và được sử dụng khá rộng rãi để xác minh trong ngành VHDL khá khác biệt so với Verilog/System Verilog về cú pháp nhưng chia sẻ khá nhiều tính năng về chức năng.
• HDL và ngôn ngữ phần mềmTất cả các ngôn ngữ mô tả phần cứng này khá khác với các ngôn ngữ lập trình SW về mặt thực thi của chúng Trái ngược với các ngôn ngữ SW, trong đó việc thực thi một chương trình xác định được chạy tuần tự (một câu lệnh được thực thi bởi một câu lệnh khác), việc thực thi các chương trình được xác định bằng ngôn ngữ HDL chủ yếu song song Việc thực thi song song này giúp dễ dàng mô hình hóa HW kỹ thuật số bằng các ngôn ngữ này vì trong HW hầu hết mọi thứ đều chạy song song Để làm việc / thiết kế HW bằng các ngôn ngữ này, người ta phải hiểu rất rõ về thiết kế logic vì trong các HDL này, người ta thực sự đang mô hình hóa HW thực tế mà anh ấy / cô ấy dự định xây dựng Trong lập trình FPGA, nhà thiết kế đang lập trình một mạch kỹ thuật số.
• Luồng thiết kế FPGATrong thiết kế logic kỹ thuật số, tín hiệu chỉ có thể có hai giá trị, Boolean 0 và Boolean 1 Người ta nên có kiến thức tốt về đại số Boolean để hiểu thiết kế kỹ thuật số Ví dụ: các phép toán Boolean AND và Boolean OR nhận hai giá trị và cung cấp một giá trị đầu ra với các bảng sự thật như được đưa ra bên dưới.
Một trong những khái niệm quan trọng nhất trong logic kỹ thuật số là sự khác biệt giữa logic tổ hợp và tuần tự Các mạch tổ hợp là những mạch mà đầu ra của thiết kế hoàn toàn phụ thuộc vào các giá trị hiện tại của đầu vào Các mạch tuần tự là những mạch, trong đó logic đầu ra cũng phụ thuộc vào một số đường dẫn phản hồi (các giá trị trước đó) Một phép cộng đơn giản trong đó HW tính tổng của hai đầu vào là một ví dụ về giá trị tổ hợp Vì bạn chỉ cần biết đầu vào để tính toán đầu ra Tuy nhiên, một bộ đếm đếm lên (hoặc xuống) cần biết đầu ra trước đó để tăng (hoặc giảm) giá trị Trong các mạch tuần tự, người ta phải sử dụng Flip Flop để lưu trữ giá trị đầu ra tạm thời được sử dụng làm đầu vào vào lần sau.
Khi bạn biết loại mạch bạn muốn tạo, chúng tôi có thể thử mô tả nó bằng bất kỳ HDL nào Ở đây chúng ta có thể thử một ví dụ trong VHDL Chúng ta có thể lấy một ví dụ về Half Adder Điều đầu tiên là tạo một thực thể trong VHDL mô tả mô-đun / mạch bạn muốn tạo.
Thực thể half_adder là cổng ( A : trong std_logic; B : trong std_logic; — S : hết std_logic; C: ngoài std_logic ); kết thúc half_adder; Bây giờ để xác định bên trong của mô-đun, chúng ta cần biết bảng sự thật của nửa adder có thể được tìm thấy bên dưới Bây giờ nếu chúng ta cố gắng viết đầu ra S và
Trong đó A’ đại diện cho giá trị phủ định của A, B’ đại diện cho giá trị phủ định của B, + đại diện cho cổng OR và đại diện cho cổng AND Phương trình cho S cũng có thể được xem như một hàm XOR giữa A và B Bây giờ chúng ta đã biết cấu trúc HW chi tiết, chúng ta có thể xác định kiến trúc (bên trong) của thực thể đã được xác định Kiến trúc RTL của half_adder là bắt đầu S