====> IN ENGLISH BELOW
Hola a todos! como os comenté estas próximas semanas voy a ir liberando un montón de cosas nuevas que he estado trabajando todo este tiempo y ya van estando maduras.
Es decir ya podemos definir puertos en el verilog como "inout".
Esto nos permite por un lado utilizar verilog que utiliza este tipo de puertos y que es muy necesario para muchos protocolos serie , memorias externas...por ejemplo.
Por otro lado hace universal el uso de los pines de entrada/Salida sin necesidad de implementar primitivas de cada FPGA (ahora se encarga yosys en la síntesis de hacer esto).
De esta forma el mismo código será compatible entre todas las fpgas soportadas por yosys y por ende por Icestudio.
Os mando un .ice que es el ejemplo de la increible colección iceIO modificado , utilizando e mismo bloque pero reescrito para usar los puertos inout.
Ahora lo bueno esque ese bloque ya no es par ala ice40 ni habrá otro para la ecp5... el mismo bloque vale para todas!
Como podemos sustituir las primitivas de cada bloque por el código genérico, lo bueno es que toda la documentación de la iceIO es totalmente válida.
Al usar puertos inout nos encontramos con varios problemas a resolver, que es el poder arrastrar los puertos inout desde el pin de la fpga en el top level a los módulos o bloques internos.
Para ello lo podéis usar en el verilog correspondiente si lo importais, ó ahora podéis definir al igual que los puertos de entrada y los puertos de salida, puertos de entradaSalida (inout).
Como véis en el pantallazo que os paso tenéis el check en los pines para indicar que un pin es inout (ahora puedes elegir un pin en sentido entrada o en sentido salida según te convenga para colocarlo en el diseño) .
y en los bloques tenemos dos gurpos los InOutLeft. los inOutRight, esto es simplementa para colocarlos a un lado u otro del bloque:
Espero que esta funcionalidad os sea útil y vaya abriendo el abanico de posibilidades de icestudio hacia diseños complejos.
Seguimos!!!
Hola a todos! como os comenté estas próximas semanas voy a ir liberando un montón de cosas nuevas que he estado trabajando todo este tiempo y ya van estando maduras.
Es decir ya podemos definir puertos en el verilog como "inout".
Esto nos permite por un lado utilizar verilog que utiliza este tipo de puertos y que es muy necesario para muchos protocolos serie , memorias externas...por ejemplo.
Por otro lado hace universal el uso de los pines de entrada/Salida sin necesidad de implementar primitivas de cada FPGA (ahora se encarga yosys en la síntesis de hacer esto).
De esta forma el mismo código será compatible entre todas las fpgas soportadas por yosys y por ende por Icestudio.
Os mando un .ice que es el ejemplo de la increible colección iceIO modificado , utilizando e mismo bloque pero reescrito para usar los puertos inout.
Ahora lo bueno esque ese bloque ya no es par ala ice40 ni habrá otro para la ecp5... el mismo bloque vale para todas!
Como podemos sustituir las primitivas de cada bloque por el código genérico, lo bueno es que toda la documentación de la iceIO es totalmente válida.
Al usar puertos inout nos encontramos con varios problemas a resolver, que es el poder arrastrar los puertos inout desde el pin de la fpga en el top level a los módulos o bloques internos.
Para ello lo podéis usar en el verilog correspondiente si lo importais, ó ahora podéis definir al igual que los puertos de entrada y los puertos de salida, puertos de entradaSalida (inout).
Como véis en el pantallazo que os paso tenéis el check en los pines para indicar que un pin es inout (ahora puedes elegir un pin en sentido entrada o en sentido salida según te convenga para colocarlo en el diseño) .
y en los bloques tenemos dos gurpos los InOutLeft. los inOutRight, esto es simplementa para colocarlos a un lado u otro del bloque:
Espero que esta funcionalidad os sea útil y vaya abriendo el abanico de posibilidades de icestudio hacia diseños complejos.
Seguimos!!!
ENGLISH ====>
Hello everyone! As I mentioned, in the coming weeks, I'll be releasing a bunch of new things I've been working on for some time, and they are now ripe.
Today, I'm releasing native support for inout input/output ports in the latest work-in-progress (WIP) version (
https://downloads.icestudio.io), you need to install it and after install the toolchain, click on the option to use the latest stable (0.9.0).
This means that we can now define ports in Verilog as "inout."
On one hand, this allows us to use Verilog that uses this type of ports, which is crucial for many serial protocols, external memories, and more.
On the other hand, it makes the use of input/output pins universal without the need to implement FPGA-specific primitives (Yosys is now responsible for this during synthesis).
In this way, the same code will be compatible across all FPGA boards supported by Yosys and, consequently, by Icestudio.
I'm sending you a .ice file, which is an example of the incredible modified iceIO collection, using the same block but rewritten to use inout ports.
Now, the great thing is that this block is no longer just for the ice40 or another one for the ecp5... the same block works for all of them!
As we can replace the primitives of each block with generic code, the good news is that all the documentation for iceIO is still entirely valid.
When using inout ports, we encounter several problems to solve, such as being able to drag inout ports from the FPGA pin at the top level to the internal modules or blocks.
To do this, you can use it in the corresponding Verilog if you import it, or now you can define inout ports just like input and output ports.
As you can see in the screenshot I'm providing, you can check the pins to indicate that a pin is inout (now you can choose whether a pin is used as an input or an output as needed for your design).
In the blocks, we have two groups, InOutLeft and InOutRight. This is simply for placing them on one side or the other of the block.
I hope you find this functionality useful and that it expands the range of possibilities for Icestudio in handling complex designs.
Let's keep going!