1、西南科技大学设计报告课程名称: 基于 FPGA 的现代数字系统设计 设计名称: 基于原理图的数字跑表设计 姓 名: 刘自强 学 号: zs20170082 班 级: 物联网 1501 指导教师: 龙惠民 2西南科技大学信息工程学院3一、 实验目的1、 设计一个数字跑表,具有复位、暂停、秒表等功能二、 实验原理1.完成一个具有数显输出的数字跑表计数器设计,原理图如下图所示。、数字跑表计数器原理图4任务分析:输入端口:1)复位信号 CLR,当 CLR=1,输出全部置 0,当 CLR=0,系统正常工作。2)暂停信号 PAUSE,当 PAUSE=1,暂停计数,当 PAUSE=0,正常计数。 3)系统时
2、钟CLK,CLK=50MHz输出端口:数码管驱动-DATA1 ,位宽 14 位,其中,DATA17 :0 是数 码管显示值,DATA114 :8 是数码管控制端口屏蔽未用端口-ctr ,位宽是 2,将未用的两个数码管显示关闭5(1) 跑表的计时范围为 0.01s59min59.99s,计时精度为 10ms; (2) 具有异步复位清零、启动、计时和暂停功能; (3) 输入时钟频率为 100Hz; (4) 要求数字跑表的输出能够直接驱动共阴极 7 段数码管显示.按照自顶向下设计,应该分为以下模块:分频-将下载板上 50MHz 时钟分频为周期是 0.01 秒的时钟,提供给百分计数计数 1-百分计数,
3、输入周期是 0.01 秒的时钟,计数,满 100 进位,注意个位,十位的不同生成计数 2-60 进制计数器,输入百分位,或者秒位的进位,计数,满 60 向高位进位,注意个位,十位的不同生成数码管显示控制-驱动数码管数据,显示控制端口。三、 实验步骤1、数码管显示驱动模块的设计(1)建立工程:file-New Project ,并注意器件、 EDA 工具的正确选择(2)建立新 Verilog HDL 模块编辑窗口,选择资源类型为 Verilog Module,并输入合法文件名,在文本编辑窗口输入代码。(3)执行综合得到综合后的电路,并进行功能时序仿真。2.计数器模块的设计设计步骤同数码管的设计,
4、并完成模块的设计输入、综合、功能仿真。3.数码管和计数器组合为一个系统用 Verilog HDL 将数码管和计数器组合为一个模块,完成综合、功能仿真,分析波形,修正设计。4.把电路进行综合的编译之后,锁定引脚,下载到板子上进行实际仿真验证四、 实验结果及分析1.在 Design 窗口中,选择 Design UtilitiesCreate Schematic Symbol 创建跑表模块;62.时序图激励文件代码timescale 1ns / 1psmodule TSET;reg CLK;reg CLR;reg PAUSE;wire 13:0 DATA1;paobiao uut (.CLK(CLK
5、), .CLR(CLR), .PAUSE(PAUSE), .DATA1(DATA1);initial beginCLK = 0;CLR = 0;PAUSE = 0;#10 CLR=1;#10 CLR=0;7forever begin#10 CLK=!CLK;endendEndmodule解释:过了 10 时间后 clk=1,再过 10 时间后 clk=0;每过 10 个时间后,clk 的值进行一次翻转,从而生成的时钟周期是 20 个时间单位3. 锁定引脚# PlanAhead Generated physical constraints NET “CLK“ LOC = V10;NET “CLR
6、“ LOC = D14;NET “PAUSE“ LOC = C14;NET “DATA10“ LOC = R7;NET “DATA11“ LOC = V7;NET “DATA12“ LOC = U7;NET “DATA13“ LOC = V6;NET “DATA14“ LOC = T6;NET “DATA15“ LOC = P6;NET “DATA16“ LOC = N5;NET “DATA17“ LOC = P7;NET “DATA113“ LOC = N8;NET “DATA112“ LOC = M8;NET “DATA111“ LOC = T8;NET “DATA110“ LOC = R
7、8;NET “DATA19“ LOC = V9;NET “DATA18“ LOC = T9;用开关一来实现对数字的清除操作用开关二来实现对数字的暂停操作8五、 体会我初步掌握了 Verilog HDL 这种目前应用最广泛的硬件描述语言的编写方法以及联机下载到硬件验证的整个流程,圆满完成了设计任务。 程序设计是这次实验的重点,通过老师上课讲的内容自己实际做了进位程序以及分频程序,基本掌握了它的使用。 在写完程序后,发现不能调用各个程序模块,后来在同学的点拨下改成使用程序模块来生成具体的模块来使整个系统正常工作。 程序设计遇到了数码管无法显示的瓶颈,在老师的指导下最终解决了这一问题。在此次课程设计
8、过程中,我提升了自己的自学能力和动手能力,这也是一笔很大的收获。代码:timescale 1ns / 1psmodule paobiao(CLK,CLR,PAUSE,DATA1);input CLK,CLR;input PAUSE;output13:0 DATA1;reg3:0 MSH,MSL,SH,SL,MH,ML,dig;reg cn1,cn2;reg 10:0 div_count1;reg 18:0 div_count;reg timer_clk;always (posedge CLK or posedge CLR)if(CLR) div_count = 19h0;else if(div
9、_count = 19h7a11f) div_count = 19h0;9else div_count = div_count+1b1;always (posedge CLK or posedge CLR)if(CLR) timer_clk = 1b0;elseif(div_count= 0)timer_clk = 1b1;elsetimer_clk = 1b0;always (posedge timer_clk or posedge CLR)beginif(CLR) beginMSH,MSL=8h00;cn1=0;endelse if(!PAUSE)beginif(MSL=9) beginM
10、SL=0;if(MSH=9) begin MSH=0; cn1=1; endelse MSH=MSH+1;endelse beginMSL=MSL+1; cn1=0;endendendalways (posedge cn1 or posedge CLR)beginif(CLR) beginSH,SL=8h00;cn2=0;endelse if(SL=9)beginSL=0;if(SH=5)begin SH=0; cn2=1; endelse SH=SH+1;10endelse begin SL=SL+1; cn2=0; endendalways (posedge cn2 or posedge
11、CLR)beginif(CLR)begin MH,ML=8h00; endelse if(ML=9) beginML=0;if(MH=5) MH=0;else MH=MH+1;endelse ML=ML+1;endfunction7:0 Xrom;input 3:0 sum;case(sum)4b0000 : Xrom = 7b1111110 ; 4b0001 : Xrom = 7b0110000 ;4b0010 : Xrom = 7b1101101 ;4b0011 : Xrom = 7b1111001 ;4b0100 : Xrom = 7b0110011 ;4b0101 : Xrom = 7
12、b1011011 ;4b0110 : Xrom = 7b1011111 ;4b0111 : Xrom = 7b1110000 ;4b1000 : Xrom = 7b1111111 ;4b1001 : Xrom = 7b1111011 ;4b1010 : Xrom = 7b1110111 ;4b1011 : Xrom = 7b0011111 ;4b1100 : Xrom = 7b1001110 ;4b1101 : Xrom = 7b0111101 ;4b1110 : Xrom = 7b1001111 ;4b1111 : Xrom = 7b1000111 ;default : Xrom = 7b1111110 ;endcaseendfunction always (posedge CLK or posedge CLR)
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。