Chương 1: Tổng quan về FPGA và VHDL 1.2 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. 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. 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. LATEX by Nhóm XX Trang 6 Học viện Kỹ thuật Mật mã Báo cáo đồ án Thực Tập cơ sở 2 • 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 trong FPGA.3 Ư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 LATEX by Nhóm XX Trang 7 Học viện Kỹ thuật Mật mã Báo cáo đồ án Thực Tập cơ sở 2 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.