Showing posts with label university. Show all posts
Showing posts with label university. Show all posts

Thursday, October 07, 2010

哈佛零晨4:00的圖書館


以上的圖是哈佛零晨4:00的圖書館
差距…… 在網上看到這篇文章,覺得很有感觸,或許這再一次印證任何人每一次的成功背後都有不為
人知的付出和汗水。 哈佛老師經常給學生這樣的告誡:如果你想在進入社會後,在任何時候任何場合下都能得心應手並且得到應有的評價,那麼你在哈佛的學習期間,就沒有曬太陽的時間。

作為聞名於世的學府,哈佛大學培養了許多名人,他們中有33位諾貝爾獎獲得者、7位美國總統以及各行各業的職業精英。究竟是什麼使哈佛成為精英的搖籃?哈佛學子接受了什麼樣的精神和理念?這些問題吸引著成千上萬的人去探知其中的答案。
哈佛圖書館牆上的20條訓言似乎已經給出了答案。短短數語,引發深思,給人啟迪。



哈佛圖書館的二十條訓言:
1.此刻打盹,你將做夢;而此刻學習,你將圓夢。

2.我荒廢的今日,正是昨日殞身之人祈求的明日。

3.覺得為時已晚的時候,恰恰是最早的時候。

4.勿將今日之事拖到明日。

5.學習時的苦痛是暫時的,未學到的痛苦是終生的。

6.學習這件事,不是缺乏時間,而是缺乏努力。

7.幸福或許不排名次,但成功必須。

8.學習並不是人生的全部。但既然連人生的一部分―學習也無法征服,還能做什麼 呢?

9.請享受無法回避的痛苦。

10.只有比別人更早、更勤奮地努力,才能嘗到成功的滋味。

11.誰也不能隨隨便便成功,它來自徹底的自我管理和毅力。

12.時間在流逝。

13.現在流的口水,將成為明天的眼淚。

14.狗一樣地學,紳士一樣地玩。

15.今天不走,明天要跑。

16.投資未來的人,是忠於現實的人。

17.受教育程度代表收入。

18.一天過完,不會再來。

19.即使現在,對手也不停地翻動書頁。

20.沒有艱辛,便無所獲

Saturday, August 07, 2010

Ocean script: run parametric analysis (paramAnalysis)


This is the Ocean script tutorial to run multiple parametric analysis (paramAnalysis) and to plot output waveforms and equations / expressions in family group.

Before running ocean script, all the setup like equations/expressions and output waveforms are set in the analog Artist. Then click on --> session --> save ocean script.

This example shows the minimum changes are needed for multiple parametric analysis. The red color lines are the edited part for parametric analysis. The blue color lines are optional.

If you want to re-extract data (like different equations or plotting waveforms), you could disable the ;paramRun and execute the same script with different equations or output waveforms.

The example here is to extract Q factor and capacitance values for differential array cap for LC VCO. Ac analysis is used.


;------------------------------------------

