ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:1.13MB ,
资源ID:8193605      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8193605.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ASIC实验报告汇编.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ASIC实验报告汇编.docx

1、ASIC实验报告汇编ASIC设计课程实验实验报告学院:电子工程学院班级: 姓名: 学号: 班内序号: 组员: 指导老师: 2014年5月实验一 多路选择器的设计一、实验目的: 1、掌握门级电路与行为级电路设计的区别; 2、掌握逻辑电路设计方法; 3、熟悉测试程序的编写; 4、注意代码规范性要求。二、实验内容:i0四选一多路选择器1、设计一个有两位选择信号的四选一多路选择器,可以根据控制信号从两个或多个输入源中选择一个予以输出。i1i2out i3 s2s1 2、用基本逻辑门来实现多路选择器,即门级语言进行描述。 3、用行为级语言进行描述,通过case语句重新设计仿真。 4、编写多路选择器的测试

2、激励模块,并通过Synopsys工具进行仿真。三、实验过程及结果: 1、门级语言描述: 测试文件: 仿真波形: 由仿真波形可以看出,当两位选择信号是s1:0=00=0时,选择第0路输入源予以输出,当s1:0=01=1时,选择第1路输入源予以输出,当s1:0=10=2时,选择第2路输入源予以输出,当s1:0=11=3时,选择第3路输入源予以输出,实现了四选一多路选择器的功能。 2、行为级语言描述: 测试文件: 仿真波形: 仿真波形分析同门级语言描述仿真分析。四、实验思考题: 1、门级电路与行为级电路设计的主要区别是什么?答:行为级是行为的描述,即对所需实现功能的语言描述;而门级是实例引用,很多行

3、为级描述是不能逻辑综合的。 2、比较门级电路与行为级电路的仿真波形截图,说出其不同点。 答:由于门级电路的截图没有输出中间状态s1n、s0n、y0、y1、y2和y3,因此门级电路与行为级电路在仿真波形图上看不出有什么区别。而事实上门级电路有中间状态而行为级电路则没有。 3、如果设计中改用开关级建模,你的思路是什么? 答:若使用开关级建模,则利用开关导通与高阻来决定输出,采用4个cmos开关,输入为四位i0i3,s0、s1为控制信号,两个wire型中间变量bar0、sbar1。用上述管脚即可完成4选一多路选择器的功能。五、实验源代码: 1、门级语言描述module mux(i,s,out);in

