sábado, 5 de abril de 2014

Habemus Blog.


Estoy feliz, motivado y expectante sobre esto; siempre quise escribir un blog de temática general pero nunca me animé, diversos motivos siempre me frenaban.
Todo cambió, por suerte. Hoy la realidad es otra, estoy en un intento fuerte de dejar de fumar y pensé: "qué mejor para dejar una rutina, un vicio, que empezar otro -más sano- y encima poder mantener las manos y la mente ocupada?".

Yo soy Ramiro, una más de las vidas que conocieron la luz en mayo de 1991. Soy bastante curioso y me gusta aprender cosas prácticas. Suelo tener problemas con las cosas impuestas, pero llego a ser muy sinérgico con las cosas que me llaman la atención; me encantan los desafíos y disfruto cuando tengo el tiempo para lograrlos.
Académicamente: me encuentro cursando la carrera de Ingeniería en Informática en la Universidad Nacional del Litoral.
Laboralmente: Rectorado (UNL), Mesa de ayuda - Informática-

-¿Qué esperar de este blog?
Nada/Todo. Siempre me gustó la idea de algo multidisciplinal, indagar en distintas cosas.

-¿A quién está dirigido el blog?
Público en general. Voy a tratar de lograr una forma estándar de expresión





Como primer entrada, les dejo un regalito:

Resulta que, en la facu, me encuentro haciendo algunas cosas con el Xilinx ISE Desing y el tema es que cuando hacemos el vhdl testbench hay que generar las distintas combinaciones de valores de verdad (binarios) para las variables de entrada; lo cual es fácil para pocas variables pero se torna molesto para cuando tenemos 3 o más.
Para olvidarme de ésto hice un pequeño script en Ruby: que genera sólo el código necesario y luego lo copia al clipboard para ser pegado en el testbench.

#require 'rubygems' #descomentar esta línea para ruby 1.8
require 'clipboard'
=begin
READ THIS:
  Linux:
      sudo gem install clipboard #Agrega la gema que labura con el clipboard
      sudo apt-get install xclip #Interfaz, de linea de comando, para copy&paste sobre entornos gráfico.
  Windows:
    gem install ffi
    gem install clipboard
=end

def alg1(v)
  #Algoritmo que arma el "arbol binario".
  #de la tabla de verdad para las variables. 
    if (v <= 0) then
      return Array.new([0, 1])
    else
      return Array.new([0, alg1(v-1), 1, alg1(v-1)])
    end
end
def alg2(v, str, pos)
    if (v.size == 2) then
      _ret1 = String.new()
      _ret1 = str + "#{ARGV[ARGV.size - pos]} <= '" + String(v[0]) + "';"
      _ret1 = _ret1 + "\nWAIT FOR 10 NS;\n"
      _ret1 = _ret1 + str + "#{ARGV[ARGV.size - pos]} <= '" + String(v[1]) + "'; \nWAIT FOR 10 NS;"
    else
      _ret2 = String.new()
      _ret2 = alg2(v[1], str + "#{ARGV[ARGV.size - pos]} <= '" +String(v[0]) + "';\n", pos -1)
      _ret2 = _ret2 + "\n"
      _ret2 = _ret2 + alg2(v[3], str + "#{ARGV[ARGV.size - pos]} <= '" + String(v[2]) + "';\n", pos - 1)
     
    end
end

  if (ARGV[0] == '-h' or ARGV.size == 0) then
    puts "Usage:"
    puts "\truby vhdlPlugin.rb [-h | [A B [C ...]]]"
    puts()
    puts "-h : Show this message"
    puts "A B [C ...] : Generate the Xilinx code from the TruthTable of those literals, and send it to the clipboard"
  end
  if (ARGV.size > 1) then
  puts "[Sending text to clipboard...]"
  Clipboard.copy(alg2(alg1(ARGV.size - 1), "", ARGV.size)) #para n+1 variables
  puts("[ok]")
  end

Primero: Hay que tener instalado Ruby en el sistema!

Segundo:
      Linux:
      sudo gem install clipboard #Agrega la gema que labura con el clipboard
      sudo apt-get install xclip #Interfaz, de linea de comando, para copy&paste sobre entornos gráfico.
    Windows:
    gem install ffi
    gem install clipboard
Tercero: La forma de utilizarlo, es la siguiente
    ruby script.rb A B C
    Esto generará el código para los literales de entrada A, B y C

Espero que álguien, porque tengo fe de que alguna persona leerá este blog, se cope con hacer una versión mas copada.