FPGA设计的秒表设计实验报告
基于FPGA的秒表实验
![基于FPGA的秒表实验](https://img.taocdn.com/s3/m/7d965c533b3567ec102d8ae9.png)
基于FPGA的秒表实验目的4个七段数码管分别表示十分分十秒秒当SW0为1的时候,暂停计时,进入设置。
按BTN0时秒加1,按BTN1时增加10秒按BTN2时增加1分,按BTN3时增加10分module miaobiao(clk,out,out1,control,btn);//模块名及端口input clk,control,btn;//输入端口声明output out,out1;//输出端口声明wire control;//输入控制信号是wire类型wire [3:0] btn;//四位按键reg [6:0] out1;//定义段选7位寄存器reg [3:0] out;//定义位选4位寄存器reg [31:0] count;//定义一个计数器reg [3:0] sec_l,sec_h,min_l,min_h,out2;//定义存储秒、十秒、分、十分的寄存器,还有显示寄存器供译码用;initial out1 <= 7'b0000001;//给段选赋初值,刚开始时位0000always @(posedge clk)//计数行为语句begincount = count + 1;if ((count==50000000)&&(control==0))//进行分频与控制信号的检测,控制信号为假,继续计数beginsec_l = sec_l +1;count = 0;if(sec_l==10)beginsec_l=0;sec_h = sec_h + 1;if(sec_h == 6)beginsec_h = 0;min_l = min_l + 1;if (min_l==10)beginmin_l = 0;min_h = min_h + 1;if(min_h==6)min_h = 0;endendendendelse if((count==50000000)&&(control==1))//控制信号为真,进入操作模式begincount = 0;if (btn[0]==1)beginsec_l = sec_l + 1;if (sec_l==10)sec_l = 0;endif (btn[1]==1)beginsec_h = sec_h + 1;if (sec_l==6)sec_h = 0;endif (btn[2]==1)beginmin_l = min_l + 1;if (min_l==10)min_l = 0;endif (btn[3]==1)beginmin_h = min_h + 1;if (min_h==6)min_h = 0;endendendalways @(posedge clk)//时钟扫描(动态扫描)行为语句begincase(count[15:14])2'b00:begin out <= 4'b1110; out2 <= sec_l;end//打通第一个管子的时候,把秒寄存器的值给显示寄存器,显示寄存器通过译码转换为段码2'b01:begin out <= 4'b1101; out2 <= sec_h;end2'b10:begin out <= 4'b1011; out2 <= min_l;end2'b11:begin out <= 4'b0111; out2 <= min_h;endendcaseendalways @(posedge clk)//译码行为语句,根据显示寄存器的值,译为2进制代码来赋予电平信号,打通led管begincase(out2)0:out1 <= 7'b0000001;1:out1 <= 7'b1001111;2:out1 <= 7'b0010010; 3:out1 <= 7'b0000110; 4:out1 <= 7'b1001100; 5:out1 <= 7'b0100100; 6:out1 <= 7'b0100000; 7:out1 <= 7'b0001111; 8:out1 <= 7'b0000000; 9:out1 <= 7'b0000100; endcaseendendmodule。
基于FPGA的电子秒表设计
![基于FPGA的电子秒表设计](https://img.taocdn.com/s3/m/0dc6c723b80d6c85ec3a87c24028915f804d84bb.png)
基于FPGA的电⼦秒表设计基于FPGA的电⼦秒表设计摘要简⽽⾔之,电⼦秒表的⼯作原理就是不断输出连续脉冲给加法计数器,⽽加法计数器通过译码器来显⽰它所记忆的脉冲周期个数。
电⼦秒表是⽇常⽣活中⽐较常见的电⼦产品。
本设计秒表的逻辑结构主要由74LS00, 555定时器,RS 触发器,74LS90等器件组成。
使⽤了基本RS触发器作为电⼦秒表的开关,基本RS触发器属低电平直接触发的触发器,有直接置位,复位的功能。
整个秒表需有⼀个清零/ 启动信号和⼀个停⽌/保持信号装置,以便秒表能随意停⽌及启动,计数器的输出全都为BCD码输出,⽅便显⽰译码器连接。
本设计基于简单易⾏的原则,秒表显⽰以0.01s为最⼩单位,设计时,按照设计任务的次序,将各单元电路逐个进⾏接线和调试,即分别测试基本RS触发器、时钟发⽣器及计数器的逻辑功能,待各单元电路⼯作正常后,再将有关电路逐级连接起来进⾏测试……,直到测试电⼦秒表整个电路的功能。
最后进⾏总结.做到经典⽽没有缺憾的设计结果。
关键字:74LS00 555定时器 RS触发器 BCD码⽬录摘要 (1)⼀、引⾔ (3)(⼀)设计的背景 (3)(⼆)设计实现的基本功能 (4)(三)设计的结构安排 (4)⼆、系统硬件设计 (5)(⼀)总体设计 (5)(⼆)555定时器简简介 (9)(三)基本RS触发器 (10)(四)功能测试 (12)三、系统软件设计 (14)(⼀) 设计⽅案 (14)(⼆)分频模块 (14)(三)计数模块 (16)(四)启停控制模块 (17)(五)显⽰控制模块 (18)(六)编译仿真 (19)参考⽂献 (22)致谢 (23)⼀、引⾔(⼀)设计的背景秒表计时器是电器制造,⼯业⾃动化控制、国防、实验室及科研单位理想的计时仪器,他⼴泛应⽤于各种继电器、电磁开关、控制器、延时器、定时器等的时间测试。
有关电⼦秒表的发展历史,⼤致可以分为三个演变阶段。
1、从⼤型钟向⼩型钟演变。
2、从⼩型钟向袋表过度。
FPGA 数字秒表的设计
![FPGA 数字秒表的设计](https://img.taocdn.com/s3/m/6725ce14c281e53a5802ff7b.png)
学院FPGA设计实践报告题目:数字秒表的设计院系:计算机与信息工程学院专业:电子科学与技术年级姓名:学号:指导老师:一、课程设计目的:本课程的授课对象是电子科学与技术专业本科生,是电子类专业的一门重要的实践课程,是理论与实践相结合的重要环节。
本课程有助于培养学生的数字电路设计方法、掌握模块划分、工程设计思想与电路调试能力,为以后从事各种电路设计、制作与调试工作打下坚实的基础。
二、课程设计要求:l. 设计用于体育比赛用的数字秒表, 要求:⑴计时精度应大于l/100S, 计时器能显示1/100S的时间, 提供给计时器内部定时的时钟脉冲频率应大于l00Hz, 这里选用1kHz 。
⑵计时器的最长计时时间为l小时, 为此需要一个6位的显示器, 显示的最长时间为59分59.99秒。
2. 设置有复位和起/停开关⑴复位开关用来使计时器清零, 并作好计时准备。
⑵起/停开关的使用方法与传统的机械式计时器相同, 即按一下起/停开关, 启动计时器开始计时, 再按一下起/停开关计时终止。
⑶复位开关可以在任何情况下使用,即使在计时过程中, 只要按一下复位开关, 计时进程立刻终止, 并对计时器清零。
3. 复位和起/停开关应有内部消抖处理。
4. 采用VHDL语言用层次化设计方法设计符合上述功能要求的数字秒表。
5. 对电路进行功能仿真, 通过有关波形确认电路设计是否正确。
6. 完成电路全部设计后, 通过系统实验箱下载验证设计课题的正确性。
三、系统组成与工作原理:数字秒表框图:1、电路原理图 :2、工作原理:l.计时控制器作用是控制计时。
计时控制器的输入信号是启动、暂停和清零。
为符合惯例, 将启动和暂停功能设置在同一个按键上, 按一次是启动, 按第二次是暂停, 按第三次是继续。
所以计时控制器共有2个开关输入信号, 即启动/暂停和清除。
计时控制器输出信号为计数允许/保持信号和清零信号。
2. 计时电路的作用是计时, 其输入信号为lkHz 时钟、计数允许/保持和清零信号, 输出为l0ms、l00ms、s 和min 的计时数据。
基于FPGA数字秒表设计
![基于FPGA数字秒表设计](https://img.taocdn.com/s3/m/f693883aec3a87c24128c45b.png)
数字秒表设计一、实验目的1、理解计时器的原理与Verilog/VHDL的编程方法;2、掌握多模块设计及层次设计的方法。
二、实验原理秒计时器是由计数器和译码器、显示器组成,其核心是计数器与译码器。
60秒计时器可由二个计数器分别完成:个位为十进制计数器,十位为6进制计数。
个位计数器的计数信号由实验开发板上主频20MHZ分频产生的1Hz时钟信号提供,十位计数器的计数信号由个位的进位信号提供。
然后由译码器对计数结果进行译码,送LED数码管进行显示。
Clr为清零,se t为开始。
三、实验框图图2-1四、实验任务1、采用层次设计的方法,设计一个包括顶层及底层模块的60秒计时器,底层模块用Verilog/VHDL设计(或者选用原理图输入法中宏功能元件),顶层用原理图设计。
2、秒计时器应当具有系统复位功能;3、每十秒发出提示信号及计满60秒时发出报警信号。
(选做)文件名COUNT10.V代码module COUNT1O(SET, CLR, CLK, DOUT, COUT); in put SET, CLR, CLK;output [3:0] DOUT;output COUT;reg [3:0] data;reg COUT;assig n DOUT = data;always @(n egedge CLK or n egedge CLR)4'HF: Q<=7'H71 ;default: Q<=7'B1111111;endcaseenden dmoduleCOUNT60.bdf文件名原理图五、实验步骤1•创建工程2•选择目标器件3. 编写verilog hdl程序4编译5. 生成符号文件6. 创建编辑原理图7. 设置顶层文件8编译六、实验结果1. 编译结果Flow StatusQuartos II VersionRevisicxi NameTop^vel Entity NarneFamlyDeviceTrning ModdsMet timmg requiTiefrientsTata logic ate merit ETold conbinatKMial fundioni Dedfcatcd logic registers Total negiateFBTotal pinsTot日virtual pinsTotaJ rnemory bits&vibedded Multiplier &dements Total PLLs SuccessfLi - Sat Nov 01 11:12:49 30149 1 Build 222 10/21/200& SJ Wet> Editicri COUNTSCOUNTGOl^done I IIEP3C5E144C8Fmi^lN/AG3/5.136( 1 X)33/5.136(<1 X)3J26/96(27*}Q/4?3^36<0%)0/4&(D%)0/2(0%)2. 仿真结果文件名COUNT6.V仿真结果Mann 白Value i17.B F^07ua邑更 g ^?JE^7ub ia-19 JB 71字麼甲 5 33—0宀^^4CLKCLHSETCOUTB D0UTHDH1卜1HD卜0TLrLrLrLnrLrLnnrLrLrLrLrLrLrLrLrLnjTrLrLrLrLrLrumfmrLrLrLrLri L r~1 i 1 i厂-n n文件名COUNT10.V9. 创建编辑波形图文件10. 使用波形图仿真11. 锁定管脚12. 编译13. 下载至芯片仿真结果文件名仿真结果17J?5na■TLTLrLnirLrLrWLn_ruwwjwrLnjmjirLrLrwin_ruijWWUi[n JTT ®(n2XDE®®o^oD203®2xnixD®(n®®©(n2XD®@i®OE®i®<ri i i _______ i i _______COUNT60.V (为了简便将分频器设置2分频的)C_KfHRSET 冋DOITH hiDOirn uOH5 xHUTL_nu jnlimnninmmiMmmmmrimimmMJMominroinnrumiminmTmmmnnrmim!irrno“j 厂JCJZ : 前t 底—I 強—r 耶弋騙工如丫非—仍丈丸朗代熾:璇绽帰它狀减燉麒^峨*]炊輕烫处好號爼仞XCOK切默XX*X*X5XIMM*>X*iXXXAN WtXXXCO Z備出七、实验小结通过本次实验,我掌握了分频器的设计,学习了如何通过原理图设计,知道了如何在一个工程中同时使用verilog hdl程序和原理图。
fpga秒表设计实验报告
![fpga秒表设计实验报告](https://img.taocdn.com/s3/m/c8f21f14abea998fcc22bcd126fff705cc175c35.png)
fpga秒表设计实验报告本次实验是基于FPGA设计的秒表。
秒表主要是用来计时的一种仪器,具有精准度高、显示清晰等优点。
在实验中,我们使用FPGA来实现秒表的设计。
1. 实验目的通过本次实验,我们的目的是掌握FPGA的使用方法,并设计出一个能够精准计时的秒表。
同时,也能够加深理解数字电路的基本原理和数字信号的处理方式。
2. 实验原理秒表的原理很简单,在起点按下计时键后,秒表开始计时,时间会显示在数码管或LCD屏幕上。
在终点按下停止键后,秒表停止计时。
我们需要用数字电路来实现这个过程,分为三个部分。
2.1. 时钟模块时钟模块是秒表实现的基础。
我们可以使用FPGA内置的时钟控制器IP,也可以自己实现时钟模块。
在这个实验中,我们使用了FPGA内置的时钟控制器IP。
2.2. 计时模块计时模块是实现秒表的关键。
我们可以使用FPGA内置的计数器IP,也可以自己实现计数器模块。
在这个实验中,我们使用了FPGA内置的计数器模块。
2.3. 显示模块显示模块用来显示计时结果。
我们可以使用数码管或LCD屏幕来显示计时结果。
在这个实验中,我们使用了数码管来显示计时结果。
3. 实验步骤3.1. 创建工程首先,我们需要在Vivado IDE中创建一个FPGA工程。
在创建工程时,需要选择适当的设备型号、板卡等参数。
3.2. 添加时钟控制器IP在Vivado IDE中,选择IP Catalog,搜索并添加时钟控制器IP。
3.3. 添加计数器IP在Vivado IDE中,选择IP Catalog,搜索并添加计数器IP。
3.4. 添加数码管IP在Vivado IDE中,选择IP Catalog,搜索并添加数码管IP。
3.5. 连接IP在Vivado IDE中,将时钟控制器IP、计数器IP和数码管IP进行连接。
3.6. 程序设计使用Vivado IDE中的HDL语言对秒表进行程序设计。
3.7. 烧录程序将程序烧录到FPGA中,实现秒表功能。
FPGA秒表实验报告
![FPGA秒表实验报告](https://img.taocdn.com/s3/m/24f7f211650e52ea551898c3.png)
课程设计报告专业班级课程题目秒表的设计学号姓名同组人成绩2013年5月一、设计目的1.进一步熟悉七段码译码器的硬件接口。
2.掌握用扫描方法驱动多个数码管硬件接口。
3.掌握秒表VHDL的编程方法。
二、系统总体设计(1).设计要求:1.秒表共有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应,6个计数器的输出全都为BCD码输出,这样便于和显示译码器的连接。
当计时达60分钟后,蜂鸣器鸣响10声。
2.整个秒表还需有一个启动信号和一个归零信号,以便秒表能随意停止及启动。
3.秒表的逻辑结构较简单,它主要由显示译码器、分频器、十进制计数器、六进制计数器和报警器组成。
在整个秒表中最关键的是如何获得一个精确的100HZ 计时脉冲。
(2).实验原理:秒表由于其计时精确,分辨率高(0.01秒),在各种竞技场所得到了广泛的应用。
秒表的工作原理与数字时基本相同,唯一不同的是秒表的计时时钟信号,由于其分辨率为0.01秒,所以整个秒表的工作时钟是在100Hz的时钟信号下完成。
当秒表的计时小于1个小时时,显示的格式是mm-ss-xx(mm表示分钟:0~59;ss 表示秒:0~59;xx表示百分之一秒:0~99),当秒表的计时大于或等于一个小时时,显示的和多功能时钟是一样的,就是hh-mm-ss(hh表示小时:0~99),由于秒表的功能和钟表有所不同,所以秒表的hh表示的范围不是0~23,而是0~99,这也是和多功能时钟不一样的地方。
在设计秒表的时候,时钟的选择为100Hz。
变量的选择:因为xx(0.01秒)和hh(小时)表示的范围都是0~99,所以用两个4位二进制码(BCD码)表示;而ss(秒钟)和mm(分钟)表示的范围是0~59,所以用一个3位的二进制码和一个4位的二进制码(BCD)码表示。
显示的时候要注意的问题就是小时的判断,如果小时是00,则显示格式为mm-ss-xx,如果小时不为00,则显示hh-mm-ss。
FPGA秒表实验报告
![FPGA秒表实验报告](https://img.taocdn.com/s3/m/24f7f211650e52ea551898c3.png)
课程设计报告专业班级课程题目秒表的设计学号姓名同组人成绩2013年5月一、设计目的1.进一步熟悉七段码译码器的硬件接口。
2.掌握用扫描方法驱动多个数码管硬件接口。
3.掌握秒表VHDL的编程方法。
二、系统总体设计(1).设计要求:1.秒表共有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应,6个计数器的输出全都为BCD码输出,这样便于和显示译码器的连接。
当计时达60分钟后,蜂鸣器鸣响10声。
2.整个秒表还需有一个启动信号和一个归零信号,以便秒表能随意停止及启动。
3.秒表的逻辑结构较简单,它主要由显示译码器、分频器、十进制计数器、六进制计数器和报警器组成。
在整个秒表中最关键的是如何获得一个精确的100HZ 计时脉冲。
(2).实验原理:秒表由于其计时精确,分辨率高(0.01秒),在各种竞技场所得到了广泛的应用。
秒表的工作原理与数字时基本相同,唯一不同的是秒表的计时时钟信号,由于其分辨率为0.01秒,所以整个秒表的工作时钟是在100Hz的时钟信号下完成。
当秒表的计时小于1个小时时,显示的格式是mm-ss-xx(mm表示分钟:0~59;ss 表示秒:0~59;xx表示百分之一秒:0~99),当秒表的计时大于或等于一个小时时,显示的和多功能时钟是一样的,就是hh-mm-ss(hh表示小时:0~99),由于秒表的功能和钟表有所不同,所以秒表的hh表示的范围不是0~23,而是0~99,这也是和多功能时钟不一样的地方。
在设计秒表的时候,时钟的选择为100Hz。
变量的选择:因为xx(0.01秒)和hh(小时)表示的范围都是0~99,所以用两个4位二进制码(BCD码)表示;而ss(秒钟)和mm(分钟)表示的范围是0~59,所以用一个3位的二进制码和一个4位的二进制码(BCD)码表示。
显示的时候要注意的问题就是小时的判断,如果小时是00,则显示格式为mm-ss-xx,如果小时不为00,则显示hh-mm-ss。
FPGA实验报告5篇
![FPGA实验报告5篇](https://img.taocdn.com/s3/m/18e63fecd05abe23482fb4daa58da0116c171fca.png)
FPGA实验报告5篇第一篇:FPGA实验报告FPGA实验报告专业:XXX 姓名:XXX 学号:XX一:实验目的1.熟悉Modelsim和Quartus II软件的运行环境和使用2.熟练使用Quartus II仿真软件生成网表。
3.熟悉FPGA前仿真和后仿真的整个流程。
二:实验内容编写counter计数器,在Quartus II仿真软件中生成网表,再在Modelsim中进行后仿真。
三: 实验步骤1.在Modelsim编写源程序(counter计数器及激励),编译源文件,确保程序的正确性,并进行前仿真,生成波形图如下:附:源程序如下:module counter(q,clk,reset);input clk,reset;output [3:0] q;reg [3:0] q;always @(posedge reset or negedge clk)if(reset)q <= 4'b0;elseq <= q + 1;endmodule module top;reg CLK,RESET;wire [3:0] Q;counter c1(Q,CLK,RESET);initialCLK=1'b0;always#1 CLK=~CLK;initial$monitor($time,“Q=%d”,Q);initialbeginRESET=1'b1;#5 RESET=1'b0;#180 RESET=1'b1;end endmodule 2.新建文件夹,将源程序counter.v放进去。
然后启动Quartus II仿真软件,生成网表。
1).在【File】下拉菜单中选中New Project Wizard选项,出现对话框。
并指定工程工作目录、工程名称和顶层模块名,如图(a)所示。
2).添加(Add)counter.v文件。
如图(b)所示。
3).选择器件系列4).指定其它EDA工具,如图(d)所示。
基于FPGA的数字秒表的设计与实现
![基于FPGA的数字秒表的设计与实现](https://img.taocdn.com/s3/m/fde6f9fe647d27284a735146.png)
现代电子技术综合实验一、性能指标(1) 秒表计时范围为:1小时;(2) 秒表精度为0.01秒;(3) 具有开始计时、停止计时控制功能,且开始计时、停止计时为一个复用按键;(4) 在正常计时显示过程中,能够在存储按键作用下存储某一计时时间;存储的时间组数为确定值或1至任意值;(5) 在读取按键作用下存储的时间能够回放显示;回放显示可手动或自动依次显示;(6) 具有复位功能;(7) 用六位数码管显示时间读数。
二、任务要求(1)完成系统方案总体设计(2)利用硬件描述语言完成控制电路的设计、仿真(3)利用开发板完成系统的硬件实现(4)进行系统调试及功能测试(5)撰写设计报告三、系统组成u 计数器单级计数器四、单元电路设计signal count: std_logic_vector(3 downto 0):="0000"; process(rst,clk) begin if rst='1' then count <= "0000"; carry_out <= '0'; elsif clk'event and clk= '1' then if carry_in = '1' then if count= "1001" then count <= "0000"; carry_out <= '1'; else count <= count+1; carry_out <= '0'; end if; end if; end if;end process; count_out<=count; 功能:对频率100Hz 的信号进行计数,计数最大值为 595999。
clk:时钟信号输入rst:复位输入端carry_in:使能端count_out(3:0):计数输出端carry_out:进位输出端主要语句:同步级联原理图:有缘学习更多+谓ygd3076或关注桃报:奉献教育(店铺异步级联原理图:u分频器功能:将系统时钟分频后,为计时模块和显示模块提供工作时钟;clk:48MHz系统时钟信号输入端clkout1k:频率1KHz信号输出端clkout100:频率100Hz信号输出端123 4512 3 4 5 1 2clk_inclk_out 10个 主要语句: if clkin'event and clkin = '1' then if cnt = 5 then cnt <= 1; clkout <=not clkout; else cnt <= cnt + 1; end if; end if;分频器实现原理:基于计数器方法实现例有缘学习更多+谓ygd3076或关注桃报:奉献教育(店铺u 使能控制e_tmp <=not e_tmp;主要语句: 功能: 在输入信号的作用下,输出信号发生翻转,产生控制计数器的使能控制信号。
数字秒表实验报告---EDA
![数字秒表实验报告---EDA](https://img.taocdn.com/s3/m/b70c0919bdd126fff705cc1755270722192e59ef.png)
数字秒表实验报告—EDA项目背景本次实验旨在使用EDA工具设计一个数字秒表电路,通过FPGA开发板进行验证,具体要求如下:1.实现毫秒计时,并可以在数码管上显示当前计时数值。
2.支持开始/暂停、清零等操作。
设计思路本次实验的数字秒表电路由以下模块构成:1.时钟发生器模块:用于产生时钟信号,以驱动计数器进行计数。
2.计数器模块:通过时钟信号进行计数,并将计数结果传递给显示模块。
3.显示模块:将计数结果转换为数码管显示的数码信号,并控制数码管进行显示。
其中,时钟发生器模块和计数器模块都是基础电路模块,在这里不再赘述,下面将着重介绍显示模块的设计。
显示模块设计显示模块主要由控制模块和数码管模块构成。
控制模块根据计数结果和当前时间,控制数码管模块显示相应的数码。
在这里,我们采用的是共阳极的数码管。
具体来说,我们将控制模块分为两个子模块:时分秒计数器和数码显存控制器。
时分秒计数器时分秒计数器通过接收计数器模块的计数结果,将其转换为时分秒,并存储在计数器寄存器中。
计数器寄存器是一个64位的寄存器,由三个16位的子寄存器组成,用于存储时分秒。
当计数器模块的计数结果为0时,时分秒计数器会重置计数器寄存器。
数码显存控制器数码显存控制器由一个6位的数据存储器和一个6位的显示寄存器组成。
当计数器模块进行计数时,显示寄存器中存储的数码信号会根据时分秒计数器的值进行更新。
同时,数码显存控制器也会控制共阳极数码管进行相应的显示操作。
原理图设计根据以上的设计思路,我们可以得到数字秒表电路的原理图如下:原理图原理图EDA设计流程设计环境本次实验使用的是Xilinx ISE Design Suite 14.7,这是一个使用VHDL进行设计的EDA工具。
设计流程1.新建工程并设置工程名、目录、设备等基本信息。
2.添加源文件,包括时钟发生器模块、计数器模块、显示模块,以及顶层模块。
将所有模块综合为一个顶层设计。
3.检查时序约束,以保证电路能够正确运行。
基于FPGAVerilog的数字式秒表设计
![基于FPGAVerilog的数字式秒表设计](https://img.taocdn.com/s3/m/d61e3ca5f90f76c660371a24.png)
基于FPGA的数字式秒表一、设计任务及要求秒表由于其计时精确,分辨率高(秒),在各种竞技场所得到了广泛的应用,本次设计的任务就是设计一个基于 FPGA 的数字式秒表。
1、基本要求:(1)性能指标:秒表的分辨率为秒,最长计时时间为秒;(2)设置启/停开关和复位开关(计数控制器):启/停开关 S1 的使用方法与传统的机械计时器相同,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关计时终止。
复位开关 S2 用来使计时器清 0,复位开关可以在任何情况下使用,即使在计时过程中,只要按一下复位开关,计时进程应立即终止,并对计时器清零。
(开关按下为 0,弹起为 1)。
(3)秒表的计时基准信号:以周期为秒(频率 100HZ)的计时脉冲作为一个比较精准的计时基准信号输入到秒位计数器的时钟端;在设计中采用分频器把 1000HZ 的时钟信号转换为 100HZ 的计时基准信号,其分频系数为 10。
(4)数码管动态显示:七段数码管采用动态扫描的方式显示,扫描需要一个比较高频率的信号,本次设计选用 1000HZ 。
为了得到 1000Hz 信号,必须对输入的时钟信号 50MHZ 进行分频。
显示模块共用 11 个管脚,其中 8 个用于连接 8 个数码管的七段 LED,还有 3 个管脚用于选择点亮哪个数码管,每隔很短的一段时间 8 个数码管交替点亮,依次循环,动态显示,由于人眼的视觉残留,可以观察到连续的测量计数器的计数值。
上电后,八个数码管中左边四个显示自己的学号后四位,在运行过程中一直不变;右边四个显示计时时间,范围 0000~9999,利用两个按钮 S1、S2 控制计时。
2、提高要求:加入小数点,计时数码管显示范围 ~。
二、 系统原理框图100Hz50MHz1000Hz 三、 电路实现四、 功能模块1、 分频器(以10分频器为例)(1)Verilog HDL 语言程序module fp10(Clk,Out10分频器);input Clk;output Out;reg Out;reg [3:0] Cout;reg Clk_En;initialOut<=0;always @(posedge Clk )beginCout <= (Cout == 4'd10) 4'd0 : (Cout + 4'd1); Clk_En <= (Cout >= 4'd5) 1'd1 : 1'd0;Out<=Clk_En;endEndmodule(2)模块化电路(3)波形仿真由波形仿真图可以看出,10分频器将1000Hz的脉冲分频成100Hz的脉冲。
基于FPGA数字秒表设计报告
![基于FPGA数字秒表设计报告](https://img.taocdn.com/s3/m/94bb951d680203d8ce2f24f5.png)
标准实验报告实验项目:基于FPGA数字秒表设计毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:日期:年月日导师签名:日期:年月日注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
基于FPGA数字秒表设计
![基于FPGA数字秒表设计](https://img.taocdn.com/s3/m/8b563f07227916888486d7ab.png)
数字秒表设计
一、实验目的
1、理解计时器的原理与V erilog/VHDL的编程方法;
2、掌握多模块设计及层次设计的方法。
二、实验原理
秒计时器是由计数器和译码器、显示器组成,其核心是计数器与译码器。
60 秒计时器可由二个计数器分别完成:个位为十进制计数器,十位为6 进
制计数。
个位计数器的计数信号由实验开发板上主频20MHZ分频产生的1Hz
时钟信号提供, 十位计数器的计数信号由个位的进位信号提供。
然后由译码器
对计数结果进行译码,送LED 数码管进行显示。
Clr为清零,se t为开始。
三、实验框图
图2-1
四、实验任务
1、采用层次设计的方法,设计一个包括顶层及底层模块的60 秒计时器,底
层模块用Verilog/VHDL设计(或者选用原理图输入法中宏功能元件),顶层用原理图设计。
2、秒计时器应当具有系统复位功能;
3、每十秒发出提示信号及计满60 秒时发出报警信号。
(选做)
名
原
理
图
五、实验步骤
1.创建工程
2.选择目标器件
3.编写verilog hdl 程序
4.编译
5.生成符号文件
6.创建编辑原理图
7.设置顶层文件
8.编译
9.创建编辑波形图文件
10.使用波形图仿真
11.锁定管脚 12.编译 13.下载至芯片
六、实验结果
1.编译结果
名
仿
真
结
果
名
仿
真
结
果
文COUNT60.v (为了简便将分频器设置2分频的)。
FPGA电子秒表计时器verilog实验报告
![FPGA电子秒表计时器verilog实验报告](https://img.taocdn.com/s3/m/44d4bde228ea81c758f57882.png)
华中科技大学《电子线路设计、测试与实验》实验报告实验名称:用EDA技术设计多功能数字钟院(系):电子信息与通信学院专业班级:姓名:学号:时间:地点:实验成绩:指导教师:2018 年 3 月 27 日一. 实验任务及要求基本要求:电子秒表1)可计时的范围0.00s~99.99s(显示用七段数码管,显示小数点)。
2)能够暂停,能够在计时结束使用灯光或者声音报警提示。
提高要求: PWM波产生器1)可输出占空比按10%递进的PWM波(示波器测量查看)。
二.实验条件实验板:Nexys4 DDR实验软件:ISE14.7,ModelSim三.预习要求1.NEXYS 4 DDR开发板说明。
2.有限状态机。
3.数码管扫描显示。
四.实验原理1.电子秒表设计框图模块分析1)分频模块(Divider.v)将系统给定的100MHZ 的频率通过分频模块变成100Hz 的clk(用来计时)和4000Hz的clk_seg(用来扫描数码管)。
代码如下:原理:输入的100MHz 的信号为CLK_100MHz,每当CLK_100MHz 上升沿来时,Count_DIV 计数加1,且每当Count_DIV =100M/(2*100)=0.5M 时,CLK_Out取反一次并且Count_DIV <=0,这样会得到一个100Hz 的信号。
当需要得到4000Hz的clk_seg时,在顶层模块中修改parameter OUT_Freq=4000;这样,每当Count_DIV=100M/(2*4000)=12500时,CLK_Out取反一次并且Count_DIV <=0,这样会得到一个4000Hz 的信号。
在主程序中修改参数如下:仿真时,为便于观察,在testbench中,将CLK_100MHz的周期设为2ns:always #1 CLK_100MHz <= ~CLK_100MHz;并修改参数如下,验证分频模块的正确性(图中数字16,8,1只表示频率的倍数关系,并非真正的频率)其仿真图如下图:从图中可以看出,CLK_100MHz的周期为2ns,clk_seg的周期为4ns,clk的周期为32ns,符合倍数关系,故分频模块的正确性得到验证。
FPGA多功能60s秒表
![FPGA多功能60s秒表](https://img.taocdn.com/s3/m/848ece47fe4733687e21aa9c.png)
多功能秒表的设计一、实验目的:用状态机实现秒表的设计,了解一般状态机的设计与应用。
二、实验原理:状态 I/O din clr con_en suocun_enreset 0001 1 0 1start 0010 0 1 1lap 0100 0 1 0stop 1000 0 0 1状态机输出控制计数器counter_60,锁存器控制数码管显示数值。
三、实验内容利用QuartusII进行文本编辑输入、仿真测试并给出仿真波形,了解控制信号的时序,最后进行引脚锁定并完成硬件测试实验。
建议选择电路模式No.5 (附录图),用(PIO0~ PIO3)控制输入信号din; PIO28控制状态机工作时钟CLK;输出Q[7..0]接PIO47~PIO40(显示于数码管)。
下载后:①按实验板“系统复位”键;②用键4键3键2和键1输入4位信号序列数;③显示于数码管。
四、实验代码:(1)带进位十进制计数器CNT10:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 ISPORT (CLK,RST,EN : IN STD_LOGIC;CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT : OUT STD_LOGIC );END CNT10;ARCHITECTURE behav OF CNT10 ISBEGINPROCESS(CLK, RST, EN)V ARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST = '1' THEN CQI := (OTHERS =>'0') ; --计数器异步复位ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿IF EN = '1' THEN --检测是否允许计数(同步使能)IF CQI < 9 THEN CQI := CQI + 1; --允许计数, 检测是否小于9 ELSE CQI := (OTHERS =>'0'); --大于9,计数值清零END IF;END IF;END IF;IF CQI = 9 THEN COUT <= '1'; --计数大于9,输出进位信号ELSE COUT <= '0';END IF;CQ <= CQI; --将计数值向端口输出END PROCESS;END behav;(2)六进制计数器CNT6:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT6 ISPORT (CLKH,RSTH,ENH : IN STD_LOGIC;CQH : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );END CNT6;ARCHITECTURE behav OF CNT6 ISBEGINPROCESS(CLKH, RSTH, ENH)V ARIABLE CQIH : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RSTH = '1' THEN CQIH := (OTHERS =>'0') ; --计数器异步复位ELSIF CLKH'EVENT AND CLKH='0' THEN --检测时钟上升沿IF ENH = '1' THEN --检测是否允许计数(同步使能)IF CQIH < 5 THEN CQIH := CQIH + 1; --允许计数, 检测是否小于5 ELSE CQIH := (OTHERS =>'0'); --大于5,计数值清零END IF;END IF;END IF;CQH <= CQIH; --将计数值向端口输出END PROCESS;END behav;(3)计数器控制器:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity control_60 isPORT( din : IN STD_LOGIC_VECTOR(3 DOWNTO 0);clk : IN STD_LOGIC;clr : OUT STD_LOGIC;count_en : OUT STD_LOGIC;suocun_en : OUT STD_LOGIC );end control_60 ;architecture Behav of control_60 isTYPE control_type IS (reset,start,lap,stop);SIGNAL current_state, next_state : control_type;BEGINREG:PROCESS (clk)BEGINIF (clk'event AND clk='1') THENcurrent_state <= next_state;END IF;end PROCESS REG;COM:PROCESS (clk,din, next_state, current_state)BEGINCASE current_state ISWHEN reset =>clr <= '1';count_en <= '0';suocun_en<= '1';IF ( din="0010") THEN next_state <= start;ELSE next_state <= reset;END IF;WHEN start =>clr <= '0';count_en <= '1'; suocun_en<= '1';if ( din="0100")then next_state<= lap;elsif(din="1000")then next_state <= stop;elsif(din="0001")then next_state<= reset;elsenext_state<= start;end if;WHEN lap => clr <= '0'; count_en <= '1'; suocun_en<= '0';if ( din="1000") then next_state <= stop;elsif(din="0010")then next_state <= start;else next_state <= lap;end if;WHEN stop =>clr <= '0';count_en <= '0'; suocun_en<= '1';if ( din="0001") then next_state <= reset;elsif(din="0010")then next_state <= start;else next_state <= stop;end if;WHEN others =>next_state<= reset;END CASE;END PROCESS COM;end Behav;(4)LPM锁存器:LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY lpm;USE lpm.all;ENTITY suocun ISPORT(data : IN STD_LOGIC_VECTOR (7 DOWNTO 0);gate : IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );END suocun;ARCHITECTURE SYN OF suocun ISSIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0);COMPONENT lpm_latchGENERIC (lpm_type : STRING;lpm_width : NATURAL);PORT (q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);data : IN STD_LOGIC_VECTOR (7 DOWNTO 0);gate : IN STD_LOGIC );END COMPONENT;BEGINq <= sub_wire0(7 DOWNTO 0);lpm_latch_component : lpm_latchGENERIC MAP (lpm_type => "LPM_LATCH",lpm_width => 8)PORT MAP (data => data,gate => gate,q => sub_wire0);END SYN;五、实验原理图:六、实验结果:(1)LMP锁存器功能仿真图:(2)实验结果:。
基于FPGA的秒表设计
![基于FPGA的秒表设计](https://img.taocdn.com/s3/m/d39d278d84868762caaed5ef.png)
由分析可知,秒表可分为三个部分,六十进制计数器,状态装换及锁存器组成。
其实试验程序如下所示:LIBRARY IEEE; --状态转换USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MB ISPORT(CLK0,CLK2,RST,START,STOP,LAPE:IN STD_LOGIC;Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END ENTITY MB;ARCHITECTURE behave OF MB ISTYPE states IS(st0,st1,st2,st3);SIGNAL current_state,next_state:states;SIGNAL C1,C0:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL D:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL EN,GT:STD_LOGIC;BEGINREG:PROCESS(CLK0) --状态机BEGINIF CLK0'EVENT AND CLK0='1' THENcurrent_state<=next_state;END IF;END PROCESS REG;COM:PROCESS(current_state)BEGINCASE current_state ISWHEN st0 =>EN<='0';GT<='0';IF START='1'THENnext_state<=st1;ELSEnext_state<=st0;END IF;WHEN st1 => EN<='1';GT<='0';IF STOP='1'THENnext_state<=st2;ELSIF RST='1' THENnext_state<=st0;ELSIF LAPE='1' THENnext_state<=st3;ELSEnext_state<=st1;END IF;WHEN st2 =>EN<='0';GT<='0';IF START='1' THENnext_state<=st1;ELSIF RST='1' THENnext_state<=st0;ELSEnext_state<=st2;END IF;WHEN st3 =>EN<='1';GT<='1';IF RST='1' THENnext_state<=st0;ELSIF START='1' THENnext_state<=st1;ELSIF STOP='1' THENnext_state<=st2;ELSEnext_state<=st3;END IF;WHEN OTHERS =>next_state<=st0;END CASE;END PROCESS COM;CNT:PROCESS(CLK2,EN,RST) --六十进制计数器BEGINIF RST='1' THENC1<="0000";C0<="0000";ELSIF EN='1' THENIF CLK2'EVENT AND CLK2='1' THENIF C0="1001" THENC0<="0000";IF C1="0101" THENC1<="0000";ELSE C1<=C1+1;END IF;ELSE C0<=C0+1;END IF;END IF;END IF;END PROCESS CNT;GATA:PROCESS(LAPE) --锁存BEGINIF LAPE'EVENT AND LAPE='1' THEND<=C1&C0;END IF;END PROCESS GATA;WITH GT SELECTQ<= C1&C0 WHEN '0',D WHEN '1';END ARCHITECTURE behave;四,实验仿真结果:程序编译后,可进行仿真,其复位开始及暂停仿真图如图8-2所示:图 8-2 复位开始及暂停仿真图Lape功能的仿真如图8-3 所示图 8-3 lape功能仿真图通过时序仿真后,就可以进行管脚锁定,最后下载到试验箱进行验证,观察到实验结果符合本实验的四个设计要求。
基于VHDL语言的FPGA秒表设计电子实验报告
![基于VHDL语言的FPGA秒表设计电子实验报告](https://img.taocdn.com/s3/m/a5132e8dbceb19e8b8f6bad5.png)
3.1 开发环境.................................................................................................................................................... 10 3.2 ModelSim 介绍....................................................................................................................................... 10
3.2.1 ISE 环境中 ModelSim 的使用..................................................................................................... 10 3.3 ISE 介绍..................................................................................................................................................... 12
Keywords: FPGA, VHDL, ISE 。
II
目录
目录
第一章 引言 ........................................................................................1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《FPGA原理及应用》
实验报告书
(7)
题目秒表设计
学院专业
姓名学号
指导教师
2015年10-12月
一、实验目的
掌握小型电路系统的 FPGA 设计法。
二、实验内容
用文本法结合原理图的方法设计一个秒表,并在实验箱上进行验证。
秒表基本功能要求如下:
(1)要求设置复位开关。
当按下复位开关时,秒表清零并做好计时准备。
在任何情况下只要按下复位开关,秒表都要无条件地进行复位操作,即使是在计时过程中也要无条件地进行清零操作。
(2)要求设置启/停开关。
当按下启/停开关后,将启动秒表并开始计时,当再按一下启/停开关时,将终止秒表的计时操作。
(3)要求计时精确度大于秒。
要求设计的计时器能够显示分(2 位)、秒(2 位)、秒(1 位)的时间。
(4)要求秒表的最长计时时间为 1 小时。
要求外部时钟频率尽量高,分频后再给秒表电路使用。
三、实验条件
1、开发软件:QuartusⅡ
2、实验设备:KX_DN8EDS实验开发系统
3、拟用芯片:EP3C55F484C8
四、实验设计
1、六进制计数器
仿真波形
2、十进制计数器
3、分频计
4、七段数码管译码器
5、100进制原理图
6、60进制原理图
7、秒表原理图
8、管脚锁定
新建好工程文件,芯片选择Cyclone Ⅲ下面的EP3C55F484C8系列。
然后锁定引脚:选择Assignments → Assignments Editor命令。
9、编译文件下载
将编译产生的SOF格式配置文件下载进FPGA中。
10、FPGA实验箱接线
在KX-EDA40A++实验箱上进行连线,分配J4,J5的引脚,输入CLK(PIN_接到时钟信号,输入的EN,RST 接到电平开关L1,L2。
五、实验总结
经过本次实验,我对QuartusⅡ的使用认识更加深刻,对FPGA技术有了更深层次的认识,有助于我对以后的电子电路设计有极大帮助。