parsing alog table file with perl
with a little regex and dec-to-bin conversion. this version still has bugs.
this is after master shifu found some bugs and made me rewrite the code:
with a little regex and dec-to-bin conversion. this version still has bugs.
this is after master shifu found some bugs and made me rewrite the code:
Perl scripting is very useful when you have to generate 8192 lines of code in VHDL.
kode_kode tok.. ngeri gan..
Any language will do.
/*
*/
static char S[8][4][16] = {
14, 4,13, 1, 2,15,11, 8, 3,10, 6,12, 5, 9, 0, 7,
0,15, 7, 4,14, 2,13, 1,10, 6,12,11, 9, 5, 3, 8,
4, 1,14, 8,13, 6, 2,11,15,12, 9, 7, 3,10, 5, 0,
15,12, 8, 2, 4, 9, 1, 7, 5,11, 3,14,10, 0, 6,13,
15, 1, 8,14, 6,11, 3, 4, 9, 7, 2,13,12, 0, 5,10,
3,13, 4, 7,15, 2, 8,14,12, 0, 1,10, 6, 9,11, 5,
0,14, 7,11,10, 4,13, 1, 5, 8,12, 6, 9, 3, 2,15,
13, 8,10, 1, 3,15, 4, 2,11, 6, 7,12, 0, 5,14, 9,
10, 0, 9,14, 6, 3,15, 5, 1,13,12, 7,11, 4, 2, 8,
13, 7, 0, 9, 3, 4, 6,10, 2, 8, 5,14,12,11,15, 1,
13, 6, 4, 9, 8,15, 3, 0,11, 1, 2,12, 5,10,14, 7,
1,10,13, 0, 6, 9, 8, 7, 4,15,14, 3,11, 5, 2,12,
7,13,14, 3, 0, 6, 9,10, 1, 2, 8, 5,11,12, 4,15,
13, 8,11, 5, 6,15, 0, 3, 4, 7, 2,12, 1,10,14, 9,
10, 6, 9, 0,12,11, 7,13,15, 1, 3,14, 5, 2, 8, 4,
3,15, 0, 6,10, 1,13, 8, 9, 4, 5,11,12, 7, 2,14,
2,12, 4, 1, 7,10,11, 6, 8, 5, 3,15,13, 0,14, 9,
14,11, 2,12, 4, 7,13, 1, 5, 0,15,10, 3, 9, 8, 6,
4, 2, 1,11,10,13, 7, 8,15, 9,12, 5, 6, 3, 0,14,
11, 8,12, 7, 1,14, 2,13, 6,15, 0, 9,10, 4, 5, 3,
12, 1,10,15, 9, 2, 6, 8, 0,13, 3, 4,14, 7, 5,11,
10,15, 4, 2, 7,12, 9, 5, 6, 1,13,14, 0,11, 3, 8,
9,14,15, 5, 2, 8,12, 3, 7, 0, 4,10, 1,13,11, 6,
4, 3, 2,12, 9, 5,15,10,11,14, 1, 7, 6, 0, 8,13,
4,11, 2,14,15, 0, 8,13, 3,12, 9, 7, 5,10, 6, 1,
13, 0,11, 7, 4, 9, 1,10,14, 3, 5,12, 2,15, 8, 6,
1, 4,11,13,12, 3, 7,14,10,15, 6, 8, 0, 5, 9, 2,
6,11,13, 8, 1, 4,10, 7, 9, 5, 0,15,14, 2, 3,12,
13, 2, 8, 4, 6,15,11, 1,10, 9, 3,14, 5, 0,12, 7,
1,15,13, 8,10, 3, 7, 4,12, 5, 6,11, 0,14, 9, 2,
7,11, 4, 1, 9,12,14, 2, 0, 6,10,13,15, 3, 5, 8,
2, 1,14, 7, 4,10, 8,13,15,12, 9, 0, 3, 5, 6,11,
};
#include
#include
#include
#define BIT(x) ( 1 << x )
main (argc,argv)
int argc;
char *argv[];
{
int i, j, k, bit, sbox;
char ofile[24];
for ( sbox = 0; sbox < 8; sbox++) { /* S box index */
sprintf(ofile,"sbox%1d.vhdl",sbox+1);
if (freopen (ofile,"w",stdout) == NULL) {
fprintf(stderr,"ERROR:%s, opening %s for output\n",argv[0],ofile);
exit(-1);
}
printf("library ieee;\nuse ieee.std_logic_1164.all;\n");
printf("\nentity %s%1d is\n port (\n","sbox",sbox+1);
printf("\tB:\t\tin std_logic_vector (1 to 6);\n");
printf("\tS:\t\tout std_logic_vector (1 to 4)\n");
printf(" );\nend ;\n");
printf("\narchitecture behave of %s%1d is\n\n","sbox",sbox+1);
printf(" — sbox outputs are little endian order\n\n");
printf("\n");
printf(" begin\n\n");
printf("lookup:\n");
printf(" process(B)\n");
printf("\tvariable i:\t\tstd_logic_vector (1 downto 0);\n");
printf("\tvariable j:\t\tstd_logic_vector (15 downto 0);\n");
printf("\tvariable row0:\t\tstd_logic_vector (1 to 4);\n");
printf("\tvariable row1:\t\tstd_logic_vector (1 to 4);\n");
printf("\tvariable row2:\t\tstd_logic_vector (1 to 4);\n");
printf("\tvariable row3:\t\tstd_logic_vector (1 to 4);\n");
printf("\n");
printf("\tbegin\n\n");
printf("\ti := B(1) & B(6);\n\n");
for (i = 0; i< 16; i++) {
printf("\tj(%d)%s:= %s B(2) and %s B(3) ",i,
((i <= 9)?" ":" "),
((BIT(3)&i)?" ":"not"),
((BIT(2)&i)?" ":"not")
);
printf("and %s B(4) and %s B(5);\n",
((BIT(1)&i)?" ":"not"),
((BIT(0)&i)?" ":"not")
);
}
for ( i = 0, k = 0; i = 0; bit–) {
printf(“\trow%1d(%1d) := “,i,4-bit);
for ( j = 0; j < 16; j++) { /* column index */
if ((S[sbox][i][j])&BIT(bit)) {
k++;
printf("j(%2d) ",j);
if ( k < 8)
printf("or ");
if ( k == 4 )
printf("\n\t\t ");
}
}
k = 0;
printf(";\n");
}
}
printf("\n\t– row selects\n");
for (bit = 1; bit <= 4; bit++) {
printf("\tS(%1d) <= ",bit);
for ( i = 0; i < 4; i++) {
printf("%s(row%1d(%1d) and %s i(1) and %s i(0) ) %s\n",
((i)?"\t\t ":" "),
i,
bit,
((BIT(1)&i)?" ":"not"),
((BIT(0)&i)?" ":"not"),
((i == 3)?";":"or"));
}
}
printf(" end process;\n");
printf("end behave;\n");
}
exit(0);
}
yes sure i can also do it with c language, but i need to parse some data from file so i think perl is more flexible than c, isn’t it?
hi..i am from pakistan.can u make a code in vhdl of cryptography in fpga which i can simulate on xilinx or modelsim
Useful links:
This is a sample coding for connection PostGreSQL using PERL DBI:
#! /usr/bin/perl
use DBI;
my $dbh = DBI->connect("DBI:Pg:dbname=akonlabs;host=localhost", "postgres", "postgres", {'RaiseError' => 1});
my $sth = $dbh->prepare("SELECT * FROM table_name");
$sth->execute();
while(my $ref = $sth->fetchrow_hashref()) {
print "$ref->{'name'} $ref->{'phonenumber'}\n";
}
# clean up
$dbh->disconnect();
}
Useful links:
http://www.techrepublic.com/article/retrieve-data-from-a-postgresql-database-using-the-perl-dbi/6039937
Well, seems like I picked the right supervisor/advisor. He’s still a good programmer! Here’s what we did yesterday. Oh, it was fun learning from the expert!
i am the expert too,
in making trouble, gyahahahaha.
do you like to learn something from me?
@soni: too bad. i already master that field. you have to learn from me 😛
Kalo saia too bat aja deh soal koding koding…:-)
Yang penting kan compiled code bukan source code, lebih penting lagi performance……..
kalau aku perhatikan dan analisa (roy suryo mode = on) kode ibu walaupun lebih panjang tapi pake c++ yg yang merupakan compiled language, sedangkan kode pak budi walaupun pendek tapi pake perl jadi kalau dijalankan performansi kode ibu pasti weeee tetep kalah 😛 =))
aku juga bingung sekarang itu kecuali grafik kode java dan perl itu bisa lebih cepat dari C++.
JIT membuat C++ jadi tampak lemah,
lebih sedih lagi untuk optimalisasi di c++ harus self service. semua dibikin statik dan inline, makin cepat tapi makin tidak fleksibel, cepat dan fleksibel harus metaprogramming……..ampun dechhhhh
mending self service C++ mending self service resto……laperrrrrr
@creative simo: 🙂
@tetangga sebelah: jadi menangin pak budi nih? hi hi hi… jadi gue kalah kemana2x ya? bae lah, da bisanya pake c/c++ jadi biarin lah emang selisih kecepatannya berapa sih orde-nya? kikikik….
yang jago adalah yang buat perl interpreter 🙂
kok bisa-bisanya ya buat intepreter yang bagus (dan buat bahasa pemrograman yang penuh dengan keindahan … iya lho, perl itu indah).
@BR: masih belum ngerti indahnya dimana 😛
Bobby Adi Prabowo 3:04 pm on May 25, 2011 Permalink |
kids stuff #joke
CG 3:14 pm on May 25, 2011 Permalink |
sometimes you have to waste half a day to deal with this kids stuff programming 😦
Bobby Adi Prabowo 3:24 pm on May 25, 2011 Permalink
sering-sering coding di cafe / taman deh, it helps a lot
CG 3:29 pm on May 25, 2011 Permalink |
how can it help? don’t have much time moving from place to place.