Autor Tema: Comentarios Ejemplitos Verilog  (Leído 10979 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Comentarios Ejemplitos Verilog
« en: 09 de Octubre de 2010, 18:19:14 »
Este foro será utilizado para realizar los comentarios acerca de los ejemplitos en verilog que iré posteando.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado jarelys

  • PIC10
  • *
  • Mensajes: 2
Re: Comentarios Ejemplitos Verilog
« Respuesta #1 en: 11 de Octubre de 2010, 19:01:51 »

El SW[0] corresponde a P11, pero en la tarjeta dice "SW[0]-M4".

Es un error de impresión, asegurense de escribir:

NET "x" LOC = "P11";

que corresponde al SW[0].


Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Comentarios Ejemplitos Verilog
« Respuesta #2 en: 19 de Noviembre de 2010, 13:19:49 »
Hola bigluis,

Solo quiero decirte que muchas gracias por compartir con todos tus avances con la FPGA.

SALUDOS!
« Última modificación: 19 de Noviembre de 2010, 13:22:20 por LABmouse »

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Comentarios Ejemplitos Verilog
« Respuesta #3 en: 20 de Noviembre de 2010, 16:46:56 »
:) Gracias a ustedes he adquirido muchos conocimientos en los ultimos años, este aporte es mi forma de agradecerles.

 Luego seguiré poniendo más aportes.

 :-/
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado agauss

  • PIC16
  • ***
  • Mensajes: 147
Re: Comentarios Ejemplitos Verilog
« Respuesta #4 en: 09 de Enero de 2011, 05:28:33 »
Hola bigluis, tengo una pregunta. Es posible asignar los pines del dispositivo desde el codigo de programa ya sea para verilog o vhdl. Pasa que estoy usando ispLEVER y este no cuenta con el asistente para definir entradas y salidas en componentes de baja escala como las GALs. Quizas me explique mejor con un ejemplo:

En codigo ABEL tendria algo asi...

   A,B,Y PIN 2,3,23 ISTYPE 'COM';

Para una GAL22V10 con esto estaria asignando las variables A, B y Y a los pines fisicos 2, 3 y 23 del chip. ¿Es posible hacer algo similar usando VERILOG o VHDL? te agradezco de antemano!!!
No es el conocimiento, sino el acto de aprendizaje, y no la posesión, sino el acto de llegar allí, que concede el mayor disfrute.
"Carl Friedrich Gauss"

El tacto es el arte de hacer un punto sin hacer un enemigo.
"Isaac Newton"

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Comentarios Ejemplitos Verilog
« Respuesta #5 en: 09 de Enero de 2011, 15:07:56 »
Como muestro en la parte inferior del mensaje http://www.todopic.com.ar/foros/index.php?topic=32327.msg269849#msg269849 la asignacion de los pines la hago de manera manual sin utilizar el asistente. Para hacer esto es necesario crear un archivo *.ucf (universal constraint file) en el que se designa cada una de las entradas y salidas.

Para realizar esto debes dar clic en el menu Proyecto->New Source, y luego debes ejejir el universal constraint file y le das el nombre correspondiente.

En cada uno de los ejemplos que muestro se encuentra un archivo *.ucf, en los primeros ejemplos el archivo *.ucf lo cree manuelmente, pero luego utilice un archivo al que le llamao universal.ucf que me permite cambiar los pines a utilizar con mucha facilidad.

Si observas el mensaje http://www.todopic.com.ar/foros/index.php?topic=32327.msg269849#msg269849 en la parte inferior aparece el siguiente codigo.
Código: [Seleccionar]
net "a" loc = "p11";    #net a conectada al pin P11 del FPGA
net "b" loc = "l3";     #net b conectada al pin l3 del FPGA
net "z0" loc = "m5";    #net z0 conectada al pin m5 del FPGA
net "z1" loc = "m11";   #net z1 conectada al pin m11 del FPGA
net "z2" loc = "p7";    #net z2 conectada al pin p7 del FPGA
net "z3" loc = "p6";    #net z3 conectada al pin p6 del FPGA
net "z4" loc = "n5";    #net z4 conectada al pin n5 del FPGA
net "z5" loc = "n4";    #net z5 conectada al pin n4 del FPGA

