1 |
6 |
jaytang |
#include <stdio.h>
|
2 |
|
|
#include <math.h>
|
3 |
|
|
|
4 |
|
|
int main(int argc,char** argv)
|
5 |
|
|
{
|
6 |
|
|
if(argc!=2){printf("usage: CCLheader <image.ppm>\n"); return 1; }
|
7 |
|
|
|
8 |
|
|
int latency=4; //latency to offset counter x, 4 if holes filling, else 3
|
9 |
|
|
unsigned int imwidth;
|
10 |
|
|
unsigned int imheight;
|
11 |
|
|
|
12 |
|
|
char fname[50];//="testimage/mandrill.ppm";
|
13 |
|
|
sprintf(fname,"testimage/%s",argv[1]);
|
14 |
|
|
printf("Input image: %s\n",fname);
|
15 |
|
|
|
16 |
|
|
//////////////////////get image size from header///////////////////////////////
|
17 |
|
|
unsigned int i,j,maxPixValue,colour;
|
18 |
|
|
FILE *input;
|
19 |
|
|
char buffer;
|
20 |
|
|
input=fopen(fname,"r");if(input==NULL){printf("Image not found!\n");return 1;}
|
21 |
|
|
|
22 |
|
|
if(buffer=fgetc(input)!='P')
|
23 |
|
|
{printf("Wrong image format!\n");return 1;}
|
24 |
|
|
colour=fgetc(input)-'0'-5;
|
25 |
|
|
|
26 |
|
|
while(!isdigit(buffer=fgetc(input)))
|
27 |
|
|
if(buffer=='#') //skip comment
|
28 |
|
|
while(fgetc(input)!='\n');
|
29 |
|
|
imwidth=buffer-'0';
|
30 |
|
|
while(isdigit(buffer=fgetc(input)))
|
31 |
|
|
imwidth=imwidth*10+buffer-'0'; //imwidth
|
32 |
|
|
|
33 |
|
|
while(!isdigit(buffer=fgetc(input)))
|
34 |
|
|
if(buffer=='#') //skip comment
|
35 |
|
|
while(fgetc(input)!='\n');
|
36 |
|
|
imheight=buffer-'0';
|
37 |
|
|
while(isdigit(buffer=fgetc(input)))
|
38 |
|
|
imheight=imheight*10+buffer-'0'; //imheight
|
39 |
|
|
fclose(input);
|
40 |
|
|
//////////////////////get image size from header (END)//////////////////////////
|
41 |
|
|
|
42 |
|
|
int x_bit=(int)ceil(log2(imwidth));
|
43 |
|
|
int y_bit=(int)ceil(log2(imheight));
|
44 |
|
|
int address_bit=(int)ceil(log2(imwidth/2));
|
45 |
|
|
int data_bit=2*(x_bit+y_bit);
|
46 |
|
|
|
47 |
|
|
FILE *foutput;
|
48 |
|
|
if((foutput=fopen("CCL.vh","w"))==NULL){printf("File not open.\n");return 1;}
|
49 |
|
|
fprintf(foutput,"`ifndef CCL_vh\n`define CCL_vh\n");
|
50 |
|
|
fprintf(foutput,"\tparameter imwidth=%d;\n",imwidth);
|
51 |
|
|
fprintf(foutput,"\tparameter imheight=%d;\n",imheight);
|
52 |
|
|
fprintf(foutput,"\tparameter x_bit=%d;\n",x_bit);
|
53 |
|
|
fprintf(foutput,"\tparameter y_bit=%d;\n",y_bit);
|
54 |
|
|
fprintf(foutput,"\tparameter address_bit=%d;\n",address_bit);
|
55 |
|
|
fprintf(foutput,"\tparameter data_bit=%d;\n",data_bit);
|
56 |
|
|
fprintf(foutput,"\tparameter latency=%d;\n",latency);
|
57 |
|
|
fprintf(foutput,"`endif");
|
58 |
|
|
fclose(foutput);
|
59 |
|
|
|
60 |
|
|
if((foutput=fopen("CCL.h","w"))==NULL){printf("File not open.\n");return 1;}
|
61 |
|
|
fprintf(foutput,"#ifndef CCL_h\n#define CCL_h\n");
|
62 |
|
|
fprintf(foutput,"\tchar fname[50]=\"%s\";\n",fname);
|
63 |
|
|
fprintf(foutput,"\tunsigned int imwidth=%d;\n",imwidth);
|
64 |
|
|
fprintf(foutput,"\tunsigned int imheight=%d;\n",imheight);
|
65 |
|
|
fprintf(foutput,"\tint x_bit=%d;\n",x_bit);
|
66 |
|
|
fprintf(foutput,"\tint y_bit=%d;\n",y_bit);
|
67 |
|
|
fprintf(foutput,"\tint address_bit=%d;\n",address_bit);
|
68 |
|
|
fprintf(foutput,"\tint data_bit=%d;\n",data_bit);
|
69 |
|
|
fprintf(foutput,"\tint latency=%d;\n",latency);
|
70 |
|
|
fprintf(foutput,"#endif");
|
71 |
|
|
fclose(foutput);
|
72 |
|
|
|
73 |
|
|
return 0;
|
74 |
|
|
}
|
75 |
|
|
|