Sugerencias/Dudas iceStudio

63 views
Skip to first unread message

Jose Pico

unread,
Mar 17, 2017, 5:16:44 PM3/17/17
to FPGAwars: explorando el lado libre
Hola:

Estaría bien que en un bloque  Basic-->Información se pudiese pegar una imagen de forma que si hacemos un ejemplo en IceStudio con valor educacional se pudiese mostrar en el bloque de información con una imagen información de ayuda.
A mí no me ha funcionado copiar y pegar una imagen dentro del bloque de información.

Por Ejemplo, en este circuito que implementa un circuito de desplazamiento de un 1, hubiese estado bien poder poner con una imagen en un bloque de información.

Hubiese estado bien introducir una imagen similar a esto en el bloque de información: 

Saludos y Gracias








Auto Generated Inline Image 1
Auto Generated Inline Image 2

Juanma Rico

unread,
Mar 17, 2017, 6:08:08 PM3/17/17
to FPGAwars: explorando el lado libre
Me parece una muy buena sugerencia.
No debería ser muy difícil incluir un formato HTML en los bloques estando todo basado en tecnología web...
Aquí Jesús es el que tiene la clave... 😊
Pero la sugerencia me ha gustado mucho.

1138-4EB

unread,
Mar 17, 2017, 6:12:12 PM3/17/17
to FPGAwars: explorando el lado libre
Hola José,

No es exactamente lo que comentas, pero me he fijado en el orden de las asignaciones dentro del proceso. Si te está funcionando quiere decir que no se realizan las asignaciones de forma secuencial, se analizan secuencialmente pero todas las señales se actualizan todas al mismo tiempo, al final del process. Si se actualizara cada una donde aparece, todos los registros tendrían el mismo valor, por lo que se sintetizarían posiblemente como uno solo. Para evitar que esto pueda suceder, es buena costumbre hacerlo al revés: en la primera línea pones el registro más cercano a la salida, y vas rellenando hacia atrás hasta llegar al primero:

out1 <= q4
q4 <= q3
q3 <= q2
q2 <= q1
q1 <= in1

Fijato que en este caso, se ejecuten a la vez o de una en una, el resultado es el mismo.

Por otro lado, tú registro de desplazamiento parece que es de cinco registros, y no de cuatro. Para que sea de cuatro, elimina q4, o haz assign out1 = q4 fuera del proceso.

Un saludo

Jose Pico

unread,
Mar 17, 2017, 8:09:09 PM3/17/17
to FPGAwars: explorando el lado libre

Hola;

He añadido un poco más al circuito para examinarlo y se comporta exactamente igual de una forma que de la otra.
Yo entiendo las sentencias dentro del always se analizan secuencialmente y todo se ejecuta con el ciclo del reloj por lo que da igual empezar de un sitio que del otro ( asi lo entiendo yo )


Me funciona igual que:

De todas formas soy un novatillo y lo tengo que madurar.....

Saludos y Gracias
Auto Generated Inline Image 1
Auto Generated Inline Image 2

Jose Pico

unread,
Mar 17, 2017, 8:13:12 PM3/17/17
to fpga-wars-explora...@googlegroups.com
Este es el resultado en ambos casos:


--


Has recibido este mensaje porque estás suscrito a un tema del grupo "FPGAwars: explorando el lado libre" de Grupos de Google.


Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/fpga-wars-explorando-el-lado-libre/vjBkiD1-9ig/unsubscribe.


Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.


Para publicar en este grupo, envía un correo electrónico a fpga-wars-explora...@googlegroups.com.


Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.


Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/728b96ed-f562-43e5-925d-fded117a6497%40googlegroups.com.


Para acceder a más opciones, visita https://groups.google.com/d/optout.


IMG_120604688.MOV

1138-4EB

unread,
Mar 18, 2017, 4:04:16 AM3/18/17
to FPGAwars: explorando el lado libre
Sí, el resultado es el mismo en ambos casos. Disculpa si he dado a entender que no era correcto. Lo es. Lo que pasa es que en VHDL existen las "signal" que son el equivalente a los "wires" en Verilog, y también las "variables". La diferencia es que las signal se actualizan todas al mismo tiempo, como tú esperas, pero las variables se actualizan al instante. Por lo tanto, si utilizaras variables, la primera forma sería incorrecta. Para no tener que andar pensando cuándo puede funcionar bien y cuándo mal, es prudente hacerlo siempre "al revés".

Por otro lado, con el vídeo entiendo por qué son cinco registros, en lugar de cuatro.

Como veo que ya le has dado varias vueltas a este circuito y lo tienes claro, igual te parece interesante hacer un LFSR: https://es.wikipedia.org/wiki/LFSR Básicamente, es un generador de números pseudoaleatorios basado en un registro de desplazamiento de 16 posiciones y tres puertas XOR. En la versión en inglés tienes un par de dibujos: https://en.wikipedia.org/wiki/Linear-feedback_shift_register


Esos dos son equivalentes y se corresponden con el polinomio x^16 + x^14 + x^13 + x^11 + 1. Pero en el enlace en inglés tienes una tablar para todos los tamaños de palabra (número de bits), desde 2 hasta 19 bits. Y aquí hasta 64: https://users.ece.cmu.edu/~koopman/lfsr/index.html Por ejemplo, para el de 5 bits el polinomio es x^5 + x^3 + 1, y obtendrás 31 números diferentes antes de que se empiecen a repetir.

Si entiendes cómo generar un LFSR a partir de un polinomio, ya tienes un circuito hardware para computar el CRC que se utiliza para garantizar la integridad de la información en transferencias y almacenamientos en memoria: https://en.wikipedia.org/wiki/Computation_of_cyclic_redundancy_checks



A la izquierda se genera el checksum (en el emisor) y a la derecha se comprueba (en el receptor).

AVISO: entender cómo generar el circuito si alguien te da un polinomio no es entender los fundamentos matemáticos de por qué se ha elegido ese. Somos "diseñadores hardware", no diseñadores de algoritmos.

Un saludo, y gracias por desarrollar más el ejercicio. No lo había entendido bien a la primera.

Jose Pico

unread,
Mar 18, 2017, 1:03:30 PM3/18/17
to FPGAwars: explorando el lado libre
Gracias por tus comentarios, siempre son de agradecer.
Interesante el LFSR y sus aplicaciones para Checksum (Eso me ha recordado a una asignatura llamada Teoría de información que estudié en la carrera hace muchísimos años )

Saludos
Reply all
Reply to author
Forward
0 new messages