Menú
Está libre
registro
hogar  /  Problemas/ Diferencia entre desarrollador y programador. Qué es plis: concepto, definición, reglas de programación y conceptos básicos para principiantes ¿Cuál es la diferencia entre el trabajo de un programador y un usuario?

Diferencia entre desarrollador y programador. Qué es plis: concepto, definición, reglas de programación y conceptos básicos para principiantes ¿Cuál es la diferencia entre el trabajo de un programador y un usuario?

Ahora está de moda ser programador. Hacen películas, escriben libros sobre programadores exitosos y, en muchos países, los desarrolladores están bien pagados. Pero a pesar de la moda tecnológica y la innovación, hay muchas cosas que los programadores saben que sorprenden a los demás. Los miembros de Quora discutieron estas diferencias socioculturales y cognitivas. A continuación se muestran los comentarios más interesantes de la discusión.

Entonces, los programadores, a diferencia de la gente común:

1. Date cuenta de que todas las escenas de robo en las películas son una completa tontería. Por ejemplo, puede leer de dónde se toman realmente los códigos que aparecen en las pantallas de los "especialistas en TI" en las películas. En general, muchos estereotipos cinematográficos sobre programadores son una tontería, escribe Bill Coleman: “No todos somos genios gordos y holgazanes. En la vida real, sabemos comunicarnos con normalidad: nuestro trabajo depende de ello. Y no debe confundirnos con los electricistas, muchos de ellos ni siquiera tienen un soldador en casa ".

El principal efecto "hacker" en los no iniciados es la consola abierta. “La mayoría de la gente pensará que solo estoy mirando la pantalla y matando el tiempo mientras estoy trabajando. Pero tan pronto como abras la consola y empieces a escribir, estarán seguros de que estoy intentando piratear el Pentágono o hacer otras cosas mágicas ”, escribe uno de los participantes en la discusión.

2. Mientras trabajan, el 25% de las veces se preguntan cómo calcular lo que el usuario puede "romper" en la aplicación que se está creando. “Es relativamente fácil escribir reglas sobre lo que debería hacer un programa si todo funciona como debería. Es mucho más difícil escribir reglas sobre lo que debe hacer el programa si algo sale mal ”, escribe Kim Moser. Al mismo tiempo, muchos usuarios creen que los programas deberían comportarse como sus conocidos más inteligentes y conocedores.

3. Saben que, de hecho, incluso el software más importante que los usuarios usan todos los días contiene una cantidad aterradora de "muletas" que de alguna manera se ensamblan milagrosamente en un todo funcional. “Es como desmontar el Boeing y descubrir que los frenos están pegados”, escribe uno de los participantes en la discusión, Ben Cherry. Los programadores saben que se almacena una enorme cantidad de información médica, financiera y personal con niveles insignificantes de seguridad del sistema.

5. Saben: si una persona tuviera, por ejemplo, seis dedos en cada mano, el principal sistema numérico del mundo sería el 12-ario, no el 10-ario, como es ahora.

6. Puede nombrar muchas más potencias de dos sin una calculadora que una persona común... La abreviatura "k" en expresiones como 100k no se entiende como "х1000", sino como "х1024". Pero si la mayoría de la gente común piensa que la programación se trata principalmente de matemáticas, los programadores saben que la lógica es lo primero.

7. Sepa lo difíciles que son las cosas simples en Internet. Después de todo acciones simples, como la búsqueda en Internet, en realidad son proporcionados por muchos procesos complejos en niveles diferentes.

8. Piense que la mayoría de las personas son demasiado vagas cuando intentan explicar lo que quieren.


9. Se enfurecen cuando la gente común de entre familiares, amigos y conocidos constantemente pide "arreglar la computadora".

10. Bien pueden comparar el código con un poema en belleza, aunque al usuario le parecerá tan terrible como un mensaje de error.

En el contexto de trabajar con productos de software, las personas se dividen en usuarios y programadores (mantenedores, implementadores, etc.). Este artículo se centra en la relación entre estas dos categorías. Quizás esto ayude a resolver algunos conflictos entre jóvenes profesionales y usuarios.

La mayoría de los usuarios son muy conservadores cuando se trata de automatización. Puede resultar muy difícil convencer a una persona de la conveniencia de cambiar el sistema (existen problemas de unión, durante algún tiempo tendrás que trabajar en dos sistemas al mismo tiempo, el nuevo sistema puede requerir un enfoque diferente para realizar el trabajo habitual) .Pero adaptándose gradualmente a nuevo sistema, el usuario apreciará todas sus ventajas sobre el anterior: esta es la mejor recompensa para un programador.

