工业大学数字电子技术基础实验报告.docx
《工业大学数字电子技术基础实验报告.docx》由会员分享,可在线阅读,更多相关《工业大学数字电子技术基础实验报告.docx(14页珍藏版)》请在冰点文库上搜索。
![工业大学数字电子技术基础实验报告.docx](https://file1.bingdoc.com/fileroot1/2023-7/3/82e88a22-221b-4caa-96a3-b93b96b0020a/82e88a22-221b-4caa-96a3-b93b96b0020a1.gif)
工业大学数字电子技术基础实验报告
数字电子技术基础第四次实验报告
一、描述QuartusII软件基本使用步骤
1.用文本编辑器正确编写源文件(本例run.v),并经modelsim仿真确认该电路设计正确.
2..打开QuartusII软件,新建工程Newproject(注意工程名和设计文件的module名保持一致),选择和开发板一致的FPGA器件型号。
(本课程为CycloneIVE系列EP4CE115F29C7)
3.添加文件,点击file->open,之后选择要添加的文件,并勾选Addfiletocurrentproject.
4.编译,StartCompilation,编译源文件(如有错误修改后,重新编译)。
5.查看电路结构,使用Tool->RTLviewer工具查看电路图结构,是否和预期设计一致。
6.管脚绑定,使用Assignment->pinplanner将设计的全部输入/输出接口与开发板的对应管脚进行一一对应。
PIN_Y2-toclk
PIN_H19-toout[7]
PIN_J19-toout[6]
PIN_E18-toout[5]
PIN_F18-toout[4]
PIN_F21-toout[3]
PIN_E19-toout[2]
PIN_F19-toout[1]
PIN_G19-toout[0]
PIN_M23-torst
7.Processing->StartCompilation,全编译生成可下载文件。
(.sof)
8.连接开发板,安装所需驱动程序(在设备管理器中,选择路径为quatus安装路径)
9.点击start开始烧录,完成后开发板上出现流水灯。
二、题目代码以及波形
1.跑马灯设计及FPGA实现
①编写模块源码
modulerun(clk,rst,out);
inputclk,rst;
output[7:
0]out;
reg[7:
0]out;
reg[24:
0]count;
always@(posedgeclkornegedgerst)
if(!
rst)
begin
count<=16'b0;
end
else
begin
count<=count+1;
end
always@(posedgeclkornegedgerst)
if(!
rst)
begin
out<=8'hff;
end
else
begin
case(count[24:
21])
0:
out<=8'b1111_1110;
1:
out<=8'b1111_1101;
2:
out<=8'b1111_1011;
3:
out<=8'b1111_0111;
4:
out<=8'b1110_1111;
5:
out<=8'b1101_1111;
6:
out<=8'b1011_1111;
7:
out<=8'b0111_1111;
8:
out<=8'b1011_1111;
9:
out<=8'b1101_1111;
10:
out<=8'b1110_1111;
11:
out<=8'b1111_0111;
12:
out<=8'b1111_1011;
13:
out<=8'b1111_1101;
14:
out<=8'b1111_1110;
15:
out<=8'b1111_1111;
endcase
end
endmodule
②测试模块
`timescale1ns/1ps
moduletb_run;
regclk_test;
regrst_test;
wire[7:
0]out_test;
initial
clk_test=0;
always#1clk_test=~clk_test;
initial
begin
rst_test=1;
#1
rst_test=0;
#1
rst_test=1;
#180
rst_test=0;
#1
rst_test=1;
end
runUUT_run(.clk(clk_test),.rst(rst_test),.out(out_test));
endmodule
③仿真后的波形截图
④综合后的RTL图形
1.有限状态机设计(教材Figure6.86)
①编写模块源码
modulesequence(Clock,Resetn,w,z);
inputClock,Resetn,w;
outputz;
reg[3:
1]y,Y;
parameter[3:
1]A=3'b000,B=3'b001,C=3'b010,D=3'b011,E=3'b100;
always@(w,y)
case(y)
A:
if(w)Y=D;
elseY=B;
B:
if(w)Y=D;
elseY=C;
C:
if(w)Y=D;
elseY=C;
D:
if(w)Y=E;
elseY=B;
E:
if(w)Y=E;
elseY=B;
default:
Y=3'bxxx;
endcase
always@(negedgeResetn,posedgeClock)
if(Resetn==0)
y<=A;
else
y<=Y;
assignz=(y==C)|(y==E);
endmodule
②测试模块
`timescale1ns/1ps
moduletb_sequence;
regClock_test,Resetn_test,w_test;
wirez_test;
initial
begin
Clock_test=0;
Resetn_test=0;
w_test=1;
end
always#10Clock_test=~Clock_test;
initial
begin
#10
Resetn_test=1;
w_test=1;
#10
w_test=0;
#20
w_test=0;
#20
w_test=0;
#20
w_test=1;
#20
w_test=1;
#20
w_test=0;
#20
w_test=0;
#20
w_test=1;
#20
w_test=0;
#20
w_test=0;
#20
w_test=0;
#20
w_test=1;
#20
w_test=1;
#20
w_test=0;
#20
w_test=0;
end
sequenceUUT_sequence(.Clock(Clock_test),.Resetn(Resetn_test),.w(w_test),.z(z_test));
endmodule
③仿真后的波形截图
④综合后的RTL图形
三、本次实验收获和心得
通过本次试验真正接触了FPGA开发板并向板子上烤了文件,虽然题目较为简单,但是在完成的过程中遇到了不少问题,比如软件内部没有需要的开发板型号,自己通过搜索和下载,找到了相应的扩展包并成功添加进入高版本的quartusII软件当中,我的体会是,数字电路归根到底还是依靠硬件实现的,所以将代码的执行效果反映到硬件上是一个重要环节,应该不断练习,提高自己解决问题的能力;另外通过本次实验,我对有限状态机有了更加深入的了解。