Interfaz con conector USB en simulación

Estoy creando un prototipo de una placa que tiene un conector USB, en Spice o cualquier otra tecnología de simulación de circuitos. La placa de producción se conectará a la PC y habrá algún software que se comunique con ella a través de USB. Me gustaría hacer mucho de la creación de prototipos en el software antes de jugar con el espacio físico, por la velocidad.

¿Es/cómo es posible conectar el software a una simulación de la placa? ¿Qué software de simulación hace esto?

En otras palabras, sería genial hacer que la simulación suceda y que actúe como si estuviera conectada a uno de los puertos USB de la computadora (uno real o uno virtual), para que pueda probar la interacción con mi PC. código.

Suponiendo que no está tratando de modelar el comportamiento eléctrico analógico de la interfaz USB, quizás lo más útil sería encontrar una interfaz de programación para el simulador que pueda permitir que un programa externo controle las fuentes en los nodos que corresponden a los pines de E/S. del dispositivo de interfaz USB.
@ChrisStratton eso está en la línea de lo que estaba pensando. ¿Conoces algún simulador que proporcione interfaces como esa?
Eche un vistazo a las especificaciones y videos de la simulación de Proteus : hace un buen trabajo al simular múltiples partes e interfaces analógicas y digitales, aunque requiere una gran potencia informática. El simulador puede incluso simular firmware para varios microcontroladores mientras toma una señal de entrada simulada de interfaces simuladas como USB. No es SPICE, pero es algo bastante poderoso.

Respuestas (3)

Me temo que la respuesta a su pregunta es que lo más probable es que esto no sea posible.

Si describe su sistema y objetivos con más detalle, alguien puede sugerir una posible alternativa. Algunas dudas y preguntas que me vienen a la mente son (perdón si no entendí bien tu situación):

  • ¿Qué simulador estás usando?
  • ¿Realmente tienes un modelo de trabajo para el controlador USB? Los dispositivos USB suelen ser un microcontrolador que ejecuta una cantidad de código no trivial, que es muy complicado de simular al nivel de Spice, o incluso Verilog.
  • Si tiene una simulación de trabajo, ¿qué tan rápido se ejecuta? Los controladores USB de PC son sensibles al tiempo y esperarán respuestas rápidas del dispositivo USB. Esperaría que una simulación de comportamiento de un microcontrolador que ejecuta el código desde una ROM se ejecute en el orden de 10 minutos en tiempo real por 1 milisegundo de tiempo de simulación.
Creo que existe la posibilidad de que nadie haya escrito un software para hacerlo (o que esté disponible gratuitamente de todos modos). Aunque apuesto a que hay algo por ahí. Por ejemplo, estoy pensando en algo como sparkfun.com/tutorials/108 , hay modelos de especias para todos estos componentes. Solo estoy buscando conectar un 'cable USB virtual' en el adaptador USB en la simulación, como si un extremo estuviera conectado al puerto USB de mi PC y el otro extremo al circuito.
El problema del tiempo es una buena consideración, ya que si es demasiado lento podría causar excepciones de USB.

Está mucho más allá del nivel de complejidad del sistema donde SPICE es una herramienta significativa.

SPICE es un simulador analógico . Puede escalar a unos pocos miles de transistores. Los circuitos integrados que desea simular tienen muchas decenas o cientos de miles de transistores.

Además, SPICE realiza una evaluación escasa cuando puede determinar que está resolviendo el dV/dT con suficiente precisión. Dado que es probable que su micro/otro-complejo-IC-lógico tenga un reloj interno rápido, SPICE tendrá que simular el dispositivo con una precisión considerable, lo que haría que la simulación fuera aún más lenta que los circuitos analógicos simples.

Además, SPICE no es una herramienta en tiempo real. Los modelos simples pueden ejecutarse en ~ 1 1 , 000 - 1 1 , 000 , 000 tiempo real. Esto es aceptable para la mayoría de las simulaciones simples, en las que puede establecer correctamente las condiciones iniciales y ejecutar el simulador durante un breve período de tiempo para evaluar su comportamiento.

Si combina los factores anteriores y el hecho de que necesitará muchos cientos de milisegundos de tiempo de simulación para que su MCU se inicie y conecte correctamente, probablemente necesitará varios días en tiempo real (!) para que su simulación incluso ¡enumerar! Además, algo tendrá que implementar correctamente el host USB al que está conectado el dispositivo. No puede simplemente reenviar una conexión USB que se ejecuta a una millonésima (o más) de tiempo real al host y esperar que funcione.