Una pequeña nota.

La mayoría de los usuarios no conocen la diferencia entre un administrador de sistema, un programador o un unixoid. Para ellos, un programador significa que puede reparar una computadora, encontrar todo en Internet, soldar un cable roto, restaurar uno eliminado de disco duro información. Por supuesto, esto no es del todo cierto, pero esta es la imagen del programador en la vista usuario regular.

Algunos puntos que merecen especial atención durante la instalación y el funcionamiento posterior del sistema:

  • Cualquier usuario prefiere trabajar con el mismo especialista que conoce todos los problemas que surgen periódicamente durante el funcionamiento. Por lo tanto, si es posible, evite situaciones en las que otro especialista esté trabajando con su cliente.
  • No seas demasiado entrometido con tus consejos, especialmente si no te lo piden. Y no insista en su punto de vista, simplemente exprese su opinión. Deje que la decisión final recaiga en el usuario.
  • Esfuércese por mejorar sus conocimientos no solo en programación, sino también en el área profesional de su cliente, esto le permitirá comunicarse en el mismo idioma. Los usuarios suelen hacer preguntas relacionadas con los aspectos específicos de sus actividades profesionales.
  • El usuario quiere que el sistema funcione constantemente y sin interrupciones. No le importan mucho las explicaciones de las razones del fracaso de su sistema. Sin embargo, si algo sucediera (que siempre es parte del flujo de trabajo), el usuario debe saber quién tiene la culpa y cuándo se ajustará el sistema.
  • Aunque el usuario siempre conoce de antemano los cambios en la estructura del departamento, cambios legislativos, no espere a que le pregunte sobre el momento de la actualización del sistema. Mantener siempre informado al usuario de dicha información.

Hace varios años, cuando se le preguntó "¿para qué trabaja?" podría mover las cejas de manera significativa y decir: "friki". Eso fue suficiente. Explicar asuntos sutiles a personas desprevenidas que, en el mejor de los casos, podían presumir de una línea en su currículum "Usuario confiado de PC" era superfluo, ya que solo generaría más preguntas. Pero los tiempos están cambiando, la alfabetización va en aumento y ahora que " usuario seguro PC "se convirtió en un atavismo, seguido de la palabra una vez universal" técnico informático ".

Las profesiones de programador y desarrollador tienen mucho en común, y en la vida cotidiana estas palabras se suelen utilizar como sinónimos, pero hay una diferencia, aunque no siempre perceptible. De lo contrario, ¿por qué aparecieron conceptos como desarrollador de software, informático y programador?

Programación

Hoy en día no existen reglas claramente definidas sobre quién se llama programador y quién es desarrollador. Por tanto, no hay otra salida que acudir a las fuentes.

Las computadoras, Internet, las comunicaciones móviles, así como una serie de otras cosas maravillosas que ahora son del dominio público, si no fueron inventadas por los militares, tarde o temprano cayeron bajo su delicada ala y supervisión. Si algo puede volar, disparar, explotar o defenderse de acciones enemigas similares, aquí está un equipo de científicos. Firma, consíguelo. En la era de la alta tecnología, un soldado sin un científico lo habría pasado mal; después de todo, incluso cosas como los botines y los chalecos antibalas han absorbido una gran cantidad de conocimientos tecnológicos. ¡Qué podemos decir sobre la programación de cañones láser y misiles intercontinentales!

Si no fuera por la necesidad, que estimuló al Estado a buscar dinero para el financiamiento, no se sabe cuántas décadas después hubiéramos recibido computadoras e Internet a nuestra disposición. Así, los que aún no han tenido tiempo pueden agradecer mentalmente a los estados agresores que, en el fuego de las guerras, dieron a luz y siguen dando a luz a nuevas tecnologías.

E incluso habiendo avanzado hacia el futuro durante un par de décadas, todavía es difícil imaginar algún tipo de Bill Gates, que ensamblaría un eje de computadora de 17 metros y fue impulsado por un motor eléctrico con una potencia de 5 caballos de fuerza, como el Mark-1, desarrollado por varios matemáticos de Harvard bajo contrato con IBM en 1941.

