Verilog秒表设计

上传人:大米 文档编号:447366699 上传时间:2023-07-29 格式:DOC 页数:17 大小:1.71MB
返回 下载 相关 举报
Verilog秒表设计_第1页
第1页 / 共17页
Verilog秒表设计_第2页
第2页 / 共17页
Verilog秒表设计_第3页
第3页 / 共17页
Verilog秒表设计_第4页
第4页 / 共17页
Verilog秒表设计_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《Verilog秒表设计》由会员分享,可在线阅读,更多相关《Verilog秒表设计(17页珍藏版)》请在金锄头文库上搜索。

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;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 tem

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号