FPGA và các ứng dụng nhúng In E-mail
Người đăng: Hùng Mạnh 20/11/2007 (Số lần xem: 5297)

Từ khoá: FPGA, MCU, embedded, hệ thống nhúng

Bạn đã làm quen với hệ thống nhúng (embedded system) bắt đầu từ các họ Vi điều khiển 8051 rồi đến PIC, AVR và cao hơn nữa là họ ARM, AVR32 hay pSoC. Rồi bạn tìm hiểu FPGA với một cách tiếp cận hoàn toàn khác. Vậy bao nhiêu công sức, kinh nghiệm về vi điều khiển và cả những công trình nghiên cứu của bạn bị xếp xó ? Bạn không phải lo lắng, thực ra FPGA chỉ phát huy sức mạnh của nó khi được ghép nối với vi điều khiển. Đó cũng chính là mục đích và tư tưởng thiết kế của co-design.

Co-design kết hợp năng lực về phần cứng của FPGA với ưu thế xử lý phần mềm của Vi điều khiển để tạo nên một hệ thống đầy sức mạnh. Ví dụ bạn muốn thiết kế một ứng dụng đo nhiệt độ phòng với cảm biến nhiệt có giao tiếp I2C. Nếu bạn chỉ dùng MCU thông thường không có giao tiếp I2C thì sẽ gặp rất nhiều khó khăn (Phải lập trình ngắt, bắt sườn, mức của xung,...). Còn nếu bạn chỉ sử dụng FPGA trong ứng dụng này cũng không ổn vì lúc đó bạn sẽ gặp khó khăn nhất định trong các tính toán số học. Ví dụ cảm biến đo nhiệt độ bằng đơn vị độ F, trong khi bạn muốn hiển thị độ C, mà muốn thực hiện các phép toán cộng trừ nhân chia để chuyển đổi độ F với độ C bằng FPGA là không hề đơn giản. Trong trường hợp này ta thiết kế theo phương thức co-design. FPGA phụ trách giao tiếp với cảm biến I2C và trả về các số liệu thô để MCU thực hiện các tính toán số học.

Đến đây không ít người băn khoăn, tại sao không lấy một MCU có sẵn giao tiếp I2C hoặc nối một controlller I2C với MCU? Câu trả lời là nếu sau này bạn tìm thấy một cảm biến khác tốt hơn, chính xác hơn nhưng lại là giao tiếp SPI hoặc CAN, lúc đó bạn phải bỏ nhiều công sức vào đó để thay đổi thiết kế(thay một MCU khác có SPI, CAN hoặc thay controller khác) trong khi nếu sử dụng khả năng tuỳ biến phần cứng của FPGA, bạn có thể cấu hình lại giao thức I2C thành SPI hay CAN,... Tuyệt vời hơn nữa là bạn có thể lưu cấu hình của FPGA trong thẻ nhớ ngoài (MMC, compact flash) và MCU sẽ cấu hình lại FPGA ngay trong quá trình hoạt động mà bạn không cần phải nạp lại chương trình. Thậm chí nhiều FPGA còn có đặt tính cấu hình lại một phần của FPGA trong khi các phần khác vẫn hoạt động mà không cần phải reset lại FPGA.

Ứng dụng nhúng của FPGA

Trong thực tế, bạn có thể ghép nối FPGA với MCU ngoài bằng các chân giao tiếp thông thường. Một cách khác là sử dụng MCU nhúng có sẵn trong FPGA một hoặc nhiều MCU cứng hoặc mềm). Với Altera là Nios, Nios II (MCU mềm) hay Excalibur (MCU cứng với lõi ARM922T). Còn trong các FPGA của Xilinx là Picoblaze, Microblaze (MCU mềm) hay PowerPC (cứng). MCU cứng được thiết kế cứng sẵn trong FPGA, còn MCU mềm thực chất là một IP thường bằng VHDL và công cụ thiết kế sẽ triển khai IP đó xuống FPGA. Chính vì vậy MCU mềm sẽ tiêu tốn một phần tài nguyên của FPGA, nhưng bù lại nó có thể được cập nhật, thay đổi tuỳ biến theo các phiên bản khác nhau.

Bạn yên tâm là các lõi MCU Nios hay Microblaze, PowerPC khá thông dụng nên bạn có thể tìm thấy các hỗ trợ khá dễ dàng, chẳng hạn bạn muốn nhét một lõi RTOS vào trong một core MCU Nios II hoặc Microblaze thì bạn có thể dễ dàng tìm thấy port cho các MCU này.

