基于FPGA的秒表设计.docx
- 文档编号:9670050
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:11
- 大小:210.04KB
基于FPGA的秒表设计.docx
《基于FPGA的秒表设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的秒表设计.docx(11页珍藏版)》请在冰豆网上搜索。
基于FPGA的秒表设计
基于FPGA的秒表设计
姓名:
***
专业:
电子信息科学与技术
班级:
10级1班
学号:
************
指导教师:
***
信息科学与工程学院电子系
2012年7月4日
摘要
在科技高度发展的今天,集成电路和计算机应用得到了高速发展。
尤其是计算机应用的发展。
它在人们日常生活已逐渐崭露头角。
大多数电子产品多是由计算机电路组成,
运用EDA技术及Verilog语言设计出的数字秒表。
秒表在很多领域充当一个重要的角色。
在各种比赛中对秒表的精确度要求很高,尤其是一些科学实验,他们对时间精确度达到了几纳秒级别。
利用Verilog语言设计基于计算机电路中时钟脉冲原理的数字秒表。
该数字秒表能对
0秒~59.99秒范围进行计时,计时精度达到10ms。
设计了复位开关和启停开关。
复位开关可以在任何情况下使用,使用以后计时器清零,并做好下一次计时的准备。
关键词:
EDA技术、Verilog语言、分频器、计数器、数码管、
摘要…………………………………………………………………1
试验目的……………………………………………………………3
实验要求……………………………………………………………3
实验环境……………………………………………………………3
实验环境……………………………………………………………3
试验过程
1、QuartusII
1、创建miaobiao工程………………………………………………3
2、verilog程序的编写及其说明………………………………………………3
2、编译………………………………………………………………5
3、管脚绑定………………………………………………………6
4、下载……………………………………………………………6
2、Modelsim
1、编写测试文件……………………………………………7
2、仿真结果………………………………………………7
TREX_C1开发板测试………………………………………………8
心得体会………………………………………………………10
参考文献………………………………………………………10
试验目的
通过秒表的制作进一步熟悉Verilog的编写规范,FPGA的开发流程,巩固所学内容,为进一步学习打下基础。
实验要求
实现秒表的基本功能,代码完整、格式规范,仿真输出。
实验环境
QuartusII、modelsim、TREX_C1实验板
二、试验过程
1、QuartusII
1、启动quartusII创建miaobiao工程
2、秒表verilog程序的编写及其说明
1、数码管模块
always@(posedgeclk)//数码管扫描分
if(count_cp==50000)//0.001*2
begin
count_cp=0;
clk_n=~clk_n;
end
else
count_cp=count_cp+1;
always@(posedgeclk_n)//0.001*2
refersh_s=refersh_s+1;
always@(refersh_s)//数码管扫描、送数
begin
case(refersh_s)
2'b00:
begincom[3:
0]=4'b1110;in_out=out_ms[3:
0];end
2'b01:
begincom[3:
0]=4'b1101;in_out=out_ms[7:
4];end
2'b10:
begincom[3:
0]=4'b1011;in_out=out_s[3:
0];end
2'b11:
begincom[3:
0]=4'b0111;in_out=out_s[7:
4];end
endcase
end
2、计数分频模块
always@(posedgeclk)//计数分频
if(count_tp==250000)//0.005
begin
count_tp=0;
clk_p=~clk_p;
end
else
count_tp=count_tp+1;
3、初始化、清零模块
begin
if(reset==0)//清零初始化
begin
out_ms<=0;
out_s<=0;
end
4、开始暂停模块
elseif(cin==0)//计数、暂停设置按键
a<=a+1;//a为2进制一位数,只有0和1
elseif(a)//a=1计数a=0暂停
5、计数模块
begin
if(out_ms[3:
0]==9)
begin
out_ms[3:
0]<=0;
if(out_ms[7:
4]==9)
begin
out_ms[7:
4]<=0;
if(out_s[3:
0]==9)
begin
out_s[3:
0]<=0;
if(out_s[7:
4]==5)
out_s[7:
4]<=0;
else
out_s[7:
4]<=out_s[7:
4]+1;
end
else
out_s[3:
0]<=out_s[3:
0]+1;
end
else
out_ms[7:
4]=out_ms[7:
4]+1;
end
else
out_ms[3:
0]=out_ms[3:
0]+1;
end
elsebeginout_s<=out_s;out_ms<=out_ms;end
end
6、2进制数与数码管对应转换模块
always@(in_out)
begin
case(in_out)
4'b0000:
out[7:
0]=8'b1001_0000;
4'b0001:
out[7:
0]=8'b1001_1111;
4'b0010:
out[7:
0]=8'b0101_1000;
4'b0011:
out[7:
0]=8'b0001_1001;
4'b0100:
out[7:
0]=8'b0001_0111;
4'b0101:
out[7:
0]=8'b0011_0001;
4'b0110:
out[7:
0]=8'b0011_0000;
4'b0111:
out[7:
0]=8'b1001_1101;
4'b1000:
out[7:
0]=8'b0001_0000;
4'b1001:
out[7:
0]=8'b0001_0001;
default:
out[7:
0]=8'bx;
endcase
end
2、编译
3、管脚绑定
把对应的input、output按照Trex_C1_Pin_Table进行绑定,然后编译
4、下载
对下载窗口进行相应的设置,然后点击start下载到TREX_C1开发板。
三、Modelsim
1、编写测试文件
`timescale1ns/1ns
modulemiaobiao_test;
wire[3:
0]ocom;
wire[7:
0]out;
wirecount;
regcin,clk,reset;
always#10clk=~clk;
initial
begin
clk=0;
cin=1;
reset=0;
#42
reset=1;
#100000$stop;
end
miaobiaom(.ocom(ocom),.out(out),.count(count),.cin(cin),.clk(clk),.reset(reset));
endmodule
2、仿真结果
四、TREX_C1实验开发板测试
1、按Key0清零
2、按Key1开始计数
3、再次按Key1暂停计数
心得体会
开始做设计时总是会犯一些错误,特别是加入暂停开始按键时走了不少弯路,只有经过不停的改错不停的编译才能得到正确的程序。
在编程时,我充分使用了结构化的思想,这样程序检查起来也比较方便,调试时也给了我很大方便,只要一个模块一个模块的进行调就可以了,充分体现了结构化编程的优势。
在设计中要求我要有耐心和毅力,还要细心,稍有不慎,一个小小的错误就会导致结果的不正确,而对错误的检查要求我要有足够的耐心,通过这次设计和设计中遇到的问题,也积累了一定的经验,对以后从事集成电路设计工作会有一定的帮助。
在应用Verilog的过程中让我真正领会到了其并行运行与其他软件顺序执行的差别及其在电路设计上的优越性。
用Verilog硬件描述语言的形式来进行数字系统的设计方便灵活,利用EDA软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误,降低了开发成本,这种设计方法在数字系统设计中发挥越来越重要的作用。
参考文献
陈新华.EDA技术与应用.机械工业出版社.2008
夏宇闻.从算法设计到硬件逻辑的实现[M].北京:
高等教育出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 秒表 设计