数字电子技术基础实验.docx

上传人:b****1 文档编号:362086 上传时间:2022-10-09 格式:DOCX 页数:15 大小:702.67KB
下载 相关 举报
数字电子技术基础实验.docx_第1页
第1页 / 共15页
数字电子技术基础实验.docx_第2页
第2页 / 共15页
数字电子技术基础实验.docx_第3页
第3页 / 共15页
数字电子技术基础实验.docx_第4页
第4页 / 共15页
数字电子技术基础实验.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

数字电子技术基础实验.docx

《数字电子技术基础实验.docx》由会员分享,可在线阅读,更多相关《数字电子技术基础实验.docx(15页珍藏版)》请在冰豆网上搜索。

数字电子技术基础实验.docx

数字电子技术基础实验

《数字电子技术基础实验》

实验报告

 

学院:

学  号:

姓  名:

专业:

实验时间:

实验地点:

2016年12月

Figure5.51n位移位寄存器

一、实验目的及要求

编写testbench验证Figure5.51源代码功能,实现n位移位寄存器。

了解并熟悉移位寄存器的工作原理功能;

熟悉n位移位寄存器的逻辑功能。

所需功能:

实现所需功能需要R,Clock,L,w,Q,5个变量,其中参数n设为缺省值16,以定义触发器的个数。

当时钟信号Clock从0变为1时刻,正边沿触发器做出响应:

当L=0时,对输出结果Q进行向右移位,将w的值赋给Q的最高位,实现移位;

当L=1时,将输入R的值寄存在Q中;

所需EDA工具及要求:

Modelsim:

1、在Modelsim中建立工程,编写Figure5.51模块的源码;

2、编写Figure5.51的测试模块源码,对Figure5.51进行仿真、测试,观察仿真波形图并进行分析等;

SynplifyPro:

1、使用SynplifyPro对Figure5.51进行综合,得到RTLView、TechnologyView、综合报表等,进行观察、分析等;

二、实验内容与步骤

1、在Modelsim中建立工程,编写Figure5.51模块的源码;

本题实现的是一个n位移位寄存器,触发器对时钟信号Clock敏感,为正边沿敏感型。

L实现对Q的控制,若L=1,则将R寄存到Q中;若L=0,则对Q向右移位。

如下图是一个4位移位寄存器

图表说明了该四位移位寄存器的移位过程

moduleshiftn(R,L,w,Clock,Q);

parametern=16;

input[n-1:

0]R;

inputL,w,Clock;

outputreg[n-1:

0]Q;

integerk;

always@(posedgeClock)

if(L)

Q<=R;

else

begin