Este negocio era demasiado laborioso y consumía cerebro, por lo tanto, históricamente, sucedió que quien construyó una computadora lo “bailó”. Había pocas computadoras - el mismo "Colossus" al final de la guerra sólo funcionaban 10 piezas. Solo unos años después, comenzaron a aparecer los primeros modelos comerciales, por ejemplo, el IBM 701 (se vendieron 19 unidades el primer año, o el IBM 650 (se vendieron 450 unidades el primer año). Los principales compradores fueron científicos laboratorios, aerolíneas, instituciones gubernamentales.

E incluso si desde 1965 miles de estadounidenses han comenzado a producir el PDP-8, que cuesta "sólo" 18 mil dólares, tiene una arquitectura de memoria imperfecta, razón por la cual un número considerable de proyectos demandantes de recursos se doblaron. Entonces, programar en esos días no era fácil (hola hardware) y no era tan conveniente y accesible como lo es ahora. Solo unas pocas personas sabían programar. Aquellos que podrían ganar algo con esto son aún menos. Y todo este tiempo, el programador conserva merecidamente la gloria de un "nerd", portador de un suéter y frecuentador de bibliotecas. Qué prodigio fuera de este mundo, que se ocupa de un área muy estrecha, inaccesible para las masas.

Históricamente, sucedió que las personas con cerebro que sabían cómo hablar con las máquinas sobre "usted" trabajaban exclusivamente para el complejo militar-industrial o en la ciencia. De aquí verdadero programador en el sentido histórico de la palabra, esta es una persona que escribe programas para el complejo defensa / armas, para poder computacional en algunas oficinas de diseño o institutos científicos, robots de programación, cohetes para vuelos espaciales, etc. Exclusivamente asuntos de importancia estatal. Máxima innovación. El interés monetario está ausente o viene en segundo lugar. Al público no le importa cuántos miles de millones de dólares dieron a los inventores para computadoras e Internet, ni tampoco cuánto dinero se destinó al programa Apollo. Pero ahora todos tienen una computadora en el bolsillo, y en la luna hay una bandera y huellas de botas. Nadie recuerda a los ricos, pero todos recuerdan a los innovadores, porque los primeros consumen, mientras que los segundos dan.

Desarrollo de

Programación comercial en forma pura no existía y no existe hasta ahora - la palabra "programación" está claramente fuera de lugar aquí. Aquí desarrollo- otra cosa. El hecho de que Microsoft, IBM, HP, Apple y otros pioneros de la informática se estaban apoderando de los mercados y ganando enormes cantidades de dinero no negaba el hecho de que cada nuevo producto estaba dando un paso adelante. Estaban resolviendo problemas nuevos y no triviales.

¿Torvalds era programador? Por supuesto. Después de todo, escribió un kernel para Linux. En este caso, no importa en absoluto si utilizó las mejores prácticas y metodologías de desarrollo en el proceso de su trabajo (por ejemplo, si nombró las variables correctamente, si utilizó la memoria de forma óptima, etc.). Lo principal es que funciona. Y los ganadores no son juzgados. Al igual que Brendan Eich, el creador de JavaScript, no se le juzga, aunque objetivamente hay una razón.

¿Es el genio y jefe a tiempo parcial de ceros y unos, siendo incluso más inteligente que Torvalds y Eikh, un programador, si solo hace lo que resuelve los problemas típicos? Por ejemplo, escribe tiendas online. Una pregunta importante: una persona que sirvió en las fuerzas especiales, pero ahora trabaja como guardia de seguridad en una tienda, ¿es un soldado de las fuerzas especiales o un guardia de seguridad? Muchos guardias, para verse mejor ante sus propios ojos, frotándose significativamente los tatuajes del ejército, se llaman a sí mismos fuerzas especiales. Pocas personas ponen la palabra "ex" al lado de su profesión. Pero solo unos pocos admiten que han perdido sus calificaciones y, por lo tanto, trabajan en la protección, o son demasiado duros para su posición, disparando gorriones con un cañón.

Algunos de los programadores de hoy simplemente se parecen a este comando, que claramente está fuera de lugar y se dedica exclusivamente a ganar dinero dejando que su talento se vaya por el desagüe. Existe otra categoría mucho más numerosa de personas (99%) que se autodenominan programadores, de hecho son desarrolladores (esta categoría también incluye redcoders). Escriben y cambian su propio código o el de otra persona, se comunican con el cliente, los clientes, corrigen errores constantemente, porque el desarrollador puede permitírselo; no trabajan por la idea, sino por el dinero: hoy para un tío, mañana para otro. Quién dará más.

Como dijo un académico, "una disertación sobre filosofía debe terminar con una revolución, de lo contrario no es una disertación"; o, en nuestra opinión, el trabajo de un programador debería terminar con un avance tecnológico. De lo contrario, no es trabajo de un programador.

Y no se deje engañar por las entradas en el trabajo a la "ingeniero de software de primera categoría". Los propios RR.HH. no saben lo que están haciendo, utilizando los sellos de un país que desapareció hace 25 años. Basta con hacer una pregunta principal: "¿En qué estás trabajando ahora?" Porque puedes embarcarte en un desarrollo arbitrariamente complejo con una arquitectura engorrosa y difícil de entender, repleta de una masa de adicciones y elementos aplastantes para el cerebro, lo que requiere habilidades mentales extraordinarias. Pero si esto es una tienda en línea, otro "servicio" succionado del dedo, un robot de spam o, Jesús no lo quiera, un juego de navegador, y una persona no programa en su tiempo libre, entonces huele a desarrollo. Como en la frase "desarrollo de campos petroleros".

Por tanto, a la pregunta "¿En qué trabajas?" una respuesta más precisa podría ser “Soy un programador de corazón, pero trabajo como desarrollador”, “Soy un desarrollador, pero algún día me convertiré en programador” o: “Soy un desarrollador, corto repollo”. Cuando una situación requiere una respuesta imprecisa y rápida, se puede entender al "programador", después de todo desarrollador en el contexto del software, la palabra es relativamente nueva. Pero llamarse programador mientras bebe jugo en las afueras de una subcontratación es engañarse a sí mismo.

A menudo nos enfrentamos al hecho de que las personas no comprenden la diferencia entre un administrador de sistemas y un programador, y todos los especialistas en TI se denominan programadores. Algunos se sienten ofendidos, mientras que otros ya están acostumbrados. Pero quiero intentar aclarar esta diferencia para que quede claro para la mayoría que lea este artículo :)
Si la organización tiene un departamento de TI (ingeniería y técnico), o más simplemente computadora, entonces tiene la siguiente división:

- la tarea principal es controlar el funcionamiento de los servidores y el software del servidor, la administración centrales telefónicas, la política de seguridad es, en general, el cerebro de toda la estructura informática de una organización.

Especialistas (o ingenieros) apoyo técnico - estos son los chicos que están comprometidos computadoras convencionales usuarios, personalícelos, ayude a los usuarios a resolver problemas actuales, atrape virus en las computadoras de los usuarios, etc. etc. De hecho, un especialista es un futuro administrador de sistemas, ya que el administrador del sistema también puede realizar el trabajo de un especialista. Un especialista puede realizar el trabajo de un administrador del sistema si la dirección le permite: administrador de sistema la gerencia tiene más confianza :)

Programadores- estos son tipos que constantemente escriben varios textos en un idioma incomprensible para un usuario común. Estos textos luego se convierten en programas útiles, utilidades o simplemente módulos (opciones adicionales) para programas útiles.

FPGA son las siglas de "Field Programmable Gate Array" y es una gran variedad de puertas que se pueden programar y reconstruir en cualquier momento y en cualquier lugar. Muchos usuarios aún no entienden qué es una FPGA. "Gran conjunto de puertas" es una descripción simplificada del modelo. Algunas FPGA tienen bloques duros integrados: controladores de memoria, interfaces de comunicaciones de alta velocidad y terminales PCIe. Hay muchas puertas dentro de la FPGA que se pueden conectar libremente. El principio de funcionamiento es más o menos similar a la conexión de microcircuitos individuales de elementos lógicos. Los FPGA son producidos por las empresas líderes mundiales Xilinx, Altera y Microsemi.

Historial de desarrollo de FPGA

La industria FPGA ha crecido a partir de dispositivos lógicos PROM y PLD. En 1970, Philips inventó la matriz programable de campo. En el diseño de tal FPGA, que constaba de dos planos, se logró una implementación específica de circuitos lógicos: cable programable "Y" u "O". Esto le dio la capacidad de implementar la función en forma de suma de productos.

Altera se creó en 1983 y en 1984 lanzó el primer dispositivo lógico reprogramable de la industria: el EP300 con una ventana de cuarzo en un paquete, que hizo posible usar una lámpara UV en la matriz para quitar la etiqueta EPROM.

Para superar las dificultades de costo y velocidad, se desarrolló una lógica de matriz programable, que incluía solo un "Y" programable ingresado en una puerta "O" fija. PAL y PLA, junto con otras variantes, se agrupan como dispositivos lógicos programables simples (SPLD). Se han utilizado FPGA que están integrados en un solo chip con interconexiones provistas para la interconexión de bloques de software para satisfacer las crecientes demandas tecnológicas. Se denominan PLD complejos y son desarrollados por Altera.

