Nghiên cứu công nghệ FPGA và phát triển ứng dụng trên hệ thống CIC-310

Chuyên khảo kỹ thuật phân tích Nghiên cứu công nghệ fpga và phát triển ứng dụng trên hệ thống cic 310, đánh giá các khía cạnh quan trọng, đề xuất hướng nghiên cứu tiếp theo.

Người đăng

Ẩn danh

Thể loại

Khóa Luận Tốt Nghiệp

2017

61
2
0

Phí lưu trữ

30 Point

Tóm tắt

I. Khám phá công nghệ FPGA Nền tảng thiết kế vi mạch hiện đại

Công nghệ FPGA (Field-Programmable Gate Array) đã tạo ra một cuộc cách mạng trong lĩnh vực thiết kế và phát triển phần cứng. Về cơ bản, FPGA là một loại vi mạch tích hợp (IC) cho phép người dùng lập trình cấu hình phần cứng sau khi sản xuất. Khả năng tái cấu trúc này mang lại sự linh hoạt vượt trội so với các mạch tích hợp chuyên dụng (ASIC), vốn có cấu trúc cố định. Tài liệu nghiên cứu của Nguyễn Văn Sáng (2017) tại Đại học Lâm nghiệp đã chỉ rõ, công nghệ FPGA cung cấp một môi trường làm việc hiệu quả cho các ứng dụng đòi hỏi xử lý song song và tốc độ cao. Cấu trúc cốt lõi của một FPGA bao gồm ba thành phần chính: các khối logic lập trình được (Configurable Logic Blocks - CLBs), hệ thống các đường kết nối lập trình được (Programmable Interconnects), và các khối vào/ra (I/O Blocks). Các CLB, thường được xây dựng từ Look-Up Table (LUT) và các phần tử nhớ như Flip-Flop, là đơn vị thực thi các hàm logic cơ bản. Hệ thống kết nối cho phép liên kết các CLB này lại với nhau để tạo thành các mạch số phức tạp. Sự phát triển của công nghệ FPGA đã mở ra nhiều ứng dụng trong các lĩnh vực yêu cầu tính toán lớn như xử lý tín hiệu số (DSP), tăng tốc phần cứng, và các hệ thống nhúng thời gian thực. Các hãng sản xuất lớn như XilinxAltera (nay thuộc Intel) liên tục cải tiến, tích hợp thêm các khối chức năng chuyên dụng như bộ nhân cứng, bộ nhớ RAM, và thậm chí cả nhân vi xử lý để tạo ra các System-on-Chip (SoC) mạnh mẽ. Việc nghiên cứu và ứng dụng FPGA trên các kit phát triển FPGA như CIC 310 là bước đệm quan trọng để sinh viên và kỹ sư làm chủ công nghệ này.

1.1. FPGA là gì Cấu trúc và nguyên lý hoạt động cốt lõi

FPGA, viết tắt của Field-Programmable Gate Array, là một ma trận các cổng logic có thể được lập trình tại hiện trường. Điều này có nghĩa là chức năng của vi mạch không được định sẵn bởi nhà sản xuất mà do người thiết kế quyết định thông qua việc nạp code FPGA. Cấu trúc cơ bản của FPGA bao gồm hàng ngàn, thậm chí hàng triệu khối logic cơ bản (Logic Block). Mỗi khối này chứa các bảng tra cứu (Look-Up Table - LUT) và các Flip-Flop (FF). LUT là một bộ nhớ nhỏ có thể thực hiện bất kỳ hàm logic nào với một số lượng đầu vào nhất định (ví dụ: 4 hoặc 6 đầu vào). Kết quả từ LUT có thể được đưa trực tiếp ra ngoài hoặc đi qua một Flip-Flop để tạo ra các mạch tuần tự. Các khối logic này được kết nối với nhau thông qua một mạng lưới các đường dẫn và công tắc lập trình được. Bằng cách cấu hình các kết nối này, người thiết kế có thể tạo ra các mạch số tùy chỉnh, từ những cổng logic đơn giản đến các bộ vi xử lý phức tạp. Nguyên lý hoạt động dựa trên việc tải một tệp cấu hình (bitstream) vào bộ nhớ SRAM của FPGA, tệp này sẽ định nghĩa chức năng của từng LUT và cách chúng kết nối với nhau.

1.2. Lịch sử và ưu điểm của việc sử dụng công nghệ FPGA

Công nghệ FPGA được phát minh bởi Ross Freeman, người đồng sáng lập Xilinx, vào năm 1984. Sự ra đời của FPGA đã giải quyết bài toán về chi phí và thời gian phát triển so với ASIC. Trước FPGA, việc tạo ra một vi mạch chuyên dụng rất tốn kém và mất nhiều thời gian, chỉ phù hợp với các sản phẩm sản xuất hàng loạt. FPGA mang lại những ưu điểm vượt trội: (1) Tính linh hoạt và khả năng tái lập trình, cho phép cập nhật, sửa lỗi phần cứng mà không cần thay thế chip. (2) Rút ngắn thời gian đưa sản phẩm ra thị trường (Time-to-Market) do chu trình thiết kế, mô phỏng phần cứng và kiểm thử nhanh hơn. (3) Chi phí phát triển ban đầu thấp hơn đáng kể so với ASIC, lý tưởng cho việc tạo mẫu và sản xuất số lượng nhỏ. (4) Khả năng thực thi song song, giúp tăng tốc các thuật toán trong xử lý ảnh thời gian thựcDSP, những tác vụ mà CPU truyền thống gặp khó khăn.