for(k=0;k

Q[k]<=Q[k+1];

Q[n-1]<=w;

end

endmodule

这是可用于表示任意位宽的移位寄存器的代码,其中参数n设为缺省值16,以定义触发器的个数。

R和Q的位宽用n定义,描述移位操作的else分支语句用for循环语句实现,可适用于由任意多个触发器组成的移位操作。

2、编写Figure5.51的测试模块源码,对Figure5.51进行仿真、测试,观察仿真波形图并进行分析等;

`timescale1ns/1ns

moduleshiftn_tb;

parametern=16;

reg[n-1:

0]R;

regL,w,Clock;

wire[n-1:

0]Q;

integeri;

initial

begin

L=1'b0;

Clock=1'b0;

w=1'b0;

R=16'b0;

end

always#5Clock=~Clock;

always#10L=~L;

always#20w=~w;

always

for(i=0;i<16*16*16*16;i=i+1)

begin

#2R=R+1;

end

initial

#1000000000$stop;

shiftne1(R,L,w,Clock,Q);

endmodule

这是可用于表示任意位宽的移位寄存器的测试模块源码。

将变量R,Clock,L,w初始化为零,采用for循环语句对变量进行改变,R和Q的位宽依然用n定义。

3、使用SynplifyPro对XXX进行综合,得到RTLView、TechnologyView、

综合报表等,进行观察、分析等;(建议用AlteraCycloneIIEP2C20

器件)

4、使用QuatusII进行RTLSimulation、GateLevelSimulation操作,进行测试、观察仿真波形图并进行分析等。

 

3、实验结果与数据处理

1.仿真图

初始时,R=0,Clock=0,L=0,w=0;

 

当Clock由0变1且L=0的时刻,Q向右移位;

Clock由1变0以及保持不变时,不论L为何值,Q不变;

当当Clock由0变1且L=1的时刻,Q=R;

2.RTLView

图中参数n设为缺省值16,以定义触发器的个数。

若L=1,当触发器在时钟正沿时,Q=R;若L=0,当触发器在时钟正沿时,将Q向右移一位,将w赋给最高位。

通过观察RTLView视图,结合源码,可见在源码中always语句判断时钟信号,用if-else语句判断左移还是右移,for语句进行移位操作,w和R一起可以看作是17位的数,解决了移位时最高位的问题,结合RTLView图从图中元器件来分析我们的源码基本需要这些器件来实现。

3.TechnologyView

4、分析与讨论

1.在仿真时有时会出现以下错误:

#ErroropeningD:

/codetest/figure5.51-tb.v

#Pathname'D:

/codetest/figure5.51-tb.v'doesn'texist.

以及:

#Error:

invalidcommandname":

:

.main_pane.dataflow.interior.cs.body.pw.df.c"

#Error:

invalidcommandname":

:

.main_pane.dataflow.interior.cs.body.pw.df.c"

#Error:

invalidcommandname":

:

.main_pane.dataflow.interior.cs.body.pw.df.c"

#Error:

invalidcommandname":

:

.main_pane.dataflow.interior.cs.body.pw.df.c"

2.Verilog源代码中不能有中文符号,尤其是中文空格,因为这一点不容易发现而导致一直编译不过。

Figure5.53有并行载入端的4位递增计数器

一、实验目的及要求

编写testbench验证Figure5.53源代码功能,实现有并行载入端的4位递增

计数器。

目的:

了解并熟悉递增计数器的工作原理

熟悉4位递增计数器的逻辑功能

所需功能:

实现所需功能需要R,Resetn,Clock,L,E,Q,5个变量。

计数器中的触发器在Resetn从0变为1时刻,将计数器异步复位,否则当时钟信号Clock从0变为1时刻,正边沿触发器做出响应:

当L=1时,计数器中的触发器从输入R并行加载数据,否则当E=1时,计数器递增计数;

 

所需EDA工具及要求:

Modelsim:

1、在Modelsim中建立工程,编写Figure5.53模块的源码;

2、编写Figure5.53的测试模块源码,对Figure5.53进行仿真、测试,

观察仿真波形图并进行分析等;

SynplifyPro:

1、使用SynplifyPro对Figure5.53进行综合,得到RTLView、Technology

View、综合报表等,进行观察、分析等;

二、实验内容与步骤

1、在Modelsim中建立工程,编写Figure5.53模块的源码;

本题实现的是一个有并行载入端的4位递增计数器,触发器对时钟信号Clock敏感,为正边沿敏感型;对异步复位信号Resetn敏感,为负边沿敏感型,当Resetn=0时,Q=0。

L,E实现对Q的控制,若L=1,则将R寄存到Q中;若L=0,则在使能输入E的控制下计数器递增计数。

下图是一个包含使能和清零功能的递增计数器。

moduleupcount(R,Resetn,Clock,E,L,Q);

input[3:

0]R;

inputResetn,Clock,E,L;

outputreg[3:

0]Q;

always@(negedgeResetn,posedgeClock)

if(!

Resetn)

Q<=0;

elseif(L)

Q<=R;

elseif(E)

Q<=Q+1;

endmodule

这段代码描述了一个递增计数器。

该计数器除了复位输入端之外,还有一个并行加载输入端,并行数据由输入向量R提供。

第一个if语句与所示代码一样实现异步复位;elseif分支语句说明,如果L=1,则计数器的触发器在时钟正沿时从输入R并行加载数据;如果L=0,则在使能输入E的控制下计数器递增计数。

2、编写Figure5.53的测试模块源码,对Figure5.53进行仿真、测试,观察仿真波形图并进行分析等;

`timescale1ns/1ns

moduleupcount_tb;

reg[3:

0]R;

regResetn,Clock,E,L;

wire[3:

0]Q;

integeri;

initial

begin

Resetn=1'b0;

Clock=1'b0;

E=1'b0;

L=1'b0;

R=4'b0;

end

always#5Clock=~Clock;

always#10Resetn=~Resetn;

always#20L=~L;

always#40E=~E;

always

for(i=0;i<16;i=i+1)

begin

#2R=R+1;

end

initial

#100000$stop;

upcounte(R,Resetn,Clock,E,L,Q);

endmodule

3、使用SynplifyPro对XXX进行综合,得到RTLView、TechnologyView、

综合报表等,进行观察、分析等;(建议用AlteraCycloneIIEP2C20

器件)

4、使用QuatusII进行RTLSimulation、GateLevelSimulation操作,进行测试、观察仿真波形图并进行分析等。

3、实验结果与数据处理

1.仿真图

初始时,R=0,Clock=0,L=0,E=0,Resetn=0;

当Clock由0变为1时,Resetn=0,故Q不变;

当Clock再次由0变为1时,此时Resetn=1,L=1,故Q=R;

当Clock又一次由0变为1时,此时Resetn=1,L=0,E=1故Q=Q+1;

当Clock又一次由0变为1时,此时Resetn=1,L=0,E=0故Q不变;

当Resetn由1变为0时,不论其他量如何变化,Q=0;

2.RTLView

当Resetn=0时,Q=0;当Resetn=1且L=1时,计数器的触发器在时钟正沿时从输入R并行加载数据,Q=R;当Resetn=1且L=0,E=1时,计数器的触发器在时钟正沿时递增计数。

3.Techno

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 语文

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

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