第一篇:2010年北郵光研院《光纖通信》專業筆試題
2010年北京郵電大學信息光子學與光通信研究院
《光纖通信》專業筆試題
一、填空題(共26分,每空2分)
1、光纖傳輸特性:___,___,___。
2、單模光纖三種色散:___, ___, ___;其中___色散導致單模光纖出現傳輸極限。(原話實在忘了,課本也沒在手里,意思表達不清楚,湊合看吧,看過書的人應該明白的,嘿嘿)
3、光纖通信系統的三大性能指標:___,___,___。
4、給出L、Pi、Po=0,計算α損耗系數___.5、(還有一個題想不起來了,總之填空應該拿滿分的)
二、選擇題(共24分,每題4分)
1、影響DWDM傳輸容量的因素有:(五個選項,不定項選擇,具體選項忘了~)
2、EDFA能放大那些波長的光:(選項略)
3、光檢測器,給出截止波長hv>Eg,問能檢測出那些波長的光。
4、單模光纖當波長大于lanmdaC(你懂的,這個希臘字母實在是找不到在哪)時截止,問那些波長的光能通過?
5、適合DwDm傳輸的標準?(答案應該是G.655)
6、光接收機的性能指標。
三、大題(計算+簡述,共50分)
計算題:
1、(5分)回波損耗,知Po,反射Pi,求α?
2、(10分)畫出WDM系統并闡述工作原理(感覺這不是計算題,下題同)
3、(10分)EDfA的三種泵浦結構并作簡單說明。
簡述題:
1、(10分)光纖傳輸特性對于光脈沖的影響。
2、(10分)光與物質的三種反應過程并寫出與之相對應的半導體器件。(寫到這忍不住抱怨句:這也忒簡單了吧,考填空正好~)
3、(5分)WDM中監控信道的作用及對波長的選擇。
09題型有填空,選擇,計算,問答。填空有四五道,選擇有四道題,諸如單模光纖中的三種色散類型,光纖通信系統的性能指標,損耗系數的計算,光發送機的性能指標等等。
計算加問答共6道題,如下:
1.DWDM系統中要求總功率不得高于17dBm,該系統共32個子信道,每個子信道功率相同,則每個子信道的功率不得高于多少?(記得lg2=0.3010的話,該題答案應該是1.95dBm)
2.EDFA的3種泵浦結構寫出一種
3.FTTH的實現方案
4.偏振膜色散的形成原因及其對通信系統性能的影響
5.抖動性能的定義及其對系統的影響
6.WDM系統中監控信道的作用及其對波長選擇的要求。
第二篇:北郵光纖通信復習提綱
第一章
1、請解釋將光纖分為單模和多模的判斷依據
2、請解釋光纖數值孔徑的概念,并給出相對折射率表示的數值孔徑的數學表達式。為什么通信用的光纖數值孔徑都比較小
3、為什么要設計漸變折射率光纖,請簡述其工作原理
4、色散的機理是什么,有哪些類型,列出描述色散大小的三個等效參數:最大時延差,群速色散系數,色散系數之間的相互關系(兩兩關系,三個表達式)
5、什么是正常色散區,反常色散區,如何判別區分
6、列出光纖中損耗的類型,并說明最終決定光纖損耗(的因素),決定理論極限的包含其中哪幾項
7、列出光纖非線性效應的類型,給出每一項的概念
8、簡述光纖的發展過程
9、標量近似法求解光纖中的模式時的結果LPmn中m、n的物理含義,并會識別和畫出示意圖
第二章
1、光纖通信系統對光源的要求
2、光與物質的相互作用的三個物理過程,指出半導體激光器,發光二極管和光電檢測器的工作原理各建立在什么作用的基礎上
3、激光產生所需要的三個物質條件和發生激射的兩大理論基礎,LD諧振腔的作用
4、推導F-P腔,Bragg波紋光柵諧振腔的諧振模式間隔與腔長之間的關系
5、激光器的P-I特性曲線以及溫度的影響
6、直接調制與間接調制之間的區別,列舉幾種間接調制的類型
7、畫出光發射機的原理框圖,列出兩種控制電路的名稱,并簡述各自的作用
8、為什么經常采用雙異質結的半導體制作LD9、激光器縱模和橫模的含義,各有哪些類型
10、LD與LED的區別,LED工作時有沒有受激輻射,為什么說LED發射的光譜主要是自發輻射譜
11、定性描述LD瞬態特性的兩個重要現象是?定量描述的工具是?列出表達式 并用它求解閾值時的電子密度和電光延遲時間
12、光調制方式
第三章
1、光纖通信系統對光電檢測器的要求
2、光接收機的原理框圖,指出其主要性能指標
3、實現光電檢測的兩種常用器件,簡述其結構,原理
4、為什么光電二極管波長響應同時存在上截止波長和下截止波長兩個限制
5、光接收機中的噪聲有哪兩大類,又各自包含哪些
6、影響光接收機靈敏度的主要因素
7、相干接收的原理和關鍵技術
第四章
1、什么是HFC系統?什么是副載波復用技術?
2、光纖通信系統的設計考慮,特別是無中繼再生段的設計考慮
3、數字系統中傳輸性能的兩個主要指標,以及抖動和漂移的概念
4、光放大器有哪兩類,簡述EDFA和RFA的工作原理
5、說出EDFA的三種內部泵浦結構的三種基本應用形式
第五章
1、常用的光連接器有哪些型號
2、說明恒量無源光器件性能的常用指標參數
3、解釋光環形器的工作原理(對照圖說明)
4、列舉出三種以上的波分復用/解波分復用器件的構成方式
5、列舉出幾種基于不同結構設計的機械光開關
6、解釋DWDM和CWDM系統的區別
7、'推導利用介質膜或干涉膜進行濾波的原理
第六章
1、光傳送網中的兩種典型設備是?各說出兩種典型的實現方式
2、說出三種光交換的方式和交換粒度
3、說出自動交換光網絡ASON的三大平面,五大類接口,三種連接的名稱
4、OCS、OBS、OPS的原理及特點,OPS沖突解決方案
5、有源光網絡和無源光網絡的區別是?
6、說出xPON、FTTx中的x可以代表哪些字母,并給出中文解釋
7、PTN的概念及技術分類
8、MSTP概念和技術分類
第七章
1、解釋以上群速度色散補償技術原理
2、OTDM的原理和系統結構
第三篇:2010北郵考研網研院 機試題
2010北郵考研網研院 機試題
(2010-04-19 16:38:15)
轉載 標簽:
北郵 網研 機試 雜談
第一題:查找 輸入數組長度 n 輸入數組 a[1...n] 輸入查找個數m 輸入查找數字b[1...m]
輸出 YES or NO 查找有則YES 否則NO
如(括號內容為注釋)輸入: 5(數組長度)1 5 2 4 3(數組)3(查找個數)2 5 6(查找具體數字)輸出: YES YES NO 第二題:查找第K小數
查找一個數組的第K小的數,注意同樣大小算一樣大 如 2 1 3 4 5 2 第三小數為3
如(括號內容為注釋)輸入: 6(數組長度n)2 1 3 5 2 2(數組)3(K 即為第三小數)輸出: 3
第三題:打牌
牌只有1到9,手里拿著已經排好序的牌a,對方出牌b,用程序判斷手中牌是否能夠壓過對方出牌 規則:出牌牌型有5種 [1]一張 如4 則5...9可壓過
[2]兩張 如44 則55,66,77,...,99可壓過 [3]三張 如444 規則如[2] [4]四張 如4444 規則如[2] [5]五張 牌型只有12345 23456 34567 45678 56789五個,后面的比前面的均大
壓過輸出YES 否則NO
如(括號內容為注釋)輸入:
12233445566677(手中牌)33(出牌)輸出: YES
第四題:樹 查找
簡單說就是一棵樹,輸出某一深度的所有節點,有則輸出這些節點,無則輸出EMPTY,具體描述得借助圖形比較好,懶得寫了,基本就是這個樣子的。
第四篇:光纖通信筆試題
2010年北京郵電大學信息光子學與光通信研究院
《光纖通信》專業筆試題
一、填空題(共26分,每空2分)
1、光纖傳輸特性:___,___,___。
2、單模光纖三種色散:___, ___, ___;其中___色散導致單模光纖出現傳輸極限。(原話實在忘了,課本也沒在手里,意思表達不清楚,湊合看吧,看過書的人應該明白的,嘿嘿)
3、光纖通信系統的三大性能指標:___,___,___。
4、給出L、Pi、Po=0,計算α損耗系數___.5、(還有一個題想不起來了,總之填空應該拿滿分的)
二、選擇題(共24分,每題4分)
1、影響DWDM傳輸容量的因素有:(五個選項,不定項選擇,具體選項忘了~)
2、EDFA能放大那些波長的光:(選項略)
3、光檢測器,給出截止波長hv>Eg,問能檢測出那些波長的光。
4、單模光纖當波長大于lanmdaC(你懂的,這個希臘字母實在是找不到在哪)時截止,問那些波長的光能通過?
5、適合DwDm傳輸的標準?(答案應該是G.655)
6、光接收機的性能指標。
三、大題(計算+簡述,共50分)
計算題:
1、(5分)回波損耗,知Po,反射Pi,求α?
2、(10分)畫出WDM系統并闡述工作原理(感覺這不是計算題,下題同)
3、(10分)EDfA的三種泵浦結構并作簡單說明。
簡述題:
1、(10分)光纖傳輸特性對于光脈沖的影響。
2、(10分)光與物質的三種反應過程并寫出與之相對應的半導體器件。(寫到這忍不住抱怨句:這也忒簡單了吧,考填空正好~)
3、(5分)WDM中監控信道的作用及對波長的選擇。
第五篇:北郵電子院專業實驗報告
電子工程學院
ASIC專業實驗報告
班級: 姓名:
學號: 班內序號:
第一部分 語言級仿真
LAB 1:簡單的組合邏輯設計一、二、實驗目的 實驗原理 掌握基本組合邏輯電路的實現方法。
本實驗中描述的是一個可綜合的二選一開關,它的功能是當sel = 0時,給出out = a,否則給出結果out = b。在Verilog HDL中,描述組合邏輯時常使用assign結構。equal=(a==b)?1:0是一種在組合邏輯實現分支判斷時常用的格式。parameter定義的size參數決定位寬。測試模塊用于檢測模塊設計的是否正確,它給出模塊的輸入信號,觀察模塊的內部信號和輸出信號。
三、源代碼
mux.v module scale_mux(out,sel,b,a);parameter size=1;output[size-1:0] out;input[size-1:0]b,a;input sel;assign out =(!sel)?a:
(sel)?b:
{size{1'bx}};endmodule
mux_test.v `define width 8 `timescale 1 ns/1 ns module mux_test;
reg[`width:1]a,b;
wire[`width:1]out;
reg sel;
scale_mux#(`width)m1(.out(out),.sel(sel),.b(b),.a(a));
initial
begin
$monitor($stime,“sel=%b a=%b b=%b out=%b”,sel,a,b,out);
$dumpvars(2,mux_test);
sel=0;b={`width{1'b0}};a={`width{1'b1}};
#5sel=0;b={`width{1'b1}};a={`width{1'b0}};
#5sel=1;b={`width{1'b0}};a={`width{1'b1}};
#5sel=1;b={`width{1'b1}};a={`width{1'b0}};
#5 $finish;
end endmodule
四、仿真結果與波形
LAB 2:簡單時序邏輯電路的設計一、二、實驗目的 實驗原理 掌握基本時序邏輯電路的實現。
在Verilog HDL中,相對于組合邏輯電路,時序邏輯電路也有規定的表述方式。在可綜合的Verilog HDL模型中,我們常使用always塊和@(posedge clk)或@(negedge clk)的結構來表述時序邏輯。
在always塊中,被賦值的信號都必須定義為reg型,這是由時序邏輯電路的特點所決定的對于reg型數據,如果未對它進行賦值,仿真工具會認為它是不定態。為了正確地觀察到仿真結果,在可綜合的模塊中我們通常定義一個復位信號rst-,當它為低電平時對電路中的寄存器進行復位。
三、源代碼
counter.v `timescale 1 ns/100 ps module counter(cnt,clk,data,rst_,load);output[4:0]cnt;input [4:0]data;input
clk;input
rst_;input
load;reg
[4:0]cnt;
always@(posedge clk or negedge rst_)
if(!rst_)
#1.2 cnt<=0;
else
if(load)
cnt<=#3 data;
else
cnt<=#4 cnt + 1;
endmodule
counter_test.v `timescale 1 ns/1 ns module counter_test;
wire[4:0]cnt;
reg [4:0]data;
reg
rst_;
reg
load;
reg
clk;
counter c1
(.cnt(cnt),.clk(clk),.data(data),.rst_(rst_),.load(load));
initial begin
clk=0;
forever begin
#10 clk=1'b1;
#10 clk=1'b0;
end
end
initial begin
$timeformat(-9,1,“ns”,9);
$monitor(“time=%t,data=%h,clk=%b,rst_=%b,load=%b,cnt=%b”,$stime,data,clk,rst_,load,cnt);
$dumpvars(2,counter_test);
end task expect;input [4:0]expects;
if(cnt!==expects)begin
$display(“At time %t cnt is %b and should be %b”,$time,cnt,expects);
$display(“TEST FAILED”);
$finish;
end endtask initial begin
@(negedge clk)
{rst_,load,data}=7'b0_X_XXXXX;@(negedge clk)expect(5'h00);
{rst_,load,data}=7'b1_1_11101;@(negedge clk)expect(5'h1D);
{rst_,load,data}=7'b1_0_11101;
repeat(5)@(negedge clk);
expect(5'h02);
{rst_,load,data}=7'b1_1_11111;@(negedge clk)expect(5'h1F);
{rst_,load,data}=7'b0_X_XXXXX;@(negedge clk)expect(5'h00);
$display(“TEST PASSED”);
$finish;
end endmodule
四、仿真結果與波形
五、思考題
該電路中,rst-是同步還是異步清零端?
在counter.v的always塊中reset沒有等時鐘,而是直接清零。所以是異步清零端。
LAB 3:簡單時序邏輯電路的設計一、二、實驗目的 實驗原理 使用預定義的庫元件來設計八位寄存器。
八位寄存器中,每一位寄存器由一個二選一MUX和一個觸發器dffr組成,當load=1,裝載數據;當load=0,寄存器保持。對于處理重復的電路,可用數組條用的方式,使電路描述清晰、簡潔。
三、源代碼
clock.v `timescale 1 ns /1 ns module clock(clk);reg clk;output clk;initial begin clk=0;forever begin #10 clk=1'b1;#10 clk=1'b0;end end endmodule
mux及dffr模塊調用代碼
mux mux7(.out(n1[7]),.sel(load),.b(data[7]),.a(out[7]));dffr dffr7(.q(out[7]),.d(n1[7]),.clk(clk),.rst_(rst_));mux mux6(.out(n1[6]),.sel(load),.b(data[6]),.a(out[6]));dffr dffr6(.q(out[6]),.d(n1[6]),.clk(clk),.rst_(rst_));mux mux5(.out(n1[5]),.sel(load),.b(data[5]),.a(out[5]));dffr dffr5(.q(out[5]),.d(n1[5]),.clk(clk),.rst_(rst_));mux mux4(.out(n1[4]),.sel(load),.b(data[4]),.a(out[4]));dffr dffr4(.q(out[4]),.d(n1[4]),.clk(clk),.rst_(rst_));
mux mux3(.out(n1[3]),.sel(load),.b(data[3]),.a(out[3]));dffr dffr3(.q(out[3]),.d(n1[3]),.clk(clk),.rst_(rst_));mux mux2(.out(n1[2]),.sel(load),.b(data[2]),.a(out[2]));dffr dffr2(.q(out[2]),.d(n1[2]),.clk(clk),.rst_(rst_));mux mux1(.out(n1[1]),.sel(load),.b(data[1]),.a(out[1]));dffr dffr1(.q(out[1]),.d(n1[1]),.clk(clk),.rst_(rst_));mux mux0(.out(n1[0]),.sel(load),.b(data[0]),.a(out[0]));dffr dffr0(.q(out[0]),.d(n1[0]),.clk(clk),.rst_(rst_));
例化寄存器
register r1(.data(data),.out(out),.load(load),.clk(clk),.rst_(rst_));例化時鐘
clock c1(.clk(clk));
添加檢測信號 initial begin $timeformat(-9,1,“ns”,9);$monitor(“time=%t,clk=%b,data=%h,load=%b,out=%h”, $stime,clk,data,load,out);$dumpvars(2,register_test);end
四、仿真結果與波形
LAB 4:用always塊實現較復雜的組合邏輯電路
一、實驗目的
掌握用always實現組合邏輯電路的方法;
了解assign與always兩種組合邏輯電路實現方法之間的區別。
二、實驗原理
僅使用assign結構來實現組合邏輯電路,在設計中會發現很多地方顯得冗長且效率低下。適當地使用always來設計組合邏輯,會更具實效。
本實驗描述的是一個簡單的ALU指令譯碼電路的設計示例。它通過對指令的判斷,對輸入數據執行相應的操作,包括加、減、或和傳數據,并且無論是指令作用的數據還是指令本身發生變化,結果都要做出及時的反應。
示例中使用了電平敏感的always塊,電平敏感的觸發條件是指在@后括號內電平列表的任何一個電平發生變化就能觸發always塊的動作,并且運用了case結構來進行分支判斷。
在always中適當運用default(在case結構中)和else(子if…else結構中),通常可以綜合為純組合邏輯,盡管被賦值的變量一定要定義為reg型。如果不使用default或else對缺省項進行說明,易產生意想不到的鎖存器。
三、源代碼
電路描述
always@(opcode or data or accum)begin if(accum==8'b00000000)#1.2 zero=1;else #1.2 zero=0;
case(opcode)PASS0: #3.5 out =accum;PASS1: #3.5 out =accum;ADD: #3.5 out = data + accum;AND: #3.5 out =data&accum;XOR: #3.5 out =data^accum;PASSD: #3.5 out=data;PASS6:#3.5 out=accum;PASS7:#3.5 out=accum;default:#3.5 out=8'bx;endcase end
四、仿真結果與波形
LAB 5:存儲器電路的設計一、二、實驗目的 實驗原理 設計和測試存儲器電路。
本實驗中,設計一個模塊名為mem的存儲器仿真模型,該存儲器具有雙線數據總線及異步處理功能。由于數據是雙向的,所以要注意,對memory的讀寫在時序上要錯開。
三、源代碼
自行添加的代碼
assign data=(read)?memory[addr]:8'hZ;
always @(posedge write)begin memory[addr]<=data[7:0];end
四、仿真結果與波形
LAB 6:設計時序邏輯時采用阻塞賦值與非阻塞賦值的區別
一、實驗目的
明確掌握阻塞賦值與非阻塞賦值的概念和區別; 了解阻塞賦值的使用情況。
二、實驗原理
在always塊中,阻塞賦值可以理解為賦值語句是順序執行的,而非阻塞賦值可以理解為并發執行的。實際時序邏輯設計中,一般情況下非阻塞賦值語句被更多的使用,有時為了在同一周期實現相互關聯的操作,也使用阻塞賦值語句。
三、源代碼
blocking.v `timescale 1 ns/ 100 ps
module blocking(clk,a,b,c);
output[3:0]b,c;
input [3:0]a;
input
clk;
reg
[3:0]b,c;
always@(posedge clk)
begin
b =a;
c =b;
$display(“Blocking: a=%d,b=%d,c=%d.”,a,b,c);
end endmodule
non_blocking.v `timescale 1 ns/ 100 ps module non_blocking(clk,a,b,c);
output[3:0] b,c;input[3:0] a;input clk;reg [3:0]b,c;always @(posedge clk)begin b<=a;c<=b;$display(“Non_blocking:a=%d,b=%d,c=%d”,a,b,c);end endmodule compareTop.v `timescale 1 ns/ 100 ps module compareTop;wire [3:0] b1,c1,b2,c2;reg[3:0]a;reg clk;initial begin clk=0;forever #50 clk=~clk;end initial $dumpvars(2,compareTop);initial begin a=4'h3;$display(“_______________________________”);# 100 a =4'h7;$display(“_______________________________”);# 100 a =4'hf;$display(“_______________________________”);# 100 a =4'ha;$display(“_______________________________”);# 100 a =4'h2;$display(“_______________________________”);# 100 $display(“_______________________________”);$finish;end non_blocking nonblocking(clk,a,b2,c2);blocking blocking(clk,a,b1,c1);endmodule
四、仿真結果與波形
LAB 7:利用有限狀態機進行復雜時序邏輯的設計一、二、實驗目的 實驗原理 掌握利用有限狀態機(FSM)實現復雜時序邏輯的方法。
控制器是CPU的控制核心,用于產生一系列的控制信號,啟動或停止某些部件。CPU何時進行讀指令,何時進行RAM和I/O端口的讀寫操作等,都由控制器來控制。
三、源代碼
補充代碼
nexstate<=state+1'h01;case(state)1:begin sel=1;rd=0;ld_ir=0;inc_pc=0;halt=0;ld_pc=0;data_e=0;ld_ac=0;wr=0;end 2:begin sel=1;rd=1;ld_ir=0;inc_pc=0;halt=0;ld_pc=0;data_e=0;ld_ac=0;wr=0;end 3:begin sel=1;rd=1;ld_ir=1;inc_pc=0;halt=0;ld_pc=0;data_e=0;ld_ac=0;wr=0;end 4:begin sel=1;rd=1;ld_ir=1;inc_pc=0;halt=0;ld_pc=0;data_e=0;ld_ac=0;wr=0;end 5:begin sel=0;rd=0;ld_ir=0;inc_pc=1;ld_pc=0;data_e=0;ld_ac=0;wr=0;if(opcode==`HLT)halt=1;end 6:begin sel=0;rd=alu_op;ld_ir=0;inc_pc=0;halt=0;ld_pc=0;data_e=0;ld_ac=0;wr=0;end 7:begin sel=0;rd=alu_op;ld_ir=0;halt=0;data_e=!alu_op;ld_ac=0;wr=0;if(opcode==`SKZ)inc_pc<=zero;if(opcode==`JMP)ld_pc=1;end 0:begin sel=0;rd=alu_op;ld_ir=0;halt=0;data_e=!alu_op;ld_ac=alu_op;inc_pc=(opcode==`SKZ)&zero||(opcode==`JMP);if(opcode==`JMP)ld_pc=1;if(opcode==`STO)wr=1;end //default:begin sel=1'bZ;rd=1'bZ;ld_ir=1'bZ;inc_pc=1'bZ;halt=1'bZ;ld_pc=1'bZ;data_e=1'bZ;ld_ac=1'bZ;wr=1'bZ;end endcase end
control_test.v /***************************** * TEST BENCH FOR CONTROLLER * *****************************/
`timescale 1 ns / 1 ns
module control_test;
reg [8:0] response [0:127];
reg [3:0] stimulus [0:15];
reg [2:0] opcode;
reg
clk;
reg
rst_;
reg
zero;
integer
i,j;
reg[(3*8):1] mnemonic;
// Instantiate controller
control c1(rd , wr , ld_ir , ld_ac , ld_pc , inc_pc , halt , data_e , sel , opcode , zero , clk , rst_);
// Define clock
initial begin
clk = 1;
forever begin
#10 clk = 0;
#10 clk = 1;
end
end
// Generate mnemonic for debugging purposes
always @(opcode)
begin
case(opcode)
3'h0
: mnemonic = “HLT”;
3'h1
: mnemonic = “SKZ”;
3'h2
: mnemonic = “ADD”;
3'h3
: mnemonic = “AND”;
3'h4
: mnemonic = “XOR”;
3'h5
: mnemonic = “LDA”;
3'h6
: mnemonic = “STO”;
3'h7
: mnemonic = “JMP”;
default : mnemonic = “???”;
endcase
end
// Monitor signals
initial
begin
$timeformat(-9, 1, “ ns”, 9);
$display(“ time
rd wr ld_ir ld_ac ld_pc inc_pc halt data_e sel opcode zero state”);
$display(“--------------------------------------------------------------”);//
$shm_open(“waves.shm”);//
$shm_probe(“A”);//
$shm_probe(c1.state);
end
// Apply stimulus
initial
begin
$readmemb(“stimulus.pat”, stimulus);
rst_=1;
@(negedge clk)rst_ = 0;
@(negedge clk)rst_ = 1;
for(i=0;i<=15;i=i+1)
@(posedge ld_ir)
@(negedge clk)
{ opcode, zero } = stimulus[i];
end
// Check response
initial
begin
$readmemb(“response.pat”, response);
@(posedge rst_)
for(j=0;j<=127;j=j+1)
@(negedge clk)
begin
$display(“%t %b %b %b
%b
%b
%b
%b
%b %b
%b
%b”,$time,rd,wr,ld_ir,ld_ac,ld_pc,inc_pc,halt,data_e,sel,opcode,zero,c1.state);
if({rd,wr,ld_ir,ld_ac,ld_pc,inc_pc,halt,data_e,sel}!==
response[j])
begin : blk
reg [8:0] r;
r = response[j];
$display("ERRORTEST1 PASSED!
111_00000
// 18
JMP BEGIN //run test again
@1A 00000000
// 1A
DATA_1:
//constant 00(hex)
11111111
// 1B
DATA_2:
//constant FF(hex)
10101010
// 1C
TEMP:
//variableTEST2 PASSED!
111_00000
// 11
JMP BEGIN
//run test again
@1A 00000001
// 1A
DATA_1:
//constant 1(hex)
10101010
// 1B
DATA_2:
//constant AA(hex)
11111111
// 1C
DATA_3:
//constant FF(hex)
00000000
// 1D
TEMP:
CPUtest3.dat //opcode_operand // addr
assembly code //--------------//-------------------------
111_00011
// 00
JMP LOOP
//jump to the address of LOOP @03 101_11011
// 03
LOOP:
LDA FN2
//load value in FN2 into accum
110_11100
// 04
STO TEMP
//store accumulator in TEMP
010_11010
// 05
ADD FN1
//add value in FN1 to accumulator
110_11011
// 06
STO FN2
//store result in FN2
101_11100
// 07
LDA TEMP
//load TEMP into the accumulator
110_11010
// 08
STO FN1
//store accumulator in FN1
100_11101
// 09
XOR LIMIT //compare accumulator to LIMIT
001_00000
// 0A
SKZ
//if accum = 0, skip to DONE
111_00011
// 0B
JMP LOOP
//jump to address of LOOP
000_00000
// 0C
DONE:
HLT
//end of program
101_11111
// 0D
AGAIN: LDA ONE
110_11010
// 0E
STO FN1
101_11110
// 0F
LDA ZERO
110_11011
// 10
STO FN2
111_00011
// 11
JMP LOOP
//jump to address of LOOP
@1A 00000001
// 1A
FN1:
//variablestores 2nd Fib.No.00000000
// 1C
TEMP:
//temporary variable
10010000
// 1D
LIMIT:
//constant 144stores 1st Fib.No.00000101
// 1B
data2:
//5
variablemax value
00000110
// 1E
LIMIT:
// 6
constant 1
11111111
// 1F
AND1:
//FF and
四、仿真結果與波形
第二部分 電路綜合一、二、三、四、實驗目的 實驗內容 源代碼
門級電路仿真結果與波形 掌握邏輯綜合的概念和流程,熟悉采用Design Compiler進行邏輯綜合的基本方法。采用SYNOPSYS公司的綜合工具Design Compiler對實驗7的control.v做綜合。與實驗指導書中相同。
五、思考題
1.control_pad.v文件是verilog語言及的描述還是結構化的描述?
是結構化的描述。
2.control_pad.sdf文件中,對觸發器的延遲包括哪些信息?
包括對邏輯單元和管腳的上升/下降時延的最大值、最小值和典型值。
第三部分 版圖設計一、二、三、四、實驗目的 實驗內容 源代碼
仿真結果與波形 掌握版圖設計的基本概念和流程,熟悉采用Sysnopsys ICC工具進行版圖設計的方法。對電路綜合輸出的門級網表control_pad.v進行布局布線。與實驗指導書中相同。布局規劃后結果
未產生core ring和mesh前
產生core ring和mesh后
電源線和電影PAD連接后
filler PAD填充后
布局后結果
時鐘樹綜合后結果
布線后結果
寄生參數的導出和后仿
五、思考題
1.簡述ICC在design setup階段的主要工作。
創建設計庫,讀取網表文件并創建設計單元,提供并檢查時間約束,檢查時鐘。在對之前的數據與信息進行讀取與檢查后保存設計單元。2.為什么要填充filler pad?
filler pad把分散的pad單元連接起來,把pad I/O區域供電連成一個整體。使它們得到持續供電并提高ESD保護能力。3.derive_pg_connection的作用是什么?
描述有關電源連接的信息。4.簡述floorplan的主要任務。
對芯片大小、輸入輸出單元、宏模塊進行規劃,對電源網絡進行設計。5.簡述place階段的主要任務。
對電路中的延時進行估計與分析,模擬時鐘樹的影響,按照時序要求,對標準化單元進行布局。
6.簡述CTS的主要步驟。
設置時鐘樹公共選項;綜合時鐘樹;重新連接掃描鏈;使能傳播時鐘;Post-CTS布局優化;優化時鐘偏移;優化時序。
實驗總結
經過數周的ASIC專業實驗,我對芯片設計流程、Verilog HDL語言、Linux基本指令和Vi文本編輯器有了基本的了解。雖然之前對芯片設計、VHDL一無所知,但通過實驗初步熟悉了ASIC的體系結構和VHDL的基本語法,對電路中時鐘、寄生參數、元件布局帶來的影響也有了了解。我在實驗中也遇到了許多問題,但我在老師、助教、同學的幫助下解決了這些問題,也有了更多收獲。通過這次ASIC專業實驗,我加深了對本專業的認識。我會繼續努力成為合格的電子人。