4、put 3:0 i;input 1:0 s;output out;wire s1_n,s0_n,y0,y1,y2,y3;not n1(s1_n,s1);not n2(s0_n,s0);and a0(y0,i0,s1_n,s0_n);and a1(y1,i1,s1_n,s0);and a2(y2,i2,s1,s0_n);and a3(y3,i3,s1,s0);or o0(out,y0,y1,y2,y3);endmodule;测试程序timescale 1ns/1psmodule mux_test();reg 3:0i;reg 1:0s;wire out;mux(.i(i),.s(s),.out(

5、out);initialbegin$dumpvars(1,mux_test);i=4b0101;s=2b00;#10 s=2b01;#10 s=2b10;#10 s=2b11;#10 s=2b00;#100 $finish;endendmodule2、行为级语言描述module action(i,s,out); input 3:0 i; input 1:0 s; output out; reg out; always(i or s) begin case(s) default :out=1b0; 2b00:out=i0; 2b01:out=i1; 2b10:out=i2; 2b11:out=i

6、3; endcase endendmodule;测试程序timescale 1ns/1psmodule action_test();reg 3:0i;reg 1:0s;wire out;action(.i(i),.s(s),.out(out);initialbegin$dumpvars(1,action_test);i=4b0101;s=2b00;#10 s=2b10;#10 s=2b01;#10 s=2b11;#10 s=2b00;#100 $finish;endendmodule实验三 交通信号灯控制器设计一、实验目的: 1、掌握时序逻辑电路设计,注意阻塞赋值与非阻塞赋值; 2、熟练运用状

7、态机设计; 3、熟悉测试程序的编写; 4、注意代码规范性要求。二、实验内容:1、根据以下功能描述设计一个交通信号灯控制器:该交通信号灯控制器用于控制一条主干道与一条乡村公路的交叉口的交通,它必须具有下面的功能: (1)由于主干道上来往的车辆很多,因此控制主干道的交通信号具有最高优先级,在默认情况下主干道的绿灯点亮;(2)乡村公路间断性地有车经过,有车来时乡村公路的交通等必须变为绿灯,只需维持一段足够长的时间,以便让车通过;(3)只要乡村公路上不再有车辆,那么乡村公路上的绿灯马上变为黄灯,然后变为红灯,同时,主干道上的绿灯重新点亮;(4)一个传感器用于监视乡村公路上是否有车等待,它向控制器输入信

8、号X,如果X=1,则表示有车等待,否则X=0;(5)各个状态转换时,具有一定的延迟,这些延迟必须能够控制。2、有限状态机设计如下图所示: 其中各状态的含义为:S0:主干道绿灯,乡村公路红灯;S1:主干道黄灯,乡村公路红灯;S2:主干道红灯,乡村公路绿灯;S3:主干道红灯,乡村公路绿灯;S4:主干道红灯,乡村公路黄灯。3、编写相应验证程序,对编写的行为级模型进行验证,要求涵盖到状态机所有可能的转换。三、实验过程及结果: 测试文件:仿真波形:仿真图分析:clk为时钟信号,reset为复位信号,reset为低电平即reset=0时电路正常工作,x为传感器向控制器输入的信号,高电平即x=1时表示乡村公

9、路上有车等待,低电平即x=0时表示乡村公路上没有车等待,l1为主路上交通信号灯的情况,00=0为绿灯,01=1为黄灯,11=3为红灯;l2为乡村公路上交通信号灯的情况,红绿黄灯情况同主路。当信号x=1时,主路交通灯由绿变为黄灯,经过一段延时后再变为红灯,在主干道为红灯后,经过延时乡村公路交通灯由红灯变为绿灯。此状态维持一段时间后,再检测x信号,若x信号仍为1,则主干道继续红灯,乡村公路继续绿灯,若x信号变为0,则乡村公路交通灯由绿灯变为黄灯,经过一段延时后再变为红灯,在乡村公路为红灯后,主路由红灯变为绿灯,由此实现了交通信号灯控制器的功能。四、实验思考题: 1、你是怎样理解阻塞赋值和非阻塞赋值

10、的? 答:组合逻辑的always模块中使用阻塞赋值,时序逻辑的always模块中使用非阻塞赋值。阻塞赋值对应的电路往往与触发沿没有关系,只与输入电平的变化有关系,阻塞赋值符号为“=”,非阻塞赋值对应的电路结构往往与触发沿有关系,只有在触发沿时才有可能发生赋值的情况,非阻塞赋值符号为“=”。阻塞赋值是在赋值语句执行完成后块才结束,非阻塞赋值是快结束后才完成赋值。 2、说明验证程序中涵盖的状态机转换有哪些。 答:包含了状态机的5个状态x控制状态的转移。五、实验源代码:module mux(clk,reset,state,x,l1,l2);input clk,reset,x;output 2:0st

11、ate;output 1:0l1,l2;wire x;reg2:0state,next_state;reg 1:0l1,l2;always(posedge clk or posedge reset) if(reset) begin state=3b000; l1=2b00; next_state=0; l2=2b11; end else begin #10 state=next_state; case(state) 3b000: begin l1=2b00; l2=2b11; if(x) next_state=3b001; else next_state=3b000; end 3b001: b

12、egin l1=2b01; l2=2b11; next_state=3b010; end 3b010: begin l1=2b11; l2=2b11; next_state=3b011; end 3b011: begin l1=2b11; l2=2b00; if(x) next_state=3b011; else next_state=3b100; end 3b100: begin l1=2b11; l2=2b01; next_state=3b000; end default: begin next_state=3b000; l1=2b00; l2=2b11; end endcase end

13、endmodule;测试程序timescale 1ns/1psmodule mux_test();reg clk,reset,x;wire2:0state;wire1:0l1,l2;mux( .clk(clk), .reset(reset), .x(x), .state(state), .l1(l1), .l2(l2) );initialforever #10 clk=clk;initial begin$dumpvars(2,mux_test); clk=0; x=0; reset=1; #40 reset=0; #40 x=1; #50 x=0; #500 x=1; #200 x=0; #5

14、000 $finish; end endmodule实验五 NRZ/HDB3码制变换的功能与时序验证一、实验目的: 1、掌握复杂时序逻辑电路设计; 2、掌握RTL级设计的基本要求;3、掌握验证程序的设计方法与技巧。二、实验内容:HDB3译码电路HDB3译码电路完成编码的反变换,关键之处是检出破坏点,取消“取代节”,即将“000V”或“B00V”还原成“0000”,其管腿框图如下:HDB+ NRZHDB-CRX三、实验要求: 1、工作速率为50Kb/s10Mb/s(符合CCITT G.703建议); 2、取时钟频率为2M,信号速率为2M; 3、用Verilog HDL进行电路RTL描述; 4、代

15、码中应具有必要的注释; 5、模块、端口的设计与命名规则应符合要求;6、写出测试文件,测试文件中应具有验证结果是否正确的判断语句,电路仿真结果正确。四、设计思路首先熟悉编码规则,检查连“0”的情况,出现4个或4个以上连“0”时,将第4个“0”变为与前一个非“0”符号同极性的符号,用“V”标识(+V和-V);检查相邻V符号之间非“0”符号是否为偶数,如果为偶数,则将当前V符号前一个非“0”符号后的第一个“0”变为“B”,”B”的极性与前一个非”0“符号相反,并使“V”后的非“0”符号从“V”开始再交替变化。插“V”的实现:设置连“0”计数器,复位为0;对输入信号进行判断,如果为1则计数器复位,且输

16、出“01”;如果为“0”,则对“0”进行计数,如果计数值不为4,则输出“00”;如果计数值为“4”,则计数器复位,同时输出为“11”。插“B”的实现:设置对“01”的计数器counter为0,设置对“11”的计数器counter2为0;对输入进行判断,如果为“01”,则counter加1,仍然输出“01”;如果输入为“00”,输出为“00”,计数器不变;如果输入为“11”,counter2加1,此时如果counter为奇数,则输出仍为“11”;如果counter为偶数,则将counter复位,且将此处前第4个数变成“10”。关键要设置四位的移位寄存器。由HDB3编码规则,“V”的极性是正负交替

17、,而“1”和“B”的极性看成一体,为正负交替的,同时“V”的极性与前面的非“0”码一致。设置一个极性标志even=0;如果输入信号为“00”,输出仍为“00”;输入为“01”,或“10”,如果even=1,输出“01”;如果even=0,输出为“10”,然后将even翻转;如果输入为“11”,判断even,如果为1,则输出“10”,如果位0,输出“01”。(注意:输出后的“10”和“01”表示的不再是“1”、“V”、和“B”了,而是标识符号的正负极性。再将输出控制4选1的开关,就可以将“00”、“01”、“10”转化为0、+1和-1了。)译码原理:根据编码规则,破坏点V脉冲与前一个脉冲同极性。

18、因此可从所接受的信码中找到V码,然后根据加取代节的原则,V码与前面的三位码必然是取代码,需要全部复原为四连0。只要找到V码,不管V码前是两个“0”码,一律把取代节清零,完成了扣V扣B功能,进而得到原二元信码序列。HDB3译码器包括双/单极性变换、V码检测、时钟提扣V扣B四部分组成。+V检测模块:为了方便起见,设从正整流电路输出的信号为+B,从负整流电路输出的信号为-B。+V码检测模块-B的控制下,对输入的+B进行检测。其原理是:当+B的上升沿到来时,对输入的+B脉冲进行计数,当计数值等于2时,输出一个脉冲作为+V脉冲,同时计数器清零,而且计数期间,一旦有-B信号为“1”电平时,立即对计数器清零

19、,计数器重新从零开始计数。这是因为在两个+B脉冲之间,存在-B脉冲,说明第二个+B脉冲不是+V码,而只有在连续两个+B脉冲之间无-B脉冲,才能说明这两个+B脉冲在HDB3码中,是真正同极性的于是就可以判定第二个+B脉冲实际上是+V码,达到检测+V码的目的。-V检测模块:V码检测原理与+V码检测的类似。所不同的是,-V码检测电路在+B控制下,对来自-B信号进行计数和检测、判定,若检测到-V码,则输出到-V码信号。扣V扣B模块:扣V扣B模块有三个输入信号,即时钟信号、V码信号和来自正、负整流输出的和路信号。由于该和路信号可能包含有B脉冲和V脉冲,因此需要在扣V扣B模块中,去除V和B脉冲。本模块的建

20、模方法是,用V码检测模块所检测出的V码信号,去控制一个移位寄存器,若未碰到V脉冲,则整流输出合成信号在时钟的节拍下,顺利通过移位寄存器,当碰到有V脉冲时,该V脉冲将使移位寄存器清零。考虑到四连0,即V脉冲及其前面的三个码元应为0码,所以,可设置四位的移位寄存器,当V码清零时,同时将移存器中的四位码全变为0。不管是否有B脉冲,在此模块中,一并清零,因而无需另设扣B电路。另外移位四位寄存器起到延时四位时钟周期的作用,以使所检测出的V脉冲与信号流中的V脉冲位置对齐,保证清零的准确性。五、实验过程及结果:仿真波形:六、实验思考题: 1、什么是验证程序中的三要素?请结合自己编写的程序,加以阐述。 答:验

21、证程序中的三要素为电路、激励和显示。 2、在验证过程中发现的问题。 答:观察波形图发现译码结果所得的与输入相同,即译码成功。七、实验源代码:timescale 1ns/1nsmodule yimama(BP,BN,clk,out3);input BP,BN,clk;output 1:0 out3;wire 1:0 out0;reg 1:0 P,N,out1,out2;reg 1:0 counter1=0;reg 1:0 counter2=0;reg 1:0 d 3:0;reg 1:0 out0;reg 1:0 a;reg 1:0 b;initial begind0=0; d1=0; d2=0;

22、 d3=0;out1=0;out2=0; endalways (posedge clk)beginif(BP=0) P=2b00; else P=2b01;if(BN=0) N=2b00;else N=2b01;if(P=2b01)begincounter2=2b00; counter1=counter1+1; if(counter1=2b10) begin out1=2b11; counter1=2b00; end else begin out1=2b01; end endelse out1=2b00;if(N=2b01)begin counter1=2b00; counter2=count

23、er2+1; if(counter2=2b10) begin out2=2b11; counter2=2b00; end else begin out2=2b01; end endelse out2=2b00; d3=d2;d2=d1;d1=d0;d0=out0; if(out0=2b11)begin d0=00;d1=00;d2=00;d3=00;endend assign out0=out1 + out2; assign out3=d3;endmoduletimescale 1ns/1nsmodule bian(clk,data,BP,BN,out3);input clk,data;out

24、put BP,BN,out3;reg BP,BN;reg 1:0 data_out;reg 1:0counter=0;reg counter2=0;reg 1:0 d 3:0;reg 1:0 polar_out;reg even=0;wire 1:0 addb_out;initial beginBP=0;BN=0;data_out=0; d0=0; d1=0; d2=0; d3=0;polar_out=0;endalways (posedge clk)begin if(data=1) begin counter=0; data_out=2b01; end else begin counter=

25、counter+1; if(counter=2b11) begin data_out=2b11; end else begin data_out=2b00; end endendalways (posedge clk)begin d3=d2;d2=d1;d1=d0;d0=data_out;endalways (posedge clk)begin if(d0=2b01) begin counter2=counter2+1; end else counter2=counter2; endassign addb_out=(counter2=0)&(d0=2b11)?2b10:d3; always (

26、posedge clk)if(addb_out=2b11)beginif(even=1) begin polar_out=2b01; endelse begin polar_out=2b10; endendelse if(addb_out=2b01|addb_out=2b10) if(even=1) begin even=0;polar_out=2b10; end else begin even=1;polar_out=2b01; endelse begin polar_out=2b00; endalways (polar_out)begincase(polar_out)2b01:begin

27、BP=0;BN=1; end2b10:begin BP=1;BN=0; enddefault:begin BP=0;BN=0; endendcaseendyimama u1(.clk(clk),.BP(BP),.BN(BN),.out3(out3);endmoduletimescale 1ns/1nsmodule bian_test();reg clk,data;bian(.clk(clk),.data(data),.BN(),.BP(),.out3();initialforever #10 clk=clk;initial begin$dumpvars(3,bian_test); clk =0

28、;data =0;#700 $finish;endendmodule实验总结 ASIC实验课程结束了,虽然只有短短的四节课,但是我还是学到了很多东西,获益匪浅。四次课程总共完成了三次实验,第一节课先对Verilog语言以及VCS软件进行初步的了解,便于之后实验的进行,交通灯的实验开始就需要我们对实验要求进行分析和解析,然后编写代码,最后一次的实验更是,要先对其编码原理了解透彻,再熟练英语Verilog语言。实验是两个同学一组,着实减轻了我们每个人的压力,思路卡顿时,两个人一起商量便能豁然开朗,所以说实验不仅让我们学到了很多知识,还锻炼了我们的团队合作能力,总之,ASIC实验课程让我收获良多。希望以后还有机会接触类似课程。最后,感谢本次实验中我的指导老师韩可老师以及两位学长学姐的悉心指导与帮助。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1