FPGA - Lập trình DIY


9

Tôi đã lập trình vi điều khiển được vài năm rồi và tôi mới phát hiện ra đồ họa sau khi tham gia lớp thiết kế kỹ thuật số. Sau khi thực hiện một số nghiên cứu về các bản phát triển, các bảng phát triển khác nhau, v.v., tôi vẫn ngần ngại mua bất kỳ vì tôi không biết cách tạo ra phiên bản "sản phẩm" cuối cùng của riêng mình. Tôi đã đặt PIC, SAM, AVR, v.v. vào PCB tùy chỉnh mà không có vấn đề gì, vì vậy tôi không lo lắng về điều đó - mối quan tâm chính của tôi là lập trình một GPU mà không cần bo mạch của nhà sản xuất.

Câu hỏi cụ thể của tôi: Liệu một chức năng FPGA nếu tôi lấy tệp bitmap được tạo bởi Quartus, Vivado, iCEcube, v.v., đã ghi nó vào chip nhớ flash SPI bắt đầu tại địa chỉ 0 (giả sử, thông qua FT2232H) và kết nối bộ nhớ flash với các chân SPI của một FPGA (với cấu hình MODE được đặt đúng)?

Tôi xin lỗi vì giả thuyết một phần; Tôi khá chắc chắn rằng đó là tất cả các Lập trình viên Kim cương của Lattice, nhưng tôi tự hỏi liệu cách tiếp cận đó có hiệu quả với các nhà sản xuất khác nhau hay không, hay nói, Quartus đã thêm "mặc quần áo cửa sổ" hoặc tiêu đề vào bộ nhớ trong khi viết nó.

Hãy cho tôi biết nếu có bất cứ điều gì tôi có thể làm để cải thiện / làm rõ câu hỏi hoặc nếu tôi thiếu một điểm lớn trong quy trình lập trình FPGA. Cảm ơn!


"Bitmap" bạn có nghĩa là dòng bit?
Eugene Sh.

Câu hỏi này đã được hỏi trong một hóa thân khác trước đây
Điện áp Spike

1
Trên thiết kế bo mạch đầu tiên của bạn, tôi đề nghị cung cấp 2 phương pháp lập trình thiết bị (cộng với tiêu đề JTAG của nhà cung cấp). Đặt các vị trí nhảy để cho phép bạn thay đổi các chân MODE khi cần thiết. Rất dễ để làm hỏng những thứ này và thật tốt khi có kế hoạch dự phòng. Ngoài ra, hãy đảm bảo cung cấp các điểm kiểm tra cho INIT và DONE (hoặc bất cứ điều gì Lattice sử dụng để biểu thị trạng thái lập trình).
Photon

2
Việc kiểm soát quá trình cần thiết để gắn kết các thiết bị BGA, đặc biệt là các thiết bị có số pin cao chặt chẽ hơn so với QFP. Thực tế là có nhiều bóng hơn có nghĩa là có xác suất bắc cầu hoặc kết nối kém cao hơn và vì chúng bị ẩn nên bạn sẽ không thể phát hiện ra vấn đề (trừ khi bạn chụp X-quang) trước khi chạy điều đó để xem bạn có bất kỳ vấn đề. Và nếu bạn kể lại thành phần thì bạn phải đặt lại thành phần cần nhiều trang bị hơn. FPGA cũng là những con chip đắt tiền mà bạn không muốn làm hỏng. Các máy phát điện lớn là nơi mà những thứ như bộ tiền chế PCB trở nên cần thiết.
DKNguyen

1
Tôi đã từng làm việc ở một nơi mà các kỹ thuật viên không làm gì ngoài việc làm lại cả ngày và họ có các trạm không khí nóng (kiểm soát nhiệt độ chặt chẽ hơn và đáng tin cậy hơn súng nhiệt) và họ không thể tin cậy được các máy hàn hàn. Tôi không nghĩ rằng họ đã có bộ sấy sơ bộ vì vậy nếu bạn định dùng thử, hãy lấy bộ sấy sơ bộ và sử dụng một con chip giá rẻ (thậm chí có thể là gói giả dây xích cúc để bạn có thể xác minh các kết nối của mình bằng điện cho đến khi bạn đóng đinh trước khi thực hiện điều thật).
DKNguyen

Câu trả lời:


12

Vâng, nó sẽ hoạt động tốt.

Trên thực tế, các công cụ phát triển cho hầu hết các FPGA cho phép bạn lập trình flash trực tiếp thông qua kết nối JTAG của chính FPGA, loại bỏ sự cần thiết phải có giao diện lập trình riêng cho flash.


1
Và một số, như Lattice Mach X02, có đèn flash trên bo mạch, do đó bạn chỉ cần một vài điện trở và tiêu đề 5x2 để kết nối với nhóm lập trình Lattice.
Spehro Pefhany

Tôi biết rằng bạn có thể lập trình flash trực tiếp qua JTAG từ các công cụ như Vivado / Quartus, điều tôi hy vọng là có thể làm điều đó mà không cần phải mua cáp dành riêng cho nhà cung cấp - chỉ cần sử dụng FT2232H và viết dòng bit (không phải bitmap?) mình. Tuy nhiên, tôi không nghĩ rằng chip được Quartus hỗ trợ và không được Vivado hỗ trợ công khai (mặc dù họ sử dụng nó trên bảng Nexys và Basys).
Blake Lucas