Transistores: una clase diferente dispositivos electrónicos programable basado en máscaras de matriz de puertas. Están formados por matrices de transistores que se pueden conectar mediante cables personalizados. Han sido reemplazados por bloques lógicos y el usuario ahora puede realizar la personalización en el sitio en lugar de en el laboratorio de producción.

La idea de la primera FPGA comercialmente viable vino de los cofundadores de Xilinx, Ross Freeman y Bernard Wonderschmitt. El XC2064 se inventó en 1985 y constaba de 64 bloques lógicos configurables con 3 tablas de referencia. Proporciona una comprensión moderna de lo que es una FPGA. Fue a fines de la década de 1980 cuando el experimento propuesto por Steve Kasselman para crear una computadora con 6.000.000 de puertas reprogramadas encontró patrocinio en la División de Guerra de Superficie de la Marina de los EE. UU., Y luego recibió una patente en 1992.

A fines de 1990, había mucha competencia en la producción de FPGA, luego la participación de mercado de Xilinx comenzó a disminuir. Jugadores como Actel, Altera, Lattice, QuickLogic, Cypress, Lucent y SiliconBlue se han hecho un hueco en el mercado global de FPGA junto con Xilinx. En 1997, Adrian Thompson logró combinar la programación FPGA y la tecnología de algoritmos genéticos con FPGA, marcando el comienzo de una nueva era de Evolvable.

Hoy en día, los FPGA se han vuelto bastante asequibles y, por lo tanto, continúan ganando popularidad en los mercados de consumo. Consisten en un conjunto de celdas lógicas llamadas tablas de búsqueda LUT rodeadas por una estructura que proporciona un sistema flexible que puede implementar casi cualquier algoritmo digital.

Principios de programación

La programación de FPGA para principiantes es el proceso de aprendizaje, planificación, diseño e implementación de una solución FPGA. El número y tipo de diseños varían de un programa a otro. Crear un documento de requisitos y crear un documento de diseño que explique cómo se implementará la solución propuesta puede ser muy útil para resolver problemas potenciales.

Tomarse el tiempo para crear un documento de proyecto de calidad lo salvará en el futuro en refactorización, depuración y corrección de errores. La implementación de una solución utilizando la programación FPGA implica la creación de un proyecto utilizando uno de los métodos de introducción del proyecto. Estos incluyen esquemas o código HDL como Verilog o VHDL. Los FPGA pueden programar un archivo de salida en un FPGA físico utilizando herramientas de programación Altera FPGA. La introducción del diseño esquemático ya no se utiliza en la industria. Las herramientas de proveedores como ISE y Vivado y Numato Lab se encargaron casi en su totalidad de la síntesis y la programación.

RTL son las siglas de Register Transfer Level. El desarrollador también puede encontrar los términos Register Transfer Logic o Register Transfer Language, que significan lo mismo en el contexto del diseño de equipos. RTL es una abstracción de nivel superior para el diseño de hardware digital, en algún lugar entre el modelado estrictamente conductual en un extremo y el puramente estructural en el nivel de la puerta de enlace en el otro.

Modelar puertas significa describir hardware usando puertas básicas, lo cual es tedioso. Se puede pensar que RTL es análogo al término "pseudocódigo" utilizado en los fundamentos de la programación FPGA. El diseño de hardware se puede describir como una secuencia de pasos o flujo de datos de un conjunto de registros al siguiente en cada ciclo de reloj.

RTL también se denomina diseño de "flujo de datos". Una vez que el proyecto RTL está listo, es más fácil convertirlo en código HDL real utilizando lenguajes como Verilog, VHDL, SystemVerilog o cualquier otro lenguaje de descripción de hardware.

FPGA es mucho más que un conjunto de puertas. Aunque es posible construir circuitos lógicos de cualquier complejidad, organizando y conectando elementos lógicos. Es una forma de expresar la lógica en un formato simple que, en última instancia, se puede convertir en una matriz de elementos. Dos métodos populares para hacer esto son la introducción de un esquema y HDL. Antes de que se usara ampliamente, los ingenieros diseñaron todo con esquemas. Eran muy simples de pequeños proyectos pero dolorosamente incontrolable, para los grandes. ¡Uno solo tiene que imaginar cómo los ingenieros de Intel están dibujando diagramas para un Pentium, que tiene millones de puertas de enlace! Esto es inaceptablemente difícil.

