Saya sedang mengerjakan sirkuit digital menggunakan komponen diskrit untuk menggerakkan layar 640x480 VGA dalam mode teks 80x30.
Untuk tampilan 640x480, clock pixel adalah 25.175MHz, yang memiliki periode sekitar 40ns. Saya tidak mengerti bagaimana saya seharusnya bisa menyediakan pixel baru untuk tampilan ini sesering mungkin.
Arsitektur dasar untuk sirkuit saya adalah sebagai berikut:
Penghitung biner untuk piksel horizontal dihitung pada 25.175MHz hingga 800 (640 piksel yang terlihat + 160 untuk teras depan, sinkronisasi, teras belakang). Pada 800, kenaikan penghitung garis vertikal (dan reset pada 525 baris)
Dengan menggunakan posisi horizontal dan vertikal, dapatkan koordinat x, y dari karakter saat ini.
Menggunakan koordinat karakter x, y, indeks ke dalam memori video untuk mengambil karakter ASCII.
Gunakan karakter ASCII untuk mengindeks dalam ROM karakter untuk mendapatkan pola bit untuk karakter
Gunakan register geser paralel ke serial untuk mengonversi 8 piksel garis karakter ke bit individu pada frekuensi jam piksel
Jika Anda mengikuti rantai, ia berbunyi: Counter -> RAM -> ROM -> Parallel to Serial Shift Register
Menggunakan komponen tercepat yang dapat saya temukan, penundaan propagasi dan waktu akses bertambah hingga sekitar 15ns + 20ns + 70ns + 15ns = 120ns, jauh lebih besar dari periode 40ns untuk 25MHz.
Pada resolusi dan kecepatan refresh yang lebih tinggi, Anda dapat memiliki jam piksel di atas 100MHz yang akan menjadi periode 10ns.
Bagaimana mungkin untuk memberikan piksel baru ke layar setiap 10ns ketika waktu akses untuk RAM / ROM sudah jauh di atasnya, bahkan tidak mempertimbangkan semua sinyal lain di sistem Anda?