¿Cómo diseño mis propios procesadores basados ​​en ARM?

37

Tengo varias preguntas sobre cómo diseñaría mi propia CPU basada en ARM.

  • ¿Cómo se comienza con una licencia ARM y se termina con un paquete listo para soldar en una placa?
  • ¿Qué obtengo de ARM (estoy seguro de que tienen varias opciones de licencia para distribuir: licencia de arquitectura (estilo Qualcomm Snapdragon) y licencia central (estilo TI OMAP))?
  • ¿Qué herramientas necesito para proceder una vez que tengo 'ese algo' de ARM?
  • ¿Qué le envío a la fábrica?
  • Creo que solo ciertos límites tienen licencia para grabar un núcleo ARM en una oblea de silicio. Estoy en lo cierto?
  • Como estudiante, ¿puedo permitirme hacer esto en un FPGA? ¿Cómo obtengo experiencia práctica para algo como esto?
Lord Loh
fuente
99
La respuesta obvia es hablar con ARM.
Olin Lathrop
3
Eche un vistazo a opencores.com : hay muchos núcleos de procesador diferentes en varios estados de integridad y funcionalidad. En cuanto a la obtención de la fuente central de ARM real ... como dice @OlinLathrop ... hable con ARM.
akohlsmith
66
No entiendo los votos negativos, esta puede ser una pregunta ingenua, pero definitivamente legítima de la OMI.
Jon L
2
El problema es que su pregunta es específica de un flujo de trabajo que no podrá seguir. Los flujos de trabajo que puede seguir, usando un diseño original o disponible gratuitamente en un HDL para apuntar a un FPGA, son tan diferentes de eso como lo es la especulación.
Chris Stratton
2
El núcleo Cortex-M1 parece estar destinado a ejecutarse en cualquier FPGA adecuadamente capaz. Los principales proveedores de FPGA tienen la licencia IP y se la entregan al diseñador como lo harían con cualquier otro núcleo blando. Supongo que no es gratis, pero es probable que haya programas disponibles específicamente para uso académico.
RBerteig

Respuestas:

68

Así es como lo hacen las empresas:

  1. Recaudar alrededor de US $ 10 millones.
  2. Negocie con ARM para obtener una licencia. Esto probablemente costará al menos US $ 1 millón.
  3. Obtenga los archivos de diseño de ARM. Es probable que tenga alguna forma de VHDL, Verilog o una lista de redes "encriptada".
  4. Diseñe su propio chip usando una combinación de su propia lógica (para los periféricos) y lo que ARM le dio. Este paso probablemente requerirá un software CAD costoso y un pequeño equipo de expertos. Espere gastar al menos US $ 5 millones y varios años.
  5. Obtenga las máscaras hechas para el chip en sí. Si utiliza algún proceso moderno de semiconductores, esto costará alrededor de US $ 1 millón.
  6. Consigue el chip hecho. El precio varía, pero debe ser inferior a US $ 0,5 millones.
  7. Depure el chip que creó, corrija los errores, luego regrese al Paso 5 hasta que tenga algo que pueda vender.

Aquí es cómo USTED lo hace:

  1. Tome un curso de posgrado en arquitectura de computadoras en su universidad local.
  2. Tome más cursos en lógica digital y cualquier otra cosa.
  3. Diseñe una CPU desde cero en VHDL o Verilog.
  4. Diseña otra CPU desde cero.
  5. Mire el conjunto de instrucciones ARM y diseñe una CPU compatible.
  6. Haga que su CPU compatible con ARM funcione en un FPGA.
  7. No distribuya su código fuente VHDL / Verilog a menos que quiera ser demandado.
  8. Use su experiencia ARM para escribir una buena disertación para su doctorado.
  9. Use su doctorado para obtener un trabajo en ARM, o TI, o quien sea. Luego repita el proceso utilizando los 7 pasos anteriores sobre cómo lo hace una empresa.

Ok, entonces esta lista es un poco irónica pero es básicamente correcta. El punto es que ni siquiera se moleste en tratar con ARM directamente porque es probable que no tenga el dinero. Y tampoco hagas nada que ARM te demande.