1.3. Tổng quan quy trình thiết kế từ ngôn ngữ HDL đến tổng hợp logic

Quy trình thiết kế một ứng dụng trên FPGA bao gồm nhiều bước, được hỗ trợ bởi các bộ công cụ phần mềm chuyên dụng như Vivado Design Suite của Xilinx hay Quartus Prime của Intel Altera. Bước đầu tiên là Nhập thiết kế (Design Entry), nơi kỹ sư mô tả chức năng của mạch bằng ngôn ngữ mô tả phần cứng (HDL) như lập trình VHDL hoặc lập trình Verilog. Tiếp theo là Mô phỏng chức năng (Functional Simulation) để kiểm tra tính đúng đắn của logic thiết kế. Sau khi mô phỏng thành công, thiết kế sẽ trải qua quá trình tổng hợp logic (Synthesis). Ở bước này, công cụ phần mềm sẽ dịch mã HDL thành một danh sách các cổng logic và kết nối (netlist). Bước quan trọng tiếp theo là Thực thi (Implementation), bao gồm các công đoạn nhỏ: Biên dịch (Translate), Ánh xạ (Map) các cổng logic vào tài nguyên cụ thể của chip FPGA, và Định vị & Định tuyến (Place & Route) để sắp xếp và kết nối chúng. Cuối cùng, một tệp bitstream được tạo ra và nạp vào FPGA, cấu hình cho nó hoạt động theo thiết kế.

II. Thách thức khi phát triển ứng dụng trên hệ thống CIC 310

Mặc dù công nghệ FPGA mang lại nhiều lợi ích, việc triển khai ứng dụng trên một hệ thống cụ thể như hệ thống CIC 310 không phải lúc nào cũng đơn giản. Hệ thống này, theo mô tả trong tài liệu kỹ thuật CIC 310 của khóa luận, là một nền tảng học tập và thí nghiệm, do đó có những giới hạn nhất định so với các kit phát triển FPGA thương mại hiện đại. Một trong những thách thức chính là sự hạn chế về tài nguyên phần cứng. Chip FPGA được sử dụng trên bo mạch (ví dụ EPF8282ALC84) có số lượng cổng logic và bộ nhớ khá khiêm tốn, gây khó khăn khi triển khai các đồ án FPGA phức tạp đòi hỏi nhiều tài nguyên. Hơn nữa, các ngoại vi trên bo mạch thực hành như LED, màn hình 7 đoạn, và switch có số lượng và cách kết nối cố định, đòi hỏi người lập trình phải tuân thủ nghiêm ngặt sơ đồ chân đã được định sẵn, làm giảm tính linh hoạt trong thiết kế. Thách thức lớn thứ hai đến từ môi trường phần mềm. Hệ thống CIC 310 sử dụng phần mềm MAX+PLUS II, một công cụ đã cũ của Altera. Giao diện và quy trình làm việc của MAX+PLUS II kém trực quan và thiếu các tính năng tự động hóa mạnh mẽ như các công cụ hiện đại (Vivado, Quartus). Việc gán chân, biên dịch và mô phỏng phần cứng trên MAX+PLUS II thường đòi hỏi nhiều thao tác thủ công, dễ gây ra lỗi và tốn nhiều thời gian gỡ lỗi. Cuối cùng, việc tìm kiếm tài liệu hỗ trợ và cộng đồng người dùng cho một hệ thống cũ như CIC 310 cũng là một trở ngại, khiến việc giải quyết các vấn đề kỹ thuật phát sinh trở nên khó khăn hơn.

2.1. Giới hạn tài nguyên phần cứng của kit phát triển FPGA

Kit phát triển CIC 310 được thiết kế chủ yếu cho mục đích giáo dục, do đó tài nguyên phần cứng bị giới hạn. Vi mạch FPGA tích hợp trên bo mạch có mật độ cổng logic không cao, không đủ để thực thi các thuật toán phức tạp trong xử lý tín hiệu số hay các hệ thống System-on-Chip (SoC). Số lượng khối nhớ trong (on-chip memory) cũng hạn chế, ảnh hưởng đến các ứng dụng cần lưu trữ dữ liệu tạm thời. Các module ngoại vi như LED hiển thị, công tắc đầu vào, hay màn hình 7 đoạn được kết nối cố định với các chân I/O của FPGA. Điều này buộc người thiết kế phải tuân theo sơ đồ chân định sẵn trong tài liệu kỹ thuật CIC 310, làm mất đi sự linh hoạt trong việc tối ưu hóa định tuyến và giảm độ trễ tín hiệu, một yếu tố quan trọng trong thiết kế vi mạch hiệu năng cao.

