Learning Verilog en línea

4

Ahora que voy a utilizar el PSoC 5 como mi microcontrolador de elección, me gustaría aprender Verilog para poder crear mis propios periféricos para él.

He pasado algún tiempo buscando en la web recursos de aprendizaje de Verilog (especialmente ASIC World ), y creo que he aprendido Algunas cosas al respecto, sin embargo, también siento que hay un gran agujero en mi entendimiento. Esto se debe a que hay algo que ninguno de los recursos parece enseñar.

Una vez que conozca la sintaxis, ¿cómo hago para diseñar un periférico Verilog?

Lo que quiero decir es que todavía estoy desconcertado por los diseños que la gente crea en Verilog. P.EJ. ¿Por qué lo hicieron de esa manera, no de la manera obviamente más simple? Por ejemplo, encontré este código :

task add;      // task definition
 input a, b;   // two input argument ports
 output c;     // one output argument port
 reg R;        // register declaration
 begin
   R = 1;
   if (a == b)
     c = 1 & R;
   else
     c = 0;
 end
endtask

Debe haber una buena razón para el diseño, pero me parece extraño. Obtengo la sintaxis, veo lo que hace, pero no entiendo por qué. ¿Hay algún recurso para aprender a pensar en Verilog?

    
pregunta Rocketmagnet

5 respuestas

7

MIT Opencourseware 6111 es un curso gratuito en línea sobre sistemas digitales.

El programa dice:

  

Al completar 6.111, los estudiantes tendrán confianza en sus habilidades para concebir y llevar a cabo un proyecto complejo de diseño de sistemas digitales en un equipo de dos o tres personas. En términos más generales, estarán listos para manejar problemas de diseño sustanciales y desafiantes. En particular, los estudiantes podrán:

     
  1. explique los elementos de las abstracciones de los sistemas digitales, como la lógica digital, el álgebra de Boole, los flip-flops, las máquinas de estado finito (FSM) y los sistemas microprogramados.   diseñe sistemas digitales simples basados en estas abstracciones digitales y el "paradigma digital" que incluye información muestreada y discreta.
  2.   
  3. utilice herramientas y dispositivos digitales básicos como osciloscopios digitales, PAL, PROM y VHDL.
  4.   
  5. trabaje en un equipo de diseño que pueda proponer, diseñar, implementar con éxito e informar sobre un proyecto de diseño de circuito digital.
  6.   
  7. comunicar el propósito y los resultados de un proyecto de diseño en presentaciones escritas y orales.
  8.   

Ese curso utiliza VHDL en lugar de Verilog, pero por qué para ambos idiomas es el mismo y todas las tareas podrían implementarse en cualquiera de los dos idiomas.

    
respondido por el inthesound
2

Si desea pensar en Verilog, es mejor pensar en Verilog como una descripción del hardware que desea diseñar en lugar de describir una secuencia de pasos a ejecutar. Para hacerlo, debe pensar cómo se traducirá su código de Verilog en circuitos, que es el dominio del diseño digital.

La mayoría de los departamentos universitarios de EE requieren un diseño digital como una clase de segundo nivel. Ahora que lugares como Stanford y MIT están poniendo los materiales del curso en línea, es posible que pueda encontrar notas y ejercicios de esa manera.

Tiendo a encontrar libros de texto más cohesivos que tratando de buscar en muchos sitios web. Hay muchos libros de texto de diseño digital por ahí, algunos buenos y otros malos. Uno de mis libros favoritos es Principios y prácticas de diseño digital de John Wakerly. Además de la teoría, Wakerly incluye mucha información práctica basada en años de experiencia en diseño digital.

Cuando llegue a un punto en el que desee ver el código, intente OpenCores . Al igual que con cualquier colección de proyectos de código abierto, algunos son excelentes y otros podrían necesitar más trabajo. En general, puede elegir los de mayor calidad en función de la actividad y los comentarios.

    
respondido por el wrdieter
1

Creo que este fragmento de código es solo eso: un fragmento de código que muestra todas las características de una función de idioma particular (tareas de llamada) pero que en realidad no hace nada útil

Sin embargo, lo que podría no ser obvio en este fragmento es que los parámetros y R tienen tiempos de vida más allá de la llamada a la función, a diferencia de C en Verilog, si vuelve a llamar a la tarea la variable R "local". el valor con el que lo dejó la última vez que lo llamó: es fácil pensar en las variables verilog de esta manera: en la lógica del mundo real no puede simplemente crear almacenamiento en la pila, todo debe poder crearse estáticamente cuando se crea el diseño (hay algunos lugares donde esto no es cierto, por lo general, las funciones se agregan más adelante al idioma)

    
respondido por el Paul
1

Utilicé fpga4fun.com para aprender los conceptos básicos de Verilog y me pareció un excelente recurso con ejemplos simples y bien documentados. Me gusta el hecho de que los ejemplos sean para el tipo de tareas que normalmente haría en un FPGA o CPLD, siempre y cuando no esté en el negocio de diseñar CPU.

    
respondido por el Guan Yang
0

La recompensa por esto ya ha sido seleccionada (junto con la mejor respuesta), pero agregaré lo que acabo de encontrar.

He encontrado un libro electrónico gratuito para aprender VHDL escrito para personas que básicamente tienen al menos cierta experiencia en programación tradicional, pero no experiencia HDL. Se llama Free Range VHDL y acabo de comenzar a leerlo y realmente tiene sentido para mí. Y estoy bastante seguro de que una vez que aprendas un HDL, será mucho más fácil aprender otro HDL (como Verilog)

    
respondido por el Earlz

Lea otras preguntas en las etiquetas