Verilog es un lenguaje de descripción de hardware HDL que se puede utilizar para circuitos digitales en forma de texto. Aprender Verilog no es tan difícil si el usuario tiene experiencia en programación. VHDL es otro HDL popular ampliamente utilizado en la industria. Verilog y VHDL tienen más o menos la misma aceptación en el mercado, pero los usuarios generalmente eligen Verilog porque es fácil de aprender y tiene similitudes sintácticas con C.

Los FPGA se pueden considerar como los bloques de construcción que permiten ajuste deseado equipo. Es una forma especial de PLD con mayor densidad y funcionalidad mejorada en menos tiempo usando CAD. Los FPGA están disponibles en diferentes versiones según la tecnología de programación utilizada.

Se pueden programar usando:

  1. Tecnología Antifuse.
  2. Programación basada en Tecnología flash como dispositivos de Actel.
  3. FPGA se puede reprogramar varios miles de veces, lo que lleva varios minutos en el campo para reprogramarse y tiene memoria no volátil.

FPGA basado en tecnología SRAM que ofrece reprogramación ilimitada y reconfiguración muy rápida o reconfiguración parcial sobre la marcha con pocos circuitos adicionales. La mayoría de empresas como Altera, Actel, Atmel y Xilinx fabrican estos dispositivos.

Bloques lógicos configurables

Independientemente de los diferentes fabricantes y de las distintas arquitecturas y conjuntos de características, la mayoría de las FPGA tienen un enfoque común. Los bloques de construcción básicos de cualquier FPGA son un bloque lógico programable flexible (CLB) rodeado por bloques de E / S programables con una jerarquía de canales de enrutamiento que conectan los distintos bloques de la placa.

Además, pueden consistir en DLL para asignar y administrar el reloj y la memoria RAM de un bloque asignado con el bloque de construcción principal de una celda lógica. Este último consta de un generador de funciones de entrada, lógica de transferencia y elementos de almacenamiento. Los generadores se implementan como tablas de consulta y dependen de la introducción. Por ejemplo, el Xilinx Spartan II tiene 4 LUT de entrada, cada uno de los cuales proporciona RAM síncrona de 16X1 bits utilizando multiplexores como registros de desplazamiento para capturar datos en modo ráfaga. Los elementos de almacenamiento son sensibles a los bordes de los gatillos o al nivel de las válvulas.

  1. La lógica aritmética incluye una puerta XOR para la asignación completa de sumadores y líneas de acarreo.
  2. Bloque de E / S y matriz de enrutamiento. Esta unidad tiene entradas y salidas que admiten una amplia gama de estándares e interfaces de señalización.

El bloque de E / S básico se muestra a continuación.

Los búferes en las rutas de entrada y salida enrutan las señales a la lógica interna y los pads de salida directamente o mediante un disparador. Se pueden configurar para cumplir con varios estándares de alarma admitidos, que pueden ser definidos por el usuario e instalados externamente.

Matriz de enrutamiento

En cualquier línea de montaje, el segmento lento determina el rendimiento general. Los algoritmos de enrutamiento se utilizan para diseñar las formas más eficientes de garantizar un rendimiento óptimo. El enrutamiento se realiza en diferentes niveles, como enrutamiento local de propósito general entre diferentes CLB, enrutamiento de E / S entre bloques y CLB, enrutamiento dedicado para clases de señales específicas para maximizar el rendimiento y enrutamiento global para el reloj y otra distribución de señal altamente ventilada. . Las familias FPGA también tienen grandes estructuras de bloque RAM para complementar las LUT RAM asignadas, que varían en tamaño para varios dispositivos FPGA.

El diseño de FPGA implica básicamente el mismo enfoque que cualquier sistema VLSI, cuyos pasos principales son diseño, simulación de comportamiento, síntesis, simulación después de síntesis, traducción, mapeo y enrutamiento, así como análisis posterior como simulación de tiempo y análisis de tiempo estático. . En la computadora, el diseño se ve ordenado y en mosaico, pero de hecho hay una ubicación y un enrutamiento imperfectos, lo que conduce a un rendimiento reducido.

Para mejorar el rendimiento de FPGA, siempre se pueden usar más transistores. El área de servicio es alta. La instalación de más transistores significa que son posibles diseños a gran escala. Las fugas son un problema grave para las FPGA y, al mismo tiempo, son de interés. La arquitectura FPGA asincrónica funciona mejor cuando se combina con tecnología de canalización que reduce las entradas globales y mejora rendimiento.

Calidad y problemas de la puerta

La seguridad del sistema siempre ha sido una preocupación importante, ya que el código debe expandirse cada vez que se carga en la FPGA. Esta flexibilidad hace que FPGA amenaza potencial modificaciones maliciosas durante la fabricación, por lo que el cifrado de los flujos de bits acudió en su ayuda a tiempo.

