% Written by: Holguer A Becerra %fpgalover.com %image to mif A = imread('01.bmp'); [h,w,channels]= size(A); nombre_modulo='Alien1' color_when_is_on='12''hFFF' fID = fopen('Alien1.v','w'); fprintf(fID,'module %s(input clk,input [3:0]scale,input flip_on,input on_off,input [10:0]x_video,input [10:0]y_video,input [10:0]x_pos,input [10:0]y_pos,output image_on,output [11:0]color);\n\n',nombre_modulo); fprintf(fID,'\nwire [10:0]real_x=(x_video[10:0]>>scale[3:0])-(x_pos[10:0]>>scale[3:0]);\nwire [10:0]real_y=(y_video[10:0]>>scale[3:0])-(y_pos[10:0]>>scale[3:0]);\n'); fprintf(fID,'\nwire [%d:0]bit_x=flip_on?(11''d%d-real_x[%d:0]):real_x[%d:0];',ceil(log(w)/log(2)),w-1,ceil(log(w)/log(2)),ceil(log(w)/log(2))); fprintf(fID,'\nreg [0:%d]datos;\nassign image_on=datos[bit_x[%d:0]] & on_off & (real_x[10:0]>=11''d0) & (real_x[10:0]<11''d%d)& (real_y[10:0]>=11''d0) & (real_y[10:0]<11''d%d);\n',w-1,ceil(log(w)/log(2)),w,h); fprintf(fID,'assign color[11:0]=image_on?%s:12''d0;\n',color_when_is_on); fprintf(fID,'always@(posedge clk)\nbegin\n case(real_y[10:0])\n'); dir=0; b=A; for y = 1:(h) fprintf(fID,'\n %d:datos[0:%d]<=%d''b',dir,w-1,w); dir=dir+1; for x = 1:(w) % R G B pixel=uint32(b(y,x,1))*65536+uint32(b(y,x,2))*256+uint32(b(y,x,3)); if(pixel>0) fprintf(fID,'1'); else fprintf(fID,'0'); end end fprintf(fID,';'); end fprintf(fID,'\n default: datos[0:%d]<=%d''d0;\n',w-1,w); fprintf(fID,'\n endcase\n'); fprintf(fID,'end\n'); fprintf(fID,'\nendmodule\n'); fclose(fID);