fuente
1
+1. Excelente respuesta Lo que iba a decir, pero mejor.
Rocketmagnet
1
Cualquier buen curso incluiría la estructura básica de los diferentes tipos de CPU y cómo funcionan. Los temas deben cubrir microcódigo, decodificación de instrucciones, ALU de acceso a memoria, caché, registros, la canalización, hazzards de datos, captura previa instrucción, etc.
3
¿Hay alguna razón por la cual el conjunto de instrucciones de ARM, en sí mismo, sea más patentable que cualquiera de las otras CPU de las cuales abundan los clones? Ciertamente, es probable que haya algunas características arquitectónicas patentadas, pero si el objetivo es diseñar una CPU que funcione con los compiladores existentes, ¿el conjunto de instrucciones en sí mismo plantearía un problema?
supercat
1
@supercat Normalmente, las instrucciones en sí mismas no son muy patentables a menos que incorporen algunas cosas arquitectónicas. MIPS hizo esto con sus CPU, donde patentaron algunas instrucciones que cargarían / ​​almacenarían palabras que no están alineadas, así como algunas cosas para cambiar dinámicamente entre endian grande y pequeño. Esto fue impugnado en la corte cuando MIPS demandó a un fabricante de clones de MIPS y MIPS ganó (alrededor de 2000). Pero la mayoría de las patentes son sobre cuestiones arquitectónicas. Lamentablemente, no puede hacer una CPU que sea compatible con los compiladores existentes sin copiar tanto la arquitectura como el conjunto de instrucciones.
1
@ LordLoh puede encontrar estas preguntas útiles: electronics.stackexchange.com/questions/28686/… electronics.stackexchange.com/a/7051/638
W5VO
32

ARM tiene un programa de inicio de diseño universitario . Como estudiante, solo puede acceder al material básico de Cortex-M0. Pero si está realmente interesado, involucre a su facultad y luego podrá tener acceso a mucho más material de diseño (código FPGA Verilog, evaluación IP, simulaciones, etc.)

Embedded.kyle
fuente
44
Gracias :-) Intentaré que mi asesor solicite algunos de estos.
Lord Loh
WFIW, esta respuesta ahora está desactualizada, tanto Cortex-M0 como Cortex-M3 están disponibles, y algunas partes del producto están abiertas a no estudiantes / instituciones.
Sean Houlihane
5

Echa un vistazo a este núcleo ARM en OpenCores.

plan9assembler
fuente
1
Pero tenga cuidado: tales implementaciones son simplemente toleradas por ARM: eetimes.com/author.asp?section_id=36&doc_id=1287452 , será un cese y desistimiento / demanda. Considere también los arcos abiertos como RISC-V.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
3

El ARM Cortex-M1 (probablemente el más simple de los procesadores ARM) es el primer procesador ARM diseñado específicamente para implementarse como un procesador blando en FPGA. Está optimizado para los siguientes tipos de FPGA :

Actel (M1 ProASIC3 and M1 Fusion)
Altera (Cyclone-II, Stratix-III)
Xilinx (Spartan-3, Virtex-5)

ARM está haciendo un kit de desarrollo Cortex-M1 para Altera Cyclone III, aunque es un poco caro a $ 625 de DigiKey . Sin embargo, obtienes todo el ARM Cortex-M1 IP y una licencia para desarrollar (además de una concesión de regalías gratis para 1000 tableros para los que entran en producción, bastante bueno).

Puede haber algunas opciones para obtener la IP por sí misma (tal vez tengan un programa académico, alguien más mencionó un programa universitario, pero eso fue para el M0). Entonces podrías comprar una placa de desarrollo por separado.

Aquí hay más información sobre el ARM Cortex-M1 en Altera .

Aquí hay información sobre cómo colocar un ARM Cortex-M1 en un Actel FPGA.

Mientras tanto, hay algún interés en otras versiones de ARM Cortex en FPGA; Aquí hay un documento de alguien que implementó un ARM Cortex-M0 en un FPGA Xilinx.

tcrosley
fuente
Si desea cambiar el diseño, intente hacer una máquina de 32 bits "adecuada". Actualmente, el ARM lee la instrucción de 32 bits de 8 bits a la vez, lo que significa que la PC aumenta en 4 por cada búsqueda de instrucciones.
Alan Campbell
1

Ahora puede obtener acceso al procesador Cortex-M3 (y un subsistema AHB / APB extensible) a través del programa DesignStart de ARM.

La opción Eval proporciona un objetivo FPGA (se admite la simulación, con RTL ofuscado del núcleo, todo lo demás en Verilog). Esto actualmente apunta al ARM MPS2 + FPGA, con soporte mbed.

La versión Pro (solo disponible para empresas / universidades que pueden firmar una licencia) permite la fabricación e incluye el núcleo del procesador en Verilog (esto cubre tanto Cortex-M0 como Cortex-M3).

Sean Houlihane
fuente