数字电子技术基础第四次实验报告一、描述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-toclkPIN_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-torst7.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)begincount=16'b0;endelsebegincount=count+1;endalways@(posedgeclkornegedgerst)if(!rst)beginout=8'hff;endelsebegincase(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;endcaseendendmodule②测试模块`timescale1ns/1psmoduletb_run;regclk_test;regrst_test;wire[7:0]out_test;initialclk_test=0;always#1clk_test=~clk_test;initialbeginrst_test=1;#1rst_test=0;#1rst_test=1;#180rst_test=0;#1rst_test=1;endrunUUT_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;endcasealways@(negedgeResetn,posedgeClock)if(Resetn==0)y=A;elsey=Y;assignz=(y==C)|(y==E);endmodule②测试模块`timescale1ns/1psmoduletb_sequence;regClock_test,Resetn_test,w_test;wirez_test;initialbeginClock_test=0;Resetn_test=0;w_test=1;endalways#10Clock_test=~Clock_test;initialbegin#10Resetn_test=1;w_test=1;#10w_test=0;#20w_test=0;#20w_test=0;#20w_test=1;#20w_test=1;#20w_test=0;#20w_test=0;#20w_test=1;#20w_test=0;#20w_test=0;#20w_test=0;#20w_test=1;#20w_test=1;#20w_test=0;#20w_test=0;endsequenceUUT_sequence(.Clock(Clock_test),.Resetn(Resetn_test),.w(w_test),.z(z_test));endmodule③仿真后的波形截图④综合后的RTL图形三、本次实验收获和心得通过本次试验真正接触了FPGA开发板并向板子上烤了文件,虽然题目较为简单,但是在完成的过程中遇到了不少问题,比如软件内部没有需要的开发板型号,自己通过搜索和下载,找到了相应的扩展包并成功添加进入高版本的quartusII软件当中,我的体会是,数字电路归根到底还是依靠硬件实现的,所以将代码的执行效果反映到硬件上是一个重要环节,应该不断练习,提高自己解决问题的能力;另外通过本次实验,我对有限状态机有了更加深入的了解。