Este es el codigo ucf para este ejemplo.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado metalm

  • PIC10
  • *
  • Mensajes: 39
Re: Comentarios Ejemplitos Verilog
« Respuesta #6 en: 31 de Enero de 2011, 15:46:43 »
Hola!

Estoy usando Verilog pero hay una cosa que no entiendo y no logro encontrar información sobre esto:

Esta bien que en el TOP yo declare absolutamente todos los pines de entrada y salida que uso en el integrado? de ahi al instanciar los modulos, los conecto a esos pines, no se si se entiende.

Por ejemplo, yo tengo un modulo que multiplexa los displays de 7 segmentos, que lo puedo instanciar de esta manera:
hex_to_sseg U1 (.data({4'b0000,SW}), .clock(CLK), .an(DISP_AN), .sseg(DISPLAY));

y yo en el top, tengo declarados estos puertos:
module top(
   input [7:0] SW,
   input CLK,
   output [0:6] DISPLAY,
   output [7:0] LEDS,
   output [3:0] DISP_AN // Anodos de los displays
);

O sea, mientras mas complejo se hace el diseño, por ejemplo si el fpga tuviera 100 pines IO, en el top me quedarian declarados los 100 pines, esta bien eso?

gracias!!

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Comentarios Ejemplitos Verilog
« Respuesta #7 en: 31 de Enero de 2011, 21:20:45 »
Así es, una de las ventajas pricipales de utilizar un módulo superior es que puedas reutilizar los nombres de los pines en futuros proyectos.

Muchas veces se hace díficil realizar un módulo superior mediante código por que a medida que el proyecto se hace más complejo es necesario que utilices más módulos, para ello el ISE posee una forma de instanciar e interconectar los módulos mediante esquemáticos. En esta forma verás un poco más clara la declaración e interconección de los módulos, al principio es bastante tedioso aprender a utilizar los esquemáticos pero luego se hace más conveniente.

Otra ventaja de utilizar un módulo superior con el mismo nombre de pines es que puedes utilizar siempre el mismo archivo *.ucf o archivo de limitaciones, que es el que se encarga de realizar la interconexión de cada pin físico con cada pin del programa.

Lo que yo hago es utilizar un archivo al que llamamos universal.ucf y luego comentar o descomentar cada una de las líneas correspondiente a los pines si es que los voy a utilizar o no.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado metalm

  • PIC10
  • *
  • Mensajes: 39
Re: Comentarios Ejemplitos Verilog
« Respuesta #8 en: 01 de Febrero de 2011, 20:04:14 »
Así es, una de las ventajas pricipales de utilizar un módulo superior es que puedas reutilizar los nombres de los pines en futuros proyectos.

Muchas veces se hace díficil realizar un módulo superior mediante código por que a medida que el proyecto se hace más complejo es necesario que utilices más módulos, para ello el ISE posee una forma de instanciar e interconectar los módulos mediante esquemáticos. En esta forma verás un poco más clara la declaración e interconección de los módulos, al principio es bastante tedioso aprender a utilizar los esquemáticos pero luego se hace más conveniente.

Otra ventaja de utilizar un módulo superior con el mismo nombre de pines es que puedes utilizar siempre el mismo archivo *.ucf o archivo de limitaciones, que es el que se encarga de realizar la interconexión de cada pin físico con cada pin del programa.

Lo que yo hago es utilizar un archivo al que llamamos universal.ucf y luego comentar o descomentar cada una de las líneas correspondiente a los pines si es que los voy a utilizar o no.

Muchas gracias! yo hacia lo mismo del UCF y lo del top con todas las declaraciones, pero no sabia si lo estaba haciendo mal.

O sea, yo si tengo un diseño que use registros INOUT, yo se que estos solo se encuentran en los IOB, o sea que los buffers de alta impedancia se pueden usar solo en los pines (al menos en xilinx). Si yo declaro un modulo utilizando INOUT que no esta en el top, al interconectarlo por wires a los INOUT declarados en el top, el software lo entiende bien o estarias generando un error?

gracias!

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: Comentarios Ejemplitos Verilog
« Respuesta #9 en: 02 de Febrero de 2011, 17:31:55 »
Hola metalm.

 :oops: No entiendo muy bien tu pregunta, lo que ocurre es que en la actualidad no he utilizado ningun pin como INOUT a la vez, unicamiente como entrada (input) o como salida (output) separadas.

Lo que si te puedo decir es que la unica forma de conectar los pines de un modulo interno con los pines del FPGA es que declares los pines del FPGA como "wire".
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado metalm

  • PIC10
  • *
  • Mensajes: 39
Re: Comentarios Ejemplitos Verilog
« Respuesta #10 en: 02 de Febrero de 2011, 19:44:20 »
Hola metalm.

 :oops: No entiendo muy bien tu pregunta, lo que ocurre es que en la actualidad no he utilizado ningun pin como INOUT a la vez, unicamiente como entrada (input) o como salida (output) separadas.

Lo que si te puedo decir es que la unica forma de conectar los pines de un modulo interno con los pines del FPGA es que declares los pines del FPGA como "wire".

gracias! actualmente me estoy volviendo completamente loco para hacer un shift register (SPI) jajaja

Desconectado agauss

  • PIC16
  • ***
  • Mensajes: 147
Re: Comentarios Ejemplitos Verilog
« Respuesta #11 en: 21 de Marzo de 2011, 17:23:56 »
Por fin pude dar con la forma para asignacion de PINES en VHDL. Al parecer no hay una forma estandar de hacer esto, es decir, depende del fabricante del compilador. Por lo general he trabajado con WARP galaxy y despues migre a ispLEVER de Lattice Semiconductors. Pues bien los ejemplos de signacion de pines en el propio codigo VHDL que traigo son precisamente para estos compiladores (warp e isplever).

Esta seria la version en warp:

Código: [Seleccionar]
library ieee;
use ieee.std_logic_1164.all;

entity and2e is
port(
   A,B: in  std_logic;
     F: out std_logic);

attribute pin_numbers of and2e: entity is
   "A:2 B:3 F:23";
end and2e;

architecture comportamental of and2e is
begin

   F <= B and A;

end comportamental;

Código: [Seleccionar]
attribute pin_numbers of and2e: entity is
   "A:2 B:3 F:23";
end and2e;

En esta parte se aprecia la asignacion de A,B y F a los pines 2,3 y 23 respectivamente.
No es el conocimiento, sino el acto de aprendizaje, y no la posesión, sino el acto de llegar allí, que concede el mayor disfrute.
"Carl Friedrich Gauss"

El tacto es el arte de hacer un punto sin hacer un enemigo.
"Isaac Newton"

Desconectado agauss

  • PIC16
  • ***
  • Mensajes: 147
Re: Comentarios Ejemplitos Verilog
« Respuesta #12 en: 21 de Marzo de 2011, 17:32:14 »
Ahora la version en isplever:

Código: [Seleccionar]
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity and2e is
port(
   A: in  std_logic;
   B: in  std_logic;
   F: out std_logic);

attribute LOC: string;

attribute LOC of A: signal is "P10";
attribute LOC of B: signal is "P11";
attribute LOC of F: signal is "P14";
end;

architecture comportamental of and2e is
begin

   F <= B and A;

end comportamental;

Código: [Seleccionar]
attribute LOC: string;

attribute LOC of A: signal is "P10";
attribute LOC of B: signal is "P11";
attribute LOC of F: signal is "P14";

En este caso el mismo ejemplo asigna A,B y F a los pines 10,11 y 14 respectivamente.

Como pueden observar esta asignacion varia dependiendo del fabricante del compilador, xilinx tambien tiene su forma diferente. En algunos entornos de desarrollo se tiene asistentes que facilitan tremendamente esto, sobre todo en el caso de chips mas potentes como CPLDs o FPGAs. Espero que esto sea de utilidad.

saludos...

No es el conocimiento, sino el acto de aprendizaje, y no la posesión, sino el acto de llegar allí, que concede el mayor disfrute.
"Carl Friedrich Gauss"

El tacto es el arte de hacer un punto sin hacer un enemigo.
"Isaac Newton"


 

anything