Đừng cố SPAM, sẽ cấm vĩnh viễn ngay và luôn

Toàn quốc Hồ Chí Minh Tại sao lại sử dụng chíp khả dụng FPGA? Những điều cần biết về thiết kế và lập trình chíp khả dụng FPGA

Thạch Phi

Thành viên cấp 1
Tham gia
24/4/21
Bài viết
475
Thích
0
Điểm
16
#1
FPGA là tên viết tắt của Field Programmable Gate Array. Chúng là những thiết bị hoặc còn gọi là chip kỹ thuật số. Và chúng có khả năng được cấu hình để cho phép thực hiện mọi thứ trên thực tế. Và nói một cách khác, nó chính là một con chip trống và là một nơi bạn có thể “viết.”. Việc ứng dụng chip FPGA vào sử dụng sẽ được thúc đẩy bởi tính linh hoạt, tốc độ. Hơn nữa đó là độ tin cậy theo thời gian phần cứng cũng như tính song song với chúng. Và trong bài viết này, hãy cùng công ty Z755 tìm hiểu rằng tạo sao lại sử dụng chip khả dụng FPGA? Những điều cần biết về thiết kế và lập trình chip khả dụng FPGA.
Để dễ hình dung hơn, nếu như những ai đã biết về lập trình vi điều khiển hoặc ARM, thì những vi điều khiển này như (AT89/PIC/MSP430, …) hoặc ARM SoC (STM32, …) đều là loại chip được thiết kế trên công nghệ ASIC, tức kiến trúc phần cứng do nhà sản xuất thiết kế được cố định trong quá trình sản xuất, người dùng không thể nào thay đổi hoặc chỉnh sửa được. Người kĩ sư lập trình ứng dụng hoặc lập trình firmware đều phải nghiên cứu nắm vững kiến trúc của từng loại VĐK trên để phát triển phần mềm, giải thuật tương ứng. Do đó, lập trình vi điều khiển còn được hiểu là lập trình phần mềm dựa trên phần cứng có sẵn. Còn đối với FPGA, người dùng có thể tự thiết kế lại kiến trúc phần cứng theo ý mình muốn, kèm theo xây dựng các driver tương ứng để phát triển các phần mềm ứng dụng và giải thuất tối ưu hơn.
Như vậy, ưu điểm thứ nhất của FPGA là tính linh động đối với người dùng, giúp phát triển các giải pháp tốt hơn mà không phụ thuộc vào phần cứng của nhà sản xuất. Chúng ta có thể sử dụng FPGA để thiết kế cũng như lập trình được hầu hết các chức năng của bất kì mạng số nào. Việc so sánh ưu điểm, khuyết điểm giữa công nghệ FPGA và ASIC sẽ được thảo luận trong các chuyên mục sau.