2.2. Khó khăn khi sử dụng môi trường lập trình MAX PLUS II

Phần mềm MAX+PLUS II là một công cụ thiết kế của Altera từ những thế hệ đầu. So với các phần mềm hiện đại như Quartus Prime, MAX+PLUS II thiếu nhiều tính năng tiên tiến. Quá trình tổng hợp logic và định tuyến thường chậm hơn và cho kết quả kém tối ưu. Giao diện người dùng không thân thiện, đòi hỏi người mới bắt đầu phải mất nhiều thời gian để làm quen. Hơn nữa, các công cụ gỡ lỗi và mô phỏng tích hợp khá cơ bản. Việc thực hiện mô phỏng phần cứng có tham số thời gian (Timing Simulation) để phân tích độ trễ tín hiệu phức tạp hơn. Quá trình kết nối máy tính với hệ thống CIC-310 để nạp code FPGA thông qua cổng RS-232 cũng không ổn định và tốc độ chậm so với giao thức JTAG phổ biến ngày nay. Những khó khăn này đòi hỏi người phát triển phải có sự kiên nhẫn và kỹ năng gỡ lỗi tốt.

III. Hướng dẫn làm chủ hệ thống phát triển CPLD FPGA CIC 310

Để vượt qua các thách thức và khai thác hiệu quả hệ thống CIC 310, việc nắm vững cấu trúc và cách vận hành của nó là điều kiện tiên quyết. Hệ thống này được cấu thành từ hai bảng mạch chính: Bảng phát triển mạch số (ví dụ SN-PLDE2) và Bảng thí nghiệm (SN-PLDE3A). Bảng phát triển chứa chip FPGA/CPLD, bộ vi điều khiển cấu hình, và cổng giao tiếp RS-232. Bảng thí nghiệm cung cấp một loạt các thiết bị vào/ra để tương tác với thiết kế. Để bắt đầu, người dùng cần kết nối máy tính với hệ thống qua cáp RS-232 và cài đặt phần mềm MAX+PLUS II. Sau đó, cần nghiên cứu kỹ tài liệu kỹ thuật CIC 310 để hiểu rõ sơ đồ chân của các ngoại vi. Ví dụ, tài liệu chỉ rõ các công tắc logic S1-S3 được nối với các chân P01-P09 và P34-P51, trong khi các đèn LED D17-D32 được nối với các chân P55-P72. Việc hiểu rõ sự tương ứng này là bắt buộc để có thể gán chân (Pin Assignment) chính xác trong quá trình thiết kế. Quá trình thiết kế một mạch logic cơ bản trên bo mạch thực hành này thường bắt đầu bằng việc tạo một project mới trong MAX+PLUS II, vẽ sơ đồ nguyên lý hoặc viết mã bằng lập trình VHDL, sau đó thực hiện biên dịch và tổng hợp logic. Bước quan trọng là gán chân trong Floorplan Editor, đảm bảo các tín hiệu vào/ra trong thiết kế được kết nối đúng với các thiết bị vật lý trên bo mạch. Cuối cùng là nạp code FPGA qua chương trình DNLD3 để kiểm tra hoạt động thực tế.

3.1. Phân tích cấu tạo bo mạch thực hành SN PLDE2 và SN PLDE3A

Bo mạch thực hành CIC 310 được chia thành hai phần rõ rệt. Bảng phát triển SN-PLDE2 là trái tim của hệ thống, chứa chip FPGA Altera EPF8282ALC84, bộ vi điều khiển AT89C2051 dùng để tải dữ liệu cấu hình, và cổng giao tiếp RS-232. Bảng thí nghiệm SN-PLDE3A là giao diện người dùng, cung cấp các module đầu vào và đầu ra. Các module này bao gồm ba dãy công tắc trượt 8-bit, 32 đèn LED đơn, bộ hiển thị 7 đoạn 6 chữ số, máy phát xung, bàn phím ma trận và các ổ cắm mở rộng cho LCD và màn hình ma trận điểm. Việc hiểu rõ chức năng và sơ đồ kết nối của từng thành phần trên bo mạch SN-PLDE3A là cực kỳ quan trọng để xây dựng các ứng dụng tương tác, từ việc đọc trạng thái công tắc đến hiển thị kết quả lên LED hoặc màn hình 7 đoạn. Đây là nền tảng cho bất kỳ đồ án FPGA nào được thực hiện trên kit này.

3.2. Khai thác module vào ra LED Switch và hiển thị 7 đoạn