Hùng Mạnh

Bài viết liên quan
Bài viết khác
Bình luận (26)add
Viết bởi Ngô Trung, 21/11/07 08:04
FPGA quá cool, thực ra sức mạnh của FPGA là rất lớn nếu chúng ra biết tận dụng và khai thác
Viết bởi Hùng Mạnh, 21/11/07 22:48
FPGA có rất nhiều cách tiếp cận. Có thể xem nó như là một mạch logic tổ hợp sẵn và thiết kế các mạch số (bộ đếm, than h ghi,...) cái khác là chúng ta không phải hàn mạch từ các IC số mà công cụ FPGA đã làm sẵn cho chúng ta. Cũng có thể tự tạo một core MCU của riêng mình (AVR, 8051, PIC, ) rồi nhúng xuống FPGA, tất nhiên phải bỏ vào đấy không ít công sức. ;)
1
Viết bởi V.Dũng (khách), 24/11/07 21:38
Tại sao không sử dụng lõi MCU nhúng vào FPGA luôn. Lúc này FPGA trở thành tổ hợp của MCU và giao tiếp I2C hoặc CAN luôn. Tôi nghĩ đây mới là thế mạnh của FPGA. Một số core AVR, 8051, PIC đều là opencore, có thể download miễn phí trên mạng. Thay vì mất công sức tạo 1 core MCU, ta hãy sử dụng nó cho một ứng dụng có hơn không?
Viết bởi Hùng Mạnh, 24/11/07 21:44
Trong bài mình có nói đến Nios 2, MicroBlaze hay PowerPC, đó đều là các core nhúng sẵn trong FPGA đấy chứ. Để nhúng 1 cái core MCU vào FPGA cũng không phải nhắm mắt làm được ngay. Sắp tới mình sẽ viết một bài nói rõ quy trình để implement 1 core MCU (AVR, ARM, ...) xuống FPGA. Một vấn đề nữa là nếu cấu hình của FPGA lưu ở bộ nhớ ngoài và muốn không cần nạp lại FPGA qua JTAG thì NIOS chịu không thể làm gì được. Cái này chỉ có Microblaze hay PowerPC trong dòng Virtex của Xilinx mới làm được.
cảm ơn
Viết bởi xuantung (khách), 06/12/07 16:01
nội dung này hay đấy. Bạn Hùng Mạnh viết tiếp đi để anh em còn học tập. Thanks a lot!


Viết bởi Hùng Mạnh, 06/12/07 16:58
Trong dòng Virtex có tính năng DPR, nghĩa là thay đổi một phần của FPGA mà không động đến các phần khác.
Mời xem bài này để biết rõ hơn. http://thongtincongnghe.com/article/2469
Với DPR thì ta có thể dùng chính PowerPC hay MicroBlaze điều khiển quá trình tái cấu hình một phần của FPGA. MCU sẽ đọc bộ nhớ ngoài chứa file cấu hình và thực hiện quá trình cấu hình một phần của FPGA trong khi phần của Microblaze hay PowerPC không bị đụng chạm và vẫn hoạt động trong quá trình reconfiguration
vài ý kiến nhỏ
Viết bởi giathuyet (khách), 16/01/08 08:39
"Một vấn đề nữa là nếu cấu hình của FPGA lưu ở bộ nhớ ngoài và muốn không cần nạp lại FPGA qua JTAG thì NIOS chịu không thể làm gì được. Cái này chỉ có Microblaze hay PowerPC trong dòng Virtex của Xilinx mới làm được."
->điều này thì mình xin có ý kiến như sau, Xilĩn thì mình không dùng nhiều nhưng với Altera (NIOS) sử dụng phương pháp đó là lưu file cấu hình lên bộ nhớ FLASH, và bất cứ khi nào POWER ON file cấu hình sẽ được đọc và nạp cấu hình vào FPGA.

