• 沒有找到結果。

4.3 討論

4.3.2 記錄密度估計

光碟片的資訊記錄密度指單位全像記錄面積的資訊容量,這可由全像多工頁數包含 之資訊除以全像面積求之。

其次,假設全像多工頁數為 N,空間光調制器之像素數目為 R,則一個全像記錄點 所儲存的資訊總量為 NR 位元,故資訊密度為 2

defocus useful

x R N

 。本實驗中 Nuseful為 70,R 為 0.6kB,由 4.2.2 知Δ xdefocus=1.06mm,則儲存密度相當於 12kB/mm2。一張 5 吋光碟半徑 為 60mm,則總容量為 136MB,可見若全像碟片要超越 DVD,則必頇提高多工頁數。

欲提高多工儲存頁面數目,最有效的方法是降低光學不完美雜訊,使訊號 1 與訊號 0 的機率分布分開,若以電腦模擬中記錄中心角度 60°為例,並使放置記錄材料於傅立

圖 25.(a)單位容量隨著頁碼編號的變化(b)誤碼率隨著頁碼編號的變化

(a) (b)

-500 25 0 25 50

0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

-500 -25 0 25 50

0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5

頁碼編號(i) 頁碼編號(i)

NC

BER

48

葉平面上,則由 4.2.2 中的計算得知每個全像片的尺寸 Δx=0.36mm,一張 DVD 光碟片 之半徑約為 60mm,整張光碟片可以儲存之位置為(60mm/0.36mm)2,並由表 5 得知 每個位置之儲存容量為 365MB,故一張光碟片總容量可達 10TB,可以滿足兆位元儲存 之需求。

49

五、結論

體積全像儲存系統是將二維的干涉條紋儲存在三維的體積當中,若以幾何的觀點來 說,Claire Gu 提出的的頁面分離角度可以提供初步的多工儲存頁面數目限制考量,我 們提出以輸出資訊誤碼率上限來決定系統所能容忍的儲存頁數,進而計算系統儲存容量 的方法,我們可藉由讀取第一張全像的輸出訊號 PDF 來預測系統所能容忍的儲存頁數。

我們由通訊理論的角度出發,探討體積全像角度多工系統中,在多工儲存記錄時,光學 不完美雜訊與頁面串音雜訊,對於系統最大儲存容量的影響。由通訊理論的探討中得知 系統輸出訊號與雜訊的關係;利用波恩近似法模擬並探討多工系統的輸出訊號,可以求 得系統最大儲存容量、誤碼率與系統參數的關係,如厚度、記錄中心角度、光學不完美 雜訊大小等。

在此總結全像多工儲存系統的設計流程:首先,由實驗設計中選定角度多工的中心 角度θ(材料內角),將上述的中心角度代入(5)式計算多工頁面間的角度偏移量 Δθ(材 料內角),之後利用折射公式將上述的角度換成材料外的角度偏移量,由這個步驟可以 決定旋轉平台的精度,接下來進行光學實驗,記錄第一張全像片於全像儲存系統中,並 取得光學不完美雜訊對輸出訊號的影響程度,得到 S1、S0、σ1、σ0後就可以進行電腦程 式模擬多工儲存後的系統參數,將電腦程式模擬所得到的輸出頁面訊號與輸入訊號作比 對得到輸出訊號的 PDF,之後利用(20)式、(26)式與(27)式求得 BER、CN與 SCN之預測 值,以單頁 BER 上限值 5x10-3作為選擇 Nuseful的依據,得到 Nuseful的條件後就可以進行 多工儲存光學實驗了。

經過光學實驗的操作,我們發現角度多工儲存系統的設計瓶頸在於:

1. 不同的參考光入射角度,所對應的曝光常數 Eτ不同,即不同的中心角度系統需 要重新設計曝光參數。

2. 光折變材料曝光前與曝光後的折射率不相同,參考光與對應的讀取光之間會產 生角度偏差,且偏差不是一個固定值。

