Tarjeta SD de 4 bits: ¿comparte la interfaz?

He buscado mucho en Google y la respuesta simplemente no me salta a la vista.

Tengo un proyecto que tiene dos ranuras para tarjetas SD. El acceso a las dos tarjetas nunca es simultáneo. Estoy actualizando este proyecto a un ATSAMS70N19 (principalmente para obtener USB de alta velocidad), que tiene una interfaz HSMCI... pero solo una.

¿Cómo puedo multiplexar las dos ranuras para tarjetas a través de esta interfaz?

Ya sé que puedo multiplexar correctamente dos tarjetas en modo SPI usando la línea !CS (mi versión actual del proyecto hace eso), pero espero aumentar el rendimiento con la interfaz HSMCI.

Me gustaría usar un pin GPIO como pin A/!B. La especificación que estoy leyendo al menos parece sugerir que simplemente puedo cambiar el reloj entre las dos tarjetas (manteniendo el reloj de la tarjeta inactiva alto o bajo) es suficiente para mantener la tarjeta inactiva fuera del camino. ¿Es esto correcto?

Si esto no es lo suficientemente bueno, ¿cómo puedo cambiar todo el bus de un lado a otro entre las dos ranuras dado que 5 de los 6 pines son bidireccionales y de velocidad relativamente alta?

Probablemente podría activar el reloj, pero deberá tener mucho cuidado con las relaciones de tiempo entre las señales. Es posible que deba encontrar una puerta con un retraso de propagación muy bajo para que funcione, y es posible que tenga problemas para acelerar el reloj lo más rápido posible. Otra opción a considerar podría ser usar un par de conmutadores de bus bidireccionales y retrasar todas las señales en la misma cantidad.
¿Qué velocidad de bus SD planea usar?
¿Y cuánto dura su autobús SD?
Todo el dispositivo mide 4 pulgadas cuadradas, por lo que el autobús será bastante corto. Estoy apuntando a una velocidad de 25 MHz. @alex.forencich, ¿puede indicarme un conmutador de bus bidireccional? No pude encontrar tal cosa, y si quisiera silenciar todo el autobús, parece la herramienta adecuada para el trabajo.
@ alex.forencich ¿Podría el QS3VH257PAG8 ser algo similar a lo que está pensando? Usar su descripción en Google me trajo una serie completamente nueva de resultados de búsqueda, y esto parece bastante prometedor.
Sí. Bueno, ese estilo de interruptor FET, de todos modos. Podría obtener un mux lo suficientemente grande (en realidad, no me di cuenta de que hacían muxes) o un par de interruptores de bus.
Y el que encontraste también es un poco extraño, ya que puede pasar 5v con un suministro de 3v debido a la bomba de carga integrada. Probablemente no necesite eso para su aplicación, también podría obtener uno que se sujete a Vdd.
Oh, sí, esa es una característica extraña. Toda la señalización y Vcc aquí es 3.3v. Si tienen una variante sin eso, intentaré encontrarla, pero el precio de este chip es lo suficientemente bajo como para que, si no hay una mejor opción, no veo una razón para evitarlo.

Respuestas (1)

Probablemente podría activar el reloj, pero deberá tener mucho cuidado con las relaciones de tiempo entre las señales. Es posible que deba encontrar una puerta con un retraso de propagación muy bajo para que funcione, y es posible que tenga problemas para acelerar el reloj lo más rápido posible.

Otra opción a considerar podría ser usar un par de conmutadores de bus bidireccionales y retrasar todas las señales en la misma cantidad. Esta podría ser tu mejor apuesta. Varias empresas fabrican interruptores de bus bidireccionales basados ​​en FET rápidos que pueden pasar señales de alta velocidad con retrasos de propagación bajos. Un interruptor de 8 canales para cada enchufe sería perfecto. Los interruptores suelen ser tolerantes a 5v, no tienen diodos de protección ESD a Vdd y sujetan las señales pasadas a Vdd, por lo que pueden usarse para una traducción de nivel rápida.

Una vez cerré el reloj y mi maestro se volvió loco conmigo.
@HarrySvensson, debe diferenciar entre la activación del reloj en una pieza de RTL autónomo de bajo nivel de un control de reloj cuidadosamente administrado. La "compuerta" de reloj administrada correctamente está en todas partes hoy en día para ahorrar energía, es común habilitar o deshabilitar árboles de reloj.
@AliChen Sí, lo hice para ahorrar energía y minimizar la cantidad de lógica necesaria, según mi maestro, no lo encontró justificado ... pero es seguro saber que realmente está sucediendo. Gracias por compartir esa información.
La activación del reloj es extremadamente común en los ASIC. El análisis de tiempo puede asegurar que funcionará correctamente. Sin embargo, la activación de reloj en FPGA es mucho más difícil de implementar de manera confiable debido a que la red de reloj no está realmente diseñada para ser controlada y la dificultad de realizar análisis de tiempo a partir de relojes de origen lógico.