第一篇: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专业实验,我加深了对本专业的认识。我会继续努力成为合格的电子人。