EDA技术与VerilogHDL实验报告学生姓名:樊奇峰学生学号:20102533所在班级:10级电科(2)班实验老师:陈亮亮实验地点地点:理工楼实验一EDA实验箱使用一.实验目的1.GW48教学实验系统原理与使用介绍2.熟悉QuartusII两种输入方式下编译、仿真简单的组合电路。二.实验内容首先了解GW48系统使用注意事项以及GW48系统主板结构与使用方法,接着对各实验电路结构图特点与适用范围简述。最后在QuartusII界面下,用文本输入和图形输入分别验证七选一多路选择器的功能。三.程序清单文本输入如下所示:modulemux71(a,b,c,d,e,f,g,s,y);inputa,b,c,d,e,f,g;outputy;input[2:0]s;regy;always@(a,b,c,d,e,f,g,s)case(s)0:y=a;1:y=b;2:y=c;3:y=d;4:y=e;5:y=f;6:y=g;default:y=a;endcaseendmodule图形输入如下所示:四、实验步骤1、新建一个名称为MUX71a的工程,并在该文件夹中新建一个MUX71a.v的文件。2、编译代码,编译成功后进行第三步,若不成功则查改代码中的错误。3、在工程文件夹中新建一个MUX71a.vwf的波形文件,导入工程端口,设置输入波形,仿真得出输出端口波形。4、验证输出端口波形是否达到七选一多路选择器的功能。五、实验数据仿真波形如下图所示。六、实验小结通过对EDA实验箱使用,了解了GW48教学实验系统原理与使用介绍;熟悉QuartusII两种输入方式下编译、仿真简单的组合电路。实验二用原理图和VerilogHDL语言设计一位全加器一.实验目的熟悉在QuartusII下用原理图和VerilogHDL语言设计一位全加器。二.实验内容在QuartusII下用原理图和VerilogHDL语言设计一位全加器,并编译、仿真验证其功能。三.程序清单全加器顶层文件设计:半加器描述:四.实验步骤1、新建一个名称为f_adder的工程,并在该文件夹中新建一个f_adder.bdf的文件。2、新建一个名称为h_adder.v的文件。3、编译工程,编译成功后进行下一步,若不成功则查改错误。4、在工程文件夹中新建一个f_adder.vwf的波形文件,导入工程端口,设置输入波形,仿真得出输出端口波形。5、验证输出端口波形是否实现一位全加器的功能。五、实验数据I、全加器仿真波形如下图所示:II、半加器仿真波形如下图所示:六、实验小结通过此次实验熟悉在QuartusII下用原理图和VerilogHDL语言设计一位全加器。实验三含异步清0和同步时钟使能的4位加法计数器一.实验目的熟悉在QuartusII下设计含异步清0和同步时钟使能的4位加法计数器。二.实验内容在QuartusII下设计含异步清0和同步时钟使能的4位加法计数器,并编译、仿真验证其功能。三.程序清单计数器顶层文件设计:10进制计数器文本输入:moduleCNT10(clk,rst,en,load,cout,dout,data);inputclk,en,rst,load;input[3:0]data;output[3:0]dout;outputcout;reg[3:0]q1;regcout;assigndout=q1;always@(posedgeclkornegedgerst)beginif(!rst)q1=0;elseif(en)beginif(!load)q1=data;elseif(q19)q1=q1+1;elseq1=4'b0000;endendalways@(q1)if(q1==4'h9)cout=1'b1;elsecout=1'b0;endmodule60位计数器文本输入:moduleCNT60(CLK,EN,RST,LOAD,COUT1,COUT2,DOUT1,DOUT2,DATA);inputCLK,EN,RST,LOAD;input[3:0]DATA;output[3:0]DOUT1;output[2:0]DOUT2;outputCOUT1;outputCOUT2;reg[3:0]Q1;reg[2:0]Q2;regCOUT1;regCOUT2;assignDOUT1=Q1;assignDOUT2=Q2;always@(negedgeCLKornegedgeRST)beginif(!RST)Q1=0;elseif(EN)beginif(!LOAD)Q1=DATA;elseif(Q19)Q1=Q1+1;elseQ1=4'b0000;endendalways@(Q1)if(Q1==4'h9)COUT1=1'b1;elseCOUT1=1'b0;always@(negedgeCOUT1ornegedgeRST)beginif(!RST)Q2=0;elseif(EN)beginif(!LOAD)Q2=DATA;elseif(Q25)Q2=Q2+1;elseQ2=4'b0000;endendalways@(Q2)if((Q1==4'h9)&&(Q2==3'h5))COUT2=1'b1;elseCOUT2=1'b0;endmodule60位计数器图形输入:四.实验步骤1、新建一个名称为CNT10的工程,并在该文件夹中新建一个CNT10.v的文件。2、编译工程,编译成功后进行下一步,若不成功则查改错误。3、在工程文件夹中新建一个CNT10.vwf的波形文件,导入工程端口,设置输入波形,仿真得出输出端口波形。4、验证输出端口波形是否实现异步清0和同步时钟使能的4位加法计数器的功能。五、实验数据10位计数器文本输入仿真波形:60位计数器文本输入仿真波形:60位计数器图形输入仿真波形:六、实验小结通过此次实验熟悉在QuartusII下设计含异步清0和同步时钟使能的4位加法计数器实验四8位十进制频率计设计一.实验目的熟悉在QuartusII下设计2位和8位十进制频率计。二.实验内容在QuartusII下设计2位和8位十进制频率计,并编译、仿真验证其功能。三.程序清单频率计顶层文件设计:(1)2位十进制频率计Conter8.bdf图形输入:tf_ctro.bdf图形输入:ft_top.bdf图形输入:conter100.v文本输入:moduleconter100(CLK,CLR,EN,cout,ge,shi);inputCLK,EN,CLR;output[3:0]ge;output[3:0]shi;outputcout;regcout;reg[3:0]ge;reg[3:0]shi;always@(posedgeCLK)if(!CLR)beginge=0;shi=0;cout=0;endelseif((ge==9)&&(shi==9))beginge=0;shi=0;cout=1;endelseif(ge==9)beginge=0;shi=shi+1;cout=0;endelsebeginge=ge+1;shi=shi;cout=0;endendmoduletf_ctro.v文本输入:moduletf_ctro(clk,en,clr,lock);inputclk;outputen,clr,lock;regen,clr,lock;integerd=0;always@(posedgeclk)begind=d+1;if(d==1)beginen=0;lock=0;clr=0;endelseif(d==2)beginlock=1;en=0;clr=0;endelseif(d==3)beginlock=0;clr=0;en=0;endelseif(d==6)beginlock=0;clr=1;en=0;endelseif(d==7)beginlock=0;clr=0;en=0;endelseif(d==8)beginlock=0;clr=0;en=1;endelseif(d==16)begind=0;en=0;lock=0;clr=0;endendendmodule74374锁存器文本输入:moduleoctal(clk,en,d_in,q_in);inputclk,en;input[3:0]d_in;output[3:0]q_in;reg[3:0]Q;assignq_in=Q;always@(posedgeclk)if(!en)beginQ=d_in;endendmodule(2)8位十进制频率计ft_top.bdf图形输入:四.实验步骤1、新建一个名称为CTR10的工程,并在该文件夹中新建一个CTR10.bdf的文件,在工程文件夹中新建一个counter8.bdf的文件。2、编译工程,编译成功后进行下一步,若不成功则查改错误。3、在工程文件夹中新建一个CTR10.vwf的波形文件,导入工程端口,设置输入波形,仿真得出输出端口波形。4、验证输出端口波形是否实现8位十进制频率计的功能。五、实验数据仿真波形如下图所示:(1)2位十进制频率计Conter8.bdf图形输入仿真波形:Conter100.v文本输入仿真波形:Tf_ctro.bdf图形输入仿真波形输入:ft_top.bdf图形输入仿真波形:(2)8位十进制频率计ft_top.bdf图形输入仿真波形六、实验小结通过本次实验熟悉在QuartusII下设计2位和8位十进制频率计,并编译、仿真验证其功能。实验五用状态机实现对ADC0809采样控制一.实验目的熟悉在QuartusII下用状态机实现对ADC0809采样控制。二.实验内容在QuartusII下用状态机实现对ADC0809采样控制,并编译、仿真验证其功能。三.实验原理四、实验程序清单moduleADC0809(D,CLK,EOC,RST,ALE,START,OE,ADDA,Q,LOCK_T);input[7:0]D;inputCLK,RST;inputEOC;outputALE;outputSTART,OE;outputADDA,LOCK_T;output[7:0]Q;regALE,START,OE;parameters0=0,s1=1,s2=2,s3=3,s4=4;reg[4:0]cs,next_state;reg[7:0]REGL;regLOCK;always@(csorEOC)begincase(cs)s0:next_state=s1;s1:next_state=s2;s2:if(EOC==1'b1)next_state=s3;elsenext_state=s2;s3:next_state=s4;s4:next_state=s0;default:next_state=s0;endcaseendalways@(cs)begincase(cs)s0:beginALE=0;START=0;OE=0;LOCK=0;ends1:beginALE=1;START=1;OE=0;LOCK=0;ends2:beginALE=0;START=0;OE=0;LOCK=0;ends3:beginALE=0;START=0;OE=1;LOCK=0;ends4:beginALE=0;START=0;OE=1;LOCK=1;enddefault:beginALE=0;START=0;OE=0;LOCK=0;endendcaseendalways@(posedgeCLKorposedgeRST)beginif(RST)cs=s0;elsecs=next_state;endalways@(posedgeLOCK)if(LOCK)REGL=D;assignADDA=0;assignQ=REGL;assignLOCK_T=LOCK;endmodule五.实验步骤1.新建一个名称为ADC0809的工程,并在该文件夹中新建一个ADC0809.v的文件。2.编译工程,编译成功后进行下一步,若不成功则查改错误。