FPGA, bước đầu tiên


11

Vâng, đây là phần tiếp theo của câu hỏi của tôi về FPGA ở đây .

Cuối cùng tôi đã chọn một Digilent Atlys với Spartan 6 FPGA, tôi không có bất kỳ kinh nghiệm nào trước đây về FPGA mặc dù tôi đã thực hiện một số công việc với bộ điều khiển vi mô.

Tôi đã dành vài ngày qua để đọc qua các bảng dữ liệu của FPGA và tôi nghĩ rằng nó sẽ là một lựa chọn tốt để bắt đầu với Verilog. Tôi không thể tìm thấy bất kỳ ví dụ mã nào và thậm chí các bảng dữ liệu không thân thiện với người mới.

Bây giờ tôi muốn thực hiện một số thao tác lập trình, mô phỏng, tổng hợp và đây là điều tôi muốn làm

  1. Tạo ra một tần số lẻ, giả sử 54Mhz từ FPGA (nó chạy trên xung nhịp 100Mhz) và định tuyến nó đến một trong các chân. Tôi có thể sẽ phải sử dụng DCM hoặc PLL cho việc này, nhưng không biết làm thế nào để bắt đầu ở đây?

  2. Thực hiện một số loại đọc I2C từ FPGA.

Những gì tôi đang tìm kiếm là một tài liệu tham khảo, có thể là một cuốn sách trực tuyến hoặc một cuốn sách cung cấp cho tôi các ví dụ mã và mô tả về từng thành phần phần cứng có sẵn bên trong FPGA, như DCM, lát, clb, v.v.

Tôi đoán điều đó sẽ khiến tôi bắt đầu bước vào thế giới của FPGA.

Câu trả lời:


13

Mã ví dụ

Nhảy qua OpenCores và bạn sẽ tìm thấy hàng tá dự án nguồn mở. Có nhiều bản được viết bằng Verilog và bao gồm gam từ các thiết bị I / O cho đến bộ xử lý.

Ngoài ra, đừng quên nhiều Ghi chú ứng dụng có sẵn từ Xilinx. Họ rất hữu ích với các thiết bị của riêng họ.

Lưu lượng thiết kế

Chọn một hoặc hai cuốn sách về quy trình thiết kế để bạn có được cái nhìn tổng quan về các bước liên quan đến thiết kế đồ họa. Tóm lại, chúng sẽ liên quan đến:

  1. Thiết kế mục - trong trường hợp của bạn, Verilog.
  2. Mô phỏng chức năng - sử dụng các công cụ khác nhau.
  3. Tổng hợp - trong trường hợp của bạn, sử dụng các công cụ ISE Xilinx.
  4. Mô phỏng - để xác minh thiết kế hậu tổng hợp của bạn vì một số khía cạnh của Verilog không thể tổng hợp được.
  5. Địa điểm & Tuyến đường - sử dụng các công cụ ISE Xilinx.
  6. Triển khai - tải xuống thiết kế trên FPGA.
  7. Kiểm tra.

Các thành phần FPGA

Đối với việc sử dụng các thành phần FPGA, có nhiều cách khác nhau để sử dụng chúng. Nhưng giả sử rằng bạn đang sử dụng một mục thiết kế Verilog, bạn có thể suy ra hoặc khởi tạo các thành phần khác nhau.

Suy luận thường liên quan đến việc có được công cụ tổng hợp để chọn các thành phần tốt nhất để sử dụng dựa trên chức năng mà bạn yêu cầu. Ví dụ tốt nhất về điều này sẽ là thiết kế một bộ cộng.

Bằng cách làm q <= a + bhoặc q = a + bbạn có thể suy ra một adder. Cả hai sẽ suy ra bộ cộng nhưng có một sự khác biệt khi bạn sử dụng cú pháp chặn / không chặn.

Khởi tạo thường liên quan đến việc gọi thành phần thư viện chính xác trong mã. Một số thành phần không thể dễ dàng được suy ra trong mã - chẳng hạn như DCM. Bạn có thể sử dụng các công cụ và ví dụ ISE để tìm hiểu thêm về điều này.

Danh sách thực tế của các thành phần được cung cấp bởi Xilinx trong Hướng dẫn thư viện .

Protip

Cách tốt nhất để học điều này thực sự là thử nghiệm các đoạn mã ngắn và chạy chúng thông qua tổng hợp ISE để xem những gì nó phát ra. Cũng có rất nhiều ví dụ trong bộ công cụ ISE.


5

Tài liệu tham khảo tuyệt đối của bạn sẽ là hướng dẫn sử dụng Spartan 6 . Chẳng hạn, hướng dẫn Tài nguyên đồng hồ (UG382) bao gồm cách định cấu hình các DCM. Để biết ví dụ về giao diện mã thực tế, ISE có cơ sở dữ liệu về chúng. Mẫu ngôn ngữ mở (bóng đèn trong thanh công cụ), sau đó tìm bằng ngôn ngữ (VHDL hoặc Verilog) -> Khởi tạo nguyên thủy thiết bị -> họ chip (Spartan-6) -> Thành phần đồng hồ.

Chi tiết cụ thể cho bảng của bạn có sẵn từ Digilent, đặc biệt là bạn sẽ muốn UCF (đặt tên cho tất cả các IO) và hướng dẫn tham khảo (giải thích về mạch ngoại vi).

Cấu trúc chung của ngôn ngữ của bạn, bao gồm cách tạo thành phần, có thể được chọn tốt hơn từ sách và ví dụ. Tôi chưa sử dụng Verilog nên không có bất kỳ đề xuất cụ thể nào. Tuy nhiên, các mẫu bao gồm các đoạn của các đối tượng chung khác nhau là tốt.


Bạn có chuyên về VHDL không? Liên quan đến UCF tại sao nó lại quan trọng khi làm việc với hội đồng Digilent?
Kevin Boyd

1
Tôi không chuyên như vậy - chỉ chưa học Verilog. UCF là tệp mô tả các chân mà cổng của bạn kết nối với, cũng như các nhu cầu xung nhịp. Không có nó, các chân được gán ngẫu nhiên, sẽ không khớp với bảng hiện có.
Yann Vernier

Tôi hiểu phần gán pin là gì về nhu cầu đồng hồ?
Kevin Boyd

1
Các ràng buộc về thời gian bao gồm những thứ như tần số đồng hồ, thiết lập và thời gian giữ. Bạn vẫn sẽ nhận được thông tin trong phân tích thời gian, nhưng việc chỉ định các yêu cầu trong tệp ràng buộc cho phép các công cụ phát hiện khi chúng thất bại và có thể cố gắng hơn để đáp ứng nhu cầu của bạn khi đường biên giới.
Yann Vernier

1

Đối với đồng hồ, bạn sử dụng megacore DLL / PLL.


Spartan 6 có DCM và PLL, chưa tìm thấy DLL. Sau khi tìm kiếm các diễn đàn tôi thấy rằng Xilinx có một công cụ gọi là Core Generator có thể được cấu hình để tạo tài nguyên đồng hồ.
Kevin Boyd
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.