3. 使用頁面式架構來記錄資訊,材料的折射率改變後,系統的對光會因整體穿透 光程的改變而需要進行微調,不能直接使用訊號光來對光。

上述三點對於角度多工儲存系統的實驗操作相當不便,是未來希望將系統自動化需 要克服的重要問題。

50

參考文獻

1. Gu, C., J. Hong, et al."Cross-talk-limited storage capacity of volume holographic memory," J. Opt. Soc. Am. ,1992.

2. Heanue, J. F., M. C. Bashaw, et al., "CHANNEL CODES FOR DIGITAL HOLOGRAPHIC DATA-STORAGE." J. Opt. Soc. Am. A, Vol. 12, 1995.

3. M. Schwartz, W. R. Bennett, and S. Stein, “Communications Systems and Techniques.”

4. Neifeld, M. A. and W. C. Chou, "Information theoretic limits to the capacity of volume holographic optical memory." Applied Optics, 1997.

5. E. S. Maniloff and K. M. Johnson, “Maximized holographic storage,” J. Appl.

Phys. ,1991.

6. 王瓊姿,波恩近似法則用於體積全像資訊記憶之探討,國立交通大學電子物理研究 所碩士論文,2002。

7. Monroe, B. M. et al., "IMPROVED PHOTOPOLYMERS FOR HOLOGRAPHIC RECORDING .1. IMAGING PROPERTIES," Journal of Imaging Science , 1991.

8. Yu, F. T. S., “Optics and information theory,” Malabar, Florida : RoBERt E. Krieger Pub., 1976.

9. 許根玉,傅氏光學,國立交通大學光電工程研究所授課講義,2004

10. S. H. Lin, P. L. Chen, Y. N. Hsiao, and W. T. Whang, "Fabrication and characterization of poly(methyl methacrylate) photopolymer doped with 9,10-phenanthrenequinone (PQ) based derivatives for volume holographic data storage," Opt. Commun. , 2008

11. H.J. Coufal, D. Psaltis, “Holographic data storage,” G. Sincerbox, New York , Springer, 2000

12. K. Y. Hsu, S. H. Lin, W. T. Whang, and W. Z. Chen, "Holographic data storage using photopolymer," in Photorefractive FiBER and Crystal Devices: Materials, Optical Properties and Applications V.

13. 韋安琪,數位式全像資訊儲存容量探討,國立交通大學光電工程研究所碩士論文,

2000。

51

附錄 A 電腦模擬程式

模擬程式 1. 光學不完美的影響

(pattern_gen.m)自動產生使用者設定的解析度(640 x 480)及頁面數目,明暗像素 各佔頁面解析度的 1/2,圖像隨機分布(input_gen_st)產生輸入頁面各個像素 1 或 0 的灰 階值,由於光學不完美而使輸出圖像的所有像素其光強度的機率分布圖為 Rician 分布,

為了方便探討,在此我們假設 Rician 函數雜訊標準差r為 0.6,如此可以在輸出檔案資 料夾中得到系統每一頁的輸入圖樣;在此輸入圖樣指理想訊號只受到光學不完美雜訊的 影響所產生的光強度分布 PDF。

Input_gen_st.m x0_=1:640;y0_=1:480;

base_dir = './rnd640_480/read_rnd_g';

f=load ('mask.mat');

for i=10000:10001

pix = rand(length(y0_),length(x0_));

pix(find(pix>0.5)) = round(200*f.mask_1(find(pix>0.5)));

pix(find(pix<=0.5)) = round(20*f.mask_0(find(pix<=0.5)));

imwrite(pix./256, strcat(base_dir, num2str(i), 'i.bmp'), 'BMP');

end

pattern_gen.m

x0_ = 1:1297; y0_ = 1:1031;

for i=1:1000

fm1 = single(input_gen_st(y0_ , x0_ , 10, 0.6,0.6)); % 產生輸入頁面

