数字电子技术基础实验

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

实验报告

学院:

学号:

姓名:

专业:

实验时间:

实验地点:

2016 年12 月

Figure 5.51 n位移位寄存器

一、实验目的及要求

编写testbench 验证Figure 5.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中建立工程,编写Figure 5.51 模块的源码;

2、编写Figure 5.51 的测试模块源码,对Figure 5.51 进行仿真、测

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

Synplify Pro:

1、使用Synplify Pro对Figure 5.51 进行综合,得到RTL View、

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

二、实验内容与步骤

1、在Modelsim中建立工程,编写Figure 5.51 模块的源码;

本题实现的是一个n位移位寄存器,触发器对时钟信号Clock敏感,为正边沿敏感型。L实现对Q的控制,若L=1,则将R寄存到Q中;若L=0,则对Q向右移位。

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

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

module shiftn (R, L, w, Clock, Q);

parameter n = 16;

input [n-1:0] R;

input L, w, Clock;

output reg [n-1:0] Q;

integer k;

always @(posedge Clock)

if (L)

Q <= R;

else

begin

for (k = 0; k < n-1; k = k+1)

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

Q[n-1] <= w;

end

endmodule

这是可用于表示任意位宽的移位寄存器的代码,其中参数n设为缺省值16,以定义触发器的个数。R和Q的位宽用n定义,描述移位操作的else 分支语句用for循环语句实现,可适用于由任意多个触发器组成的移位操作。

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

`timescale 1ns/1ns

module shiftn_tb;

parameter n = 16;

reg [n-1:0] R;

reg L, w, Clock;

wire [n-1:0] Q;

integer i;

initial

begin

L=1'b0;

Clock=1'b0;

w=1'b0;

R=16'b0;

end

always #5 Clock = ~Clock;

always #10 L=~L;

always #20 w=~w;

always

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

begin

#2 R=R+1;

end

initial

#1000000000 $stop;

shiftn e1(R, L, w, Clock, Q);

endmodule

这是可用于表示任意位宽的移位寄存器的测试模块源码。将变量R,Clock,L,w初始化为零,采用for循环语句对变量进行改变,R和Q的位宽依然用n定义。

3、使用Synplify Pro对XXX进行综合,得到RTL View、Technology View、

综合报表等,进行观察、分析等;(建议用Altera Cyclone II EP2C20

器件)

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

三、实验结果与数据处理

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.RTL View

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

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

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

3.Technology View

四、分析与讨论

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

# Error opening D:/code test/figure5.51 - tb.v

# Path name 'D:/code test/figure5.51 - tb.v' doesn't exist.

以及:

# Error: invalid command name "::.main_pane.dataflow.interior.cs.body.pw.df.c"

# Error: invalid command name "::.main_pane.dataflow.interior.cs.body.pw.df.c"

# Error: invalid command name "::.main_pane.dataflow.interior.cs.body.pw.df.c"

相关文档
最新文档