西北工业大学_数字电子技术基础_实验报告_实验3

  • 格式:doc
  • 大小:2.16 MB
  • 文档页数:11

下载文档原格式

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

数字电子技术基础第三次实验报告

一、描述QuartusII软件基本使用步骤

①编写Verilog代码,用文本编辑器正确编写源文件,并经modelsim仿真确认该电路

设计正确。

②打开QuartusII软件,新建工程New project (注意工程名和设计文件的module名保

持一致),选择和开发板一致的FPGA器件型号。

③添加文件,点击file->open,之后选择要添加的文件,并勾选Add file to current

project.

④编译,Start Compilation ,编译源文件(如有错误修改后,重新编译)。

⑤查看电路结构,使用Tool->RTL viewer工具查看电路图结构,是否和预期设计一致。

二、题目代码以及波形分析

1.设计一款时钟上升沿触发的D寄存器

a)编写模块源码

module flipflop(D,Clock,Q);

input D,Clock;

output reg Q;

always@(posedge Clock)

Q=D;

endmodule

b)测试模块

`timescale 1ns/1ps

module tb_flipflop;

reg Clock_test;

reg D_test;

wire Q_test;

initial

Clock_test=0;

always #20 Clock_test=~Clock_test;

initial

D_test=0;

always #77 D_test=~D_test;

flipflop UUT_flipflop(.Clock(Clock_test),.D(D_test),.Q(Q_test));

endmodule

c)仿真后的波形截图

每当时钟上升沿到来时,触发器把D的信号传给Q

d)综合后的RTL图形

2.设计一款4bBit具有并行加载功能的移位寄存器编写模块源码

a)编写模块源码

module muxdff(D0,D1,Sel,Clock,Q);

input D0,D1,Sel,Clock;

output reg Q;

wire D;

assign D=Sel?D1:D0;

always@(posedge Clock)

Q<=D;

endmodule

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

input [3:0]R;

input L,w,Clock;

output wire [3:0]Q;

muxdff Stage3(w,R[3],L,Clock,Q[3]);

muxdff Stage2(Q[3],R[2],L,Clock,Q[2]);

muxdff Stage1(Q[2],R[1],L,Clock,Q[1]);

muxdff Stage0(Q[1],R[0],L,Clock,Q[0]); endmodule

b)测试模块

`timescale 1ns/1ps

module tb_shift4;

reg Clock_test;

reg L_test;

reg w_test;

reg [3:0]R_test;

wire [3:0]Q_test;

initial

Clock_test=0;

always #10 Clock_test=~Clock_test;

initial

begin

L_test=1;

#14

L_test=0;

//always #14 L_test=~L_test;

end

initial

w_test=0;

always #13 w_test=~w_test;

initial

R_test=4'b1010;

shift4 UUT_shift4(.Clock(Clock_test),.L(L_test),.w(w_test),.R(R_test),.Q(Q_test));

endmodule

c)仿真后的波形截图

L为0时并行加载,数组R为加载时的输入。L为1时移位,数组Q右移一位,左端补当前变量w的值。

d)综合后的RTL图形

3.设计一款4bit带复位功能的计数器

a)编写模块源码

module upcount(Reset,Clock,E,Q);

input Reset,Clock,E;

output reg [3:0]Q;

always@(posedge Reset,posedge Clock)

if(Reset)

Q<=0;

else if(E)

Q<=Q+1;

endmodule

b)测试模块

`timescale 1ns/1ps

module tb_upcount;

reg Reset_test;

reg Clock_test;

reg E_test;

wire [3:0]Q_test;

initial

Clock_test=0;

always #5 Clock_test=~Clock_test;

initial

begin

Reset_test=1;

E_test=0;

#2

Reset_test=0;

#8

E_test=1;

#184

Reset_test=1;

#2

Reset_test=0;

#32

E_test=0;

end

upcount UUT_upcount(.Reset(Reset_test),.Clock(Clock_test),.E(E_test),.Q(Q_test));

endmodule

c)仿真后的波形截图