Việc tương tác với các module vào/ra là kỹ năng cơ bản khi làm việc với kit phát triển FPGA. Trên CIC 310, các công tắc trượt (Switch) hoạt động như các đầu vào logic, cho phép người dùng cung cấp tín hiệu '0' hoặc '1' cho thiết kế. Các đèn LED là các đầu ra đơn giản nhất, thường được dùng để chỉ thị trạng thái logic của một tín hiệu nội bộ hoặc kết quả của một phép toán. Màn hình 7 đoạn cho phép hiển thị các chữ số, là công cụ hữu ích cho các ứng dụng như bộ đếm hay đồng hồ số. Để điều khiển màn hình 7 đoạn, cần thiết kế một bộ giải mã BCD sang 7 đoạn. Theo tài liệu khóa luận, việc điều khiển hiển thị 6 chữ số có thể thực hiện ở chế độ song song (mỗi chữ số được điều khiển riêng biệt) hoặc chế độ nối tiếp (quét LED), giúp tiết kiệm chân I/O cho các thiết kế phức tạp hơn. Nắm vững cách điều khiển các ngoại vi này là bước đầu tiên để xây dựng các ứng dụng hoàn chỉnh.

IV. Phương pháp lập trình VHDL và nạp code lên hệ thống CIC 310

Lập trình cho FPGA về cơ bản là mô tả phần cứng bằng một ngôn ngữ mô tả phần cứng (HDL), và lập trình VHDL là một trong những lựa chọn phổ biến nhất. VHDL (VHSIC Hardware Description Language) cho phép mô tả cấu trúc và hành vi của một hệ thống số một cách chi tiết. Một tệp thiết kế VHDL điển hình bao gồm ba phần chính: Library (khai báo thư viện), Entity (định nghĩa các cổng vào/ra), và Architecture (mô tả hoạt động bên trong của mạch). Khai báo Entity giống như việc định nghĩa 'hộp đen' với các chân tín hiệu, trong khi Architecture là nơi hiện thực hóa logic bên trong bằng các câu lệnh song song và tuần tự. Ví dụ, để thiết kế một bộ cộng, Architecture sẽ chứa các câu lệnh mô tả phép toán cộng. Phần mềm MAX+PLUS II cung cấp trình soạn thảo văn bản để viết mã VHDL. Sau khi viết mã, quá trình tổng hợp logic sẽ chuyển đổi mô tả trừu tượng này thành một cấu trúc mạch gồm các cổng logic. Quá trình nạp code FPGA lên hệ thống CIC 310 được thực hiện thông qua tiện ích DNLD3.exe. Đầu tiên, cần biên dịch thành công dự án trong MAX+PLUS II để tạo ra tệp cấu hình. Sau đó, kết nối hệ thống với máy tính qua cổng COM và chạy DNLD3. Chương trình này cho phép chọn tệp cấu hình đã tạo và tải nó vào bộ nhớ của chip FPGA. Quá trình này sẽ định hình lại các Look-Up Table (LUT) và kết nối bên trong FPGA, biến nó thành mạch logic mà người dùng đã thiết kế.

4.1. Cấu trúc cơ bản của một chương trình lập trình VHDL

Một chương trình lập trình VHDL luôn bắt đầu bằng việc khai báo thư viện, phổ biến nhất là thư viện IEEE với gói std_logic_1164 định nghĩa các kiểu dữ liệu chuẩn. Tiếp theo là khối ENTITY, nơi định nghĩa giao diện của thiết kế, bao gồm tên thực thể và danh sách các cổng (PORT) với hướng (IN, OUT, INOUT) và kiểu dữ liệu. Phần quan trọng nhất là khối ARCHITECTURE, nơi mô tả logic hoạt động của mạch. Có hai phong cách mô tả chính: cấu trúc (Structural) và hành vi (Behavioral). Mô tả cấu trúc là việc kết nối các thành phần con có sẵn (component) lại với nhau. Mô tả hành vi sử dụng các câu lệnh tuần tự bên trong một khối PROCESS để mô tả chức năng của mạch, ví dụ như dùng câu lệnh IF-THEN-ELSE hoặc CASE để tạo ra các mạch tổ hợp hoặc tuần tự. Việc hiểu rõ cấu trúc này là nền tảng để thiết kế vi mạch hiệu quả.

4.2. Hướng dẫn các bước nạp code FPGA bằng phần mềm MAX PLUS II

Quy trình nạp code FPGA trên CIC 310 yêu cầu sự phối hợp giữa phần mềm MAX+PLUS II và tiện ích DNLD3. Các bước thực hiện như sau: (1) Hoàn thành thiết kế và biên dịch thành công dự án trong MAX+PLUS II. Đảm bảo đã gán đúng loại chip (ví dụ EPF8282ALC84-4) và thực hiện gán chân I/O. (2) Kết nối vật lý giữa máy tính và bo mạch thực hành CIC 310 bằng cáp RS-232. Bật nguồn cho hệ thống. (3) Chạy chương trình DNLD3.exe. Trong giao diện chương trình, chọn đúng cổng COM mà máy tính đang sử dụng. (4) Trong mục 'Files', duyệt đến thư mục dự án và chọn tệp cấu hình .sof hoặc .pof đã được MAX+PLUS II tạo ra. (5) Nhấn nút 'Config' để bắt đầu quá trình tải tệp cấu hình từ máy tính vào FPGA. Một thanh tiến trình sẽ hiển thị trạng thái tải. Khi hoàn tất, FPGA sẽ ngay lập tức hoạt động theo thiết kế mới. Quá trình này là bước cuối cùng để hiện thực hóa thiết kế từ phần mềm ra phần cứng thực tế.