Thân chào
Ngô Gia Thuyết
Viết bởi Hùng Mạnh, 16/01/08 14:37
Điều này đúng, nhưng đấy là đối với những cấu hình đã được từ trước, và hình như chỉ lưu được 1 cấu hình(không chắc lắm). Bạn có thể xem bài giới thiệu về DPR của mình thì sẽ hiểu rõ hơn điều mình định muốn nói.
http://www.thongtincongnghe.com/article/2469
Với MicroBlaze thì có thể lưu bitstream ở compactflash hoặc bất kỳ bộ nhớ ngoài nào, có thể cắm vào cardreader để nạp nhiều file bitstream.
Ngoài điều này ra thì Nios và MicroBlaze không khác nhau nhiều lắm. (Mới biết là Nios cũng có thể làm multiprocessor system).
MicroBlaze mới version 7 có MMU, không biết Nios có chưa.
Nhưng nói chung dân tình vẫn biết đến NIOS nhiều hơn rất nhiều so với MicroBlaze.
Help me
Viết bởi primer (khách), 03/04/08 09:35
Cho minh hoi mot van de duoc khong?
Minh bat dau nghien cuu EDK, sau khi thiet ke cac giao tiep hoan thanh thi cong viec chu yeu la phai lap trinh bang ngon ngu C cho loi MCU nhung trong FPGA phai khong?
Viết bởi Hùng Mạnh, 03/04/08 15:09
Đúng thế, đến giai đoạn này thì giống như thiết kế MCU thông thường rồi.
Viết bởi help me! (khách), 22/04/08 14:32
Thanks Manh Hung!
Ban co the cho minh mot project ve truyền uart su dung edk duoc khong?
Cam on rat nhieu!
Viết bởi help me! (khách), 22/04/08 14:33
email cua minh la: Địa chỉ email này đang được bảo vệ khỏi chương trình thư rác, bạn cần bật Javascript để xem nó
Viết bởi Hùng Mạnh, 22/04/08 15:35
Bạn dùng EDK version nào? Vấn đề là các version từ 9.1i trở về trước thì bus nối ngoại vi với core MCU là OPB còn bắt đầu từ version 9.2i thì Xilinx dùng bus PLBv4.6 để làm bus giao tiếp. Thông thường UART là cái cơ bản và được tích hợp sẵn transceiver trên kit. Transceiver chỉ làm nhiệm vụ chuyển đổi mức điện áp logic giữa cổng RS232 với TTL hoặc LVTTL (hoặc một cái gì khác). Bạn cho mình cái tên của kit, mình sẽ tìm (thiết kế) cho bạn 1 reference design có application của UART trong đó.
Viết bởi help me! (khách), 22/04/08 16:25
Minh cam on ban truoc nhe!
Hien tai minh dang thu nghiem tren spartan3 starter kit, minh dang dung phien ban EDK 7.1i
Hien nay minh dang ve FPGA, minh chu yeu viet tren VHDL. Bay gio tiep can voi he thong nhung.
Ban co hay viet code vhdl khong? Neu co the, khi nao ban co thoi gian minh co the trao doi duoc khong?
:)
So sánh với DSP thì hợp lý hơn.
Viết bởi DSP fan, 25/04/08 22:54
Người ta không bao giờ so sánh FPGA với MCU vì phạm vi ứng dụng và khả năng tính toán hoàn toàn khác biệt nhau (thị trường khác nhau).

FPGA chỉ thường được so sánh với DSP mà thôi. Và lúc này, khi so sánh về năng lực tính toán và mức tiêu thụ điện năng.... FPGA tốt vẫn thua thiệt so với các dòng DSP tốt.
Viết bởi Hùng Mạnh, 28/04/08 16:36
DSP mang tính specific nhiều hơn. Còn MCU và FPGA thì đa năng hơn. Do đó so sánh với DSP mình thấy ko hợp lý. còn nều so sánh về sức mạnh, khả năng tính toán thì ASIC "vô đối", nhưng liệu những người như mình có thể động vào được ASIC ko?
Thiết kế Soc
Viết bởi Acronics (khách), 17/06/08 14:13
Anh Hùng Mạnh thân mến.
Tôi có quan tâm về lĩnh vực nhúng và hiện có kết hoạch làm một Soc có chức năng chuyển đổi giữa ATA và NANDFlash. Anh Hùng có thể cho biết email để tôi tiện liên lạc nhé.
Rất mong hỗ trợ của Anh
Thân
Trọng Tuấn
help me!
Viết bởi Pham Thi Ly (khách), 18/06/08 12:59
Chao anh Hung
Toi dang su dung spartan-3e Starter Kit de thiet ke 10/100 Ethernet MAC anh co the tu van giup toi hoac tim giup toi file co the thuc hien duoc nhiem vu cua minh co duoc khong. Toi dang lam do an tot nghiep dung FPGA cua Xilinx.
Cam on anh !

