Tôi đang làm việc trên một mạch kỹ thuật số bằng cách sử dụng các thành phần riêng biệt để điều khiển màn hình VGA 640x480 ở chế độ văn bản 80x30.
Đối với màn hình 640x480, đồng hồ pixel là 25.175 MHz, có khoảng thời gian khoảng 40ns. Tôi không hiểu làm thế nào tôi có thể cung cấp một pixel mới cho màn hình này thường xuyên.
Kiến trúc cơ bản cho mạch của tôi như sau:
Bộ đếm nhị phân cho các pixel ngang đếm lên tới 25.175 MHz đến 800 (640 pixel hiển thị + 160 cho hiên trước, đồng bộ hóa, hiên sau). Ở mức 800, tăng bộ đếm dòng dọc (và đặt lại ở 525 dòng)
Sử dụng vị trí ngang và dọc, suy ra tọa độ x, y của ký tự hiện tại.
Sử dụng tọa độ x, y của ký tự, lập chỉ mục vào bộ nhớ video để truy xuất ký tự ASCII.
Sử dụng ký tự ASCII để lập chỉ mục trong ROM ký tự để lấy mẫu bit cho ký tự
Sử dụng song song với thanh ghi dịch chuyển nối tiếp để chuyển đổi dòng ký tự 8 pixel thành các bit riêng lẻ ở tần số xung nhịp pixel
Nếu bạn theo chuỗi, nó sẽ đi: Bộ đếm -> RAM -> ROM -> Song song với Đăng ký thay đổi nối tiếp
Sử dụng các thành phần nhanh nhất tôi có thể tìm thấy, độ trễ lan truyền và thời gian truy cập lên tới khoảng 15ns + 20ns + 70ns + 15ns = 120ns, lớn hơn nhiều so với khoảng thời gian 40ns cho 25 MHz.
Ở độ phân giải cao hơn và tốc độ làm mới, bạn có thể có đồng hồ pixel cao hơn 100 MHz, đó sẽ là khoảng thời gian 10ns.
Làm thế nào có thể cung cấp pixel mới cho màn hình cứ sau 10ns khi thời gian truy cập RAM / ROM đã vượt quá mức đó, thậm chí không xem xét tất cả các tín hiệu khác trong hệ thống của bạn?