FPGA数字跑表

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子信息工程专业

FPGA与ASIC设计实践教

设计报告

班级:电子信息工程1303班

学号:201315110 __________

姓名:田佳鑫________________

日期:2015年11月4日

指导老师:彳_____________

目录

1系统总体方案及硬件设计 (3)

1.1 设计内容 (3)

1.2 设计要求 (3)

1.3 实现要求 (3)

2各模块设计及电路图 (3)

2.1 设计项目简介 (3)

2.2 分块设计代码 (4)

2.3 总体框图设计 (7)

2.4 管脚锁定图 (8)

3 课程设计体会 (8)

1 系统总体方案及硬件设计

1.1 设计内容

数字跑表电路

1.2 设计要求

(1) 跑表的计时范围为0.01 —59min59.99s 。

(2) 具有异步清零、启动。计时和暂停功能。

(3) 输入时钟频率为100Hz。

(4) 要求数字跑表的输出能够直接驱动共阴极7 段数码管1.3 实现要求

(1) 分析功能要求, 划分功能模块。

(2) 编写各模块的Verilog HDL 语言设计程序

⑶在Quartus U软件或其他EDA软件上完成设计和仿真

(4)根据实验装置上的CPLD/FPGA芯片,在适配时选择相应的芯片,将设计生成配置文件或JEDEC文件,然后将配置文件或JEDEC文件下载到实验装置上运行,操作实验装置上设定的功能幵关,验证设计功能。

2各模块设计及电路图

2.1设计项目简介

主控模块分别连接6个数码管显示模块和分频模块,分频模块给主控模块的计数器提供时钟源,主控模块在按键的控制下,在其中计数器的作用下输出给数码管显示装置,实现跑表功能。

振荡器

分频器►计

2.2分块设计代码

(1)分频模块: module fenpin(CLK,CLK2); // 输入50MHz 输出分频到1Hz in put CLK; output CLK2;

reg CLK2;

reg[31:0] counter2;

parameter N2=5000000; always@(posedge CLK)

begin

if(counter2==250000)

begin

counter2<=0;

CLK2<=~CLK2;

end

else

counter2<=counter2+1;

end

endmodule

( 2)控制模块:

module sz(clk,clr,pause,msh,msl,sh,sl,mh,ml); inputclk,clr; input pause;

output[3:0]msh,msl,sh,sl,mh,ml;

reg[3:0]msh,msl,sh,sl,mh,ml;

reg cn1,cn2;

always@(posedgeclk or posedgeclr)

begin

if(clr)

begin

{msh,msl}<=8'h00;

cn1<=0;

else if(!pause) begin if(msl==9) begin msl<=0; if(msh==9) begin msh<=0; cn1<=1; end else

msh<=msh+1;

else

begin

msl<=msl+1;

cn1<=0;

end

end

end

always@(posedge cn1 or posedgeclr) begin if(clr)

begin

{sh,sl}<=8'h00;

cn2<=0;

else if(sl==9) begin sl<=0; if(sh==5) begin sh<=0; cn2<=1; end else sh<=sh+1; end else

sl<=sl+1;

cn2<=0;

end

end

always@(posedge cn2 or posedgeclr) begin if(clr)

begin

{mh,ml}<=8'h00;

end

else

if(ml==9)

begin

ml<=0;

if(mh==5)

mh<=0;

else

mh<=mh+1;

end

else

ml<=ml+1;

end

endmodule

( 3)显示模块:

module XS7D(DIN,DOUT);

input [3:0]DIN;

output [6:0]DOUT;

reg [6:0]DOUT;

always @(DIN)

begin

case(DIN)

0:DOUT='b1000000; 1:DOUT='b1111001; 2:DOUT='b0100100; 3:DOUT='b0110000; 4:DOUT='b0011001; 5:DOUT='b0010010; 6:DOUT='b0000010; 7:DOUT='b1111000; 8:DOUT='b0000000; 9:DOUT='b0010000; 10:DOUT='b0001000; 11:DOUT='b0000011; 12:DOUT='b1000110; 13:DOUT='b0100001; 14:D0UT二'bOOOOIIO; 15:DOUT二'bOOOIIIO;

相关文档
最新文档