ocnWaveformTool( 'awd )
simulator( 'spectre )
design( "/xxx/simulation/caparray_ac_tb/spectre/schematic/netlist/netlist")
resultsDir( "/xxx/simulation/caparray_ac_tb/spectre/schematic" )
modelFile(
'("/xxxx/spectre/yyyyy.scs" "typical")
)
analysis('ac ?start "1M" ?stop "100G" )
desVar( "vc" 1.3 )
desVar( "b3" 1 )
desVar( "b2" 0 )
desVar( "b1" 0 )
desVar( "b0" 0 )
desVar( "wsw" 0.8u )
desVar( "lsw" 0.4u )
desVar( "wpair" 5u )
desVar( "vcc" 2 )
desVar( "on" 1 )
desVar( "wnmos" 5u )
desVar( "lnmos" 0.18u )
desVar( "vcm" 1.3 )
save( 'v "/vcm1" "/vcm2" )
save( 'i "/R4/PLUS" "/R5/PLUS" )
temp( 27 )

;-------- RunSim setup-----------
;run() ;disable this from the default ocean script


paramAnalysis( "b3" ?start 0 ?stop 1 ?step 1
;cap array bits
paramAnalysis( "b2" ?start 0 ?stop 1 ?step 1

paramAnalysis( "b1" ?start 0 ?stop 1 ?step 1
paramAnalysis( "b0" ?start 0 ?stop 1 ?step 1

paramAnalysis( "vc" ?start 0 ?stop 2 ?step 0.2 )))))
;vc=tuning voltage
paramRun() ; disable this if only data extracting--------


;------------------------------Data Extracting ------------

selectResult( 'ac ) ;add this

pi=3.141592653589793 ;define pi since ocean does not know pi value


Q_diff2 = abs((imag(((VF("/vcm1") - VF("/vcm2")) / (IF("/R4/PLUS") - IF("/R5/PLUS")))) / real(((VF("/vcm1") - VF("/vcm2")) / (IF("/R4/PLUS") - IF("/R5/PLUS"))))))

plot( Q_diff2 ?expr '( "Q_diff2" ) )

addSubwindow() ;add sub window


Cap_diff = (value(imag((IF("/R4/PLUS") - IF("/R5/PLUS"))) 10000000 ?histoDisplay nil ?noOfHistoBins 1) / (2 * pi * 10000000))

plot( Cap_diff ?expr '( "Cap_diff" ) )

Q_diff2_5G = value(abs((imag(((VF("/vcm1") - VF("/vcm2")) / (IF("/R4/PLUS") - IF("/R5/PLUS")))) / real(((VF("/vcm1") - VF("/vcm2")) / (IF("/R4/PLUS") - IF("/R5/PLUS")))))) 5e+09 ?histoDisplay nil ?noOfHistoBins 1)

plot( Q_diff2_5G ?expr '( "Q_diff2_5G" ) )

displayMode( "strip" ) ;display in strip mode

Wednesday, August 04, 2010

Ocean script: Extract clock period jitter

here is the simple Cadence ocean script to extract clock periods. The results can be used to calculate the period jitter and cycle-to-cycle jitter in the excel spread sheet (post processing).






;_____________________________________________

simulator( 'spectre )
;Output file name
p = outfile( "_jitter.txt" "w")

openResults( "/PATH_TO_DESIGN/spectre/schematic" )
selectResult( 'tran )



;-----------------------------------
; Setting
;----------------------------------

vcc = 1.8
threshold = 0.9

t0_edge = 1

% set a large number in the for_loop counter so it can extract the entire sim results
for(i 1 200000

t1_edge = t0_edge + i
t2_edge = t1_edge + 1


;----------------
; measurement
;----------------

per_buf3 = ( cross(v("/buf3") threshold t2_edge "rising") - cross(v("buf3") threshold t1_edge "rising"))
per_buf3b = ( cross(v("/buf3b") threshold t2_edge "rising") - cross(v("buf3b") threshold t1_edge "rising"))



;----------------
; Print out
;----------------

fprintf( p "%-14e" per_buf3 )
fprintf( p "%-14e" per_buf3b )
fprintf( p "\n" )
)

close(p)

Wednesday, June 09, 2010

Thesis Collection

Georgia Institute of Technology (Georgia Tech)
http://smartech.gatech.edu/




Texas A&M Univeristy (TAMU)
http://repository.tamu.edu/

The Hong Kong University of Science and Technology (HKUST)
http://repository.ust.hk

Linköping University (LIU)
http://www.ep.liu.se/

University of Twente
http://essay.utwente.nl/

Thursday, May 20, 2010

Cadence: .cdsinit file setup

Here provide some important setup in the .cdsinit cadence file

.cdsinit file


;To enable the bindkey in layout and schematic in Cadence
let( (bindKeyFileList file path saveSkillPath)
bindKeyFileList = '(
"leBindKeys.il"
"schBindKeys.il"
)



;My simulation environment setup
envSetVal("asimenv" "saveDir" 'string "./artist_states")
envSetVal("asimenv.startup" "projectDir" 'string "./simulation")
envSetVal("asimenv.startup" "cds_ade_wftool" 'string "awd")

;To make sure simulator does not save all nodes but selected nodes, otherwise the sim file size is big
envSetVal("spectre.outputs" "save" 'string "selected")



;First row: set the artist_states directory path
;Second row: set project directory path
;Third row: Set AWD as a default waveform viewer

Tuesday, May 18, 2010

MATLAB: Plot 2 Y-Axes

Here is the MATLAB tutorial about plotting a graph with two y axes.
Plotyy function is used to perform the task. Besides this, it also shows how to set/configure the 2 y-axes by using "set" function. In this example, it sets the Y limit range, auto Y tick, line style, marker, line width, title.




To retrieve data from a csv file, use the "load" function. It is easy to use however it is not allowed to have column header. Thus, column headers are required to be deleted manually.



clc %clear working screen
clear %clear all memory
close %close all figure

format short eng
%format short e %format short g
linewidth=1.5; %set line width of a plot

file = 'fixed_Iden_nonlinear1V_5mA_w10u_2.csv';
temp = load(file, '-ascii'); %load a file with data
%[row,col]=size(temp) ; %find row & col size

%retrieve data
ntime = temp(:, 1);
Iden = temp(:, 2);
Av = temp(:, 3);
BW = temp(:, 4);
GBW = temp(:, 5);
Vsw = temp(:, 6);


plotyy(ntime, Av, ntime, BW) %plot with two y axes

[AX,Y1,Y2]=plotyy(ntime, Av, ntime, BW,'plot') ;

%Property_AX=get(AX(1)) %to check property of AX
set(AX(1),'XMinorTick', 'on') %enable minor tick on x-axis
set(AX(1),'YLim',[1.55 1.65]) % Change Y1 axis limit range
set(AX(1),'YTickMode','auto') % Change YTick become auto
set(AX(2),'YTickMode','auto') % Change YTick become auto
set(Y1,'LineStyle','-', 'Marker','o', 'LineWidth', linewidth )
set(Y2,'LineStyle','-', 'Marker','x', 'LineWidth', linewidth )
%set(Y1,'LineStyle','-', 'Marker','o', 'Color','b', 'LineWidth', linewidth ) %set(Y2,'LineStyle','-', 'Marker','x', 'Color','g', 'LineWidth', linewidth )

title('Voltage Gain & Bandwith vs m Ratio');
set(get(AX(1),'Ylabel'),'String','Voltage Gain, A _V (V/V)')
set(get(AX(2),'Ylabel'),'String','Bandwidth, BW (Hz)')
xlabel('m Ratio');

legend( Y1,'A _V', 'Location','Best')
legend( Y2,'Bandwidth', 'Location','SouthEast')

figure
plot(ntime, GBW,'-
%Plot property put after all plots

title('Gain Bandwidth Product vs m Ratio');
set(gca,'XMinorTick', 'on')
ylabel('Gain-Bandwidth Product (V/V Hz)');
xlabel('m Ratio');
legend('GBW')

--------------------------------------------------------------------

Sunday, May 02, 2010

Matlab: Control theory (transfer_function, bode,rootlocus






Here is a simple Matlab code for control theory like bode plot, root locus, and transfer function. You could either use symbolic method, which using 's' as Laplace symbol or directly key in into vector form (easier).




------------------------------------------------------------------------------------------
clc
clear

syms s %construct symbolic object


F1=20*(s+3)*(s+7)/[(s+5)*(s+2)^2];
display('F1(s)=')
pretty(F1)

F2=1/[s^2+8*s+16]
display('F2(s)=')
pretty(F2)

F3=F1*F2;
display('F3(s)=F1(s)*F2(s)=')
pretty(F3)

f=ilaplace(F3);
display('Inverse Laplace for F3(s):')
pretty(f)


[num,den]=numden(F3); %extract symbolic numerator and denominator
num=sym2poly(num); %form vector for numerator
den=sym2poly(den); %form vector for denominator

Gtf=tf(num,den) %G(s) in polynomial form
Gzpk=zpk(Gtf) %convert G(s) to factored form

subplot(2,1,1)
rlocus(Gzpk) %root locus plot
%sgrid %turn on grid for damping ratio

subplot(2,1,2)
%bode(Gzpk) %bode plot
margin(Gzpk) %find and plot phase & gain margin

-----------------------Result----------------------------------------
F1(s)=

(20 s + 60) (s + 7)
-------------------
2
(s + 5) (s + 2)

F2(s)=

1
-------------
2
s + 8 s + 16

F3(s)=F1(s)*F2(s)=

(20 s + 60) (s + 7)
--------------------------------
2 2
(s + 5) (s + 2) (s + 8 s + 16)

Inverse Laplace for F3(s):

- 80/9 exp(-5 t) + (25/3 t - 10/9) exp(-2 t) + (-15 t + 10) exp(-4 t)

Transfer function:
20 s^2 + 200 s + 420
----------------------------------------------
s^5 + 17 s^4 + 112 s^3 + 356 s^2 + 544 s + 320


Zero/pole/gain:
20 (s+7) (s+3)
---------------------
(s+5) (s+4)^2 (s+2)^2

%%%%%%%%%%%%%%%%%

the red color indicates display problem when posting them in html (displacement)
%%%%%%%%%%%%%%%%%%

-----------------------------------------------------------------------------
Here is the Matlab code for bode plot. It plots out both open loop & close loop response for comparison.

clc
clf
clear
num=1.61e12*poly( -1.37e6);
den=poly([0 0 -2.6e6]);
'G(s)'
G=tf(num,den) %open loop
T=feedback(G,1); %negative feedback 1 (close loop)


subplot(2,1,1)
margin(G)
%grid on

subplot(2,1,2)
margin(T)
%grid on

figure %create new figure
margin(G)
hold on %allow overlap
margin(T)
%grid on


Thursday, April 01, 2010

Learning ADS

ADS (advance design system) from Agilent.

ADS is a prominent EDA tools for RF circuit design and analysis. Since portable devices like iphone, blackberry, Nexusone are getting hot, RF are the one of the hottest research among integrated circuit.

I got to learn this tool to pick up so RF circuit design although my research is not focusing on RF. Overall ADS is very user friendly and easy to use. I just got one comment, I dislike the default background setting, which is white color. It caused my eyesore after looking at computer screen for hours. I changed it to black color as like in Cadence design environment (ADE).



transient test


intermodulation simulation- two tones test


TOI test (third harmonic interception test) which is to test linearity of a circuit


Impedance matching in the Smith chart

Filter synthesis from Agilent.

Wednesday, November 18, 2009

Sunday, November 08, 2009

Matlab: Convolution Operation in Matched Filter

A script to test matched filter design for a given waveform.
In this example, the input signal is in below:





clc;
clear;
%Matched filter is actually a convolution operation between input signal and matched filter with %impulse response h(t)=s(T-t) %s(T-t) ->input signal is flipped over at t=0 and shift to the right by T %seconds %where T is the period of the input signal %(Doing MF in discrete form rather than in %continous form because it is easier to compute)

%Case I
s1=[2 1 ] %input signal to matched filter (each unit in the matrix is assumed to be 1s)
h1=[1 2 ] %impulse response of the matched filter h(t)=s(T-t), where T=2 in this case
output1=conv(s1,h1)

% If higher resolution is needed, let's say 0.5s, just double the sampling
%frequency, hence the matrix size is doubled.


%Case II
s2 = [2 2 1 1 ] % (each unit in the matrix is assumed to be 0.5s)
h2 = [1 1 2 2 ]
output2=conv(s2,h2) % The output value is also doubled then the exact value!! So it is incorrect!
output2=0.5*conv(s2,h2) % Therefore the convolution needs to be multiplied with sampling time, 0.5s

%Case II %In 0.25s resolution
s3 = [ 2 2 2 2 1 1 1 1]
h3 = [ 1 1 1 1 2 2 2 2]
output3=0.25*conv(s3,h3)

%The 3 cases above are consistent where at T=1s, output=2 & T=2s, output=5 %If keep on increasing the %sampling frequency or finer resolution, output approaches to continuous form

---------------------------------------------
Work Screen
---------------------------------------------

s1 =

2 1


h1 =

1 2


output1 =

2 5 2


s2 =

2 2 1 1


h2 =

1 1 2 2


output2 =

2 4 7 10 7 4 2


output2 =

1.0000 2.0000 3.5000 5.0000 3.5000 2.0000 1.0000


s3 =

2 2 2 2 1 1 1 1


h3 =

1 1 1 1 2 2 2 2


output3 =

Columns 1 through 11

0.5000 1.0000 1.5000 2.0000 2.7500 3.5000 4.2500 5.0000 4.2500 3.5000 2.7500

Columns 12 through 15

2.0000 1.5000 1.0000 0.5000

The 3 cases above are consistent where at T=1s, output=2 (purple colur) & T=2s, output=5 (red color)

Monday, October 19, 2009

Generator & Syndromer for (15,7) Cyclic Code

Here is the combined generator and decoder matlab script for (15,7) cyclic code.
In the transmitter, (15,7) cyclic code is sent in generator while syndrome is obtaianed in the receiver side. Can refer back to previous post.






%Given generator g(X)=1+X^4+X^6+X^7+X^8 for a (15,7) cyclic code

%Calculate the transmitted cyclic code for a given message and
%show its operation step by step

clc
clear all;
close all;

%Generator part-------------------------------------------------------------
m=[1 0 1 1 1 0 0]; %A given message with k size (can change to any value)
disp(sprintf('\n\nThe message is %d%d%d%d%d%d%d\n\n',m))
m_flp= fliplr(m); %reverse the sequence because MSB is first shifted in
x=zeros(1,8); %initiallized shift register to zero
x_prev = zeros(1,8); %initialized virtual previous state shift register to zero

for i=1: length(m)

%store all previous value
x_prev(1)=x(1);
x_prev(2)=x(2);
x_prev(3)=x(3);
x_prev(4)=x(4);
x_prev(5)=x(5);
x_prev(6)=x(6);
x_prev(7)=x(7);
x_prev(8)=xor(x(8),m_flp(i));

%encoder connection based on the generator g(X)
x(1) = x_prev(8);
x(2) = x_prev(1);
x(3) = x_prev(2);
x(4) = x_prev(3);
x(5) = xor(x_prev(4),x_prev(8));
x(6) = x_prev(5);
x(7) = xor(x_prev(6),x_prev(8));
x(8) = xor(x_prev(7),x_prev(8));

%storing values
x_store(i+1,:)=[x(1) x(2) x(3) x(4) x(5) x(6) x(7) x(8)]; %the +1 to include initial state
shift_number(i+1,:)=i;
m_input(i+1)=m_flp(i);

end

%display nicely
for i=1: (length(m)+1) %plus 1 to include initial state
disp(sprintf('Shift number = %d\tRegister-->%d%d%d%d%d%d%d%d,\tinput=%d',shift_number(i),x_store(i,:),m_input(i)))
end

output=[x_store(length(m)+1,:) m]; % Transmited output

disp(sprintf('\n\nThe transmitted cyclic code is %d%d%d%d%d%d%d%d%d%d%d%d%d%d%d\n\n',output))


%Receive part-------------------------------------------------------------

%Calculate the received cyclic code for a given messege and

%show its operation step by step to get syndrome

z=output;

%to enable corrupted bit
%z=xor(output , [1 0 0 0 0 0 0 0 0 0 0 0 0 0 0])

z_flp= fliplr(z); %reverse the sequence because MSB is first shifted in
x=zeros(1,8); %initiallized shift register to zero
x_prev = zeros(1,8); %initiallized virtual previous shift register to zero

for i=1: length(z)

%store all previous value
x_prev(1)=x(1);
x_prev(2)=x(2);
x_prev(3)=x(3);
x_prev(4)=x(4);
x_prev(5)=x(5);
x_prev(6)=x(6);
x_prev(7)=x(7);
x_prev(8)=x(8);

%decoder connection based on the generator g(X)
x(1) = xor(x_prev(8),z_flp(i));
x(2) = x_prev(1);
x(3) = x_prev(2);
x(4) = x_prev(3);
x(5) = xor(x_prev(4),x_prev(8));
x(6) = x_prev(5);
x(7) = xor(x_prev(6),x_prev(8));
x(8) = xor(x_prev(7),x_prev(8));

%storing values
x_store(i+1,:)=[x(1) x(2) x(3) x(4) x(5) x(6) x(7) x(8)];
shift_number(i+1,:)=i;
z_input(i+1)=z_flp(i);

end

%display nicely
for i=1: (length(z)+1) %plus 1 to include initial state
disp(sprintf('Shift number = %d\tRegister-->%d%d%d%d%d%d%d%d,\tinput=%d',shift_number(i),x_store(i,:),z_input(i)))
end

disp(sprintf('\n\nThe syndrome is %d%d%d%d%d%d%d%d',x_store(length(z)+1,:)))



------------------------------------------------------
Work screen
------------------------------------------------------

The message is 1011100


Shift number = 0 Register-->00000000, input=0
Shift number = 1 Register-->00000000, input=0
Shift number = 2 Register-->00000000, input=0
Shift number = 3 Register-->10001011, input=1
Shift number = 4 Register-->01000101, input=1
Shift number = 5 Register-->00100010, input=1
Shift number = 6 Register-->00010001, input=0
Shift number = 7 Register-->00001000, input=1


The transmitted cyclic code is 000010001011100


Shift number = 0 Register-->00000000, input=0
Shift number = 1 Register-->00000000, input=0
Shift number = 2 Register-->00000000, input=0
Shift number = 3 Register-->10000000, input=1
Shift number = 4 Register-->11000000, input=1
Shift number = 5 Register-->11100000, input=1
Shift number = 6 Register-->01110000, input=0
Shift number = 7 Register-->10111000, input=1
Shift number = 8 Register-->01011100, input=0
Shift number = 9 Register-->00101110, input=0
Shift number = 10 Register-->00010111, input=0
Shift number = 11 Register-->00000000, input=1
Shift number = 12 Register-->00000000, input=0
Shift number = 13 Register-->00000000, input=0
Shift number = 14 Register-->00000000, input=0
Shift number = 15 Register-->00000000, input=0


The syndrome is 00000000

Matlab: Calculating Syndrome of Cyclic Code (15,7)

The design of the syndrome decoder

It is a matlab script to calculate syndrome of a (15,7) cyclic code.

%for cyclic code (15,7)
%Given g(X)=1+X^4+X^6+X^7+X^8
%Design a syndrome computation circuit and calculate the syndrome if
input, Z=1+X^12+X^14

clc
clear all;
close all;

z=[1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 ]; %input vector=1+X^12+X^14
z_flp= fliplr(z); %reverse the sequence because MSB is first shifted in
x=zeros(1,8); %initialized shift register to zero
x_prev = zeros(1,8); %initialized virtual previous shift register to zero

for i=1: length(z)

%store all previous value
x_prev(1)=x(1);
x_prev(2)=x(2);
x_prev(3)=x(3);
x_prev(4)=x(4);
x_prev(5)=x(5);
x_prev(6)=x(6);
x_prev(7)=x(7);
x_prev(8)=x(8);

%decoder connection
x(1) = xor(x_prev(8),z_flp(i));
x(2) = x_prev(1);
x(3) = x_prev(2);
x(4) = x_prev(3);
x(5) = xor(x_prev(4),x_prev(8));
x(6) = x_prev(5);
x(7) = xor(x_prev(6),x_prev(8));
x(8) = xor(x_prev(7),x_prev(8));

%storing values
x_store(i+1,:)=[x(1) x(2) x(3) x(4) x(5) x(6) x(7) x(8)];
shift_number(i+1,:)=i;
z_input(i+1)=z_flp(i);

end

%display nicely
for i=1: (length(z)+1) %plus 1 to include initial state
disp(sprintf('Shift number = %d\tRegister-->%d%d%d%d%d%d%d%d,\tinput=%d',shift_number(i),x_store(i,:),z_input(i)))
end




--------------------------------------------------------------------------------------
Calculating Syndrome Value:
Shift number = 0 Register-->00000000, input=0
Shift number = 1 Register-->10000000, input=1
Shift number = 2 Register-->01000000, input=0
Shift number = 3 Register-->10100000, input=1
Shift number = 4 Register-->01010000, input=0
Shift number = 5 Register-->00101000, input=0
Shift number = 6 Register-->00010100, input=0
Shift number = 7 Register-->00001010, input=0
Shift number = 8 Register-->00000101, input=0
Shift number = 9 Register-->10001001, input=0
Shift number = 10 Register-->11001111, input=0
Shift number = 11 Register-->11101100, input=0
Shift number = 12 Register-->01110110, input=0
Shift number = 13 Register-->00111011, input=0
Shift number = 14 Register-->10010110, input=0
Shift number = 15 Register-->11001011, input=1

Other cyclic code: generator-syndromer-for-15-7-cyclic-code

Sunday, October 11, 2009

EMC/EMI lab tour

Last semester, I attended electromagnetic compatibility and interference (EMC/EMI) graduate course in NTU. It is an interesting course which introducing the importance of EMC/EMI test and the way to reduce electromagnetic inteference in circuits and PCB boards. This course was taught by Prof See & Prof Koh. They are indeed knowledgeable and good in teaching, giving clear explanation.

having class in the semi-aechoic chamber

The most impressive part of this course is that we had a lab lecture inside in the Semi-Anechoic Chamber (SAC) at the last lecture. Wow, it is my first time visiting aechoic chamber.

the ceilling of the chamber was covered by absorbers

Antenna test equipments for different frequency ranges

There was a rotating ground plate which can support a tank weight. The metal table was a standard test setup for commercial products like computers and TV.

taking a photo :p

Besides visiting semi-aechoic chamber, we also visited Mode Stirred Chamber (MSC) or reverberation chamber. It was an improved version chamber that could stir electromagnetic wave in all direction to the device under test (DUT). Moreover the build up cost of this chamber is cheaper than SAC type. However MSC chamber is still under heavy research, hence it is not commonly used.

vertical stirrer

horizontal stirrer, near to the ceiling

a remoted plane was placed on a metal test table in the mode-stirred chamber (demo purpose)

Besides this, we also visited a smaller semi-aechoic chamber which filled with different type of absorber.

closure look on the absorber.

photo taking again :p


The alternative test room is to use this shielded enclosure room, which is less costly. But this room is a bit too small, just for demonstration purpose.

Saturday, September 05, 2009

MATLAB - plot microwave filter S11 S21





Matlab
-----------
here is a matlab script to plot the simple microwave filter parameter S11 & S21

clc % clear cache memory
format long % format long
clear % clear display
ii=1; % ii counter (note cannot use "i" as a counter since "i" is a complex format)
count=1 ;
ff= 3.8e9 ; %start freq
ff_end=4.2e9 ; %end freq

ff_increment=1e6 ;
for index =ff:ff_increment:ff_end
f0=4e9 ; % center freq
BW=80e6 ; %given bandwidth range

M=[ 0.000000 1.040903 0.000000 0.000005 ;
1.040903 0.000000 0.771515 0.000000 ;
0.000000 0.771515 0.000000 1.040903 ;
0.000005 0.000000 1.040903 0.000000 ] ;
%M is a coupling matrix

lambda=(f0/BW)*(ff/f0-f0/ff) ;
R1=1.32748 ;
R2=1.32748 ;
R=[ i*1.32748 0 0 0 ;
0 0 0 0 ;
0 0 0 0 ;
0 0 0 i*1.32748 ] ;

II=[ 1 0 0 0 ;
0 1 0 0 ;
0 0 1 0 ;
0 0 0 1 ] ;
%identity matrix

AAA=lambda*II-R+M;
ZZ=AAA;

ZZinv=inv(ZZ) ;
YY11=ZZinv(1,1) ;
YY41=ZZinv(4,1) ;
YY44=ZZinv(4,4) ;

S11=1+2*i*R1*YY11;
S21=-2*i*sqrt(R1*R2)*YY41;
S22=S11;
S12=S21 ;

SS=[ S11 S12 ; S21 S22] ;
str=[count ff S11 S12];
disp(sprintf('%d) %d --> %d %d',str) )
ST(ii,1)=ff;
ST(ii,2)=20*log10(S11);
ST(ii,3)=20*log10(S12);
ff=ff+ff_increment;
ii=ii+1;
count=count+1 ;
end


subplot(2,1,1);

plot(ST(:,1),ST(:,2));
%loglog(ST(:,1),ST(:,2));

grid on ;
ylabel('S11 dB') ;
xlabel('frequency')
title(' S11 ')

%hold on ;

subplot(2,1,2);

plot(ST(:,1),ST(:,3),'r'); % plot on linear scale
%loglog(ST(:,1),ST(:,3),'r'); %if want to plot on loglog scale
grid on ;
ylabel('S21 dB') ;
xlabel('frequency')
title(' S21 ')

Sunday, June 14, 2009

Photo taking in School of Art Design Media, NTU

A golf field is built on top of a building roof?

One of the weekend, my friend Xiao Jun and I decided to take a photoshot on School of Art, Design & Media (ADM). I found this building is quite unique and stunning, in term of the building shape, no doubt, becoming an iconic building in NTU. Not sure how to describe the shape of the building. A picture is worth of thousand words, the picture below will give you clear view. The roof is fully covered with grass. It seems like a modern golf field on top of a building if seeing from a far distance. In the center of the school, there is a fountain, enhancing a friendly and cosy environment.

stunning shape of School ADM

entrance to the center of the building
walking along on the roof

my friend, Xiao Jun

having dinner @ canteen 1

walking pathway

Thursday, April 02, 2009

Friday, March 20, 2009

Razavi Workshop/Seminar in Singapore!

Prof Behzad Razavi

Last two week, I received an email from NTU that Institute of Microelectronics (IME), IEEE Singapore MTT/AP Chapter and IEEE Singapore Solid-State Circuits Chapter were going to organiza a two-day workshop by Prof Behzad Razavi, the most distinguish research in the field of analog circuit design + IEEE fellow. The workshop called "High-Performance Analog, RF and mmWave CMOS Design". I was excited receiving the email because I treat him as mentor and I often read his journals and books. I really learn a lot from his research papers and books because his approach in the books is very practical to design rather than complicated formula and calculations. I found his books/papers focus on intuitive ways which allow readers to know the insight of the theories.

content of the workshop

The workshop was divided to few sections. There were ADCs, PLL, Sub 1V RF design on day1, modellig, 1st, 2nd, 3rd generation of 60GHz RF Rx & Tx, and mm-wave circuit technique. Wow, it included a lot of materials in just two day events. It really was an event not to be missed! However it was not a free workshop, the fees for regular participant and IEE member was S$990 and S$790 respectively, it was quite expensive to me. Fortunately, the fee for regular students and IEEE regular students were S$100 and S$75, which were affordable to me. So I quickly joined IEEE membership for USD$12.50. Was it an impulsive move?

60GHz RF Rx

In this Monday and Tuesday, I attended the workshop in IME building, near to National University of Singapore NUS. The workshop was quite interesting and intensive. Luckily I could follow his pace. I finally saw Prof Razavi in person. Haha.. moreover I eventually took photo with him and my friends as shown in picture below. As overall, I think it is pretty worth for the workshop, because I have gained considerable knowledge (not because of taking photo with him, just part of it), especially in ADC and RF parts. I was impressed with the new black box modelling technique, which was totally out of my knowledge.

The most impressive part I remember, he said to become good RF designers, the designers have to spend at least one year in RF modeling, especially in inductor modelling, then at least another one year in architecture designs and at least another one year in RF circuit designs.

Another thing I would like to highlight is that he, himself, personally did the 60GHz Rx/Tx designs. Only the layout parts were done by his students. Therefore those papers only have his name only (single author name only). Wow, I think no much Profs will spend their times in research works. I really worship him! A truely research and Prof.

Taking photo with Prof Razavi and my friends in the workshop

On the following day, there was a free seminar by Prof Razavi as well in NUS. The topic is about low-power 10-bit pipeline ADC with calibration technique. Of course, I didnt miss it. In the seminar, I was impressed by the new technique which could achieve considerable low power and high accuracy.

Free seminar by Prof Razavi in NUS

closer look: differential op-amp with fast CMFB

Razavi: The performance of INL

Tuesday, March 10, 2009

Thesis link from NCU National Central University Taiwan

I recently came across a thesis link from National Central University (NCU), Taiwan. In this link, you could search the theses you interested. Most of the theses can be downloaded without restriction, however thoses new theses will only be released to public after 1 or 2 years. That means the theses material are about 1 or 2 years old. I think it is still reasonable, at least it provides some reference.


Logo of NCU

The picture below is the search page of the library. Just type in the important keyword and search it.

NCU library search page

Bear in mind that some of the theses have restriction as shown in below.

Thesis status

The link is http://thesis.lib.ncu.edu.tw/index_e.html

-------------------------------------------------------------------------------------------------------------

Wednesday, November 19, 2008

University Technology Malaysia (UTM) Thesis links

UTM

I found out a good site about University Technology Malaysia (UTM) thesis http://eprints.utm.my/view/divisions/. It contains graduate thesis and technical papers in different division or faculty. The faculty I interested in is faculty of electrical engineering (FKE) because I was graduated from that faculty in year 2002. I still remember my matric card number AE980808. Is it a good number?







Hope this UTM thesis collection link may help you!

---------------------------------------------------------------------------------------------------