From 033bb04bf6adb8adc9da160a67347debb69e862f Mon Sep 17 00:00:00 2001 From: Imants Pulkstenis Date: Mon, 22 Jul 2019 22:06:56 +0300 Subject: [PATCH] Add Matlab files --- Matlab/convert.m | 70 +++++++++++++++++++++++++++++++++++++++++ Matlab/mandelbrot.m | 36 +++++++++++++++++++++ Matlab/mandelbrot_log.m | 32 +++++++++++++++++++ mux.v | 46 ++++++++++++++------------- top.v | 30 ++++++++++++++++-- vga_module.v | 5 +-- 6 files changed, 192 insertions(+), 27 deletions(-) create mode 100644 Matlab/convert.m create mode 100644 Matlab/mandelbrot.m create mode 100644 Matlab/mandelbrot_log.m diff --git a/Matlab/convert.m b/Matlab/convert.m new file mode 100644 index 0000000..f732a0c --- /dev/null +++ b/Matlab/convert.m @@ -0,0 +1,70 @@ +%% converting decimal to binary floting point +% +% | Sign | Exponent | Mantissa | +% | 1bit | 8bits | 18bits | +% +% 2^0 => Exponent = 'd127 = 'h7f +% +% Mantissa = [ ( 1-2^(-126) ) ; 0.5 ] +% +% +clear all; +x = 4/320 ; % number to convert +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +exponent = 127; +% +% calculating exponent and mantissa +% +x_new = abs(x); +while (x_new >= 1 && exponent <255 && exponent >0) + x_new = x_new / 2; + exponent = exponent + 1; +end +while (x_new < 0.5 && exponent <255 && exponent >0) + x_new = x_new * 2; + exponent = exponent -1; +end +% covertin x and exponent to fixed point number +disp( ' ' ) +print = ['Converting decimal number ' , num2str(x) , ' to floting point number:']; +disp( print ); +if (x < 0) + print = ['-']; +else + print = [' ']; +end +print = [ ' ' , print , num2str(x_new) , '*2^' , num2str(exponent - 127)]; +disp( print ); +% if number are out of boundaries pront overflow +if (exponent == 255 || exponent == 0) + disp( ' ' ); + disp( '************overflow*************' ); + disp( ' ' ); +end +%% Convering to binary +% Sign +if (x < 0 ) + string_bin = ['1']; +else + string_bin = ['0']; +end +% Exponent +exp_ufi = ufi(exponent,8,0); +temp = [exp_ufi.bin]; +for n=7:-1:0 + string_bin = [string_bin, temp(end-n)]; +end +% Mantissa +x_ufi = ufi(x_new,19,18); +temp = [x_ufi.bin]; +for n=18:-1:0 + string_bin = [string_bin, temp(end-n)]; +end +string_hex = dec2hex(bin2dec(string_bin),7); +%% printing out result +disp( ' ' ); +print = [ ' 27`b_ = ' , string_bin]; +disp( print ); +print = [ ' 27`h_ = ' , string_hex]; +disp( print ); +disp( ' ' ); \ No newline at end of file diff --git a/Matlab/mandelbrot.m b/Matlab/mandelbrot.m new file mode 100644 index 0000000..fd20793 --- /dev/null +++ b/Matlab/mandelbrot.m @@ -0,0 +1,36 @@ +% +% +% Clar figure 1 and workspace +clear all +%figure(1); clf; +% Image size +columns = 320; +rows = 240; +% Terminate after n cycles +termination = 1000; + +x = linspace(-2, 2, columns); %[-2,1] +y = linspace(-1.5, 1.5, rows); %[-1,1] +% +% make blank(white) matrix +x_index = 1:length(x) ; +y_index = 1:length(y) ; +img = ones(length(y),length(x)); + +for k=x_index + for j=y_index + z = 0; + n = 0; + c = x(k)+ y(j)*i ;%complex number + while (abs(z)<2 && n