Cũng giống như vi điều khiển, số lần nạp FPGA hầu như không giới hạn. Dữ liệu (chương trình) nạp cho FPGA sẽ bị mất khi mất nguồn (điện) giống như RAM trong máy tính. Nếu muốn lưu giữ lại file nạp này thì cần phải có một bộ nhớ ngoài Flash/ROM(do đặc tính của loại bộ nhớ này là lưu dữ liệu cho dù có mất nguồn) để mỗi lần bật nguồn, file dạng binary sẽ tự động nạp lại vào FPGA.
Tại sao sử dụng FPGA ?
Ắt hẳn khi tìm hiểu về một công nghệ, chúng ta sẽ thắc mắc rằng vì sao lại phải sử dụng FPGA trong khi đã có MCU/CPU/DSP rất mạnh, những ứng dụng/trường hợp nào phải cần đến FPGA mới giải quyết được. Để trả lời được những câu hỏi này, chúng ta cần phải tìm hiểu sâu hơn về cấu tạo kiến trúc FPGA, quy trình thiết kế như thế nào, những kiến thức chuyên sâu về các ứng dụng khác nhau, đó là những gì sẽ được thảo luận ở phần sau và các chuyên mục khác. Tuy nhiên, phần này mình muốn giải thích và nhấn mạnh ý nghĩa vai trò quan trọng của FPGA trong thiết kế hệ thống số để các bạn có động lực, hứng thú khi tìm hiểu về FPGA.
Thứ nhất, do FPGA có kiến trúc mảng phần tử logic nên có thể thực thi song song. So với vi điều khiển hoặc CPU phải thực thi mã lệnh theo dạng tuần tự. Như vậy với FPGA, chúng ta có thể tăng hiệu suất/năng suất xử lý của hệ thống, hoặc những ứng dụng đòi hỏi phải xử lý tốc độ cao hoặc dùng trong các hệ thống làm việc theo thời gian thực.
Thứ hai, vì có thể cấu hình, lập trình lại được, nên FPGA dễ dàng mở rộng các ngoại vi cũng như giao tiếp với nhiều thiết bị hơn mà các MCU hoặc ASIC lại hạn chế về điểm này.
Thứ ba, nhìn chung ASIC/ASSP có hiệu suất cao hơn nếu xét về mặt tiêu thụ công suất và số lượng cổng. Nhưng nếu chỉ cần thực thi một chức năng nhỏ nào đó, một chip ASIC/ASSP có thể đòi hỏi công suất tiêu thụ lớn hơn và nhiều cổng hơn thực tế yêu cầu. Với FPGA, firmware có thể xác định được “kích cỡ” của ứng dụng, từ đó giảm số cổng và công suất cần tiêu thụ.
Thứ tư, nếu xét về giá thành, FPGA không thể nào so sánh được với ASIC hay SoC, nhưng bù lại, với khả năng tái cấu hình kiến trúc, FPGA đóng vài trò vô cùng to lớn trong việc giảm giá thành và thời gian chế tạo ASIC. Để rõ hơn, chúng ta cần phải biết quy trình thiết kế của hai công nghệ này. FPGA và ASIC đều phải trải qua hai giai đoạn: Front End (ý tưởng, thiết kế ở mức logic sử dụng các ngôn ngữ mô tả phần cứng, kiểm tra mô phỏng bằng phần mềm, …) và Back End (kiểm tra timing đảm bảo thiết kế sẽ hoạt động ở tần số yêu cầu, layout chip, …). Ở khâu backend này, với FPGA, các giai đoạn sẽ được làm tự động bằng phần mềm của nhà sản xuất FPGA và tạo ra 1 file bitstream để nạp xuống FPGA và chạy thử nghiệm. Còn với ASIC, thì back end cần tốn nhân lực và thời gian lâu hơn. Sau đó, toàn bộ thiết kế đó được gửi tới nhà máy sản xuất chip (vd như Intel, TSMC, …) để làm ra chip mẫu với giá thành vài triệu đô la. Tiếp đến là quá trình test chip trong môi trường thực, nếu thất bại thì phải thực hiện lại từ đầu như qui trình trên và vài triệu đô trước đó xem như vứt sọt rác. Nhưng với FPGA, không những giúp rút ngắn thời gian mà còn giảm tối đa chi phí nghiên cứu, thiết kế có thể thử nghiệm trực tiếp trên FPGA gần với môi trường ASIC thực nhất. Khả năng tái cấu hình cho phép bạn sửa đi sửa lại thiết kế cho đến khi đạt yêu cầu mà không tốn một xu nào cho nhà sản xuất chip.
Nó được lập trình như thế nào?
Để lập trình FPGA, chúng ta có thể thực hiện từ hệ điều hành yêu thích của mình, chẳng hạn như GNU / Linux, Windows và MacOS, mặc dù chắc chắn có nhiều môi trường phát triển hơn cho Windows. Nói chung, cùng một công ty thực hiện FPGA cung cấp một IDE rất hoàn chỉnh để làm việc với và nơi để tìm tất cả các công cụ bạn cần trong cùng một bộ phần mềm.
Bạn cũng sẽ cần Chip hoặc bo mạch FPGA và cáp hoặc bộ lập trình cần thiết mà bạn có thể kết nối FPGA với PC của mình để chuyển mã đã viết vào FPGA và do đó nó được lập trình. Đó là điều tương tự như những gì bạn làm với bảng Arduino, ghi chương trình Arduino IDE vào bộ nhớ lập trình của vi điều khiển.
Chỉ trong trường hợp FPGA, những gì chúng ta có là một ma trận hoặc mảng các thành phần cơ bản như ô nhớ, cổng AND, OR, NOT, Flip-flops và các thành phần khác. các phần tử hoặc khối cơ bản của điện tử kỹ thuật số mà chúng ta có thể sử dụng. Với chương trình đã viết, những gì chúng ta sẽ làm là áp đặt cách mà các khối thiết yếu này được nhóm lại với nhau để tạo thành mạch nhỏ mà chúng ta muốn, chẳng hạn như ALU.
Nghĩa là, nếu chúng ta lập trình một bộ cộng trong IDE của mình, thì các khối cần thiết để triển khai bộ cộng này họ sẽ liên kết theo đúng cách bên trong FPGA để chip hoạt động như một bộ cộng. Đơn giản phải không? Nói chung, một số phương pháp được sử dụng cho việc lập trình này ở cấp độ vật lý, chẳng hạn như bộ nhớ hoặc cầu chì để tạo liên kết vĩnh viễn trong trường hợp đó.
Tốc độ mà chúng hoạt động sẽ phụ thuộc vào tần số đồng hồ mà FPGA chúng tôi đã mua hoạt động. Ví dụ, những cái cơ bản nhất thường hoạt động ở 50 Mhz, những cái khác sẽ làm như vậy ở tần số cao hơn nhiều. Trong trường hợp của FPGA 50 Mhz, điều đó có nghĩa là nó sẽ hoạt động với tốc độ 50.000.000 lần mỗi giây. Nếu chúng ta tiếp tục với bộ cộng mà tôi đã đưa ra làm ví dụ, bạn sẽ có thể thực hiện số tiền đó trong một giây ...
Tiếp tục với chủ đề của Lập trình Khi chúng tôi biết rằng bạn có thể viết mã giống như chúng tôi làm trong Arduino IDE hoặc để phát triển bất kỳ chương trình nào khác, và thấy nó được thực hiện như thế nào ở cấp độ phần cứng, tôi sẽ nói rằng nó thực sự không phải là lập trình như vậy. Đúng hơn nó là một mô tả phần cứng. Trên thực tế, các ngôn ngữ mô tả phần cứng như VHDL, Verilog, v.v. được sử dụng.
với chương trình đó được mô tả ở mức logic những gì mà mạch nhỏ mà chúng tôi muốn thực hiện. Và sau đó nó chuyển đến FPGA. Mặc dù đúng là một số nền tảng cho phép lập trình bằng các ngôn ngữ lập trình như C để có thể triển khai một CPU trong FPGA và sau đó tạo ra các chương trình để tải vào bộ nhớ và được xử lý bởi bộ xử lý nói trên.

