Una serie de videos en relación a GHDL
Blog cajón desastre (CBTis 44 / TecNM Teziutlán) https://github.com/maigke ( tiene muy poca aportación)
sábado, 21 de octubre de 2017
domingo, 24 de septiembre de 2017
Recuperando un ATmega48PA con USBASP y AVRBur-o-matic en windows
Bueno sucede que un estudiante me dijo que tenia 3 circuitos atmega48pa que no los podia programar, y la cuestion es que se hizo bolas con los FUSES y por otra cosa que me dijo, habia conectado de forma incorrecta los micros.
En esta maquina desde la que escribo cuento con el programa AVRBurn-o-matic que es una interfaz para el AVRDUDE que viene con winAVR, sin embargo aqui no teniada dado de alta la programacion del atmega48pa, solo la del atmega48, los cuales tienen diferentes "signatures"
Como segurantemen en los fuses habia un problema con el socilador, lo que hago es poner un cristal de cualquier valor (que no sea mayor a 16MHz) en las terminales PB7 y PB6 con sus respectivos capacitores.
en cuanto al software hay que editar el archivo que se encuentra en C:/winavr/bin/avrdude.conf al agregar las siguientes lineas (http://electronics.stackexchange.com//questions/3721/avrdude-and-atmega48pa)
#------------------------------------------------------------
# ATmega48PA
#------------------------------------------------------------
part
id = "m48pa";
desc = "ATMEGA48PA";
has_debugwire = yes;
flash_instr = 0xB6, 0x01, 0x11;
eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
0x99, 0xF9, 0xBB, 0xAF;
stk500_devcode = 0x59;
signature = 0x1e 0x92 0x0a;
pagel = 0xd7;
bs2 = 0xc2;
chip_erase_delay = 45000;
pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
"x x x x x x x x x x x x x x x x";
chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
"x x x x x x x x x x x x x x x x";
timeout = 200;
stabdelay = 100;
cmdexedelay = 25;
synchloops = 32;
bytedelay = 0;
pollindex = 3;
pollvalue = 0x53;
predelay = 1;
postdelay = 1;
pollmethod = 1;
pp_controlstack =
0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
hventerstabdelay = 100;
progmodedelay = 0;
latchcycles = 5;
togglevtg = 1;
poweroffdelay = 15;
resetdelayms = 1;
resetdelayus = 0;
hvleavestabdelay = 15;
resetdelay = 15;
chiperasepulsewidth = 0;
chiperasepolltimeout = 10;
programfusepulsewidth = 0;
programfusepolltimeout = 5;
programlockpulsewidth = 0;
programlockpolltimeout = 5;
memory "eeprom"
paged = no;
page_size = 4;
size = 256;
min_write_delay = 3600;
max_write_delay = 3600;
readback_p1 = 0xff;
readback_p2 = 0xff;
read = " 1 0 1 0 0 0 0 0",
" 0 0 0 x x x x x",
" a7 a6 a5 a4 a3 a2 a1 a0",
" o o o o o o o o";
write = " 1 1 0 0 0 0 0 0",
" 0 0 0 x x x x x",
" a7 a6 a5 a4 a3 a2 a1 a0",
" i i i i i i i i";
loadpage_lo = " 1 1 0 0 0 0 0 1",
" 0 0 0 0 0 0 0 0",
" 0 0 0 0 0 0 a1 a0",
" i i i i i i i i";
writepage = " 1 1 0 0 0 0 1 0",
" 0 0 x x x x x x",
" a7 a6 a5 a4 a3 a2 0 0",
" x x x x x x x x";
mode = 0x41;
delay = 5;
blocksize = 4;
readsize = 256;
;
memory "flash"
paged = yes;
size = 4096;
page_size = 64;
num_pages = 64;
min_write_delay = 4500;
max_write_delay = 4500;
readback_p1 = 0x00;
readback_p2 = 0x00;
read_lo = " 0 0 1 0 0 0 0 0",
" 0 0 0 0 0 a10 a9 a8",
" a7 a6 a5 a4 a3 a2 a1 a0",
" o o o o o o o o";
read_hi = " 0 0 1 0 1 0 0 0",
" 0 0 0 0 0 a10 a9 a8",
" a7 a6 a5 a4 a3 a2 a1 a0",
" o o o o o o o o";
loadpage_lo = " 0 1 0 0 0 0 0 0",
" 0 0 0 x x x x x",
" x x x a4 a3 a2 a1 a0",
" i i i i i i i i";
loadpage_hi = " 0 1 0 0 1 0 0 0",
" 0 0 0 x x x x x",
" x x x a4 a3 a2 a1 a0",
" i i i i i i i i";
writepage = " 0 1 0 0 1 1 0 0",
" 0 0 0 0 0 a10 a9 a8",
" a7 a6 a5 x x x x x",
" x x x x x x x x";
mode = 0x41;
delay = 6;
blocksize = 64;
readsize = 256;
;
memory "lfuse"
size = 1;
min_write_delay = 4500;
max_write_delay = 4500;
read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
"x x x x x x x x o o o o o o o o";
write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
"x x x x x x x x i i i i i i i i";
;
memory "hfuse"
size = 1;
min_write_delay = 4500;
max_write_delay = 4500;
read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
"x x x x x x x x o o o o o o o o";
write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
"x x x x x x x x i i i i i i i i";
;
memory "efuse"
size = 1;
min_write_delay = 4500;
max_write_delay = 4500;
read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
"x x x x x x x x x x x x x x x o";
write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
"x x x x x x x x x x x x x x x i";
;
memory "lock"
size = 1;
min_write_delay = 4500;
max_write_delay = 4500;
read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
"x x x x x x x x x x o o o o o o";
write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
"x x x x x x x x 1 1 i i i i i i";
;
memory "calibration"
size = 1;
read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
"0 0 0 0 0 0 0 0 o o o o o o o o";
;
memory "signature"
size = 3;
read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
"x x x x x x a1 a0 o o o o o o o o";
;
;
Pero esto no basta, ya que el AVRBURN-o-matic accesa a su menu desde un archivo XML que se encuentra en C:\Program Files (x86)\AVR Burn-O-Mat/AVR8_Burn_O_Mat_config.xml
y se agregan las siguientes lìneas
En esta maquina desde la que escribo cuento con el programa AVRBurn-o-matic que es una interfaz para el AVRDUDE que viene con winAVR, sin embargo aqui no teniada dado de alta la programacion del atmega48pa, solo la del atmega48, los cuales tienen diferentes "signatures"
Como segurantemen en los fuses habia un problema con el socilador, lo que hago es poner un cristal de cualquier valor (que no sea mayor a 16MHz) en las terminales PB7 y PB6 con sus respectivos capacitores.
en cuanto al software hay que editar el archivo que se encuentra en C:/winavr/bin/avrdude.conf al agregar las siguientes lineas (http://electronics.stackexchange.com//questions/3721/avrdude-and-atmega48pa)
#------------------------------------------------------------
# ATmega48PA
#------------------------------------------------------------
part
id = "m48pa";
desc = "ATMEGA48PA";
has_debugwire = yes;
flash_instr = 0xB6, 0x01, 0x11;
eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
0x99, 0xF9, 0xBB, 0xAF;
stk500_devcode = 0x59;
signature = 0x1e 0x92 0x0a;
pagel = 0xd7;
bs2 = 0xc2;
chip_erase_delay = 45000;
pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
"x x x x x x x x x x x x x x x x";
chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
"x x x x x x x x x x x x x x x x";
timeout = 200;
stabdelay = 100;
cmdexedelay = 25;
synchloops = 32;
bytedelay = 0;
pollindex = 3;
pollvalue = 0x53;
predelay = 1;
postdelay = 1;
pollmethod = 1;
pp_controlstack =
0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
hventerstabdelay = 100;
progmodedelay = 0;
latchcycles = 5;
togglevtg = 1;
poweroffdelay = 15;
resetdelayms = 1;
resetdelayus = 0;
hvleavestabdelay = 15;
resetdelay = 15;
chiperasepulsewidth = 0;
chiperasepolltimeout = 10;
programfusepulsewidth = 0;
programfusepolltimeout = 5;
programlockpulsewidth = 0;
programlockpolltimeout = 5;
memory "eeprom"
paged = no;
page_size = 4;
size = 256;
min_write_delay = 3600;
max_write_delay = 3600;
readback_p1 = 0xff;
readback_p2 = 0xff;
read = " 1 0 1 0 0 0 0 0",
" 0 0 0 x x x x x",
" a7 a6 a5 a4 a3 a2 a1 a0",
" o o o o o o o o";
write = " 1 1 0 0 0 0 0 0",
" 0 0 0 x x x x x",
" a7 a6 a5 a4 a3 a2 a1 a0",
" i i i i i i i i";
loadpage_lo = " 1 1 0 0 0 0 0 1",
" 0 0 0 0 0 0 0 0",
" 0 0 0 0 0 0 a1 a0",
" i i i i i i i i";
writepage = " 1 1 0 0 0 0 1 0",
" 0 0 x x x x x x",
" a7 a6 a5 a4 a3 a2 0 0",
" x x x x x x x x";
mode = 0x41;
delay = 5;
blocksize = 4;
readsize = 256;
;
memory "flash"
paged = yes;
size = 4096;
page_size = 64;
num_pages = 64;
min_write_delay = 4500;
max_write_delay = 4500;
readback_p1 = 0x00;
readback_p2 = 0x00;
read_lo = " 0 0 1 0 0 0 0 0",
" 0 0 0 0 0 a10 a9 a8",
" a7 a6 a5 a4 a3 a2 a1 a0",
" o o o o o o o o";
read_hi = " 0 0 1 0 1 0 0 0",
" 0 0 0 0 0 a10 a9 a8",
" a7 a6 a5 a4 a3 a2 a1 a0",
" o o o o o o o o";
loadpage_lo = " 0 1 0 0 0 0 0 0",
" 0 0 0 x x x x x",
" x x x a4 a3 a2 a1 a0",
" i i i i i i i i";
loadpage_hi = " 0 1 0 0 1 0 0 0",
" 0 0 0 x x x x x",
" x x x a4 a3 a2 a1 a0",
" i i i i i i i i";
writepage = " 0 1 0 0 1 1 0 0",
" 0 0 0 0 0 a10 a9 a8",
" a7 a6 a5 x x x x x",
" x x x x x x x x";
mode = 0x41;
delay = 6;
blocksize = 64;
readsize = 256;
;
memory "lfuse"
size = 1;
min_write_delay = 4500;
max_write_delay = 4500;
read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
"x x x x x x x x o o o o o o o o";
write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
"x x x x x x x x i i i i i i i i";
;
memory "hfuse"
size = 1;
min_write_delay = 4500;
max_write_delay = 4500;
read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
"x x x x x x x x o o o o o o o o";
write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
"x x x x x x x x i i i i i i i i";
;
memory "efuse"
size = 1;
min_write_delay = 4500;
max_write_delay = 4500;
read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
"x x x x x x x x x x x x x x x o";
write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
"x x x x x x x x x x x x x x x i";
;
memory "lock"
size = 1;
min_write_delay = 4500;
max_write_delay = 4500;
read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
"x x x x x x x x x x o o o o o o";
write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
"x x x x x x x x 1 1 i i i i i i";
;
memory "calibration"
size = 1;
read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
"0 0 0 0 0 0 0 0 o o o o o o o o";
;
memory "signature"
size = 3;
read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
"x x x x x x a1 a0 o o o o o o o o";
;
;
Pero esto no basta, ya que el AVRBURN-o-matic accesa a su menu desde un archivo XML que se encuentra en C:\Program Files (x86)\AVR Burn-O-Mat/AVR8_Burn_O_Mat_config.xml
y se agregan las siguientes lìneas
jueves, 25 de mayo de 2017
icestorm, apio-ide y icestudio en Fedora 25
Animado por la adquisición de una tarjeta icestick, así como lo que ha compartido @obijuan_cube sobre el mundo de las FPGA's Libres, me he animado a realizar la instalación del software para realizar las prácticas para mis estudiantes de electrónica digital del ITS Teziutlán, naturalmente apoyado del material que en FPGAWARS existe.
No me queda mas que decir que, la instalación es muy cómoda para el sistema Fedora 25, en relación al iceStorm de Clifford Wolf y Mathias Lasser, las instrucciones para la instalación es muy simple, tal cual están los comandos en su sitio (git clone, make y make install), funcionan perfectamente. Por otro lado, solo unos pequeños traspiés en la instalación de ATOM, el IDE para trabajar con el ecosistema APIO, que para FEDORA, se debe descargar el RPM y realizar la instalación por medio de dnf
sudo dnf install ./atom.x86_64.rpm
ademas, para que funcione adecuadamente la simulación en APIO-IDE, es necesario realizar un link simbólico a la librerias del bzip2 de la forma siguiente
sudo ln -s /usr/lib64/libbz2.so.1.0.6 /usr/lib64/libbz2.so.1.0
Para el ICESTUDIO, elegi usar el appimage x64 que viene en formato .ZIP, solo se trata de descomprimir y ejecutar, creo mas sencillo no puede ser!!!
Les dejo algunos pantallazos
No me queda mas que decir que, la instalación es muy cómoda para el sistema Fedora 25, en relación al iceStorm de Clifford Wolf y Mathias Lasser, las instrucciones para la instalación es muy simple, tal cual están los comandos en su sitio (git clone, make y make install), funcionan perfectamente. Por otro lado, solo unos pequeños traspiés en la instalación de ATOM, el IDE para trabajar con el ecosistema APIO, que para FEDORA, se debe descargar el RPM y realizar la instalación por medio de dnf
sudo dnf install ./atom.x86_64.rpm
ademas, para que funcione adecuadamente la simulación en APIO-IDE, es necesario realizar un link simbólico a la librerias del bzip2 de la forma siguiente
sudo ln -s /usr/lib64/libbz2.so.1.0.6 /usr/lib64/libbz2.so.1.0
Para el ICESTUDIO, elegi usar el appimage x64 que viene en formato .ZIP, solo se trata de descomprimir y ejecutar, creo mas sencillo no puede ser!!!
Les dejo algunos pantallazos
Referencias
http://www.clifford.at/icestorm/
https://github.com/FPGAwars/apio-ide/wiki
https://atom.io/
https://fedoramagazine.org/install-atom-fedora/
https://github.com/wireapp/wire-desktop/issues/532
https://github.com/FPGAwars/icestudio
https://github.com/Obijuan/open-fpga-verilog-tutorial/wiki
martes, 23 de agosto de 2016
Definiendo pines para GAL16V22 de Lattice
Esta prueba la hice desde una box Fedora, instalando el software de Lattice para programar sus dispositivos Lógicos.
En ABEL, la definición de los pines a utilizar cuando se programa una GAL, se hace desde el inicio, sin embargo, en VHDL la cosa no está tan simple, leyendo varios foros, encontre que habria que usar unas sentencias pero no se indica de forma muy genérica.
El código que se presenta a continuación, es un divisor de frecuencias, que tiene dos entradas y una salida, nótese que en este caso, se asigna al pin 6 la entrada de reset para el reloj, y que la declaración de los atributos LOC se hace en el ámbito del instanciamiento de la Entidad que se crea.
Esto solo lo he probado con Lattice y una GAL22V10 simulada en Proteus.
-------------------------------------------------------------------------------
--
-- Company :
-- Engineer: miguel
--
-- Create Date: 04/11/2015 04:50:28
-- Project Name: clk381Hz
-- Module Name: clk381Hz.vhd
-- Description:
--
-- Additional Comments:
--
-------------------------------------------------------------------------------
library IEEE;
use IEEE.std_logic_1164.all; -- Para std_logic
use IEEE.numeric_std.all; -- Para unsigned
entity clk381Hz is
Port (
entrada: in STD_LOGIC;
reset : in STD_LOGIC;
salida : out STD_LOGIC
);
attribute LOC: string;
attribute LOC of reset : signal is "6";
end clk381Hz;
architecture arq1 of clk381Hz is
signal temporal: STD_LOGIC;
signal contador: integer range 0 to 250 := 0;
begin
divisor_frecuencia: process (reset, entrada) begin
if (reset = '0') then
temporal <= '0';
contador <= 0;
elsif (entrada 'event and entrada = '1') then
if (contador = 250) then
temporal <= NOT(temporal);
contador <= 0;
else
contador <= contador+1;
end if;
end if;
end process;
salida <= temporal;
end arq1;
En ABEL, la definición de los pines a utilizar cuando se programa una GAL, se hace desde el inicio, sin embargo, en VHDL la cosa no está tan simple, leyendo varios foros, encontre que habria que usar unas sentencias pero no se indica de forma muy genérica.
El código que se presenta a continuación, es un divisor de frecuencias, que tiene dos entradas y una salida, nótese que en este caso, se asigna al pin 6 la entrada de reset para el reloj, y que la declaración de los atributos LOC se hace en el ámbito del instanciamiento de la Entidad que se crea.
Esto solo lo he probado con Lattice y una GAL22V10 simulada en Proteus.
-------------------------------------------------------------------------------
--
-- Company :
-- Engineer: miguel
--
-- Create Date: 04/11/2015 04:50:28
-- Project Name: clk381Hz
-- Module Name: clk381Hz.vhd
-- Description:
--
-- Additional Comments:
--
-------------------------------------------------------------------------------
library IEEE;
use IEEE.std_logic_1164.all; -- Para std_logic
use IEEE.numeric_std.all; -- Para unsigned
entity clk381Hz is
Port (
entrada: in STD_LOGIC;
reset : in STD_LOGIC;
salida : out STD_LOGIC
);
attribute LOC: string;
attribute LOC of reset : signal is "6";
end clk381Hz;
architecture arq1 of clk381Hz is
signal temporal: STD_LOGIC;
signal contador: integer range 0 to 250 := 0;
begin
divisor_frecuencia: process (reset, entrada) begin
if (reset = '0') then
temporal <= '0';
contador <= 0;
elsif (entrada 'event and entrada = '1') then
if (contador = 250) then
temporal <= NOT(temporal);
contador <= 0;
else
contador <= contador+1;
end if;
end if;
end process;
salida <= temporal;
end arq1;
lunes, 22 de agosto de 2016
Ecuaciones de Latex en Inkscape
Inkscape es un software de dibujo vectorial con licencia libre (GNU GPL V2), y por medio de esta herramienta, es posible el incrustrar ecuaciones en formato Latex, en un gráfico.
La realización de esto, es posible a través de el script diseñado dor Julien Vitard, quien, desde un repo de GitHub, comparte al mundo entero este aporte.
La instalación es muy sencilla, solo se tiene que clonar el repo de github con la consola
La realización de esto, es posible a través de el script diseñado dor Julien Vitard, quien, desde un repo de GitHub, comparte al mundo entero este aporte.
La instalación es muy sencilla, solo se tiene que clonar el repo de github con la consola
$ git clone https://github.com/julienvitard/eqtexsvg.git
y posteriormente, se copia los archivos a la ruta
$ sudo cp * /usr/share/inkscape/extensions/
Se abre inkscape y el resultado es genial!!
Ecuaciones de Latex en Inkscape
Inkscape es un software de dibujo vectorial con licencia libre (GNU GPL V2), y por medio de esta herramienta, es posible el incrustrar ecuaciones en formato Latex, en un gráfico.
La realización de esto, es posible a través de el script diseñado dor Julien Vitard, quien, desde un repo de GitHub, comparte al mundo entero este aporte.
La instalación es muy sencilla, solo se tiene que clonar el repo de github con la consola
La realización de esto, es posible a través de el script diseñado dor Julien Vitard, quien, desde un repo de GitHub, comparte al mundo entero este aporte.
La instalación es muy sencilla, solo se tiene que clonar el repo de github con la consola
$ git clone https://github.com/julienvitard/eqtexsvg.git
y posteriormente, se copia los archivos a la ruta
$ sudo cp * /usr/share/inkscape/extensions/
Se abre inkscape y el resultado es genial!!
sábado, 13 de agosto de 2016
Fritzing Versión 0.9.3no inicia en Fedora 23, 24 y 25 (Actualizado)
Al desempaquetar la nueva versión de Fritzing en Fedora 23, y ejecutar el binario, me indica el siguiente error
Fritzing: error while loading shared libraries: libcrypto.so.1.0.0: cannot open shared object file: No such file or directory
Este error sale si, no tienes instaladas las openssl-devel en tu sistema, sin embargo si lo tengo instalado, el problema surge como indicación de Bug en https://github.com/fritzing/fritzing-app/issues/3245, donde se indica que hay una librería que debe ser borrada de la carpeta lib, en mi caso tuve lo siguiente
lib]$ ls libg*
libgit2.so libgit2.so.0.23.4 libgit2.so.23
Procedi a borrar todo lo indicado en la pagina de issues de github
lib]$ rm libgit2.so*
finalmente, revisar si tenia instalado, ademas de openssl-devel, libgit2-devel
realizado esto, Fritzing vuelve a correr.
***************************************************************************
En Fedora 25 Fritzing requiere de libgit2.so.23 y la Fedora contiene libgit2.so.24 por lo cual no responde de forma adecuada marcando el siguiente error
./Fritzing: error while loading shared libraries: libgit2.so.23: cannot open shared object file: No such file or directory
Para arreglarlo se tiene que crear un enlace simbólico, de este modo Fritzing vuelve a funcionar
$sudo ln -s /lib64/libgit2.so.0.24.6 libgit2.so.23
La fuente original la puedes consultar en:
https://github.com/fritzing/fritzing-app/issues/3289
Fritzing: error while loading shared libraries: libcrypto.so.1.0.0: cannot open shared object file: No such file or directory
Este error sale si, no tienes instaladas las openssl-devel en tu sistema, sin embargo si lo tengo instalado, el problema surge como indicación de Bug en https://github.com/fritzing/fritzing-app/issues/3245, donde se indica que hay una librería que debe ser borrada de la carpeta lib, en mi caso tuve lo siguiente
lib]$ ls libg*
libgit2.so libgit2.so.0.23.4 libgit2.so.23
Procedi a borrar todo lo indicado en la pagina de issues de github
lib]$ rm libgit2.so*
finalmente, revisar si tenia instalado, ademas de openssl-devel, libgit2-devel
realizado esto, Fritzing vuelve a correr.
***************************************************************************
En Fedora 25 Fritzing requiere de libgit2.so.23 y la Fedora contiene libgit2.so.24 por lo cual no responde de forma adecuada marcando el siguiente error
./Fritzing: error while loading shared libraries: libgit2.so.23: cannot open shared object file: No such file or directory
Para arreglarlo se tiene que crear un enlace simbólico, de este modo Fritzing vuelve a funcionar
$sudo ln -s /lib64/libgit2.so.0.24.6 libgit2.so.23
La fuente original la puedes consultar en:
https://github.com/fritzing/fritzing-app/issues/3289
sábado, 7 de mayo de 2016
Scilab -Xcos - Modelica en Fedora 23
Para hacer funcionar los ejemplos que trae Scilab de Modelica, se requiere de un compilador de C, pero ademas de eso se debe instalar con dnf los siguientes:
Referencias
- scilab-devel
- rpm-builds
- fatal error: scicos_block.h: No such file or directory
- gcc: error: /usr/lib/rpm/redhat/redhat-hardened-cc1: No such file or directory
Referencias
- https://github.com/copiousfreetime/hitimes/issues/54
- https://bugzilla.redhat.com/show_bug.cgi?id=1180162
- http://scilab.ninja/scilab-recipe-1-introduction-to-scilabscicos-or-xcos/
miércoles, 28 de octubre de 2015
Uso de sll srl en ghdl, ejemplo con registro de corrimiento
Al tratar de usar la instrucción de corrimiento sll o srl en GHDL, así como en el software de altera Quartus II, obtenida el siguiente error:
no function declarations for operator "sll" en GHDL
can't determine definition of operator ""sll"" -- found 0 possible definitions en Quartus II
en uno de los foros indican que sll, ni srl estan definidos en numeric.std (https://mail.gna.org/public/ghdl-discuss/2008-12/msg00032.html), en este mismo foro, recomiendan cambiar la libreria numeric_std.all por la libreria numeric_bit.all (https://mail.gna.org/public/ghdl-discuss/2008-12/msg00033.html
https://mail.gna.org/public/ghdl-discuss/2008-12/msg00028.html
Sin embargo profundizando un poco mas y no conforme con esta situación, en otro foro, se encontró lo siguiente
-- Solo es posible usar los desplazamientos hasta vhdl 2008
-- y el cual no está bien soportado en los modernos sintetizadores
-- de los fpga y asic
-- a modo de parche(workaround) es convertir la señal a tipo unsigned de
-- la libreria ieee.numeric.std hacer el corrimiento y devolver a std logic
-- vector (wjl, 21/02/2014)
--http://stackoverflow.com/questions/20024887/trying-to-leftshiftlogical-sll-in-vhdl-for-logic-vector-getting-errorfound
de este modo se puede hacer lo siguiente
Y este es el banco de pruebas
Mi agradecimiento al Prof. Garrido, por el desarrollo de la herramienta UMHDL con la cual, mis estudiantes de Ing Mecatrónica de la materia Electrónica Digital, se encuentran desarrollando las simulaciones en VHDL.
no function declarations for operator "sll" en GHDL
can't determine definition of operator ""sll"" -- found 0 possible definitions en Quartus II
en uno de los foros indican que sll, ni srl estan definidos en numeric.std (https://mail.gna.org/public/ghdl-discuss/2008-12/msg00032.html), en este mismo foro, recomiendan cambiar la libreria numeric_std.all por la libreria numeric_bit.all (https://mail.gna.org/public/ghdl-discuss/2008-12/msg00033.html
https://mail.gna.org/public/ghdl-discuss/2008-12/msg00028.html
Sin embargo profundizando un poco mas y no conforme con esta situación, en otro foro, se encontró lo siguiente
-- Solo es posible usar los desplazamientos hasta vhdl 2008
-- y el cual no está bien soportado en los modernos sintetizadores
-- de los fpga y asic
-- a modo de parche(workaround) es convertir la señal a tipo unsigned de
-- la libreria ieee.numeric.std hacer el corrimiento y devolver a std logic
-- vector (wjl, 21/02/2014)
--http://stackoverflow.com/questions/20024887/trying-to-leftshiftlogical-sll-in-vhdl-for-logic-vector-getting-errorfound
de este modo se puede hacer lo siguiente
------------------------------------------------------------------------------- -- -- Company : Instituto Tecnologico Superior de Teziutlan -- Engineer: Miguel Montiel Mtz -- -- Create Date: 26/10/2015 11:54:35 -- Project Name: RegUniversal -- Module Name: RegUniversal.vhd -- Description: -- El registro opera de la siguiente manera -- S0 S1 | Accion -- 0 0 | Hold -- 0 1 | Desplazamiento a la izquierda -- 1 0 | Load -- 1 1 | Desplazamiento a la derecha -- Additional Comments: -- contiene a demas las siguientes terminales -- CLk reloj -- S0,S1 señales de control -- D0..D3 entrada de datos -- RST Reset -- Q0..Q3 Salida de datos -- L entrada serie desplazamiento a la izquierda -- R entrada serie desplazamiento a la derecha ------------------------------------------------------------------------------- library IEEE; use IEEE.std_logic_1164.all; -- Para std_logic use IEEE.numeric_std.all; -- Para unsigned entity RegUniversal is port( CLK: in std_logic; S: in std_logic_vector(1 downto 0); D: in std_logic_vector(3 downto 0); RST, L, R: in std_logic; Q, Qn: out std_logic_vector(3 downto 0) ); end RegUniversal; architecture arq1 of RegUniversal is signal qq : std_logic_vector(3 downto 0); signal xqq:std_logic_vector(3 downto 0); begin process (clk, rst, s) begin if ( rst = '0') then qq <= "0000"; elsif( clk 'event and clk = '1') then if ( s = "00") then --hold qq <= qq; elsif ( s = "01") then --desplaza a la izquierda -- Solo es posible usar los desplazamientos hasta vhdl 2008 -- y el cual no está bien soportado en los modernos sintetizadores -- de los fpga y asic -- a modo de parche(workaround) es convertir la señal a tipo unsigned de -- la libreria ieee.numeric.std hacer el corrimiento y devolver a std logic -- vector (wjl, 21/02/2014) --http://stackoverflow.com/questions/20024887/trying-to-leftshiftlogical-sll-in-vhdl-for-logic-vector-getting-errorfound qq <= std_logic_vector(unsigned (qq) SLL 1); qq(0) <= L; elsif ( s = "10") then -- load qq <= d; else -- desplaza a la derecha qq <= std_logic_vector(unsigned(qq) srl 1); qq(3) <= r; end if; end if; q <= qq; qn <= not qq; end process; end arq1;
Y este es el banco de pruebas
library IEEE; use IEEE.std_logic_1164.all; -- Para std_logic use IEEE.numeric_std.all; -- Para signed, unsigned entity RegUniversal_tb is end RegUniversal_tb; architecture Testbench of RegUniversal_tb is -- Component Declaration for the Unit Under Test (UUT) component RegUniversal port( CLK: in std_logic; S: in std_logic_vector(1 downto 0); D: in std_logic_vector(3 downto 0); RST, L, R: in std_logic; Q, Qn: out std_logic_vector(3 downto 0) ); end component; -- Select an architecture if needed (default is last one analyzed). --for uut: RegUniversal use entity WORK.RegUniversal(arq1); -- Inputs/Outputs -- signal ... signal s: std_logic_vector ( 1 downto 0); signal d: std_logic_vector ( 3 downto 0); signal rst, l, r: std_logic; signal q, qn: std_logic_vector( 3 downto 0); -- Clock (uncomment if needed) -- SustituirY finalmente la simulaciónpor el nombre de puerto apropiado signal clk : std_logic := '0'; constant clock_period : time := 50 ns; signal clock_on : boolean := true; begin -- Instantiate the Unit Under Test (UUT) uut: RegUniversal port map ( clk, s,d,rst,l,r,q,qn); -- Clock process (uncomment if needed) -- Descomentar en caso de requerir senial de reloj -- Sustituir por el nombre de puerto apropiado clock_process : process begin while (clock_on) loop clk <= '0'; wait for clock_period/2; clk <= '1'; wait for clock_period/2; end loop; --assert (false) report ("Finished") severity error; -- Wait forever wait; end process; -- Stimulus process stim_proc: process begin -- hold reset state for 100 ns rst <= '0'; wait for 100 ns; --------------------------------------------------------- -- insert stimulus here --------------------------------------------------------- -- Test case 1 -- ... Asignaciones a seniales de entrada ... rst <= '1'; s <= "10" ; d <= X"A"; wait for 100 ns; rst <= '1'; s <= "00" ; d <= X"0"; wait for 100 ns; rst <= '1'; s <= "10" ; d <= X"1"; wait for 100 ns; rst <= '1'; s <= "11" ; d <= X"7";r <= '1'; wait for 100 ns; rst <= '1'; s <= "11" ; d <= X"3";r <= '1'; wait for 100 ns; -- assert ( ) report "Error case 1" severity error; -- Test case 2 -- ... Asignaciones a seniales de entrada ... wait for 100 ns; -- assert ( ) report "Error case 2" severity error; -- Stop clock -- clock_on <= false; -- Wait forever wait; end process; end Testbench;
Mi agradecimiento al Prof. Garrido, por el desarrollo de la herramienta UMHDL con la cual, mis estudiantes de Ing Mecatrónica de la materia Electrónica Digital, se encuentran desarrollando las simulaciones en VHDL.
sábado, 5 de septiembre de 2015
Instalando Debian sobre Fedora para Pinguino IDE y otras chivas
Pues despues de casi 48 horas de intentar la pinguino IDE en mi pc con Fedora 22, no mas no me dejo, por lo que voy a instalar una Debian como máquina virtual y de ahi a instalar el Pinguino IDE version 11 que se ve muy bueno.
Espero tener un poco mas de tiempo para jugar con el Pinguino IDE después.
También de ahi todo lo demás funciona correctamente
Arduino Uno
Arduino Mega
Programador AVR USBASP + AVRDUDE
Programador para microcontroladores PIC pickit2 Clone
Programador USB Blaster de Altera :)
Labview, Matlab, Scilab y la nueva vesión de Kicad
Espero tener un poco mas de tiempo para jugar con el Pinguino IDE después.
También de ahi todo lo demás funciona correctamente
Arduino Uno
Arduino Mega
Programador AVR USBASP + AVRDUDE
Programador para microcontroladores PIC pickit2 Clone
Programador USB Blaster de Altera :)
Labview, Matlab, Scilab y la nueva vesión de Kicad
viernes, 14 de agosto de 2015
pk2cmd, Piklab, sdcc, gputils en Fedora 22 funcionan
Pues depués de un rato configurando la pc (una gateway mx6947m) con Fedora 22, ya puedo programar microcontroladores PIC de nuevo en Linux!! acabo de probar y configurar Piklab para que por medio de SDCC programe un microcontrolador PIC con el programador USB pickit 2 Clon.
USB blaster clon en Fedora 22 como usuario normal
Ya con mi máquina funcionando de nuevo veo con agrado que Fedora ha mejorado mucho desde que la deje, po cuestiones de problemas con los paquetes y las actualizaciones.
Ahora expongo el caso de tener el programador USB blaster funcionando muy bien en mi box con Fedora 22
Primero, experimenté un poco con el script que hice para hacer andar mi usb blaster en Manjaro, y funcionó muy bien, sin embargo me pregunte si habría otra forma mas sencilla de hacer funcionar mi programador para la CPLD que voy a usar para dar mis clases de electrónica digital, sin verme en la necesidad de voltaer hacia la ventana.
Pues, siempre si la encontré en un post viejito que tenia para hacer andar mi programdor para AVR, el USBASP y para el USB blaster en Manjaro, pero que requería de añadir mi usuario al grupo plugdev, así como al grupo users.
Sin embargo, no me encontré al dichoso grupo en la nueva Fedora, entonces después de googlear un poco, encontré este link, donde ví un archivo similar al de mi post para AVR, pero para el USB blaster de Altera.
Bien, solo abrí el editor pluma con sudo y se guardo con el nombre
Y pues, escrito así, sin la directiva GROUP de los post anteriores, el programador funciona correctamente.
Ahora expongo el caso de tener el programador USB blaster funcionando muy bien en mi box con Fedora 22
Primero, experimenté un poco con el script que hice para hacer andar mi usb blaster en Manjaro, y funcionó muy bien, sin embargo me pregunte si habría otra forma mas sencilla de hacer funcionar mi programador para la CPLD que voy a usar para dar mis clases de electrónica digital, sin verme en la necesidad de voltaer hacia la ventana.
Pues, siempre si la encontré en un post viejito que tenia para hacer andar mi programdor para AVR, el USBASP y para el USB blaster en Manjaro, pero que requería de añadir mi usuario al grupo plugdev, así como al grupo users.
Sin embargo, no me encontré al dichoso grupo en la nueva Fedora, entonces después de googlear un poco, encontré este link, donde ví un archivo similar al de mi post para AVR, pero para el USB blaster de Altera.
# USB-Blaster
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6001", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6002", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6003", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6010", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}=="6810", MODE="0666"
Bien, solo abrí el editor pluma con sudo y se guardo con el nombre
sudo pluma /etc/udev/rules.d/51-usbblaster.rules
Y pues, escrito así, sin la directiva GROUP de los post anteriores, el programador funciona correctamente.
miércoles, 12 de agosto de 2015
Escribiendo desde Fedora 22
Muy bien, pues ya instale Fedora 22 en mi pc, y pues ahi va jalando de a pocos; como principal ventaja, es que ya la habia manejado con anterioridad y que, algunos de los programas instalados con Manjaro, aqui están, funcionando de nuevo.
Definitivamente, la herramienta Yum extender con dnf se tarda mucho, para mi gusto.
Seguiré probando.
Definitivamente, la herramienta Yum extender con dnf se tarda mucho, para mi gusto.
Seguiré probando.
¿El retorno a Fedora?
Desafortunadamente, desde la ultima actualización de Manjaro, y después de creo dos años sin ningún problema grave, antier mi sistema basado en mancjaro se rompió de una forma estrepitosa.
simplemente se quedaba en el splash y asi estaban dando de vueltas las bolitas verdes, despues de seleccionar el kernel de arranque desde GRUB, incluso, el modo a prueba de fallos se quedaba en esa misma situación.
Primero pensé que el grub estaba apuntando mal, después de la actualización, pero mi unidad de dvd no funciona al 100.
resuelto el problema con una unidad usb y el comando dd, logre reinstalar manjaro en su versión de 64 bits (que es la que tenía), sin embargo ahora, después de la reinstalación. al dar inicio en initramfs, la pantalla se volvia negra y se reiniciaba el equipo.
Leyendo en los foros de Manjaro y ArchLinux, encontré que posiblemente estuviera roto el initramfs, por lo que hice un hijack desde el livecd de manjaro y despues de montar la partición en /mnt y hacer que el chroot tuviera acceso a la red.
La actualización, tal y como se indicaba en los foros, no fue posible, y esto por problemas con gpg, cosa que no entendí.
Aunque agradezco el hecho de que he aprendido mucho sobre la reinstalación, ahora mi sistema no reinicia.
Por lo que tuve que bajarme la iso de Fedora en spin con Mate + compiz y pues a ver que resulta.
Ojalá sea posible que mas adelante pueda recuperar Manjaro, ya que la verdad en cuanto a la ejecución de programas para electrónica, todos corrian perfectamente (bueno a excepción del software para programar microcontroladores PIC y Pinguino), cosa que en Fedora hasta su versión creo 19 no logré que lo hiciera de manera satisfactoria.
simplemente se quedaba en el splash y asi estaban dando de vueltas las bolitas verdes, despues de seleccionar el kernel de arranque desde GRUB, incluso, el modo a prueba de fallos se quedaba en esa misma situación.
Primero pensé que el grub estaba apuntando mal, después de la actualización, pero mi unidad de dvd no funciona al 100.
resuelto el problema con una unidad usb y el comando dd, logre reinstalar manjaro en su versión de 64 bits (que es la que tenía), sin embargo ahora, después de la reinstalación. al dar inicio en initramfs, la pantalla se volvia negra y se reiniciaba el equipo.
Leyendo en los foros de Manjaro y ArchLinux, encontré que posiblemente estuviera roto el initramfs, por lo que hice un hijack desde el livecd de manjaro y despues de montar la partición en /mnt y hacer que el chroot tuviera acceso a la red.
La actualización, tal y como se indicaba en los foros, no fue posible, y esto por problemas con gpg, cosa que no entendí.
Aunque agradezco el hecho de que he aprendido mucho sobre la reinstalación, ahora mi sistema no reinicia.
Por lo que tuve que bajarme la iso de Fedora en spin con Mate + compiz y pues a ver que resulta.
Ojalá sea posible que mas adelante pueda recuperar Manjaro, ya que la verdad en cuanto a la ejecución de programas para electrónica, todos corrian perfectamente (bueno a excepción del software para programar microcontroladores PIC y Pinguino), cosa que en Fedora hasta su versión creo 19 no logré que lo hiciera de manera satisfactoria.
domingo, 9 de agosto de 2015
codificador de prioridad 74x148 en GHDL usando solo estandares IEEE
En el siguiente código se muestra la implementación y simulación de un codificador de prioridad 74x148 que viene de ejempl en el libro Diseño Digital: Principios y prácticas de John F. Wakerly.
El problema que encontré al tratar de compilar en primera instancia este código para el codificador de prioridad, es que usa la función conv_std_logic_vector. La cual, en la libreria IEEE.numeric_std no está definida.
Esto es un problema y de acuerdo a lo leido en los siguientes links
link1, link2, y link3, el uso de esta función se implementa al incluir a std_arith, la cual no es un estándar del IEEE, y que solo fue un "invento" de synopsys. Aunque cabe señalar los siguiente:
Muchos colaboradores de los hilos de los foros consultados, argumentan que nunca han tenido algún problema de compatibilidad al hacer uso de std_arith, y que esto se puede implementar, al pasarle el respectivo parámetro al "compilador" del VHDL.
Pero siguiendo estándares, la implementación del codificador se puede realizar de la siguiente manera:
El testbench usado para la prueba de este código es el que se muestra a continuación:
Y la salida de la señales son las siguientes:
SSSSSS
Se señala que se utilizó la herramienta UMHDL v2.00 de Pablo Garrido de la Universidad Miguel Hernández, de Elche, en su versión para sistema operativo Linux
La siguiente dirección es la indicada por el software, en la sección de acerca de..
http://labatc.umh.es:50005/pgarrido/
El problema que encontré al tratar de compilar en primera instancia este código para el codificador de prioridad, es que usa la función conv_std_logic_vector. La cual, en la libreria IEEE.numeric_std no está definida.
Esto es un problema y de acuerdo a lo leido en los siguientes links
link1, link2, y link3, el uso de esta función se implementa al incluir a std_arith, la cual no es un estándar del IEEE, y que solo fue un "invento" de synopsys. Aunque cabe señalar los siguiente:
Muchos colaboradores de los hilos de los foros consultados, argumentan que nunca han tenido algún problema de compatibilidad al hacer uso de std_arith, y que esto se puede implementar, al pasarle el respectivo parámetro al "compilador" del VHDL.
Pero siguiendo estándares, la implementación del codificador se puede realizar de la siguiente manera:
library IEEE;
use IEEE.std_logic_1164.all; -- Para std_logic
use IEEE.numeric_std.all; -- Para unsigned
entity v74x148b is
port(
EI_L: in std_logic;
I_L : in std_logic_vector(7 downto 0);
A_L : out std_logic_vector(2 downto 0);
EO_L, GS_L : out std_logic
);
end v74x148b;
architecture arq1 of v74x148b is
signal EI: std_logic;
signal I : std_logic_vector(7 downto 0);
signal A : std_logic_vector(2 downto 0);
signal EO,GS:std_logic;
begin
codif: process (EI_L, I_L, EI, EO, GS,I,A)
variable j: integer range 7 downto 0;
begin
EI <= not EI_L;
I <= not I_L;
EO<= '1'; GS<= '0'; A<= "000";
if(EI) = '0' then EO <= '0';
else for j in 7 downto 0 loop
if I(j) = '1' then
GS<= '1';
EO<= '0';
A<= std_logic_vector(to_unsigned(j,A 'length));
exit;
end if;
end loop;
end if;
A_L <= not A;
GS_L <= not GS;
EO_L <= not EO;
end process;
end arq1;
El testbench usado para la prueba de este código es el que se muestra a continuación:
library IEEE;
use IEEE.std_logic_1164.all; -- Para std_logic
use IEEE.numeric_std.all; -- Para signed, unsigned
entity v74x148b_tb is
end v74x148b_tb;
architecture Testbench of v74x148b_tb is
-- Component Declaration for the Unit Under Test (UUT)
component v74x148b
port(
EI_L: in std_logic;
I_L : in std_logic_vector(7 downto 0);
A_L : out std_logic_vector(2 downto 0);
EO_L, GS_L : out std_logic
);
end component;
signal EI_L: std_logic;
signal I_L : std_logic_vector(7 downto 0);
signal A_L : std_logic_vector(2 downto 0);
signal EO_L,GS_L:std_logic;
begin
uut: v74x148b port map (
EI_L => EI_L,
I_L => I_L,
A_L => A_L,
EO_L => EO_L,
GS_L => GS_L);
stim_proc: process
begin
I_L <= "11111111"; EI_L <= '1'; wait for 10 ns;
I_L <= "00000000"; EI_L <= '1'; wait for 10 ns;
I_L <= "11111111"; EI_L <= '0'; wait for 10 ns;
I_L <= "10000000"; EI_L <= '0'; wait for 10 ns;
I_L <= "11000000"; EI_L <= '0'; wait for 10 ns;
I_L <= "11100000"; EI_L <= '0'; wait for 10 ns;
I_L <= "11110000"; EI_L <= '0'; wait for 10 ns;
I_L <= "11111000"; EI_L <= '0'; wait for 10 ns;
I_L <= "11111100"; EI_L <= '0'; wait for 10 ns;
I_L <= "11111110"; EI_L <= '0'; wait for 10 ns;
end process;
end Testbench;
Y la salida de la señales son las siguientes:
SSSSSS
Se señala que se utilizó la herramienta UMHDL v2.00 de Pablo Garrido de la Universidad Miguel Hernández, de Elche, en su versión para sistema operativo Linux
La siguiente dirección es la indicada por el software, en la sección de acerca de..
http://labatc.umh.es:50005/pgarrido/
viernes, 24 de julio de 2015
Instalando impresora Samsung SL M2022 en Manjaro Linux
Muy bien, despues de dos dias de andar con jale de esta impresora, me encontré con un problema similar al que marcan en este link, sin embargo, los pasos que ahi marcan, no me funcionaron, y a pesar de haber bajado los drivers oficiales de Samsung, y luego encontre esta otra información, y de igual modo no me funcionó.
El detalle, despues de seguir buscando, es que se debe a un bug con el paquete the Gutenprint, la información la encontré aqui, y pues al desinstalar tal paquete, y al reinstalar el driver unificado de samsung desde AUR, todo funcionó de maravilla.
Como recomendación, la versión que instalé fue la 1 de aur, existen las versiones 4, pero estas, a mi, no me funcionaron.
El detalle, despues de seguir buscando, es que se debe a un bug con el paquete the Gutenprint, la información la encontré aqui, y pues al desinstalar tal paquete, y al reinstalar el driver unificado de samsung desde AUR, todo funcionó de maravilla.
Como recomendación, la versión que instalé fue la 1 de aur, existen las versiones 4, pero estas, a mi, no me funcionaron.
viernes, 17 de julio de 2015
Mi aventura para elaborar un componente nuevo para Fritzing (el CPLD EPM240 de Altera)
(Ví que en una página mencionaron este pequeño aporte - ¡gracias!)
Pues antes que nada, el desarrollo de material para prácticas de Electrónica digital, requiere de un buen tiempo y en este caso, me enfrente a la situación de que el material debe contener la conexión de una CPLD, en especifico, de un tipo de tarjeta, una Altera, la EPM240.El breakout que requiero es el siguiente:
Y con la finalidad de que se mostrará la forma de conectar esta CPLD con un protoboard, pense en usar la herramienta Fritzing, la cual, para los estudiantes que recien inician, les facilita mucho la visualización de conexión.
El problema es que este elemento no se encuentra en las bibliotecas de Fritzing, y pues los vendedores en aliexpress, mercadolibre y otros mas, no me dan las medidas de este elemento.
Ahora bien, siguiente los tutoriales de aquí, aquí y aquí pude, después de algunas horas (inicie hoy a las 11 am y finalice mas o menos a las 2030 hrs) y con ayuda de Inkscape, logré el siguiente gráfico
El problema, después de terminar el gráfico, fue añadirlo al Fritzing, para lo cual, de acuerdo a los anteriores tutos, se puede tomar algún elemento y modificarlo para grabar nuestro nuevo componente.
De igual modo, un problema que encontré, es que la tarjeta contiene muchos terminales (aproximadamente 100), por lo cual me vi en la necesidad de usar un conector, sin embargo Fritzing contiene conectores con una capacidad máxima de 64 terminales. Para esto, de momento y de forma muy chapucera, deje muchos terminales sin conectar.
Otra situación que me encontre, es que Fritzing solo importa imágenes SVG con fuentes OCRA y/o tipo Droid, y lamentablemente mi PC no contaba con esa fuente; este problema se arregla agregando las fuentes requeridas (lee aquí y aquí).
Parecería que ya casi terminaba, pero me encontré con la situación de que a pesar de cambiar las fuentes que había anexado, las ubicaciones de los textos no correspondian con las terminales, y esto lo resolví al modificar una propiedad de los textos en Inkscape:
En el combobox espacio entre líneas, lo tenia a un porcentaje diferente al 100% y esto ocasionaba que al importar la imagen a Fritzing se modificaran las posiciones.
Ya con la imagen bien diseñada, ahora corresponde a la ubicación de los pines según su posición en la tarjeta y reutilizar aquellos que no se encuentran en la numeración. Esto si me llevo un tiempo ;)
Ya finalizado, ahora solo hay que jalar el componente nuevo y armar el proto, el resultado fue el siguiente (para un multiplexor de 4 a 1).
Gracias por leer y no aburrirse ........
Suscribirse a:
Comentarios (Atom)