V. Kết quả thiết kế mạch logic trên hệ thống phát triển CIC 310

Việc áp dụng lý thuyết vào thực tiễn là minh chứng rõ ràng nhất cho việc làm chủ công nghệ. Khóa luận của Nguyễn Văn Sáng (2017) đã trình bày chi tiết kết quả thiết kế và thử nghiệm một số mạch logic cơ bản trên hệ thống CIC 310, sử dụng phần mềm MAX+PLUS IIlập trình VHDL. Các thiết kế này bao gồm cả mạch logic tổ hợp và mạch logic tuần tự, là những khối xây dựng nền tảng cho bất kỳ hệ thống nhúng phức tạp nào. Đối với mạch tổ hợp, một bộ giải mã tuyến tính 2 sang 4 đã được triển khai. Mạch này nhận 2 bit đầu vào và kích hoạt 1 trong 4 đầu ra tương ứng. Kết quả thực nghiệm trên bo mạch thực hành cho thấy khi cấp các tín hiệu đầu vào từ '00' đến '11' thông qua các công tắc, các đèn LED đầu ra tương ứng sẽ sáng đúng theo bảng chân lý, xác nhận logic thiết kế là chính xác. Đối với mạch tuần tự, một bộ đếm nối tiếp đồng bộ 8-bit và một Flip-Flop D đã được xây dựng. Bộ đếm 8-bit sử dụng một tín hiệu xung nhịp (clock) để tăng giá trị đếm, và kết quả được hiển thị trên dải 8 đèn LED. Thử nghiệm cho thấy các đèn LED nhấp nháy theo đúng chuỗi nhị phân, minh họa hoạt động của mạch tuần tự. Những kết quả này không chỉ chứng minh tính khả thi của việc phát triển ứng dụng trên kit phát triển FPGA CIC 310 mà còn cung cấp kinh nghiệm thực tiễn quý báu cho các đồ án FPGA sau này.

5.1. Triển khai mạch logic tổ hợp Bộ giải mã tuyến tính 2 4

Mạch logic tổ hợp là loại mạch mà đầu ra chỉ phụ thuộc vào giá trị đầu vào ở thời điểm hiện tại. Bộ giải mã 2-4 là một ví dụ kinh điển. Thiết kế được thực hiện bằng cách vẽ sơ đồ nguyên lý trong Graphic Editor của MAX+PLUS II, sử dụng các cổng logic cơ bản như AND và NOT. Hai đầu vào được kết nối với công tắc S1-1 và S1-2, trong khi bốn đầu ra được nối với bốn đèn LED. Sau khi tổng hợp logic, gán chân và nạp code FPGA, kết quả kiểm tra thực tế cho thấy mạch hoạt động hoàn hảo. Cụ thể, khi đầu vào là '00', đèn LED đầu tiên sáng; khi là '01', đèn thứ hai sáng, và cứ thế tiếp tục. Thí nghiệm này khẳng định quy trình từ thiết kế, biên dịch đến triển khai trên phần cứng đã được thực hiện thành công, tạo nền tảng vững chắc cho các thiết kế phức tạp hơn.

5.2. Xây dựng mạch logic tuần tự Bộ đếm 8 bit đồng bộ

Khác với mạch tổ hợp, mạch logic tuần tự có đầu ra phụ thuộc vào cả đầu vào hiện tại và trạng thái trước đó của mạch, nhờ vào các phần tử nhớ như Flip-Flop. Bộ đếm đồng bộ 8-bit là một ứng dụng tiêu biểu. Thiết kế này được mô tả bằng lập trình VHDL, sử dụng một khối PROCESS nhạy với sườn lên của tín hiệu xung nhịp. Tín hiệu xung nhịp được cung cấp bởi máy phát xung trên bo mạch thực hành CIC 310. Tám bit đầu ra của bộ đếm được nối với một dãy 8 đèn LED. Kết quả thực nghiệm cho thấy các đèn LED sáng tuần tự, biểu diễn các số từ 0 đến 255 ở dạng nhị phân. Thành công trong việc xây dựng mạch tuần tự chứng tỏ khả năng xử lý các thiết kế phụ thuộc vào thời gian, một yêu cầu cốt lõi trong các ứng dụng xử lý tín hiệu số (DSP) và điều khiển thời gian thực.

VI. Tương lai công nghệ FPGA và tiềm năng ứng dụng sau CIC 310