Tích hợp với Arduino
FPGA thường được sử dụng riêng biệt, nhưng đúng là có rất nhiều công cụ và bộ dụng cụ trên thị trường sẽ giúp cuộc sống của bạn dễ dàng hơn trong việc tích hợp FPGA với nền tảng Arduino. Một ví dụ về bảng để đưa FPGA vào các dự án của bạn với Arduino là MKR Vidor 4000, mặc dù có những bảng khác.
MKR Vidor 4000 nó là một bảng với ba chip. Một trong số đó là FPGA, cụ thể là Intel Cyclone 10. Ngoài ra còn có các chip khác dành cho kết nối Bluetooth LE hoặc công suất thấp và cả khả năng tương thích với WiFi. Một sự bổ sung tốt để cung cấp cho Arduino của bạn các chức năng kết nối và để có thể triển khai những gì bạn cần trong FPGA.
Với nó, bạn có một phần cứng có thể tùy chỉnh, do chính bạn cấu hình cho mục đích bạn muốn. Điều đó cung cấp khả năng vô tận.
Xem thêm: http://z755.com.vn/tai-sao-lai-su-d...thiet-ke-va-lap-trinh-chip-kha-dung-fpga.html
Mọi chi tiết vui lòng liên hệ:
CÔNG TY THÔNG TIN ĐIỆN TỬ Z755
Địa chỉ
: Số 2A, Phan Văn Trị, Phường 10, Gò Vấp, TP.HCM
Hotline : 0917 900 118
 

Đối tác

Top