antoniovillena escribió:¿Has probado a 20Mhz?
Se pueden usar 20Mhz sólo que la lógica para detectar si estoy en el área visible es un poco más compleja...
¿Dices usar 20MHz como reloj de pixel y de CPU? ¿O 20MHz para la CPU y 7MHz para la sección de video?
Si es la segunda opción, el problema que tendremos, al no ser la frecuencia de la CPU múltiplo (o divisor) entero de la frecuencia de pixel es que será más complicado sincronizar ambos dispositivos para que no se genere contienda. Mi circuito de "evitación de contienda" es sencillo porque se basa precisamente en esto. Con dos dispsoitivos desacoplados en frecuencia, es necesario usar más bufferes intermedios, lo que implica más lógica.
Si te refieres a lo primero, no habrá problemas para evitar la contienda (a costa de usar memorias más rápidas), pero para este nuevo modo de pantalla, hagamos números:
Fp = 20 MHz
Npt = 20 * 64 = 1280
Np = 256 píxeles. Para no tener un área de pantalla demasiado pequeña, habría que hacer píxeles que fueran 4 periodos de reloj, así que Np en realidad es 256*4=1024
Nfp = 5.8*20 = 116
Nbp = 1.5*20 = 30
Nhs = 4.7*20 = 94
De aquí sacamos Nb = 1280 - (1024+116+30+94) = 16
O lo que es lo mismo, dos bordes izquierdo y derecho de 8 periodos de reloj cada uno. Como hemos determinado que la anchura de los píxeles es de 4 periodos de reloj, estos bordes tendrán en realidad 2 píxeles cada uno. Exactamente el mismo esquema que el QL.
Si nos parece demasiado poco borde, podemos elegir tener píxeles que sean de 2 periodos de reloj. Entonces Np es ahora 512, y Nb se calcula como:
Nb = 1280 - (512+116+30+94) = 528
O sea, cada borde izquierdo y derecho ocupará (528/2) = 264 periodos de reloj de pixel, y como cada pixel ahora son dos periodos de reloj, tenemos que cada borde mide 264/2 = 132 píxeles. Esto es bastante más del grosor del borde lateral en el Spectrum. El área activa de la pantalla se te quedaría muy escasita.
-- 08 Oct 2012, 13:38 --
antoniovillena escribió:Es porque es más fácil de encontrar un cristal de cuarzo de 20Mhz que uno de 14. Y si vas ponerle un oscilador en lugar de un cristal sería mucho más complicado encontrar uno de 14Mhz.
Si es por eso, usa como frecuencia 14.31818MHz . Es de las frecuencias más estándar que hay.
antoniovillena escribió:...obtenemos 6,66Mhz del reloj maestro con los cuales alimentamos la circuitería de video.
Bien. Tenemos entonces un sistema de video que va a la tercera parte de frecuencia que el reloj de la CPU. En este caso, mi mecanismo de "no contienda" no funcionará, porque se basa en que entre cada dos accesos de memoria de la CPU hay, al menos, dos ciclos de reloj de CPU en donde ésta no accede a memoria. Si la circuitería de video va a 1/3 de la frecuencia de CPU, necesitará más de dos ciclos de CPU para hacer una lectura de VRAM y en ese caso, habrá colisiones.
Si divides la frecuencia de CPU entre 1.5 o entre 2, sí que se puede seguir usando este mecanismo. En el caso más rápido, la memoria con la que implementes VRAM tendría que ser de como máximo, 1.5*1000/20 = 75ns de tiempo de acceso.