Công nghệ FPGA đã và đang tiếp tục phát triển với tốc độ chóng mặt, vượt xa khả năng của các hệ thống học tập ban đầu như hệ thống CIC 310. Các chip FPGA hiện đại từ Xilinx và Intel (Altera) không chỉ có mật độ cổng logic khổng lồ mà còn tích hợp sẵn các tài nguyên chuyên dụng như khối DSP, bộ nhớ tốc độ cao, và các giao diện truyền thông tiên tiến (PCIe, Ethernet). Xu hướng nổi bật nhất là sự hội tụ giữa FPGA và vi xử lý, tạo ra các System-on-Chip (SoC) hoặc MPSoC (Multi-Processor SoC). Các thiết bị này kết hợp tính linh hoạt của cấu trúc FPGA với sức mạnh xử lý của các nhân ARM, cho phép tạo ra các hệ thống nhúng cực kỳ mạnh mẽ và hiệu quả. Các ứng dụng của FPGA ngày càng mở rộng, từ tăng tốc phần cứng trong trung tâm dữ liệu, xe tự lái, mạng 5G, đến xử lý ảnh thời gian thực trong y tế và công nghiệp. Việc có kinh nghiệm làm việc trên một hệ thống cơ bản như CIC 310, dù đã cũ, vẫn cung cấp một nền tảng kiến thức vững chắc về nguyên lý thiết kế vi mạch, quy trình tổng hợp logic và kỹ năng lập trình VHDL/Verilog. Đây là những kỹ năng cốt lõi, có thể chuyển đổi và áp dụng trên các kit phát triển FPGA hiện đại hơn. Tương lai của lĩnh vực này hứa hẹn nhiều cơ hội cho các kỹ sư có khả năng làm chủ cả phần cứng và phần mềm để tạo ra các giải pháp đột phá.

6.1. Xu hướng phát triển của System on Chip SoC và FPGA

Xu hướng tích hợp ngày càng nhiều chức năng vào một con chip duy nhất đang thúc đẩy sự phát triển của System-on-Chip (SoC). Các FPGA-SoC hiện đại như dòng Zynq của Xilinx hay Arria của Intel tích hợp một hệ thống xử lý (Processing System - PS) gồm các lõi ARM cứng và một phần logic lập trình được (Programmable Logic - PL). Điều này cho phép các tác vụ phần mềm chạy trên hệ điều hành Linux hoặc RTOS trên nhân ARM, trong khi các thuật toán tính toán chuyên sâu, đòi hỏi xử lý song song, được tăng tốc phần cứng trên phần logic của FPGA. Sự kết hợp này mang lại hiệu năng cao và tiêu thụ năng lượng thấp, lý tưởng cho các ứng dụng như trí tuệ nhân tạo tại biên (Edge AI), thị giác máy tính và robot.

6.2. Định hướng cho các đồ án FPGA và nghiên cứu nâng cao

Từ nền tảng kiến thức thu được qua việc nghiên cứu CIC 310, sinh viên và kỹ sư có thể tiếp tục phát triển các đồ án FPGA nâng cao hơn. Các định hướng tiềm năng bao gồm: (1) Nghiên cứu về xử lý tín hiệu số (DSP), triển khai các bộ lọc số (FIR, IIR) hoặc các thuật toán biến đổi Fourier nhanh (FFT). (2) Lĩnh vực xử lý ảnh thời gian thực, xây dựng các hệ thống nhận dạng đối tượng, theo dõi chuyển động. (3) Tích hợp và xây dựng các hệ thống nhúng hoàn chỉnh trên các FPGA-SoC, kết hợp xử lý phần mềm và tăng tốc phần cứng. (4) Khám phá các ngôn ngữ mô tả phần cứng bậc cao (High-Level Synthesis - HLS), cho phép thiết kế phần cứng từ các ngôn ngữ như C/C++ hoặc Python, giúp rút ngắn đáng kể thời gian phát triển. Đây là những lĩnh vực có nhu cầu nhân lực cao và nhiều tiềm năng phát triển trong tương lai.

04/10/2025

Trích đoạn nội dung tài liệu

TRƯỜNG ĐẠI HỌC LÂM NGHIỆP VIỆT NAM KHOA CƠ ĐIỆN & CÔNG TRÌNH BỘ MÔN KỸ THUẬT ĐIỆN VÀ TỰ ĐỘNG HÓA KHÓA LUẬN TỐT NGHIỆP TÊN ĐỀ TÀI: Nghiên cứu công nghệ FPGA và phát triển ứng dụng trên hệ thống CIC-310 Giảng viên hướng dẫn : ThS. Lê Minh Đức Sinh viên thực hiện : Nguyễn Văn Sáng Lớp : K58-CĐT Khóa : K58 Hà Nội, 2017 TRƢỜNG ĐẠI HỌC LÂM NGHIỆP VIỆT NAM KHOA CƠ ĐIỆN VÀ CÔNG TRÌNH BỘ MÔN KỸ THUẬT ĐIỆN VÀ TỰ ĐỘNG HÓA KHÓA LUẬN TỐT NGHIỆP Tên đề tài: Nghiên cứu công nghệ FPGA và phát triển ứng dụng trên hệ thống CIC-310 Giảng viên hƣớng dẫn : ThS.Lê Minh Đức Sinh viên thực hiện : Nguyễn Văn Sáng Mã sinh viên : 1351082130 Lớp : K58_CĐT Khóa : 2013-2017 Hà Nội - 2017 LỜI NÓI ĐẦU Ngày nay với sự phát triển hết sức mạnh mẽ 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,.Đặ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ờ.