A menudo, los diseñadores y usuarios sin experiencia se enfrentan al dilema de cuán potente FPGA es adecuado para su desarrollo. Los fabricantes suelen proporcionar métricas como "recuento de puertas". Por ejemplo, la programación de Xilinx FPGA usa 3 métricas para medir el tamaño de FPGA, puertas máximas, bits de memoria máximos y rango de puerta de enlace típico. Siempre que sean consistentes, la migración entre modelos se simplifica un poco, pero rara vez ofrece comparaciones precisas entre proveedores debido a la diversidad en las arquitecturas y debido a las diferencias en el rendimiento.

La mejor métrica es una comparación del tipo y la cantidad de recursos lógicos proporcionados. Además de esto, el diseñador debe comprender completamente qué se necesita exactamente del dispositivo, ya que los fabricantes pueden presumir de las capacidades que serán de menor valor para el trabajo. Por ejemplo, el Stratix II EP2S180 de Altera tiene aproximadamente 1.86.576 LUT con 4 entradas, y el Xilinx Virtex-4 XC4VLX200 contiene 1.78.176 respectivamente. Sin embargo, si solo se necesitan 177K LUT para el diseño, será suficiente.

Si la RAM es una métrica deseable para un diseñador, entonces ni el Xilinx XC4VLX200 de 6Mbit ni el Altera EP2S180 de 9Mbit serán preferidos sobre los menos anunciados, más viejo modelo XC4VFX140 con 9,9 Mbps.

Software y lenguajes de programación

La programación de Altera FPGA para principiantes comienza con la selección del idioma. La opción C, C ++ o System C le permite aprovechar las capacidades de los dispositivos más grandes y al mismo tiempo lograr la semejanza de gráficos de desarrollo realistas. La usabilidad basada en C para el diseño de FPGA es proporcionada por HLS (High Level Synthesis), que ha estado al borde de un gran avance durante muchos años con una herramienta como Handle-C. Esto se ha convertido recientemente en una realidad con los principales proveedores Altera y Xilinx que ofrecen HLS en sus kits de herramientas Spectra-Q y Vivado HLx, respectivamente.

Varias otras implementaciones de programación de FPGA de Altera están disponibles para principiantes en C, como OpenCL, que está destinada a desarrolladores de software que buscan mejorar el rendimiento con FPGA sin un conocimiento profundo del diseño de FPGA.

Al igual que con HDL, HLS tiene limitaciones cuando se utilizan enfoques de programación FPGA en C, al igual que con HDL tradicional, los desarrolladores tienen que trabajar con un subconjunto del lenguaje. Por ejemplo, es difícil sintetizar e implementar llamadas al sistema porque necesita asegurarse de que todo sea limitado y de un tamaño fijo. Lo bueno de HLS es que puede desarrollar sus propios algoritmos de punto flotante y tiene una herramienta de punto flotante a fijo HLS.

Programar FPGA con el software Xilinx no es nada difícil. Puede obtenerlo comprando productos Xilinx de forma gratuita oa un precio específico para modelos específicos. Puede acceder al video en el sitio de perfil, que muestra claramente el procedimiento de uso. De todas las empresas entre las que puede elegir al buscar matrices de puertas programables, Xilinx es, con mucho, la mejor. Son los creadores de este producto y lo han mejorado a lo largo de los años. El software propietario es más poderoso que nunca.

Etapas de diseño

La formación en programación FPGA se puede realizar online, ya que la plataforma está bien representada en Internet. Al configurar una FPGA, el primer paso es diseñar un circuito que requiera conocimientos de electrónica digital. A diferencia de la programación, es mucho más difícil comenzar a dividir el código si la arquitectura del programa no está clara. Tan pronto como queda claro lo que se necesita implementar, comienzan a describir el circuito utilizando uno de los lenguajes: Verilog o VHDL.

El hecho que indica un cambio de paradigma es que no se denominan lenguajes de programación FPGA, sino lenguajes de descripción. Debido a la complejidad de probar circuitos digitales, en esta etapa se suelen utilizar bancos de pruebas para simular el comportamiento del equipo. Este tipo de instrumento permite ver el estado de la señal en cualquier momento y comprobar si existen transiciones con los resultados deseados.

La tercera etapa que se conoce como síntesis de circuitos es una de las claves. Selecciona los elementos utilizados y su relación de acuerdo con los archivos de descripción. Este paso requiere herramientas que, en la mayoría de situaciones, facilitan y automatizan las tareas.

