您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 数字钟报告西安交通大学
HDL综合实验报告学号:电气班一.实验目的通过使用ISE13.4和FPGA进行简单逻辑门的设计与实现,进而达到以下目的:1)学习使用ISE软件生成一个新工程文件;2)学习使用HDL进行电路设计;3)学会编辑顶层文件和用户约束文件;4)熟悉仿真、综合、实现以及FPGA配置等;5)熟悉在Basys2开发板上的简单外围设备的控制。二.实验要求数字钟设计一个完整的数字钟,小时和分钟用数码管显示,秒用发光二极管闪烁显示,每秒闪烁。如有可能,请增加校时功能(P162,(2))。三.实验内容1).工程文件的建立操作步骤:File---NewProject---输入工程文件名---选择Family:Spartan3E;Device:XC3S100E;Package:CP132;PreferredLanguage:Verilog---Finish2).输入HDL(Verilog)程序操作步骤:Project---NewSource---选择VerilogModule---输入文件名---Next---Finish---进入程序输入页面---编写逻辑门的Verilog程序如下:`timescale1ns/1ps////////////////////////////////////////////////////////////////////////////////////Company://Engineer:////CreateDate:13:26:3405/07/2014//DesignName://ModuleName:CLock_top//ProjectName://TargetDevices://Toolversions://Description:////Dependencies:////Revision://Revision0.01-FileCreated//AdditionalComments:////////////////////////////////////////////////////////////////////////////////////moduleCLock_top(inputwireclk,inputwireclr,inputwireaddBtn0,inputwireaddBtn1,inputwireaddBtn2,outputSecond_Flash,output[6:0]a_to_g,output[3:0]an);wire[3:0]Second_L;wire[3:0]Second_H;wire[3:0]Minute_L;wire[3:0]Minute_H;wire[3:0]Hour_L;wire[3:0]Hour_H;wirejinwei1;wirejinwei2;SecondPulseU0(.clk(clk),.clr(clr),.sec(Second_Flash));cnt60U1(.clk(Second_Flash),.clr(clr),.cnt60_L(Second_L),.cnt60_H(Second_H),.carry(jinwei1));cnt60U2(.clk(jinwei1||addBtn0),.clr(clr),.cnt60_L(Minute_L),.cnt60_H(Minute_H),.carry(jinwei2),.an(addBtn0));cnt24U4(.clk(jinwei2||addBtn2),.clr(clr),.cnt24_L(Hour_L),.cnt24_H(Hour_H),.carry(carry));dispU3(.clk(clk),.LED0_num(Minute_L),.LED1_num(Minute_H),.LED2_num(Hour_L),.LED3_num(Hour_H),.a_to_g(a_to_g),.an(an));endmodulemoduleSecondPulse(inputwireclk,inputwireclr,outputregsec);reg[26:0]q1;always@(posedgeclkorposedgeclr)beginif(clr==1)q1=0;elseif(q1==25000000)beginq1=0;sec=~sec;endelseq1=q1+1;endendmodulemodulecnt60(inputwireclk,inputwireclr,inputwirean,outputreg[3:0]cnt60_L,outputreg[3:0]cnt60_H,outputregcarry);initialbegincnt60_L=0;cnt60_H=0;endalways@(posedgeclkorposedgeclr)beginif(clr==1)begincnt60_L=0;cnt60_H=0;endelsebegincarry=0;cnt60_L=cnt60_L+1;if(cnt60_L==9)begincnt60_L=0;cnt60_H=cnt60_H+1;endif(cnt60_H==5&&cnt60_L==9)begincnt60_L=0;cnt60_H=0;if(an==0)carry=1;endendendendmodulemodulecnt24(inputwireclk,inputwireclr,outputreg[3:0]cnt24_L,outputreg[3:0]cnt24_H,outputregcarry);initialbegincnt24_L=0;cnt24_H=0;endalways@(posedgeclkorposedgeclr)beginif(clr==1)begincnt24_L=0;cnt24_H=0;endelsebegincarry=0;cnt24_L=cnt24_L+1;if(cnt24_L==9)begincnt24_L=0;cnt24_H=cnt24_H+1;endif(cnt24_H==2&&cnt24_L==3)begincnt24_L=0;cnt24_H=0;carry=1;endendendendmodulemoduledisp(inputwireclk,input[3:0]LED0_num,input[3:0]LED1_num,input[3:0]LED2_num,input[3:0]LED3_num,outputreg[6:0]a_to_g,outputreg[3:0]an);reg[1:0]s;reg[3:0]digit;reg[16:0]clkdiv;always@(*)beginan=4'b1111;s=clkdiv[16:15];an[s]=0;case(s)0:digit=LED0_num[3:0];1:digit=LED1_num[3:0];2:digit=LED2_num[3:0];3:digit=LED3_num[3:0];default:digit=LED3_num[3:0];endcasecase(digit)0:a_to_g=7'b0000001;1:a_to_g=7'b1001111;2:a_to_g=7'b0010010;3:a_to_g=7'b0000110;4:a_to_g=7'b1001100;5:a_to_g=7'b0100100;6:a_to_g=7'b0100000;7:a_to_g=7'b0001111;8:a_to_g=7'b0000000;9:a_to_g=7'b0000100;'hA:a_to_g=7'b0001000;'hB:a_to_g=7'b1100000;'hC:a_to_g=7'b0110001;'hD:a_to_g=7'b1000010;'hE:a_to_g=7'b0110000;'hF:a_to_g=7'b0111000;default:a_to_g=7'b0000001;endcaseendalways@(posedgeclk)beginclkdiv=clkdiv+1;endendmodule3).约束文件的编写操作步骤:Project---NewSource---选择ImplantationConstraintsFile---输入文件名---Next---Finish---输入ucf文件如下:NETa_to_g[0]LOC=M12;NETa_to_g[1]LOC=L13;NETa_to_g[2]LOC=P12;NETa_to_g[3]LOC=N11;NETa_to_g[4]LOC=N14;NETa_to_g[5]LOC=H12;NETa_to_g[6]LOC=L14;NETan[3]LOC=K14;NETan[2]LOC=M13;NETan[1]LOC=J12;NETan[0]LOC=F12;NETclkLOC=B8;NETclrLOC=A7;NETSecond_FlashLOC=M5;NETaddBtn2LOC=M4;NETaddBtn1LOC=C11;NETaddBtn0LOC=G12;4).功能的综合、实现及生成编程文件操作步骤:Implement---正确完成综合和实现---双击GenerateProgrammingFile生成编程文件。5).最后将写好的文件通过电脑下载到FPGA中,在器件配置成功以后,再根据编写的约束文件确定的输入输出链接关系来验证设计正确性。
本文标题:数字钟报告西安交通大学
链接地址:https://www.777doc.com/doc-5928830 .html