1
Có, bạn có thể lập trình flash với tệp bit bằng các phương tiện khác. Một trong những lập trình viên cho MCU của bạn có thể làm điều đó. Tôi biết Segger J-link của tôi chắc chắn có thể.
DKNguyen

@Toor: Quả thực đó không phải là cáp dành riêng cho nhà cung cấp, nhưng nó vẫn có hỗ trợ mã hóa cứng trong các công cụ của nhà cung cấp và Segger đắt hơn một chút so với FT2232H.
Ben Voigt

2
Hầu như tất cả các nhà cung cấp chính đều cung cấp tài liệu kỹ thuật để cho phép dòng bit tải lên được xác định đến các bộ phận của họ (cả đèn flash và cấu hình tùy chỉnh) với các công cụ tùy chỉnh, bởi vì đôi khi nó được mong muốn trong các hệ thống tích hợp hoặc giàn thử nghiệm. Có thể đơn giản nhất là sử dụng thiết bị được hỗ trợ của nhà cung cấp (đặc biệt là lúc đầu), nhưng tôi đã triển khai thay thế cho các dự án cụ thể một số lần trong nhiều năm. Phần khó hơn của một dự án bo mạch gốc có thể là tất cả các hỗ trợ mà một GPU cần có trên bo mạch - rất nhiều cặp công suất để định tuyến và bỏ qua, thường cho một số điện áp khác nhau.
Chris Stratton

3

Khi bạn nói "tệp [sic] bitmap [sic] được tạo bởi", câu trả lời là Có miễn là bạn chọn đúng - bạn đã mắc một lỗi nhỏ bằng cách sử dụng bài viết xác định vì không chỉ có một tệp được tạo .

Ví dụ: Quartus có thể tạo các tệp SOF, POF và JIC. Cái cuối cùng là những gì bạn sử dụng để lập trình gián tiếp thông qua JTAG của FPGA. Sẽ không hữu ích khi viết nó vào flash SPI. SOF là để tải qua JTAG để chạy thiết kế của bạn trong FPGA một cách tạm thời. POF là những gì bạn cần tải vào chip flash.

Xem FPGA: Bitflow vs. SRAM Object File để biết nhiều thông tin hữu ích về ý nghĩa của các tệp khác nhau từ mỗi nhà cung cấp khác nhau.


1

Liệu một chức năng FPGA nếu tôi ... kết nối bộ nhớ flash với các chân SPI của một FPGA (với cấu hình MODE được đặt đúng)?

Nếu tôi hiểu chính xác câu hỏi của bạn, bạn muốn viết cấu hình FPGA (ví dụ: mô hình HDL đã biên dịch của bạn) vào SPI EEPROM hoặc SPI Flash và bạn muốn FPGA tự lập trình bằng cách sử dụng dữ liệu trên IC SPI.

(Nếu tôi hiểu chính xác câu trả lời của Dave Tweed, anh ấy đã hiểu câu hỏi của bạn theo một cách khác.)

Ít nhất nhiều thiết bị bộ nhớ Flash SPI sẽ KHÔNG hoạt động vì IC bộ nhớ SPI Flash yêu cầu một dạng sóng nhất định (ví dụ: địa chỉ cần đọc) được gửi để dữ liệu được đọc từ IC.

Dạng sóng này không giống nhau cho tất cả các thiết bị bộ nhớ Flash. Ngay cả khi chỉ nhìn vào thẻ nhớ SD (cũng có thể được sử dụng làm bộ nhớ SPI Flash), chúng tôi vẫn tìm thấy hai biến thể yêu cầu một dạng sóng khác nhau được gửi đến thẻ trước khi thẻ đọc dữ liệu.

Khi cài đặt các chân chế độ chính xác của FPGA, FPGA sẽ gửi một số dạng sóng hướng dẫn một số thiết bị bộ nhớ nối tiếp gửi dữ liệu. Tuy nhiên, vì các IC khác nhau yêu cầu các dạng sóng khác nhau, dạng sóng sẽ không được hiểu bởi tất cả các IC Flash mà chỉ theo một số loại nhất định.

Tôi biết rằng Altera tạo ra các IC Flash hoặc EEPROM đặc biệt tương thích với các GPU của họ.


Rõ ràng là một thẻ SD sẽ không hoạt động, vì không có FPGA (theo hiểu biết của tôi) hỗ trợ SD / MMC như một giao thức cấu hình. Hầu hết các GPU dính vào AT24 / AT26 / AT45.
Dmitry Grigoryev

1

Nếu bạn muốn ghi một dòng bit FPGA vào flash mà không có các công cụ lập trình chính thức của FPGA, rất có thể bạn sẽ muốn chuyển đổi tệp bitflow đó sang định dạng nhị phân mở mà bạn có thể dễ dàng đọc, như nhị phân thô, Intel HEX hoặc Motorola SREC ( ví dụ ). Điều này sẽ loại bỏ bất kỳ tiêu đề độc quyền nào mà một dòng bit FPGA có thể chứa.

Bằng cách này, bạn sẽ có thể lập trình flash bằng các công cụ từ nhà sản xuất flash (hoặc công cụ của riêng bạn) hoặc thậm chí đặt hàng các chip flash được lập trình sẵn với dòng bit FPGA của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.