实验一全加器设计六、实验步骤1、为本项工程设计建立文件夹:文件夹取名为ghch,路径为d:\ghch。2、建立原理图文件工程和仿真原理图编辑输入流程如下:1)打开原理图编辑窗。打开QuartusⅡ,选菜单File→new,选择原理图文件编辑输入项BlockDiagram/SchematicFile,按OK键。2)建立一个初始化原理图。在编辑窗口点击右键,在弹出菜单中选择输入元件项Insert→Symbol,将元件调入原理图编辑窗口中3)原理图文件存盘。选择菜单File→SaveAs,将此原理图存于刚才建立的目录d:\ghch中,取名为h_adder.bdf。4)建立原理图文件为顶层设计工程。然后将此文件h_adder.bdf设定为工程。5)绘制半加器原理图。将元件放入原理图编辑窗口,按图1接好电路。6)仿真测试半加器。全程编译后,打开波形编辑器。选择File→new命令,在New窗口中选择VectorWaveformFile选项。设置仿真时间区域,编辑输入波形,仿真器参数设置,启动仿真器,观察仿真结果。3、将设计项目(一位半加器)设置成可调用的元件为了构成全加器的顶层设计,必须将以上设计的半加器h_adder.bdf设置成课调用的底层元件。在半加器原理图文件处于打开的情况下,选择菜单File→Create/Update→CreateSymbolFilesforCurrentFile,即可将当前电路图变成一个元件符号存盘,以便在高层次设计中调用。图3半加器示意图图1半加器h_adder电路半加器仿真4、设计全加器顶层文件为了建立全加器顶层文件,必须再打开一个原理图编辑窗口,方法同前。1)选择菜单File→new→BlockDiagram/SchematicFile,将其设置成新的工程,命名为f_adder.bdf。2)在打开的原理图编辑窗口中,双击鼠标,选择Project下先前生成的元件h_adder和若干元器件,按图2连接好一位全加器电路图。3)仿真测试全加器。全程编译后,打开波形编辑器。选择File→new命令,在New窗口中选择VectorWaveformFile选项。设置仿真时间区域,编辑输入波形,仿真器参数设置,启动仿真器,观察仿真结果。图4一位全加器示意图图4一位全加器示意图一位全加器的仿真波形图4)仿真成功后得到了预期的设计效果后,将引脚锁定。方法如下:选择assignment中的pins,将To栏的信号锁定到相应的Location引脚列中。引脚号对应关系可以从实验手册中查找,结果如图所示:5)引脚锁定以后,再编译全程编译一次,然后编程下载,选择Tools-programmer菜单,设计好编程硬件后点击Start开始下载。6)下载成功后在硬件上检测设计思路的是否正确。七、硬件测试结果实验开关K1,K2,K3打开和关闭后LED灯可以按照表格要求亮暗,实验成功。实验二模可变计数器设计(四)实验程序modulecount(clk,m,en,rst,SG,sel,led);inputclk,m,en,rst;//output[11:0]q;output[7:0]SG;output[2:0]sel;output[0:0]led;(*synthesis,keep*)regclk1;(*synthesis,keep*)wire[3:0]gw,sw,bw;reg[3:0]a;reg[0:0]led;reg[11:0]q;reg[11:0]model;reg[7:0]cnt,SG;reg[2:0]sel;always@(posedgeclk)begincnt=cnt+1;if(cnt==200)beginclk1=1'b1;cnt=0;endelseclk1=1'b0;end//120分频,CLK为数码管扫描频率,CLK1为计数频率always@(posedgeclk)beginif(sel6)sel=sel+1;elsesel=4;end//sel为数码管选择always@(sel)begincase(sel)6:a=gw;//0数码管为个位5:a=sw;//1数码管为十位4:a=bw;//2数码管为百位default:a=0;endcasecase(a)0:SG=8'b00111111;1:SG=8'b00000110;2:SG=8'b01011011;3:SG=8'b01001111;4:SG=8'b01100110;5:SG=8'b01101101;6:SG=8'b01111101;7:SG=8'b00000111;8:SG=8'b01111111;9:SG=8'b01101111;//8段译码值default:SG=8'b11111111;endcaseendalways@(m)if(m)model=12'b000000001000;//模值15elsemodel=12'b0000011100100;//模值119assigngw=q[3:0];assignsw=q[7:4];assignbw=q[11:8];always@(posedgeclk1,negedgerst)beginif(!rst)q=0;elseif(en)beginif(qmodel)beginif(gw==9)beginq=q+7;if(sw==9)q=q+96;end//BCD调整elseq=q+1;endelseq=0;endendalways@(q)if(qmodel)led=0;elseled=1;endmodule(五)实验步骤建立工作库文件和编辑设计文件(1)在D盘新建一个文件夹用来保存工程文件(2)打开QuartusⅡ软件,选择菜单File-New-VerilogHDLFile,点击OK后在打开的界面下输入已经设计好的程序。(3)输入完程序后,保存文件选择菜单File-Saveas,将文件保存到工程文件夹中,文件名不能含有中文字符,最好与程序实体名一样。(4)保存好文件后,一般会提示是否新建一个工程,选择是,如果没有就在菜单打开File-NewprojectWizard项,将出现工程项目建立向导。(5)按照工程项目向导提示设计好工程中要用到的文件放到同一个工程文件夹中,选择实验中用到的芯片和第三方工具(一般默认EDA自带的工具箱,在这里不做任何选择)。(6)完成工程项目建立后选择processing-startcompilation或选择按钮开始全程编译,如果编译过程中出现错误或警告提示,则双击错误或警告提示就可以找到该错误或警告在设计文件的位置。(7)在完成设计输入和综合编译以后,可以通过时序仿真来检查设计是否符合要求,这里我们可以通过建立波形文件(.vmf)。在选择File-New-VetorWaveformFile项后选择OK。(8)设计Edit栏选择EndTime设计时间为50us,在View-ulititywindows中选择NodeFinder或按Alt+1,然后将所有的输入输出拖到波形文件中,设计好输入时序和输出方式后保存文件。选择processing栏中的Startsimulation或选择按钮开始波形仿真。(9)仿真成功后得到了预期的设计效果后,将引脚锁定。方法如下:选择assignment中的pins,将To栏的信号锁定到相应的Location引脚列中。引脚号对应关系可以从实验手册中查找,结果如图所示:(10)引脚锁定以后,再编译全程编译一次,然后编程下载,选择Tools-programmer菜单,设计好编程硬件后点击Start开始下载。(11)下载成功后在硬件上检测设计思路的是否正确。(六)仿真波形编译仿真前波形设置,即输入设置:仿真结果:此时M=0,计数值q到111变重新开始计数。此时M=1,计数值q到8变重新开始计数。图中四个输入:clk为时钟频率,en为与能端,高电频有效,rst为复位控制,低电频有效,m为模值改变,m=0,表示模值为111,m=1,表示模值为8。输出q表示计数,实验成功。(七)硬件测试结果实验中调节K1打开为高电频,K2调节模值,并按下复位键开始计数,可以看到数码管上有数字在增加,当K2关闭,计数到111后重新0开始计数,当K2打开,计数到8后重新0开始计数。实验成功。实验三序列信号发生和检测计设计五实验程序modulex(clk,f,m,clr1,clr2,ld,s);inputclk,clr1,clr2,ld;outputf,m;output[4:0]s;regf,m;reg[2:0]q2;reg[4:0]z,s;reg[15:0]wo;parameter[15:0]xulie=16'b1011101000111011;//要产生的序列parameter[4:0]q1=5'b11101;//要检测的序列always@(posedgeclk,negedgeclr1)if(~clr1)f=0;//清产生序列elseif(ld)wo=xulie;elsebeginwo[0]=wo[15];f=wo[15];wo[15:1]=wo[14:0];//并行转换为串行endalways@(posedgeclkornegedgeclr2)beginif(~clr2)q2=0;//清检测序列elsecase(q2)0:if(f==q1[4])q2=1;elseq2=0;1:if(f==q1[3])q2=2;elseq2=0;2:if(f==q1[2])q2=3;elseq2=0;3:if(f==q1[1])q2=4;elseq2=3;4:if(f==q1[0])q2=5;elseq2=0;//状态转移default:q2=0;endcaseendalways@(q2)if(q2==5)m=1;elsem=0;//检测到11101,输出1always@(posedgeclk)beginz[4:1]=z[3:0];z[0]=f;s=z;//转换为并行输出endendmodule(六)实验步骤建立工作库文件和编辑设计文件(1)在D盘新建一个文件夹用来保存工程文件(2)打开QuartusⅡ软件,选择菜单File-New-VerilogHDLFile,点击OK后在打开的界面下输入已经设计好的程序。(3)输入完程序后,保存文件选择菜单File-Saveas,将文件保存到工程文件夹中,文件名不能含有中文字符,最好与程序实体名一样。(4)保存好文件后,一般会提示是否新建一个工程,选择是,如果没有就在菜单打开File-NewprojectWizard项,将出现工程项目建立向导。(5)按照工程项目向导提示设计好工程中要用到的文件放到同一个工程文件夹中,选择实验中用到的芯片和第三方工具(一般默认EDA自带的工具箱,在这里不做任何选择)。(6)完成工程项目建立后选择processing-startcompilation或选择按钮开始全程编译,如果编译过程中出现错误或警告提示,则双击错误或警告提示就可以找到该错误或警告在设计文件的位置。(7)在完成设计输入和综合编译以后,可以通过时序仿真来检查设计是否符合要求,这里我们可以通过建立波形文件(.vmf)。在选择File-New-VetorWaveformFile项后选择OK。(8)设计Edit栏选择EndTime设计时间为50us,在View-ulititywindows中选择NodeFinder或按Alt+1,然后将所有的输入输出拖到波形文件中,设计好输入时序和输出方式后保存文件。选择processing栏中的Startsimulation或选择按钮开始波形仿真。(9)仿真成功后得到了预期的设计效果后,将引脚锁定。方法如下:选择assignment中的pins,将To栏的信号锁定到相应的Location引脚列中。引脚号对应关系可以从实验手册中查找,结果如图所示:(10)引脚锁定以后,再编译全程编译一次,然后编程下载,选择Tools-programmer菜单,设