Nhờ những đặc điểm mạnh mẽ và ứng dụng thực tiễn của FPGA em đã chọn đề tài: “Nghiên cứu công nghệ FPGA và phát triển ứng dụng trên hệ thống CIC- 310”. Đề tài nghiên cứu khóa luận bao gồm các nội dung chính nhƣ sau: Chƣơng 1: Tổng quan về FPGA Chương 2: Hệ thống phát triển CIC-310 và môi trường lập trình MAX + PLUS II Chương 3: Thiết kế một số mạch logic sử dụng hệ thống phát triển CIC-310 Mặc dù em đã nỗ lực và cố gắng để hoàn thiện khóa luận một cách tốt nhất, nhƣng do thời gian có hạn và vì kiến thức còn hạn chế nên em vẫn không thể tránh khỏi những sai sót trong việc xây dựng hệ thống và trình bày khóa luận. Em rất mong nhận đƣợc ý kiến đóng góp của thầy, cô và các bạn. Em xin chân thành cảm ơn các thầy cô trong trƣờng Đại học Lâm nghiệp Quốc gia Việt Nam đã dạy bảo em trong suốt quá trình em học tập, rèn luyện tại trƣờng, đặc biệt là thầy Lê Minh Đức và các thành viên trong tập thể lớp K58-CĐT đã giúp em hoàn thành tốt khóa luận này.

Hà Nội, ngày … tháng … năm 2017 Sinh viên thực hiện đề tài Nguyễn Văn Sáng MỤC LỤC LỜI NÓI ĐẦU MỤC LỤC DANH MỤC CÁC TỪ VIẾT TẮT DANH MỤC CÁC BẢNG BIỂU DANH MỤC CÁC HÌNH VẼ CHƢƠNG 1: TỔNG QUAN VỀ FPGA VÀ NGÔN NGỮ VHDL. Lịch sử ra đời của FPGA. Cơ bản lập trình FPGA. Ngôn ngữ VHDL.

Giới thiệu về VHDL. Ƣu điểm của VHDL. Cấu trúc ngôn ngữ của VHDL. Cấu trúc một mô hình hệ thống mô tả bằng VHDL.

Cấu trúc chung của một chƣơng trình mô tả VHDL. 13 CHƢƠNG 2: HỆ THỐNG PHÁT TRIỂN CIC-310 VÀ FPGA. Hệ thống phát triển CIC 310. Bảng phát triển SN-PLDE2.

Bảng thí nghiệm SN-PLDE3A. Giới thiệu phần mềm MAX + PLUS II. Kết nối máy tính với hệ thống CIC-310. Các thao tác sử dụng cơ bản trên MAX+Plus II.

Cấu trúc của MAX+Plus II .13: Môi trƣờng thiết kế Max+ Plus II. Trình tự thiết kế mạch. Thiết kế đề án với Graphic Editor (Bộ soạn thảo đồ hoạ). Biên soạn thiết kế.

Ví dụ minh họa thiết kế mạch. Ví dụ bằng file vẽ *gdf. Ví dụ bằng file lập trình *tdf. Ví dụ bằng file mô phỏng.

36 CHƢƠNG 3: THIẾT KẾ THỬ NGHIỆM MỘT SỐ MẠCH LOGIC SỬ DỤNG HỆ THỐNG PHÁT TRIỂN CIC-310. Thiết kế mạch logic tổ hợp. Thiết kế mạch logic tuần tự. 46 KẾT LUẬN DANH MỤC TÀI LIỆU THAM KHẢO DANH MỤC CÁC TỪ VIẾT TẮT CPLD Complex Programmable Logic Device Thiết bị lập trình logic bù DSP Digital Signal Processing Xử lí tín hiệu số FF Flip-Flop Phần tử nhớ Ma trận cổng lập trình đƣợc theo FPGA Field-Programmable Gate Array trƣờng JTAG Joint Test Adivisory Group Chuẩn giao tiếp LED Light Emitting Diode Diode phát sáng LUT Look up table Bảng ánh xạ MAC Multication and accumulation Bộ nhân cộng RAM Random Access Memory Bộ nhớ truy cập ngẫu nhiên ROM Read-Only Memory Bộ nhớ chỉ đọc SPLD Simple Programable Devices Lập trình thiết bị đơn giản SRAM Stactic Random Access Memory Bộ nhớ truy cập ngẫu nhiên tĩnh Very High Speed Intergrated Circuit Ngôn ngữ mô tả phần cứng cho VHDL Hardware Description Language mạch tích hợp tốc độ rất cao VHSIC Very High Speed Intergrated Circuit Mạch tích hợp tốc độ cao DANH MỤC CÁC BẢNG BIỂU Bảng 2.1: Sơ đồ công tắc đầu vào Logic .2: Sơ đồ chân cắm hiển thị LED Logic .3: Sơ đồ chân cắm hiển thị 7 phân đoạn 6 chữ số .4: Sơ đồ bố trí chân của máy phát điện xung .5: Sơ đồ bàn phím ma trận .6: Sơ đồ chân cắm bộ hiển thị 16 phân đoạn.7: Sơ đồ chân cắm điểm chấm 5x7 .8: Sơ đồ chân cắm LCD 2021.