imwrite(fm1./256, strcat('rnd1297_1031\', 'read_rnd_g', num2str(i), 'i.bmp'), 'BMP');

end

模擬程式 2. 光學系統參數

模擬時,我們選用波長 473 nm 的雷射作為記錄與讀取的光源,透鏡焦距為 50 mm,材 料的長、寬、厚度分別為 10, 10, 5 mm,多工記錄中心角度在材料中為 30°, 40°, 50°, 60

°,由上述的物理參數代入(5)式計算干涉記錄時最小角度偏移量Δ θ在材料中分別為:

0.0183°, 0.0142°, 0.0120°, 0.0106°。由波恩近似知繞射理論得知,不同的記錄頁面總數 會造成不一樣程度的串音干擾,主要的原因是記錄頁數越多,則終端頁碼之參考光的記 錄角度越遠離中心角度,而記錄角度越小的頁面,其 sinc 函數的寬度越寬,在固定角度 偏移量的架構下,記錄角度較小的頁面容易與前後頁面產生頁面串音雜訊的干擾。

52

% Cross-talk noise

% Input pattern 2D using eq. (16) on paper

%eq(16)

%random pattern

%PATTERN SHIFT clear all;

angle = 30;

for M=100:100:3000 N = 2*M+1;

lambda = 0.473e-3; k = 2*pi/lambda;

a = 10.50; b = 8.34; t = 5;

f = 50;

%M = 5000;

base_dir_in = strcat('.\rnd640_480\read_rnd_g');

base_dir_out = strcat('.\rnd_',num2str(angle),'deg_plus\',int2str(N),'\read_rnd_g');

theda = angle/180.*pi;

alpha = t/lambda.*(5/2/f*sin(theda)+cos(theda)/2-(cos(theda))^2);

beta = t/lambda*sin(theda)+t/lambda/5/f*cos(theda);

delta1 = (-beta +sqrt(beta^2 +4*alpha))/2/alpha % radian delta1.*180/pi

delta = delta1*f; % shift at ref plane yi_index = [-(M):1:M];

yi = yi_index.*delta;

% pixel pitch dx0 = 0.0081;

dy0 = 0.0081;

dx2 = 0.0067;

dy2 = 0.0067;

% pixel numBER X = 640;

Y = 480;

% grid on in-output plane x2_ = [-(X/2-1):1:X/2].*dx2;

y2_ = [-(Y/2-1):1:Y/2].*dy2;

x0_ = [-(X/2-1):1:X/2].*dx0;

y0_ = [-(Y/2-1):1:Y/2].*dy0;

sigma = 0.6;

I0 = 20; I1 = 200;

tic

if angle == 40 R=7861:10:length(yi);

else R=1:10:length(yi);

end

output = single((zeros(length(y2_), length(x2_), length(R)))); % 輸出頁面 for j = 1:length(x2_)

53

disp(strcat('< N = ',num2str(N),' > < x = ',num2str(j),' >'));

for i = R

% pattern shift 移動量

disp(strcat('< i = ',num2str(i),' >'));

% output signal

% 讀取前後頁面產生 pattern shift 矩陣 ym = yi;

mismatch_dy0 = - delta.*(ym - yi(i)).*(-cos(theda)+sin(theda).*(ym + yi(i))./2./f);

%找出每張 mismatch hologram 的位移量

mismatch_dy0_ratio = single(mismatch_dy0./dy0);

ratio = zeros(1,N);

ratio(1,1:N) = abs(mismatch_dy0_ratio - single(fix(mismatch_dy0_ratio)));

ratio1 = zeros(1,N);

ratio1(1,1:N) = 1 - abs(ratio(1,1:N) - single(fix(ratio(1,1:N))));

find(abs(mismatch_dy0) > y2_(end) + dy2/2);

temp = find((ym - yi(i)) >= 0);

if isempty(temp) temp = length(ym);

end ind = 1;

match_index = find(ym == min(ym(temp)) );

fm1 = zeros(N,length(y2_)); % 產生 crosstalk 之頁(i=1:N)與行(k=1:480) for a=1:N

temp = imread(strcat(base_dir_in, num2str(a), 'i.bmp'));

fm1(ind,:) = temp(:,j);

ind = ind+1;

end

for k = 1:length(y2_)

index1 = (fix(single(mismatch_dy0_ratio)) + ( length(y2_) - k +1));

index2 = index1;

index2((match_index+1):end) = index1((match_index+1):end)+1;

index2(1:(match_index-1)) = index1(1:(match_index-1)) -1;

mismatch_y0 = - y2_(k) + mismatch_dy0 ;

% temp_index = find(abs(mismatch_y0)>max(y0_)+dy0);

fm11 = fm1(:,k); fm12 = fm1(:,k);

temp = find(index1 > length(y2_) | index1 < 1); temp2 = find(index1 <=

length(y2_)); %| index1 >= 1);

fm11(temp) = 0; fm11(temp2) = fm1(temp2,k);

temp = find(index2 > length(y2_) | index2 < 1); temp2 = find(index2 <=

length(y2_)); %| index2 >= 1);

fm12(temp) = 0; fm12(temp2) = fm1(temp2,k);

X = fm11.'.*ratio1 + fm12.'.*(1 - ratio1);

% X(temp_index) = 0;

% [t1, t2] = meshgrid(y0_, mismatch_y0);

% [index(:,1), index(:,2)] = min(abs(t2 - t1), [], 2);

54

output(length(y2_)-k+1, j, i) = sum(X(1:N).*sinc( ...

t./lambda./f.*(ym - yi(i)).*sin(theda).* ...

(-1+y2_(k)./f.*(ym +yi(i))./2./f ...

+ cot(theda).*(-(ym +yi(i))./2./f -y2_(k)./f+(ym-yi(i))./2./f.*cos(theda))...

... + cos(theda).*(-1./2.*(ym.^2 - yi(i).^2)./f^2) ...

... + sin(theda)./2./f.*(ym -yi(i)).*(ym +yi(i)).^2./4./f.^2 ...

) ...

).^2);

end end end toc

% 圖片輸出 for i = R

imwrite(flipud(output(:,:,i)./max(max(output(:,:,i)))), strcat(base_dir_out, num2str(i), '.bmp'), 'BMP');

end end

模擬程式 3. 輸入輸出影像比對

比對輸入輸出頁面資訊後,因輸出 PDF 函數無法以常見的函數來做曲線擬合,只能一 個個像素作光強度統計來得到計算每一頁誤碼率與單位容量所需的p1(I)與p0(I)。

Capacity.m

function [I_max] = capacity(prob_0,prob_1,pdf_0,pdf_1,logic_0,logic_1) I_max = 0;

for m = 1:256

% per bit capacity equation if pdf_0(m)>0

I_max = I_max+prob_0*pdf_0(m)*(log2(pdf_0(m)/(prob_0*pdf_0(m)+prob_1*pdf_1(m))));

end

if pdf_1(m)>0

I_max = I_max+prob_1*pdf_1(m)*(log2(pdf_1(m)/(prob_0*pdf_0(m)+prob_1*pdf_1(m))));

end end end

find_thres.m

function [ I_T,BER ] = find_thres(pdf_0,pdf_1,logic_0,logic_1) for It = 1:256

BER_pre(It) = (sum(pdf_0(It:256))+sum(pdf_1(1:It)))/2;

end

if mode(BER_pre) == min(BER_pre)

temp = find(BER_pre==min(BER_pre));

I_T = round(min(temp)+length(temp)/2);

55 BER = min(BER_pre);

% find input threshold else

[ BER,I_T ] = min(BER_pre);

% find output threshold end

end

analy_2D.m

% 計數輸出與輸入圖形的差異

% 輸入為 0 的畫素, 輸出為 P0

% 輸入為 1 的畫素, 輸出為 P1 clear;

N = 1001;

M = 5000;

step = 10;

base_dir_in = strcat('.\rnd640_480\read_rnd_g');

angle = 40;

base_dir_out = strcat('.\rnd_',num2str(angle),'deg\read_rnd_g');

I = (1:256).';

BER = zeros(N,2);

BER(:,1) = -M:step:M;

bit_capacity = zeros(N,2);

bit_capacity(:,1) = -M:10:M;

ind = 1;

logic_0 = 20; logic_1 = 200;

pdf_0 = zeros(N,256); pdf_1 = zeros(N,256);

for m = 1:step:2*M+1 m

P0 = []; P1 = [];

A = uint8(imread( strcat(base_dir_out, num2str(m), '.bmp')));

B = uint8(imread( strcat(base_dir_in, num2str(m), 'i.bmp')));

[ y2 ,x2 ] = size(B);

num = numel(B); % 所有的 pixel 數目 for n = 1:256

[r,c,v] = find(B == n);

pdf(n) = length(v)/num;

end

%in_th = 98;

in_th = logic_0+round(min(find(pdf(logic_0:logic_1) ==

0))+numel(find(pdf(logic_0:logic_1) == 0))/2);

% input threshold for i = 1: x2

temp = A(find(B(:,i)<in_th),i);

P0 = [P0; temp];

temp = A(find(B(:,i)>=in_th),i);

P1 = [P1; temp];

end

pdf_0(ind,:) = hist(P0,I)./length(P0);

pdf_1(ind,:) = hist(P1,I)./length(P1);

bit_capacity(ind,2) = capacity(0.5, 0.5, pdf_0(ind,:), pdf_1(ind,:));

56

[I_T(ind),BER(ind,2)] = find_thres(pdf_0(ind,:),pdf_1(ind,:),logic_0,logic_1); % output threshold

ind = ind+1;

end figure(1)

plot(bit_capacity(:,1),bit_capacity(:,2)) figure(2)

semilogy(BER(:,1),BER(:,2)) figure(3)

plot(I,pdf_0(max(find(BER(:,2)>0.0001)),:),I,pdf_1(max(find(BER(:,2)>0.0001)),:)) rec_page = BER(max(find(BER(:,2)>0.0001)),1)

模擬程式 4. 系統效能評估

繪製包含 PDF 分布、每一頁的誤碼率、單位容量、以及加總的儲存容量。

% pdf plot figure(1) ind = 200;

page = -5000+10*ind;

plot(I,pdf_0(ind,:),I,pdf_1(ind,:));

bit_capacity_page = capacity(0.5, 0.5, pdf_0(ind,:), pdf_1(ind,:));

[I_T,BER_page] = find_thres(pdf_0(ind,:),pdf_1(ind,:),logic_0,logic_1);

str_1 = strcat('page numBER i=',num2str(page),',');

str_2 = strcat('BER=',num2str(BER_page),', capacity=',num2str(bit_capacity_page));

str = strvcat(str_1,str_2);

title(str,'fontsize', 18);

xlabel('gray level', 'fontsize', 18); ylabel('probability', 'fontsize', 18); xlim([0 260]);

figure(2) ind = 350;

page = -5000+10*ind;

plot(I,pdf_0(ind,:),I,pdf_1(ind,:));

bit_capacity_page = capacity(0.5, 0.5, pdf_0(ind,:), pdf_1(ind,:));

[I_T,BER_page] = find_thres(pdf_0(ind,:),pdf_1(ind,:),logic_0,logic_1);

str_1 = strcat('page numBER i=',num2str(page),',');

str_2 = strcat('BER=',num2str(BER_page),', capacity=',num2str(bit_capacity_page));

str = strvcat(str_1,str_2);

title(str,'fontsize', 18);

xlabel('gray level', 'fontsize', 18); ylabel('probability', 'fontsize', 18); xlim([0 260]);

figure(3) ind = 500;

page = -5000+10*ind;

plot(I,pdf_0(ind,:),I,pdf_1(ind,:));

bit_capacity_page = capacity(0.5, 0.5, pdf_0(ind,:), pdf_1(ind,:));

[I_T,BER_page] = find_thres(pdf_0(ind,:),pdf_1(ind,:),logic_0,logic_1);

str_1 = strcat('page numBER i=',num2str(page),',');

str_2 = strcat('BER=',num2str(BER_page),', capacity=',num2str(bit_capacity_page));

str = strvcat(str_1,str_2);

57 title(str,'fontsize', 18);

xlabel('gray level', 'fontsize', 18); ylabel('probability', 'fontsize', 18); xlim([0 260]);

figure(4) ind = 800;

page = -5000+10*ind;

plot(I,pdf_0(ind,:),I,pdf_1(ind,:));

bit_capacity_page = capacity(0.5, 0.5, pdf_0(ind,:), pdf_1(ind,:));

[I_T,BER_page] = find_thres(pdf_0(ind,:),pdf_1(ind,:),logic_0,logic_1);

str_1 = strcat('page numBER i=',num2str(page),',');

str_2 = strcat('BER=',num2str(BER_page),', capacity=',num2str(bit_capacity_page));

str = strvcat(str_1,str_2);

title(str,'fontsize', 18);

xlabel('gray level', 'fontsize', 18); ylabel('probability', 'fontsize', 18); xlim([0 260]);

% BER & capacity plot figure(5)

plot(bit_capacity(:,1),bit_capacity(:,2));

title('capacity','fontsize', 18);

xlabel('gray level', 'fontsize', 18); ylabel('probability', 'fontsize', 18);

figure(6)

semilogy(BER(:,1),BER(:,2)); xlim([-3000 5000]) title('BER','fontsize', 18);

xlabel('page numBER(i)', 'fontsize', 18); ylabel('BER each page', 'fontsize', 18);

% BER & capacity plot for M = 25:400

N = 2*M+1;

BER_N(N) = sum(BER(500-M:500+M,2))/(N);

capacity_N(N) = sum(bit_capacity(500-M:500+M,2));

end figure(7)

semilogy(BER_N(51:2:801)) figure(8)

plot(51:2:801,capacity_N(51:2:801)*640*480,51:2:801,(51:2:801).*640.*480) page = 1001:-1:1;

SC = [];

for i = page

page_C(1002-i) = bit_capacity(i,2)*640*480/1e6*10;

end ind = 1;

for N = 20:20:1000 SC(ind,1) = N*10;

SC(ind,2) = sum(page_C(1:N));

SC(ind,3) = N*640*480/1e6*10;

ind = ind+1;

end figure(9)

plot(SC_30(:,1),SC_30(:,2),SC_30(:,1),SC_30(:,3));hold on;

xlabel('page numBER(i)', 'fontsize', 18); ylabel('storage capacity [Mbits]', 'fontsize', 18);

plot(SC_40(:,1),SC_40(:,2),'g');hold on;

58 plot(SC_50(:,1),SC_50(:,2),'y');hold on;

plot(SC_60(:,1),SC_60(:,2),'r');hold off;

figure(10)

semilogy(BER_30(:,1),BER_30(:,2));xlim([-5000 5000]);hold on;

xlabel('page numBER(i)', 'fontsize', 18); ylabel('BER (log scale)', 'fontsize', 18);

semilogy(BER_40(:,1),BER_40(:,2),'g');

semilogy(BER_50(:,1),BER_50(:,2),'y');

semilogy(BER_60(:,1),BER_60(:,2),'r');

figure(11)

plot(BER_30(:,1),BER_30(:,2));xlim([-5000 5000]);hold on;

xlabel('page numBER(i)', 'fontsize', 18); ylabel('BER (linear scale)', 'fontsize', 18);

plot(BER_40(:,1),BER_40(:,2),'g');

plot(BER_50(:,1),BER_50(:,2),'y');

plot(BER_60(:,1),BER_60(:,2),'r');

相關文件