La forma en que simulaciones como la que @Purrell vincula en su respuesta es que tienen modelos simplificados de los diversos dispositivos. La MCU se simula como algo similar a una MCU de núcleo blando VHDL o Verilog, puramente en el dominio digital (nota: esto no es SPICE), y las interfaces se almacenan en la simulación analógica (y eso suponiendo que lo estén haciendo cualquier simulación analógica en absoluto. Creo que es bastante improbable).

Obviamente, esto también está limitado por la precisión de los modelos. Incluso SPICE no es una herramienta perfecta, y cuanto más se abstraiga de la naturaleza real de los dispositivos, es más probable que las imprecisiones de la simulación afecten el resultado simulado.


Realmente, parece que estás pensando demasiado en esto. Incluso los simuladores como SPICE son generalmente mal considerados, ya que tienden a ser muy susceptibles a los casos de esquina y realmente solo valen la pena como una herramienta de verificación de diseño analógico .

Realmente no hay herramientas para este tipo de cosas, ya que serían más o menos inútiles. La profundidad del conocimiento de un dispositivo específico requerido para escribir un modelo utilizable, si no perfecto, de dicho dispositivo haría innecesaria la simulación, y la simulación aún no siempre modelaría perfectamente el hardware real.

La razón por la que no hay mucho interés o productos que hagan lo que quieres es porque es un poco inútil. Hasta que podamos simular todo el chip con una resolución de unos pocos átomos, seguirá siendo inútil fuera de algunas aplicaciones específicas.

Realmente, solo tienes que superarlo y construir el hardware real.

Podría estar usando el término incorrecto con SPICE. Cualquier tipo de simulación o emulación es lo que busco. El microcontrolador y el USB no tienen que ser SPICE en una simulación, ¿entiendes? Su respuesta es correcta para SPICE completo y está orientada a un tablero complejo. Para una placa simple, simularla en software para obtener primero el software esquemático y de interfaz es una buena idea. la simulación en tiempo real no es un requisito, si lo fuera, sería diferente.

Aquí hay un simulador que lo hace:

http://www.labcenter.com/products/usb.cfm

Afirman ser los únicos que lo hacen, lo cual es desafortunado porque el software es costoso y la interfaz de usuario está fechada en mi opinión, y es una buena idea. Funciona para PIC y AT90, que es lo que estoy haciendo.


Me sorprenden las respuestas negativas. Amigos, es 2013 :). Podemos simular computadoras completas , incluidas sus interfaces USB en el software. Estoy escribiendo esto dentro de una máquina virtual de Windows que se ejecuta en una Macbook Pro. Los USB dentro de la máquina virtual están completamente simulados, en "tiempo real", y se conectan a la máquina host como si fueran locales.

De hecho, además del software Lab Center que funciona a la perfección y simula la interfaz USB, estoy ejecutando una VM porque este software solo se ejecuta en Windows. Entonces, tengo un código en mi máquina host OSX que se conecta a un puerto USB virtual en la máquina VM de Windows, que está conectada a una interfaz USB virtual desde la simulación del circuito. Esa es otra capa de virtualización además de la que me estás diciendo que se supone que no debo poder hacer. ¡Cerveza yo!

No estoy seguro de que este software realmente haga lo que pediste. Simula transacciones USB hasta el nivel del controlador, pero no hay indicación de que pueda conectar su propio software a ese controlador.
Lo siento, quise decir que no está claro que pueda ejecutar su propio software casi en tiempo real junto con una simulación SPICE de su placa. También tenga en cuenta que solo funciona con un conjunto específico de microcontroladores compatibles con USB. Soy escéptico y no quiero gastar ~ $ 1,000 para probarlo, así que háganos saber cómo funciona para usted.
No, puedes conectarlo. Funciona. Digamos que "tomé prestado" el software. Es genial. La interfaz de usuario no es tan buena. Se conecta como si el dispositivo estuviera conectado al puerto USB de la máquina. El circuito no funciona a toda velocidad, pero no tengo problemas para conectarme a través de libusb-win32. Fue un poco doloroso pero meh.
Las máquinas virtuales NO son una simulación . Estás confundiendo mucho los términos aquí. Además, te estás perdiendo uno de los puntos clave en el sentido de que nadie en la industria realmente quiere el tipo de simulación de la que estás hablando , ya que es más o menos inútil para cualquier cosa que no sean implementaciones extremadamente simples, que en realidad no deberías. necesita simular de todos modos.
Las máquinas virtuales son obviamente una simulación, Connor. Tienes una mala actitud, debo decir. Al simular esto, debo haber ahorrado al menos unas pocas horas, si no más. Mis piezas están en el correo y ya probé mi circuito en teoría, junto con mi código. Revisa tu actitud y tu ego, por favor.