
Figura 15: Máquina de estado a representar
statemachine sm_switch (clock: i_clk, reset:
i_rst)
state ON_ST
%vhdl{
o_sig <= ’0’
}
transition
with ( %vhdl{ i_switch = ’0’ } )
to OFF_ST
state OFF_ST
%vhdl{
regfin <= ’1’
o_sig <= i_sig
}
transition
with ( %vhdl{ i_switch = ’1’ } )
to ON_ST
Figura 16: Código parcial intermedio genHDL
subnodos y los nodos padre.
IV. CONCLUSIONES
Se ha logrado crear un lenguaje de programación visual
con algunas ventajas y potencialidades con respecto a otros
lenguajes visuales. Entre sus mayores ventajas se encuentra
la simplicidad de su utilización y la diversidad de herramien-
tas con las que cuenta. También la abstracción en forma de
framework visual que además de poder utilizarse para este
sm_switch: process( i_clk, i_rst )
begin
if i_rst = ’1’ then
state <= ON_ST;
elsif i_clk’event and i_clk = ’1’ then
case state is
when ON_ST =>
if i_switch = ’0’ then
state <= OFF_ST;
end if;
when OFF_ST =>
if i_switch = ’1’ then
state <= ON_ST;
end if;
end case;
end if;
end process;
Figura 17: Código parcial VHDL generado
proyecto, puede ser utilizado para otros sistemas que así
lo requieran, siendo mucho más flexible que su predecesor
NodeEditor.
La inserción de la representación intermedia genHDL
brindó facilidades a la hora de interpretar textualmente y
generar máquinas de estado. Brindando la posibilidad de ser
comparado con el código VHDL resultante. De ésta forma
es posible exponer desde el concepto visual hacia el textual
simplificado, y de allí al especifico en VHDL. Se busca
de ésta forma mejorar el aprendizaje de los conceptos de
construcción de máquinas de estado en el diseño digital.
El lenguaje intermedio genHDL cuenta con mayor expre-
sividad que únicamente la de máquinas de estado, teniendo
la posibilidad de representar componentes, conexiones entre
ellos y tablas de verdad fácilmente; con lo cual se está eva-
luando el uso de genHDL para realizar el almacenamiento
de un proyecto entero FlowHDL.
Aún resta realizar mejoras para contar con una mayor
completitud en términos de expresividad del lenguaje visual,
como por ejemplo la generación de hardware dinámico
a través de parametros genéricos; así como también una
validación en los puntos de inserción de código VHDL (y
posiblemente en el futuro Verilog). Interactuando con el
compilador de código abierto Yosys [15] se pueden lograr
ésta última mejora al sistema, ya que es posible desde
Yosys generear descripciones JSON y FlowHDL tiene la
posibilidad de recibir este tipo de entradas.
REFERENCIAS
[1] J. R. L. Vizcaíno and J. P. Sebastiá, LabVIEW: Entorno gráfico de
programación. Marcombo, 2011.
[2] vortexmakes, “Rkh: State machine framework for reactive embedded
systems,” https://github.com/vortexmakes/RKH, 2019.
[3] J. Arroyo, “icestudio: Experimental graphic editor for open fpgas,”
https://github.com/bqlabs/icestudio, 2016.
[4] D. Gajski, T. Austin, and S. Svoboda, “What input-language is the
best choice for high level synthesis (hls)?” in Design Automation
Conference, 2010, pp. 857–858.
[5] M. Haldar, A. Nayak, N. Shenoy, A. Choudhary, and P. Banerjee,
“Fpga hardware synthesis from matlab,” in VLSI Design 2001. Four-
teenth International Conference on VLSI Design, 2001, pp. 299–304.
[6] K. Takano, T. Oda, and M. Kohata, “Design of a dsl for converting
rust programming language into rtl,” in International Conference on
Emerging Internetworking, Data & Web Technologies. Springer,
2020, pp. 342–350.
[7] G. Wang, H. Lam, A. George, and G. Edwards, “Performance and
productivity evaluation of hybrid-threading hls versus hdls,” in 2015
IEEE High Performance Extreme Computing Conference (HPEC),
2015, pp. 1–7.
[8] K. Marriott, B. Meyer, and K. B. Wittenburg, “A survey of visual
language specification and recognition,” in Visual language theory.
Springer, 1998, pp. 5–85.
[9] B. A. Myers, “Taxonomies of visual programming and program
visualization,” Journal of Visual Languages & Computing, vol. 1,
no. 1, pp. 97–123, 1990.
[10] M. Fayad and D. C. Schmidt, “Object-oriented application
frameworks,” Commun. ACM, vol. 40, no. 10, p. 3238, Oct. 1997.
[Online]. Available: https://doi.org/10.1145/262793.262798
[11] R. L. Rudell, “Multiple-valued logic minimization for pla synthesis,”
California Univ Berkley Electronics Research Lab, Tech. Rep., 1986.
[12] D. P. et al, “Qt5 node editor,”
https://github.com/paceholder/nodeeditor, 2017.
[13] G. Kellogg, P.-A. Champin, and D. Longley, “JSON-LD 1.1 – A
JSON-based Serialization for Linked Data,” W3C, Technical Report,
Dec. 2019. [Online]. Available: https://hal.archives-ouvertes.fr/hal-
02141614
[14] G. Lazar and R. Penea, Mastering Qt 5. Packt Publishing Ltd, 2016.
[15] D. Shah, E. Hung, C. Wolf, S. Bazanski, D. Gisselquist, and M. Mi-
lanovic, “Yosys+nextpnr: an open source framework from verilog to
bitstream for commercial fpgas,” CoRR, vol. abs/1903.10407, 2019.
[Online]. Available: http://arxiv.org/abs/1903.10407
Revista elektron, Vol. 5, No. 1, pp. 56-63 (2021)
http://elektron.fi.uba.ar