Viết bởi Hùng Mạnh, 18/06/08 15:04
@ Bạn Pham Thi Ly: Nếu bạn chỉ làm hardware với core HDL thông thường, trên opencores.org có rất nhiều. bản thân xilinx cũng có core HDL, http://www.xilinx.com/publicat...tashts.pdf (bạn phải đăng ký, mình kô biết là free hay $)

Còn nếu bạn muốn thiết kế embedded nối core với MicroBlaze hoặc PowerPC: http://www.xilinx.com/support/...app942.pdf
http://www.xilinx.com/support/documentation/ip_documentation/opb_ethernet.pdf

Ngoài ra đây là luồng thảo luận trên diễn đàn của Xilinx: http://forums.xilinx.com/xlnx/...ad.id=2614

PS: Xin lỗi mọi người, tên mình là Hùng Mạnh, không phải Hùng.
Viết bởi Pham Thi Ly (khách), 18/06/08 18:25
Hi!
Cam on anh Hung Manh. Toi cung da lay duoc nhieu file support cho thiet ke cua minh nhung chu yeu la dung cho ML40x. Toi rat ban khoan khong hieu la thiet ke dung cho ml40x thi co the ap dung nhu cho spartan 3e duoc khong. Hinh nhu spartan 3a cung co phan dung nhu sparan 3e chu khong han la chi dành cho dsp phai khong a? Toi noi that rang thoi gian danh cho do an cua toi chi con dung 1 tuan nua thoi. Rat mong nhan duoc su trao doi cua anh thuong xuyen. Tim duoc trang web nay cua anh khoi phai noi toi mung the nao dau!!! Cam on anh that nhieu
Viết bởi Pham Thi Ly (khách), 18/06/08 18:30
Toi cung da co file xapp942. Nhung toi doc ky ma khong thay no noi gi den viec khi thu nghiem thi co can phai thiet lap dia chi icp/ip khong. Hinh nhu trong no khong co phan webserver thi phai. Neu vay, khi thu nghiem co the ket noi internet duoc khong? Anh tra loi giup toi voi nhe.

Viết bởi Pham Thi Ly (khách), 18/06/08 18:34
A! toi cung co ca xapp1026 nua. Vay co su dung no duoc cho Spartan 3e starter kit khong.
Viết bởi Hùng Mạnh, 18/06/08 19:47
Bạn đã download reference design của xapp942 về chưa? Thông thường nếu đã chạy với ML40x (V4)thì sẽ chạy với S3, huống hồ cái design của Xapp942 dùng S3 (chỉ có board là khác). Vấn đề là bạn dùng ISE và EDK phiên bản nào? Nói thật là cái design này tôi cũng chưa test bao giờ, nhưng Xilinx đã đưa lên là chắc chắn chạy nếu bạn làm đúng theo các bước. Chúc thành công
Viết bởi Pham Thi Ly (khách), 19/06/08 23:00
cam on anh Hung Manh da chi giup.Toi dang cai ie 8.2.03i nhung khong duoc. toi doawload phan mem nay tren trang web cua xilinx. Anh chi giup toi cach cai no voi. Cam on anh
Viết bởi Pham Thi Ly (khách), 19/06/08 23:17
Toi da cai íe va edk 8.2i roi, chay tot, nhung xapp942 dung voi íe 8.2.01i nen toi da doawload ise 8.2.03i de su dng nung ko cai dc. Anh chi giup toi cai the nao voi nhe. help me !!!!!
Viết bởi Hùng Mạnh, 29/09/08 22:23
Xin lỗi chị Lý, em hứa viết tutorial hướng dẫn sử dụng EDK, nhưng sau khi nói chuyện với chị thì thấy vấn đề của chị ko phải là ở cách sử dụng EDK nên tạm thời bỏ đấy. Hơn nữa tutorial sẽ rất nhiều hình ảnh, không biết đưa lên TTCN thì mất bao nhiêu trang, tách thành nhiều bài thì cũng không ổn lắm.
You must be logged in to a comment. Please register if you do not have an account yet.

busy
 
< Trước   Tiếp >

Đọc báo giùm bạn

 

Đang được quan tâm

 

Sự kiện và Bình luận

Đăng nhập

Phần mềm miễn phí

Alexa site stats
Chúng ta có 568 khách và 6 thành viên trực tuyến