Verilog秒表设计_第1页
Verilog秒表设计_第2页
Verilog秒表设计_第3页
Verilog秒表设计_第4页
Verilog秒表设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、深 圳 大 学 实 验 报 告 课程名称: 数字系统设计 实验项目名称: verilog秒表设计 学院: 信息工程学院 专业: 电子信息工程 指导教师: 邓小莺 报告人: 陈耀省 学号:2010130267 班级: 电子三班 实验时间: 2012年11月 实验报告提交时间: 2012年11月28日 教务部制一、实验目的1、进一步熟悉ise软件的使用,熟悉fpga开发流程;2、掌握编写verilog代码的步骤,学会绘制asm图;3、学会自顶向下的设计方法,使用不同的模块实现系统的设计。二、实验设备 1、装有ise软件的pc机一台;2、nexys3开发板一块。三、实验内容与要求设计一个秒表它具有计

2、时功能。此秒表有两个按键(reset, start)按下reset键后,秒表清零。开始默认秒表计时,按下start键后,停止计时,再次按下start键后,又开始计时,如此反复。 用fpga开发板上的两个七段数码管显示时间(以秒为单位),计时由0 到 59 循环。三、实验步骤 1、设计系统框图,设计采取自顶向下的设计方案,整个秒表系统的原理图如下所示。主要包括五个模块按键消抖模块、分频模块、按键功能控制模块、计数模块、数码管驱动显示模块。2、根据系统的原理图,画出各个模块的asm图。(1)利用d触发器对按键进行消抖处理,其电路图如下。利用下面这个电路即可实现对start键和reset键的消抖。只

3、有连续输入三个周期的高电平时,按键才有效。(2)分频模块的asm图。此asm图将100mhz的信号分频为100hz的信号,用于计数和数码管的扫描。(3)start键与reset键功能控制模块的asm图。图中rst为复位信号,sta为计时信号。利用状态机实现不同状态之间的转换并输出复位信号与计时信号。默认状态是start_time,即计时状态。(4)计数模块的asm图。输入100hz的时钟用于计数,当复位信号有效时,将所有的数全部置0。否则sta信号有效时开始计数。最后输出秒位与十秒位。(5)数码管驱动模块的asm图。使用100hz的信号扫描数码管,并将对应的数字以十进制形式显示在数码管上。因为

4、只用到两个数码管,所以前两个数码管置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),.star

5、t(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),.da

6、ta_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,st

7、art,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=reset

8、a; 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, st

9、op_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; r

10、st=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;out

11、put 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=

12、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

13、: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 (d

14、ata)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;endcaseen

15、dmodule/*/4、将所编写的代码进行综合,综合无误后对代码进行功能仿真。仿真结果图与仿真分析如下。将代码进行综合后所得的电路结构图如下所示,系统由五个模块组成,与所写的代码完全吻合。仿真结果与分析:开始时默认计时,所以到1000ms时数码管显示01秒,如下图所示。下面两幅图,第一幅图中start键第一次按下,即按下了停止键,所以计时停止,到3000多ms时数码管的显示依旧停在01秒,如第二幅图所示。按下reset键后,秒表复位,数码管变为显示00秒,如下图。在复位状态下按下start键,开始计时,所以按下start键1秒后数码管显示又由00秒变为01秒,如下图。 由以上的仿真结果可以看出

16、,所编写的代码能实现秒表的计时功能,且秒表的各个按键的功能都正确,所编写的代码正确。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 outda

17、ta1 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

18、 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% nu

19、mber 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 sig

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论