




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程名称: 数字系统设计 一、实验目的1、进一步熟悉ISE软件的使用,熟悉FPGA开发流程;2、掌握编写Verilog代码的步骤,学会绘制ASM图;3、学会自顶向下的设计方法,使用不同的模块实现系统的设计。二、实验设备 1、装有ISE软件的PC机一台;2、Nexys3开发板一块。三、实验内容与要求设计一个秒表它具有计时功能。此秒表有两个按键(reset, start)按下reset键后,秒表清零。开始默认秒表计时,按下start键后,停止计时,再次按下start键后,又开始计时,如此反复。 用FPGA开发板上的两个七段数码管显示时间(以秒为单位),计时由0 到 59 循环。三、实验步骤 1、设计系统框图,设计采取自顶向下的设计方案,整个秒表系统的原理图如下所示。主要包括五个模块按键消抖模块、分频模块、按键功能控制模块、计数模块、数码管驱动显示模块。2、根据系统的原理图,画出各个模块的ASM图。(1)利用D触发器对按键进行消抖处理,其电路图如下。利用下面这个电路即可实现对start键和reset键的消抖。只有连续输入三个周期的高电平时,按键才有效。(2)分频模块的ASM图。此ASM图将100MHz的信号分频为100Hz的信号,用于计数和数码管的扫描。(3)start键与reset键功能控制模块的ASM图。图中rst为复位信号,sta为计时信号。利用状态机实现不同状态之间的转换并输出复位信号与计时信号。默认状态是start_time,即计时状态。(4)计数模块的ASM图。输入100Hz的时钟用于计数,当复位信号有效时,将所有的数全部置0。否则sta信号有效时开始计数。最后输出秒位与十秒位。(5)数码管驱动模块的ASM图。使用100Hz的信号扫描数码管,并将对应的数字以十进制形式显示在数码管上。因为只用到两个数码管,所以前两个数码管置1,即保持不亮,只点亮后两个数码管。3、根据所绘制各个模块的ASM图和系统的原理图,编写Verilog代码。所编写的代码如下。/*秒表顶层模块*/module stopwatch(clk,reset,start,led,outdata);input clk,reset,start;output led;output outdata;wire clk_100,freset,fstart,rst,sta;wire 3:0data_s,data_g;wire 3:0led;wire 6:0outdata;xiaodou m1(.reset(reset),.start(start),.clk(clk),.freset(freset),.fstart(fstart);fenpin m2(.clk(clk),.clk_100(clk_100);f_start m3(.clk(clk),.reset(reset),.start(start),.freset(freset),.fstart(fstart),.rst(rst),.sta(sta);jishu m4(.clk_100(clk_100),.rst(rst),.sta(sta),.data_s(data_s),.data_g(data_g);qudong m5(.clk_100(clk_100),.data_s(data_s),.data_g(data_g),.outdata(outdata),.led(led);endmodule/*/*分频模块*/module fenpin(clk,clk_100);input clk;output clk_100;reg clk_100=0;reg 18:0temp=0;always (posedge clk)beginif (temp=499999)begintemp=0;clk_100=clk_100;endelse begintemp=temp+1;end endendmodule/*/*按键消抖*/module xiaodou(reset,start,clk,freset,fstart);input reset,start,clk;output freset,fstart;wire freset,fstart;reg flag_reset,flag_start;reg resetA,startA, resetB,startB;assign freset=(resetA & resetB & flag_reset); assign fstart=(startA & startB & flag_start);always ( posedge clk)beginresetA=reset; startA=start;resetB=resetA; startB=startA;flag_reset=resetB; flag_start=startB;endendmodule/*/*start与reset键功能控制*/module f_start(clk,reset,start,freset,fstart,rst,sta);input clk,reset,start,freset,fstart;output rst,sta;reg 1:0state=2b01; /默认是计时状态,即start_timereg rst=1;reg sta=0;parameter reset_time =2b00, start_time =2b01, stop_time =2b10;always (posedge clk) if (freset & !reset) /按键按下放开后的第一个时钟周期有效 begin state=reset_time; rst=0; end else case (state) reset_time: if (fstart & !start) begin state=start_time; rst=1; sta=0; end else begin state=reset_time; rst=0; end start_time: if (fstart & !start) begin state=stop_time; rst=1; sta=1; end else begin state=start_time; rst=1; sta=0; end stop_time: if (fstart & !start) begin state=start_time; rst=1; sta=0; end else begin state=stop_time; rst=1; sta=1; end default: state=2bxx;endcase endmodule/*/*计数模块*/module jishu(clk_100,rst,sta,data_s,data_g);input clk_100,rst,sta;output 3:0data_s,data_g;reg 3:0data_s=4b0000;reg 3:0data_g=4b0000;reg 3:0temp1=4b0000;reg 3:0temp2=4b0000;always (posedge clk_100)if (!rst)begintemp1=4b0000; temp2=4b0000;data_s=4b0000; data_g=4b0000;endelse if (!sta) begin if(temp1=9) begin temp1=0; if(temp2=9) begin temp2=0;if(data_g=9) begin data_g=0;if(data_s=5)begindata_s=0; endelse begin data_s=data_s+1; end endelsebegindata_g=data_g+1; end endelsebegintemp2=temp2+1;end end else begin temp1=temp1+1; end endendmodule/*/*数码管扫描与显示模块*/module qudong(clk_100,data_s,data_g,outdata,led);input clk_100; input 3:0data_s,data_g;output outdata,led;reg 3:0data,led;reg count=0;reg 6:0outdata;always (posedge clk_100)if (count)begincount=0;endelsebegincount=count+1;endalways (count)case (count)0: led=4b1110;1: led=4b1101;default : led=4b1111;endcasealways (count)case (count)0: data=data_g;1: data=data_s;default: data=4b1111;endcasealways (data)case (data)4b0000: outdata=7b0000001;4b0001: outdata=7b1001111;4b0010: outdata=7b0010010;4b0011: outdata=7b0000110;4b0100: outdata=7b1001100;4b0101: outdata=7b0100100;4b0110: outdata=7b0100000;4b0111: outdata=7b0001111;4b1000: outdata=7b0000000;4b1001: outdata=7b0000100;default: outdata=7b1111111;endcaseendmodule/*/4、将所编写的代码进行综合,综合无误后对代码进行功能仿真。仿真结果图与仿真分析如下。将代码进行综合后所得的电路结构图如下所示,系统由五个模块组成,与所写的代码完全吻合。仿真结果与分析:开始时默认计时,所以到1000ms时数码管显示01秒,如下图所示。下面两幅图,第一幅图中start键第一次按下,即按下了停止键,所以计时停止,到3000多ms时数码管的显示依旧停在01秒,如第二幅图所示。按下reset键后,秒表复位,数码管变为显示00秒,如下图。在复位状态下按下start键,开始计时,所以按下start键1秒后数码管显示又由00秒变为01秒,如下图。 由以上的仿真结果可以看出,所编写的代码能实现秒表的计时功能,且秒表的各个按键的功能都正确,所编写的代码正确。5、进行完功能仿真验证代码无误后,进行管脚分配,编写ucf文件。ucf文件如下。NET clk LOC = V10;NET led0 LOC = N16;NET led1 LOC = N15;NET led2 LOC = P18;NET led3 LOC = P17;NET outdata6 LOC = T17;NET outdata5 LOC = T18;NET outdata4 LOC = U17;NET outdata3 LOC = U18;NET outdata2 LOC = M14;NET outdata1 LOC = N14;NET outdata0 LOC = L14;NET reset LOC = A8;NET start LOC = B8;6、管脚分配结束之后,对程序进行综合,运行,并进行布局布线。以下是布局布线后的报告,从报告中可以看出所用资源的情况,且布局布线后没有错误和警告。Device Utilization Summary:Slice Logic Utilization: Number of Slice Registers: 47 out of 18,224 1% Number used as Flip Flops: 47 Number of Slice LUTs: 82 out of 9,112 1% Number used as logic: 81 out of 9,112 1% Number using O6 output only: 58 Number using O5 output only: 17 Number using O5 and O6: 6 Number used exclusively as route-thrus: 1 Number with same-slice carry load: 1Slice Logic Distribution: Number of occupied Slices: 33 out of 2,278 1% Number of LUT Flip Flop pairs used: 85 Number with an unused Flip Flop: 42 out of 85 49% Number with an unused LUT: 3 out of 85 3% Number of fully used LUT-FF pairs: 40 out of 85 47%IO Utilization: Number of bonded IOBs: 14 out of 232 6% Number of LOCed IOBs: 14 out of 14 100%Specific Feature Utilization: Number of BUFG/BUFGMUXs: 1 out of 16 6% Number used as BUFGs: 1Generating Pad Report.All signals
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版智能城市外包劳动合同标准范本
- 2025年度高性能河沙采购与加工合同
- 2025版石材来料加工与石材行业标准实施合同
- 2025版包装设备采购与专业维护合同
- 2025年度旅游企业代理记账与旅游收入核算合同
- 2025不动产房产证购房合同附带智能家居升级服务
- 2025年度高速铁路冲击钻施工与土地复垦合同
- 2025版带花园商铺商品房房屋转让合同范本
- 2025年中学教师资格《综合素质》学生心理辅导案例题库试题及答案
- 2025年西式面点师职业资格考试考前冲刺模拟试题解析
- 学校安保合同范本
- 六年级阅读题打印20篇
- 《液压传动》教案(劳动版)
- 钢筋工劳务分包合同书模板
- GB/T 32124-2024磷石膏的处理处置规范
- 集成光电子器件及设计-4集成光有源器件
- 2025届浙江省新英语高三第一学期期末教学质量检测试题含解析
- TCECA-G 0304-2024 数字化碳管理平台 总体框架
- DL∕T 976-2017 带电作业工具、装置和设备预防性试验规程
- 近几年大学英语四级词汇表(完整珍藏版)
- 儿科护理学教学案
评论
0/150
提交评论