西南科技大学设计报告课程名称:基于FPGA的现代数字系统设计设计名称:基于原理图的数字跑表设计姓名:学号:班级:指导教师:西南科技大学信息工程学院一、实验目的1、设计一个数字跑表,具有复位、暂停、秒表等功能二、实验原理1.完成一个具有数显输出的数字跑表计数器设计,原理图如下图所示。
、数字跑表计数器原理图任务分析:输入端口:1)复位信号CLR,当CLR=1,输出全部置0,当CLR=0,系统正常工作。
2)暂停信号PAUSE,当PAUSE=1,暂停计数,当PAUSE=0,正常计数。
3)系统时钟CLK,CLK=50MHz输出端口:数码管驱动----DATA1,位宽14位,其中,DATA1[7:0]是数码管显示值,DATA1[14:8]是数码管控制端口屏蔽未用端口---ctr,位宽是2,将未用的两个数码管显示关闭(1)跑表的计时范围为0.01s~59min59.99s,计时精度为10ms;(2)具有异步复位清零、启动、计时和暂停功能;(3)输入时钟频率为100Hz;(4)要求数字跑表的输出能够直接驱动共阴极7段数码管显示.按照自顶向下设计,应该分为以下模块:分频----将下载板上50MHz时钟分频为周期是0.01秒的时钟,提供给百分计数计数1----百分计数,输入周期是0.01秒的时钟,计数,满100进位,注意个位,十位的不同生成计数2---60进制计数器,输入百分位,或者秒位的进位,计数,满60向高位进位,注意个位,十位的不同生成数码管显示控制----驱动数码管数据,显示控制端口。
三、实验步骤1、数码管显示驱动模块的设计(1)建立工程:file->New Project,并注意器件、EDA工具的正确选择(2)建立新Verilog HDL模块编辑窗口,选择资源类型为Verilog Module,并输入合法文件名,在文本编辑窗口输入代码。
(3)执行综合得到综合后的电路,并进行功能时序仿真。
2.计数器模块的设计设计步骤同数码管的设计,并完成模块的设计输入、综合、功能仿真。
3.数码管和计数器组合为一个系统用Verilog HDL将数码管和计数器组合为一个模块,完成综合、功能仿真,分析波形,修正设计。
4.把电路进行综合的编译之后,锁定引脚,下载到板子上进行实际仿真验证四、实验结果及分析1.在Design窗口中,选择Design Utilities→Create Schematic Symbol创建跑表模块;2.时序图激励文件代码`timescale 1ns / 1psmodule TSET;reg CLK;reg CLR;reg PAUSE;wire [13:0] DATA1;paobiao uut (.CLK(CLK), .CLR(CLR), .PAUSE(PAUSE), .DATA1(DATA1));initial beginCLK = 0;CLR = 0;PAUSE = 0;#10 CLR=1;#10 CLR=0;forever begin#10 CLK=!CLK;endendEndmodule解释:过了10时间后clk=1,再过10时间后clk=0;每过10个时间后,clk的值进行一次翻转,从而生成的时钟周期是20个时间单位3.锁定引脚# PlanAhead Generated physical constraintsNET "CLK" LOC = V10;NET "CLR" LOC = D14;NET "PAUSE" LOC = C14;NET "DATA1[0]" LOC = R7;NET "DATA1[1]" LOC = V7;NET "DATA1[2]" LOC = U7;NET "DATA1[3]" LOC = V6;NET "DATA1[4]" LOC = T6;NET "DATA1[5]" LOC = P6;NET "DATA1[6]" LOC = N5;NET "DATA1[7]" LOC = P7;NET "DATA1[13]" LOC = N8;NET "DATA1[12]" LOC = M8;NET "DATA1[11]" LOC = T8;NET "DATA1[10]" LOC = R8;NET "DATA1[9]" LOC = V9;NET "DATA1[8]" LOC = T9;用开关一来实现对数字的清除操作用开关二来实现对数字的暂停操作五、体会我初步掌握了Verilog HDL这种目前应用最广泛的硬件描述语言的编写方法以及联机下载到硬件验证的整个流程,圆满完成了设计任务。
程序设计是这次实验的重点,通过老师上课讲的内容自己实际做了进位程序以及分频程序,基本掌握了它的使用。
在写完程序后,发现不能调用各个程序模块,后来在同学的点拨下改成使用程序模块来生成具体的模块来使整个系统正常工作。
程序设计遇到了数码管无法显示的瓶颈,在老师的指导下最终解决了这一问题。
在此次课程设计过程中,我提升了自己的自学能力和动手能力,这也是一笔很大的收获。
代码:`timescale 1ns / 1psmodule paobiao(CLK,CLR,PAUSE,DATA1);input CLK,CLR;input PAUSE;output[13:0] DATA1;reg[3: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 <= 19'h0;elseif(div_count == 19'h7a11f)div_count <= 19'h0;else div_count <= div_count+1'b1;always @ (posedge CLK or posedge CLR)if(CLR) timer_clk <= 1'b0;elseif(div_count== 0)timer_clk <= 1'b1;elsetimer_clk <= 1'b0;always @(posedge timer_clk or posedge CLR)beginif(CLR) begin{MSH,MSL}<=8'h00;cn1<=0;endelse if(!PAUSE)beginif(MSL==9) beginMSL<=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) begin{SH,SL}<=8'h00;cn2<=0;endelse if(SL==9)beginSL<=0;if(SH==5)begin SH<=0; cn2<=1; end else SH<=SH+1;endelsebegin SL<=SL+1; cn2<=0; end endalways @(posedge cn2 or posedge CLR) beginif(CLR)begin {MH,ML}<=8'h00; endelse if(ML==9) beginML<=0;if(MH==5) MH<=0;else MH<=MH+1;endelse ML<=ML+1;endfunction[7:0] Xrom;input [3:0] sum;case(sum)4'b0000 : Xrom = 7'b1111110 ;4'b0001 : Xrom = 7'b0110000 ;4'b0010 : Xrom = 7'b1101101 ;4'b0011 : Xrom = 7'b1111001 ;4'b0100 : Xrom = 7'b0110011 ;4'b0101 : Xrom = 7'b1011011 ;4'b0110 : Xrom = 7'b1011111 ;4'b0111 : Xrom = 7'b1110000 ;4'b1000 : Xrom = 7'b1111111 ;4'b1001 : Xrom = 7'b1111011 ;4'b1010 : Xrom = 7'b1110111 ;4'b1011 : Xrom = 7'b0011111 ;4'b1100 : Xrom = 7'b1001110 ;4'b1101 : Xrom = 7'b0111101 ;4'b1110 : Xrom = 7'b1001111 ;4'b1111 : Xrom = 7'b1000111 ;default : Xrom = 7'b1111110 ;endcaseendfunctionalways @ (posedge CLK or posedge CLR)if(CLR)begindiv_count1 <= 11'h0;dig <= 3'b000; endelse begindiv_count1 <= div_count1 + 1;if(div_count1 == 0)if(dig==3'b101)dig <= 3'b000;elsedig <= dig + 1'b1;else dig <= dig;endreg[13:0] DATA1;always @(posedge CLK or posedge CLR)if(CLR)DATA1 <= 14'b0;elsecase(dig)3'b000:DATA1<={~6'b111110,Xrom(MSL)};3'b001:DATA1<={~6'b111101,Xrom(MSH)};3'b010:DATA1<={~6'b111011,Xrom(SL)};. . . .3'b011:DATA1<={~6'b110111,Xrom(SH)};3'b100:DATA1<={~6'b101111,Xrom(ML)};3'b101:DATA1<={~6'b011111,Xrom(MH)};default:DATA1<=14'h3fff;endcaseendmodule. word资料可编辑.。