Diseño de un periférico para CPU de núcleo blando

He estado implementando un módulo de hardware en VHDL durante parte de mi disertación universitaria y quiero implementarlo como parte de un núcleo NIOS II en mi ciclón 2 FPGA. Esto usa la interfaz de Avalon, ¿qué recursos puedo buscar para diseñar un módulo genérico? No tengo ni idea de por dónde empezar con esta parte de mi proyecto.

No sé si mi diseño será un esclavo o un amo. ¿Alguien puede indicarme la dirección relevante para diseñar la parte de mi proyecto?

Entonces, quiero que mi módulo de hardware forme algunas instrucciones adicionales de la CPU para acelerar la ejecución de un algoritmo específico. Entonces tenemos alguna llamada de Asamblea en mi programa C que usa el coprocesador de cifrado de hardware.

Mi módulo de hardware es el módulo de cifrado DES, y me gustaría obtener instrucciones adicionales para poder conectar un núcleo de CPU a mi módulo.

¿Ha consultado este documento?: altera.com/literature/hb/qts/qsys_components.pdf
Si se controla desde el procesador, probablemente lo quieras como esclavo. Quartus tiene algunas herramientas para definir un "componente" con buses de entrada/salida particulares que pueden ayudarlo a comenzar. Ayudaría si describiera su módulo un poco más, cuánto está construido y qué hace.
@ pjc50 De eso no estoy seguro. Agregaré más información para que alguien pueda indicarme la dirección en la que quiero dirigirme. Realmente no lo sé.

Respuestas (1)

Es posible que desee implementar esto como una instrucción personalizada en lugar de un periférico mapeado en mem. Comience leyendo la Guía de instrucciones personalizadas de NIOS II . Probablemente desee implementar una instrucción 'Multiciclo' para que pueda tomar algunos ciclos para calcular los valores DES.

La guía explica cómo los mnemotécnicos de instrucción activan su hardware. El resultado se multiplexa junto con la salida ALU y se dirige al archivo de registro. El ejemplo de la guía es un generador de CRC, por lo que tiene una arquitectura algo similar.