数字跑表设计说明.docx
- 文档编号:26013013
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:11
- 大小:145.05KB
数字跑表设计说明.docx
《数字跑表设计说明.docx》由会员分享,可在线阅读,更多相关《数字跑表设计说明.docx(11页珍藏版)》请在冰豆网上搜索。
数字跑表设计说明
西南科技大学
设计报告
课程名称:
基于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->NewProject,并注意器件、EDA工具的正确选择
(2)建立新VerilogHDL模块编辑窗口,选择资源类型为VerilogModule,并输入合法文件名,在文本编辑窗口输入代码。
(3)执行综合得到综合后的电路,并进行功能时序仿真。
2.计数器模块的设计
设计步骤同数码管的设计,并完成模块的设计输入、综合、功能仿真。
3.数码管和计数器组合为一个系统
用VerilogHDL将数码管和计数器组合为一个模块,完成综合、功能仿真,分析波形,修正设计。
4.把电路进行综合的编译之后,锁定引脚,下载到板子上进行实际仿真验证
四、实验结果及分析
1.在Design窗口中,选择DesignUtilities→CreateSchematicSymbol创建跑表模块;
2.时序图
激励文件代码
`timescale1ns/1ps
moduleTSET;
regCLK;
regCLR;
regPAUSE;
wire[13:
0]DATA1;
paobiaouut(.CLK(CLK),.CLR(CLR),.PAUSE(PAUSE),.DATA1(DATA1));
initialbegin
CLK=0;CLR=0;PAUSE=0;
#10CLR=1;
#10CLR=0;
foreverbegin
#10CLK=!
CLK;
end
end
Endmodule
解释:
过了10时间后clk=1,再过10时间后clk=0;每过10个时间后,clk的值进行一次翻转,从而生成的时钟周期是20个时间单位
3.锁定引脚
#PlanAheadGeneratedphysicalconstraints
NET"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这种目前应用最广泛的硬件描述语言的编写方法以及联机下载到硬件验证的整个流程,圆满完成了设计任务。
程序设计是这次实验的重点,通过老师上课讲的内容自己实际做了进位程序以及分频程序,基本掌握了它的使用。
在写完程序后,发现不能调用各个程序模块,后来在同学的点拨下改成使用程序模块来生成具体的模块来使整个系统正常工作。
程序设计遇到了数码管无法显示的瓶颈,在老师的指导下最终解决了这一问题。
在此次课程设计过程中,我提升了自己的自学能力和动手能力,这也是一笔很大的收获。
代码:
`timescale1ns/1ps
modulepaobiao(CLK,CLR,PAUSE,DATA1);
inputCLK,CLR;
inputPAUSE;
output[13:
0]DATA1;
reg[3:
0]MSH,MSL,SH,SL,MH,ML,dig;
regcn1,cn2;
reg[10:
0]div_count1;
reg[18:
0]div_count;
regtimer_clk;
always@(posedgeCLKorposedgeCLR)
if(CLR)div_count<=19'h0;
else
if(div_count==19'h7a11f)
div_count<=19'h0;
elsediv_count<=div_count+1'b1;
always@(posedgeCLKorposedgeCLR)
if(CLR)timer_clk<=1'b0;
else
if(div_count==0)
timer_clk<=1'b1;
else
timer_clk<=1'b0;
always@(posedgetimer_clkorposedgeCLR)
begin
if(CLR)begin
{MSH,MSL}<=8'h00;
cn1<=0;
end
elseif(!
PAUSE)
begin
if(MSL==9)begin
MSL<=0;
if(MSH==9)
beginMSH<=0;cn1<=1;end
elseMSH<=MSH+1;
end
elsebegin
MSL<=MSL+1;cn1<=0;
end
end
end
always@(posedgecn1orposedgeCLR)
begin
if(CLR)begin
{SH,SL}<=8'h00;
cn2<=0;
end
elseif(SL==9)
begin
SL<=0;
if(SH==5)
beginSH<=0;cn2<=1;end
elseSH<=SH+1;
end
else
beginSL<=SL+1;cn2<=0;end
end
always@(posedgecn2orposedgeCLR)
begin
if(CLR)
begin{MH,ML}<=8'h00;end
elseif(ML==9)begin
ML<=0;
if(MH==5)MH<=0;
elseMH<=MH+1;
end
elseML<=ML+1;
end
function[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;
endcase
endfunction
always@(posedgeCLKorposedgeCLR)
if(CLR)
begin
div_count1<=11'h0;
dig<=3'b000;end
elsebegin
div_count1<=div_count1+1;
if(div_count1==0)
if(dig==3'b101)
dig<=3'b000;
else
dig<=dig+1'b1;
elsedig<=dig;
end
reg[13:
0]DATA1;
always@(posedgeCLKorposedgeCLR)
if(CLR)
DATA1<=14'b0;
else
case(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;
endcase
endmodule
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 跑表 设计 说明