Hardware y puesta en servicio

Intel Quartus Prime Software Suite Lite Edition - software para diseño FPGA. Es ideal para principiantes, ya que se puede descargar gratis y no requiere un archivo de licencia. Puede descargar el software desde el sitio web del fabricante. Los archivos son grandes (varios gigabytes) y pueden tardar mucho en descargarse e instalarse. Para minimizar el tiempo y el espacio en disco requerido, se recomienda que descargue solo los elementos necesarios para las tareas del usuario. Cuando se le solicite la descarga de archivos, desmarque "Seleccionar todo" y seleccione solo compatibilidad con dispositivos Quartus Prime y Cyclone V.

Algoritmo para crear un proyecto:

  1. Abra el Asistente para proyectos nuevos.
  2. Seleccione Siguiente> Directorio> Nombre> Objeto nivel superior.
  3. Ellos seleccionan un directorio para colocar el proyecto, por ejemplo, "Blink" y lo colocan en la carpeta intelFPGA_lite, pero usted puede colocarlo en cualquier lugar y hacer clic en "Siguiente".
  4. Cuando se le solicite que cree un directorio, seleccione "Sí".
  5. Seleccione "Proyecto vacío" y haga clic en "Siguiente".
  6. Agregue archivos y Siguiente.
  7. Configure familias, dispositivos y placas seleccionando lo siguiente: familia - Cyclone V, dispositivo - Cyclone V SE, base, nombre del dispositivo: 5CSEBA6U2317.
  8. Elegir dispositivo específico, presione las flechas arriba / abajo para ver la lista de dispositivos compatibles hasta que aparezca 5CSEBA6U2317.
  9. Es posible que el usuario deba expandir el campo Nombre para ver el nombre completo del dispositivo, haga clic en Siguiente.
  10. Al configurar la herramienta EDA, utilizan herramientas estándar, por lo que no habrá cambios, haga clic en "Siguiente" y "Finalizar". Aparecerá una pantalla de resumen.
  11. Cree un archivo HDL incrustando Verilog como HDL.
  12. Vaya a la pestaña Archivo (ventana principal) y seleccione Nuevo.
  13. Seleccione Verilog HDL File y presione el botón OK.
  14. Elija Archivo> Guardar como.
  15. Seleccione un nombre de archivo. Este es el nombre de archivo de nivel superior y debe ser el mismo que el nombre del proyecto.
  16. Clic en Guardar".
  17. Cree un módulo Verilog.
  18. Copie y pegue el código de Verilog colocado a continuación en la ventana blink.v, y luego guarde el archivo de código.
  19. Haga clic con el botón derecho en Analizar y síntesis y luego haga clic en Iniciar para realizar una verificación de sintaxis y síntesis en su código Verilog.

Si el proceso se completa correctamente, se muestra una marca de verificación verde junto al análisis y la síntesis. Si hay un error, verifique la sintaxis y asegúrese de que coincida exactamente con el bloque de código anterior.

Todos los programadores experimentados saben que programas complejos, incluso las subrutinas no funcionan bien la primera vez. La capacidad de abstracción de una persona, basada en la experiencia, le permite encontrar soluciones sin preocuparse por los más mínimos detalles. Pero la cruda verdad es que sistema fisico, en el que están incrustados los programas, requiere que se tenga en cuenta todo antes de que todo funcione.

Con mejora herramientas de software para el desarrollo de FPGA principalmente de proveedores tradicionales, así como de proveedores de herramientas independientes: Synplicity, FPGA - cada vez más populares día a día. Ahora los FPGA han comenzado a incluir hardware especializado para funciones específicas del cliente, lo que reduce los costos para los fabricantes. Por lo tanto, en el futuro, puede haber competencia entre sistemas rígidos y baratos con núcleos flexibles. Se espera que los costos disminuyan aún más en el futuro cercano a medida que los FPGA aumenten su popularidad.

Los fabricantes comenzaron a experimentar con el concepto de incorporar FPGA en circuitos integrados Para crear dispositivo híbrido... El enfoque sigue estando en el enrutamiento de interconexión, con menos cambios observados en las arquitecturas CLB. A medida que las FPGA continúen incluyendo procesadores, la próxima generación requerirá más que solo conocimiento hardware diseño digital, sino también la experiencia de los desarrolladores en el proceso de programación única de FPGA. En general, se espera que las FPGA se hagan con una participación de mercado en los dispositivos ASIC y se conviertan en la tecnología dominante, que abarca muchas aplicaciones de diversos campos.