--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@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/a42b2625-f913-4300-98d8-e8597d8c868f%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, 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/a42b2625-f913-4300-98d8-e8597d8c868f%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
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/qwYr1MX4hbI/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/CABqu7xqAUQG3bbmG3daem%3D9Q6e56JV7GKGcb3PoDgHYtRniwKg%40mail.gmail.com.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@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/a42b2625-f913-4300-98d8-e8597d8c868f%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
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/qwYr1MX4hbI/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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
--
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/qwYr1MX4hbI/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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@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/00a3c234-02bd-457a-8592-52a7b6e0052e%40googlegroups.com.
Buenas Jose,
Efectivamente en Icestudio no se premiten realizar conexiones en corto, sin embargo con verilog puedes crear "cortocircuitos" lógicos. El circuito que propones sintetiza correctamente, y lo que hace es asignar un "1" lógico al led.
Existe un proyecto muy interesante que permite visualizar los ficheros ASC, es decir el rutado de los circuitos dentro de la FPGA. Éste es el proyecto: https://knielsen.github.io/ice40_viewer/ice40_viewer.html, está escrito en JavaScript.
En el caso de tu circuito ésto es lo que muestra (asignación de un 1 a la salida). Con esto puedes ver cómo queda tu circuito en la FPGA:
En Icestudio los ficheros generados se encuentran en el directorio ~/.icestudio/.build. El fichero ASC se llama hardware.asc. Puedes sintetizar tu circuito con Icestudio y luego visualizar el ASC.
Un saludo.
El jueves, 16 de marzo de 2017, 0:34:56 (UTC+1), Jose Pico escribió:
Ok Gracias
El 16 de marzo de 2017, 0:28, <una...@gmail.com> escribió:
Tranquilo, ese código:Simplemente no puedes tener dos "drivers" para una sola señal. Físicamente no se puede, y cualquier sintetizador debe dar error.
- No es válido y da error.
- O, ignora una asignación y sólo tiene en cuenta la segunda.
Tienes riesgo de quemar cosas por un uso inadeacuado de periféricos externos que el sintetizador desconoce. Pero en lo que respecta al interior de la FPGA, nunca tendrás problemas de este tipo. De hecho, tienes limitaciones de diseño adicionales, como te comento en el otro hilo.
--
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/qwYr1MX4hbI/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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-lib...@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/00a3c234-02bd-457a-8592-52a7b6e0052e%40googlegroups.com.
--
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/qwYr1MX4hbI/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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@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/b4aee4b0-fa62-4150-9e7c-6691b314ebff%40googlegroups.com.
The wire and tri nets connect elements. The net types wire and tri are identical in their syntax and functions; two names are provided so that the name of a net can indicate the purpose of the net in that model. A wire net is typically used for nets that are driven by a single gate or continuous assignment. The tri net type might be used where multiple drivers drive a net.
Logical conflicts from multiple sources on a wire or a tri net result in unknown values unless the net is controlled by logic strength.
Wired nets are of type wor, wand, trior, and triand, and are used to model wired logic configurations. Wired nets resolve the conflicts that result when multiple drivers drive the same net. The wor and trior nets create wired or configurations, such that when any of the drivers is 1, the net is 1. The wand and triand nets create wired and configurations, such that if any driver is 0, the net is 0.
wor iout
assign iout = Error & Wait;
assign iout = Valid | Clear;
assign out = iout;
assign out = (Error & Wait) | (Valid | Clear);
assign out = (Error & Wait) | Valid | Clear;
En general, deberías evitar cualquier señal diferente de wire. No las necesitas, y tratar de utilizarlas sólo te llevará a código más difícil de depurar. Siempre hablando de FPGAs. Si quieres utilizar icestudio para modelar otros circuitos, no aplica nada de lo anterior.
Como observación final, "wait" es una palabra reservada en Verilog. Aunque no hay conflicto en este contexo, es prudente no utilizarla para nombrar puertos/señales.Synthesis tools have the requirement that the resulting gates match the functionality of the RTL description. This means that it will reproduce the functionality you described - in spite of the fact that the functionality is wrong... It is being nice by giving you the warning that "Hmmm, something doesn't look right here", but it still goes ahead and duplicates the functionality described.
--
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/qwYr1MX4hbI/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-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/aa426cd5-d8ef-40ed-9261-1fcb444ab39d%40googlegroups.com.
Unsupported Verilog-2005 Features
The following Verilog-2005 features are not supported by yosys and there are currently no plans to add support for them:
The tri
, triand
, trior
, wand
and wor
net types
Input Register Block
The input register blocks for the PIOs on all edges contain registers that can be used to condition high-speed inter-
face signals before they are passed to the device core. In Generic DDR mode, two registers are used to sample the
data on the positive and negative edges of the system clock signal, creating two data streams.
Output Register Block
The output register block can optionally register signals from the core of the device before they are passed to the
sysIO buffers. In Generic DDR mode, two registers are used to capture the data on the positive and negative edge
of the system clock and then muxed creating one data stream.
// flanco de subida:
(sig ^ reg) & ~reg
// flanco de bajada:
(sig ^ reg) & reg
if (rst) begin c_en = 0; end
else begin
if (sig ^ reg) begin c_en = ~reg; end
end
--
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/qwYr1MX4hbI/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/0f8bc56d-0b9d-4a78-bfdb-d288329457eb%40googlegroups.com.
--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@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/6ea475bf-d855-44bb-83d8-4d3f312c0f7b%40googlegroups.com.
Hola José, Democrito y cia,
En principio, el primer diseño de José, el que tiene una única entrada 'd' y la realimentación, no debería funcionar. Si lo hace correctamente es porque Icestudio o el sintetizador están añadiendo información no especificada: el valor inicial. Si, por lo que sea, 'd' empieza con U, todas las señales serán U durante toda la ejecución, puesto que "not U = U". Si 'q1' y 'q2' empiezan con un valor lógico válido, sea cual sea, funcionará. Aunque puede haber un glitch inicial. La solución es tan sencilla como añadir un reset. Práctica que te recomiendo tomar como norma para cualquier registro. Que sea un reset síncrono o asíncrono es menos importante.
Por otro lado, en cuanto a la realimentación en sí, no es problemática en este caso porque hay un registro en medio. En otro caso, cuidado con los loops lógicos, que suelen dar errores poco intuitivos. Otro "fenómeno" que puede aparecer son los latches: https://www.doulos.com/knowhow/fpga/latches/
En el segundo circuito no creo que haya ningún "peligro". Lo único ¿por qué utilizas dos entradas de reloj?
Saludos
Si se inicia el valor del registro con un valor inicial 0 o 1 entiendo que debería funcionar siempre lo único que empezaría de con un 1 o un 0.El ejemplo es un simple ejemplo didáctico.
R: Entiendo que siempre hay que intentar evitar que se creen latches, por que no es recomendable mezclar latches con Flip Flops. Se puede perder un poco el control delas cosas.
Hola:Abro este nuevo tema para poder presentaros mis dudas existenciales sobre verilog que me van surgiendo cuando me documento sobre verilog y no me quedan claras.De esta forma si alguien me las resuelve estaré muy agradecido.Como primera duda básica querría preguntar:que diferencia habría al sintetizar:o sintetizar:en el primero se usa una asignación continua ( non-blocking) y en el segundo una asignación blocking ( creo).Aquí , entiendo que sintetizan lo mismo ya que icestudio me indica que en ambos caso ha utilizado 5 PIOs y 9 PLBs.Al haber una uníca instrucción perteneciente al always entiendo que da igual que sea = o <= .Qué herramienta libre podría usar para vér el circuito sintetizado pasándole el fichero verilog .v ?Saludos y Gracias