Về cơ bản, không có vi điều khiển, ngay cả pi mâm xôi, là đủ nhanh. Raspberry pi có GPU trên bo mạch tạo ra đầu ra HDMI. Và ngoài ra, khả năng I / O của raspberry pi bị giới hạn đáng kinh ngạc - giao diện băng thông cao nhất ngoài HDMI là USB. Nhiều dự án chuyển đổi HDMI liên quan đến việc lấy một luồng video khác ở định dạng lạ và xử lý lại thành một thứ có thể được gửi tới một HDTV tiêu chuẩn qua HDMI. Điều này đòi hỏi một số logic giao thoa tùy chỉnh để đọc trong tín hiệu video, tín hiệu logic logic để định dạng lại nó, logic mã hóa HDMI TMDS và sau đó là các bộ nối tiếp tốc độ cao để thực sự lái cổng HDMI.
Làm việc với phát trực tuyến, không nén, video độ phân giải cao đòi hỏi phải xử lý một lượng dữ liệu khổng lồ, một điều không khả thi trên CPU có mục đích chung. Tín hiệu video 1080p ở 30 khung hình mỗi giây có khoảng 62 triệu pixel mỗi giây. Raspberry pi chạy ở 700 MHz, vì vậy bạn có, ồ, 11 hướng dẫn cho mỗi pixel. Và đó là 11 hướng dẫn để đọc ở định dạng video lẻ trong thời gian thực, bán lại nó, v.v., v.v. Không thể. Giai đoạn.
Trên một đồ họa, có thể tạo ra một đường ống xử lý dài có thể xử lý một hoặc nhiều pixel trên mỗi chu kỳ xung nhịp và thực hiện theo cách có tính quyết định cao (không bị gián đoạn hoặc chuyển đổi tác vụ!) Để dữ liệu pixel sẵn sàng truyền qua HDMI vào đúng thời điểm Nếu bạn đã làm việc nhiều với các CPU có mục đích chung chạy bất kỳ loại hệ điều hành nào, bạn sẽ biết rằng việc lấy thời gian chính xác ở mức milisecond là ít nhiều có thể thực hiện được, nhưng ở mức độ micro giây là không thể. Đối với HDMI, bạn cần độ chính xác tỷ lệ nano giây. Không thể thực hiện trên CPU mục đích chung. Ngoài ra, hãy xem dự án âm thanh / video HDMI cho tân địa lý. Điều này không chỉ phải quay lại video, nó còn phải lấy mẫu lại âm thanh và chèn nó vào luồng video HDMI.
Và điều này vẫn không xem xét logic tùy chỉnh cần thiết để đọc ở bất kỳ định dạng dữ liệu đầu vào nào bạn có. Bạn sẽ cần phần cứng tùy chỉnh để giải thích điều này. Phần mềm không đủ nhanh hoặc đủ xác định. Bạn có thể có thể định dạng lại nó thành một loại luồng dựa trên USB nào đó, nhưng điều này sẽ yêu cầu logic kỹ thuật số tùy chỉnh, vì vậy bạn cũng có thể chỉ cần xuất HDMI trực tiếp.
Để thực hiện tất cả điều này, logic kỹ thuật số thực sự là giải pháp khả thi duy nhất. Và nếu bạn đang thực hiện logic kỹ thuật số, thì FPGA là giải pháp khả thi duy nhất, vì nó quá nhanh và quá phức tạp đối với 7400 logic rời rạc và ASIC, đắt hơn, một số đơn hàng có cường độ cao hơn.
Một thành phần bắt buộc khác là các bộ nối tiếp tốc độ cao và trình điều khiển vi sai thực tế để tạo ra các luồng dữ liệu nối tiếp song song được gửi xuống cáp. Không thể bit dữ liệu nối tiếp theo thứ tự gigabit mỗi giây từ CPU có mục đích chung, điều này đòi hỏi phần cứng chuyên dụng. Raspberry pi có GPU trên bo mạch thực hiện việc này, nhưng nó bị giới hạn về khả năng của GPU, chưa kể những gì được ghi lại. Hầu hết các FPGA chứa ít nhất các trình điều khiển vi sai cần thiết và các flip flip DDR đủ để hỗ trợ video độ phân giải thấp và có khá nhiều FPGA cũng chứa các bộ nối tiếp cần thiết (ví dụ các khối OSERDES Xilinx) để tạo ra các luồng HD đầy đủ. Đừng quên rằng luồng nối tiếp không phải là 'baseband' giống như một cổng nối tiếp bình thường trong đó dữ liệu thực tế được gửi nguyên văn với một số thông tin đóng khung, nhưng dữ liệu thực sự được mã hóa bằng TMDS (tín hiệu vi sai thu nhỏ chuyển tiếp) để cung cấp cho tín hiệu một số đặc điểm điện nhất định. Một chút logic được yêu cầu để thực hiện điều này ngoài các bộ nối tiếp tốc độ cao thực tế. Tất cả điều này tương đối đơn giản để thực hiện trong logic kỹ thuật số thuần túy (tốt, dù sao cũng là mã hóa - các bộ nối tiếp được cho là tương tự, hoặc ít nhất là tín hiệu hỗn hợp) trên cả ASIC hoặc FPGA.
Đây thực sự là một phần rất quan trọng của quy trình thiết kế hệ thống nhúng / kỹ thuật số tổng thể để tìm ra phần nào của hệ thống có thể được triển khai trong phần mềm và phần nào yêu cầu phần cứng, dưới dạng chip chuyên dụng, đồ họa, tùy chỉnh ASIC, IP cứng hoặc mềm (HDL, danh sách mạng, GDSII), v.v. Trong trường hợp này rõ ràng: việc tạo tín hiệu video yêu cầu phần cứng chuyên dụng, có thể là GPU được ghép nối với CPU mục đích chung, một GPU có độ cứng tích hợp hoặc lõi CPU mềm hoặc được ghép nối với CPU bên ngoài hoặc thứ gì đó chuyên dụng hơn.
Chỉnh sửa: Tôi mới nhận ra rằng trang web fpga4fun và dự án video địa lý mới đều chạy ở 640x480 thay vì full HD. Tuy nhiên, điều này không thực sự làm cho điều này trong khi hoạt động đơn giản hơn nhiều. Đồng hồ pixel tối thiểu là 25 MHz, với xung nhịp bit là 250 MHz. Điều này có nghĩa là thực tế, FPGA không yêu cầu các bộ nối tiếp để truyền HDMI, chỉ có các flip flop DDR. Điều này vẫn không làm giảm bớt vấn đề đọc dữ liệu video. Nếu bạn muốn làm điều đó trên raspberry pi mà không cần hỗ trợ phần cứng, bạn sẽ phải đọc từ GPIO liên tục ở 25 MHz. Đó là một đọc mỗi 175 hướng dẫn. Bước vào lĩnh vực khả năng, nhưng cách duy nhất bạn có thể thực hiện công việc đó là trên kim loại trần (không có Linux) với lắp ráp được mã hóa bằng tay.