27 DANH MỤC CÁC HÌNH VẼ Hình 1.1: Cấu trúc tổng thể một FPGA .2: Khối logic FPGA .3: Lƣu đồ thiết kế FPGA .4: Khai báo thực thể một cổng NAND .5: Mô tả kiến trúc cổng NAND theo mô hình hoạt động.6: Mô tả kiến trúc RS theo mô hình cấu trúc .7: Minh họa một môi trƣờng kiểm tra ảo bằng VHDL .8: Cấu trúc mô tả phần cứng và các đối tƣợng trong VHDL .9: D-FF với tín hiệu không đồng bộ rst.1: Hệ thống phát triển CPLD/FPGA .2: Bảng mạch phát triển mạch SN-PLDE2 .3: Bảng thí nghiệm SN-PLDE3A.4: Bộ chuyển mạch Logic S1-S3.5: Hiển thị LED Logic.6: Phân định chân cắm của hiển thị 7 phân đoạn .7: Mã vận hành của bộ hiển thị 7 phân đoạn 6 chữ số .8: Hiển thị 16 phân đoạn .9: Ổ cắm bộ hiển thị 16 phân đoạn.10: Phân định chân cắm của bộ LED điểm chấm 5x7 .11: Ổ cắm bộ LED điểm chấm 5x7 JP22 và bộ chọn lọc điểm chấm JP24 .12: Bộ kết nối LCD2021 .13: Môi trƣờng thiết kế Max+ Plus II .14: Cấu trúc MAX+plus II .15: Bộ giải mã tuyến tính 2 đến 4 (decode24.16: Bộ đếm nối tiếp đồng bộ 8-bit (pcnt8t.17 Ví dụ về trạng thái đèn sáng của bộ đếm nối tiếp 8-bit .2: Chọn thông số máy .3: Chọn thông số máy .4: Bộ giải mã tuyến tính 2 đến 4 (decode24.5: Gán các cổng vào/ra cho chip điều khiển .6: Bit 0000 đèn sáng .7: Bit 0001 đèn sáng .8: Bit 0010 đèn tắt .9: Bit 0011 đèn tắt .10: Bit 1000 đèn tắt .11: Bit 1010 đèn tắt .12: Bit 1001 đèn tắt .13: Bit 1011 đèn sáng .14: Bit 0100 đèn tắt .15: Bit 0110 đèn sáng .16: Bit 0101 đèn sáng .17: Bit 0111 đèn sáng .18: Bit 1100 đèn tắt .19: Bit 1110 đèn sáng .20: Bit 1101 đèn sáng .21: Bit 1111 đèn tắt .22: Bộ cộng đủ 8-bit (8add.23: Gán các cổng vào/ra cho chip điều khiển .26: Mạch Flip-Flop D cạnh lật kích (df.27: Gán các cổng vào/ra cho chip điều khiển .28: Mạch hoạt động khi chƣa đƣợc tác động xung kích .29: Mạch lật trạng thái khi có xung kích vào .30: Mạch đƣợc giữ nguyên trạng thái trƣớc đó.31: Mạch lật trạng thái khi có xung kích vào .32: Bộ đếm nối tiếp đồng bộ 8-bit (pcnt8t.33: Gán các cổng vào/ra cho chip điều khiển .34: Ví dụ về trạng thái đèn sáng của bộ đếm nối tiếp 8-bit .50 CHƢƠNG 1 TỔNG QUAN VỀ FPGA VÀ NGÔN NGỮ VHDL 1. FPGA là gì? FPGA (Field-Programmable Gate Array – Ma trận cổng lập trình được theo trường) 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. Vi 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). - Hệ thống mạch liên kết lập trình đƣợc.

- Khối vào/ra (I/O Pads). - Phần tử thiết kế sẵn khác nhƣ DSP slice, RAM, ROM, nhân vi xử lý.1: Cấu trúc tổng thể một FPGA Cấu trúc FPGA đơn giản gồm các khối logic (logic blocks) cách đều nhau, đƣợc cấu thành từ LUT (Look up table) và một phần tử nhớ đồng bộ FF, liên kết nhờ các đƣờng kết nối có thể thay đổi đƣợc theo yêu cầu của ngƣời thiết kế. LUT 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ớ FF.2: Khối logic FPGA Hiện nay, FPGA có mật độ khá cao, lên tới hàng trăm tỉ cổng và cấu trúc cũng đa dạng, phức tạp hơn. Nhiều chức năng phức tạp đã đƣợc tích hợp sẵn để tăng hiệu quả sử dụng FPGA.

Ví dụ nhƣ ngoài những khối tế bào logic, nhiều họ FPGA đã đƣợc tích hợp thêm các khối chức năng nhƣ các bộ nhân cứng, khối nhớ, PLL, thậm chí cả một bộ vi xử lý mạnh… 1. Lịch sử ra đời của FPGA FPGA đƣợ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 một 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 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. CPLD đƣợc cấu trúc từ số lƣợng nhất định các khối SPLD (Simple Programable Devices), 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.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