基于verilog语言编程的数字秒表设计Word下载.docx
- 文档编号:21169962
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:8
- 大小:115.92KB
基于verilog语言编程的数字秒表设计Word下载.docx
《基于verilog语言编程的数字秒表设计Word下载.docx》由会员分享,可在线阅读,更多相关《基于verilog语言编程的数字秒表设计Word下载.docx(8页珍藏版)》请在冰豆网上搜索。
clr为复位信号,当该信号有效时,计数器和译码清零,此时数码管显示输出为00:
00:
00。
在总体电路图中,根据设计要求,需要两个输入控制信号onoff和clr。
由于开发板上除了拨动开关就是瞬时的按键开关,且按键开关平时都呈高电平,按一下为低电平。
故在实际测试时采用了拨动开关SW0来控制秒表的启动/暂停,通过KEY0来控制秒表的清零。
四、设计思路描述
该实验要求进行计时并在数码管上显示时间,通过相关软件QuartusII编译,利用JTAG下载电路到核心芯片,驱动硬件工作。
Altera_EPM7064(84PIN)有四个引脚GCLK1(83脚),GCLRn(1脚),OE1(84脚),OE2(2脚)。
GCLK1是全局时钟,GCLRn(1脚是全局清零,OE1(84脚),OE2(2脚)是全局使能实现“开始”按键的功能;
实现“清零(复位)”按键的功能;
做为时钟信号CLK输入的入口地址。
可将开关设计与此,其优势在在于到达延迟时间相等。
其中“开始”按键当开关由1拨向0(由上向下拨)时开始计时;
“清零(复位)”按键当开关由1拨向0(由上向下拨)时数码管清零(复位),此时若再拨“开始”按键则又可重新开始计时。
1)电源部分需要并联四个电容,以达到滤波作用,获得实验所需的电压;
2)利用三极管分别连接LED数码管和EPM7064,起到放大(电流)作用;
3)本实验时钟信号的产生有晶振直接提供,同时由编写的子程序决定输出频率;
4)芯片所需程序由计算机编译,采用QuartusII软件,编译调试无误后,进行下载;
5)IDI、TMS、TCK、TDO是JTAG的标准线。
用来实现连接芯片,实现下载功能。
五、原理图
跟据数字秒表的原理图如图一所示,为设计项目选定CyclongII系列中的EP2C35F672C6器件,锁定顶层设计中各端口所对应的引脚号,并编译通过。
然后对器件编程,使用USB-Blaste下载电缆把项目以在线配置的方式下载到Altera
DE2实验板的EP2C35F672C6器件中。
该数字式秒表具有清零功能,通过KEY0来控制,能够在计时过程中随时清零。
用SW0键来控制锁存/计时,能在计时过程中通过按SW0键,SW0拨动开关打上时计时暂停,打下时仍继续。
实验证明该秒表工作正常,基本上已达到了预期的设计要求。
六、PCB图
七、系统软件设计
在设计电路时,要遵循从上到下的设计原则。
首先从系统设计入手,在顶层进行功能划分和结构设计,顶层模块的每个层次模块均可完成一个较为独立的功能,次模块在调试成功后可生成一个默认符号,以供上一层模块调用。
本系统由4个模块组成,分别是分频电路模块、模10计数模块和动态译码显示模块。
本设计最小计时单位为0.1s,设计时需获得一个比较精确的10Hz(周期为0.1s)的计时脉冲。
由于最终的设计结果要下载到可编程逻辑器件中测试,因此可利用Altera
DE2开发板的12M晶振时钟。
将12M时钟信号CLK送到分频器CLKGEN进行60万分频后,得到10Hz的频率由NEWCLK输出。
采用Verilog语言编程,编译无误通过后创建默认文件符号CLKGEN以供上层电路调用。
程序实现如下:
moduleclock(clk,key,dig,seg);
//模块名clock
inputclk;
//输入时钟
input[1:
0]key;
//输入按键
output[7:
0]dig;
//数码管选择输出引脚
0]seg;
//数码管段输出引脚
reg[7:
0]seg_r;
//定义数码管输出寄存器
0]dig_r;
//定义数码管选择输出寄存器
reg[3:
0]disp_dat;
//定义显示数据寄存器
reg[24:
0]count;
//定义计数寄存器
reg[15:
0]hour;
//定义现在时刻寄存器
regsec,keyen;
//定义标志位
reg[1:
0]dout1,dout2,dout3;
//寄存器
wire[1:
0]key_done;
//按键消抖输出
assigndig=dig_r;
//输出数码管选择
assignseg=seg_r;
//输出数码管译码结果
//秒信号产生部分
always@(posedgeclk)//定义clock上升沿触发
begin
count=count+1'
b1;
if(count==25'
d6000000)//0.5S到了吗?
begin
count=25'
d0;
//计数器清零
sec=~sec;
//置位秒标志
end
end
//按键消抖处理部分
assignkey_done=(dout1|dout2|dout3);
//按键消抖输出
always@(posedgecount[17])
dout1<
=key;
dout2<
=dout1;
dout3<
=dout2;
always@(negedgekey_done[0])
keyen=~keyen;
//将琴键开关转换为乒乓开关
//数码管动态扫描显示部分
always@(posedgeclk)//count[17:
15]大约1ms改变一次
case(count[17:
15])//选择扫描显示数据
3'
d0:
disp_dat=hour[3:
0];
//秒个位
d1:
disp_dat=hour[7:
4];
//秒十位
d2:
disp_dat=hour[11:
8];
//分个位
d3:
disp_dat=hour[15:
12];
//分十位
endcase
15])//选择数码管显示位
dig_r=8'
b11111110;
//选择第一个数码管显示
b11111101;
//选择第二个数码管显示
b11111011;
//选择第三个数码管显示
b11110111;
//选择第四个数码管显示
endcase
always@(posedgeclk)
case(disp_dat)
4'
h0:
seg_r=8'
hc0;
//显示0
h1:
hf9;
//显示1
h2:
ha4;
//显示2
h3:
hb0;
//显示3
h4:
h99;
//显示4
h5:
h92;
//显示5
h6:
h82;
//显示6
h7:
hf8;
//显示7
h8:
h80;
//显示8
h9:
h90;
//显示9
//4'
ha:
hbf;
//显示-
default:
hff;
//不显示
//if((count[17:
15]==3'
d2)&
sec)
//seg_r=8'
//计时处理部分
always@(negedgesecornegedgekey_done[1])//计时处理
if(!
key_done[1])//是清零键吗?
hour=16'
h0;
//是,则清零
elseif(!
keyen)
hour[3:
0]=hour[3:
0]+1'
//秒加1
if(hour[3:
0]==4'
ha)
begin
hour[3:
0]=4'
hour[7:
4]=hour[7:
4]+1'
//秒的十位加一
if(hour[7:
4]==4'
h6)
begin
hour[7:
4]=4'
hour[11:
8]=hour[11:
8]+1'
//分个位加一
if(hour[11:
8]==4'
begin
hour[11:
8]=4'
hour[15:
12]=hour[15:
12]+1'
//分十位加一
if(hour[15:
12]==4'
hour[15:
12]=4'
end
end
end
endmodule
在QuartusII环境下,打开一个新的原理图编辑窗口,然后调入秒表电路设计所需要的50万分频器CLKGEN、十进制计数器/分频器CNT10(4片),译码器DISP,以与电路需要的输入/输出元件。
完成电路元件之间和输出/输入之间的连接,并通过QuartusII的编译
八、焊接调试
电路板组装心得:
收集资料,设计出电路原理图,选择元件型号,清点元器件的个数。
测试元件,包括测电阻的阻值,根据电路图和电路板本身的实际连通情况开始整体布局连接电路。
电路板焊接心得:
在设计过程中,应该了解其难易,考虑一下焊接的难度。
如果比较难就要追求速度(但是也要尽量焊好),如果简单一点,那么在焊接的同时要考虑到焊接工艺。
一般情况下,工艺方面的要求就是焊点的光滑、亮度、毛刺这几个方面。
一般不会要求电阻的方向之类的。
焊接的方式:
焊接前看一下元器件,了解一下它们的尺寸规格。
然后从低到高开始焊接。
*E\(Fr7uG.J$X\(c&
电路板调试心得:
首先,在上电源前先用万用表测试下电源和地之间是否有短路,这样可防止可能烧坏IC等元件。
其次,测试电路板的各项功能,须从极端的角度去测试可能会出现的问题。
再次,根据产品的性能要求,逐次测试其各个功能是否符合产品要求。
最后,调试过程中会遇到各种问题,下面一一分析:
第一,电源连接不上,就要查查电源连接电路。
第二,电源连接上了,却不能工作,查其他电源是不是供电正常,然后查晶振是否工作。
第三,还是工作不正常,目测下主要元件是否有焊反、焊错、短路等现象出现。
包括元件用错了,型号不对,元件方向反了,元件的脚有损坏、虚焊、短路等,连接线有损坏或接触不良,电容的正负极焊反等。
第四,加密IC焊错了,或没有加载相应的程序。
九、j7bICzq5b0性能指标测试
首先,按照性能指标,测试每项功能是否达到,记录实际测试结果,分析误差、误差原因,以与解决办法。
严格按照测试步骤:
首先认真调查测试需求和仔细分析测试任务,然后才有可能做好测试的准备工作,只有对测试任务非常清楚,测试目标极其明确的前提下,我们才可能制定出切实可行的测试计划。
明确测试目标,详尽测试计划在对测试需求充分了解的基础上,制定尽可能详细的测试计划,对测试的实施是大有裨益的。
十、总结
在QuartusII开发环境下,采用自顶向下的设计方法有利于在早期发现结构设计中的错误,避免不必要的重复设计。
再结合基于FPGA
的“在系统”可编程实验板,轻轻松松就能实现各种电子产品的设计,现场观察实验测试结果。
大大缩短了产品的设计周期和调试周期,提高了设计的可靠性和成功率,充分体现了可编程逻辑器件在数字电路设计中的优越性。
十一、心得体会
两周时间的课程设计,终于达到了数字秒表系统的要求,尽管还不是十分完美,但从心底里说,还是很高兴的。
通过以上步骤就可以完成对数字秒表的过程设计。
这次设计,我克服了很多关于设计问题方面的困难,使我对ProtelDXP2004软件的使用有了更进一步的了解,并熟练掌握了一个单片机从编程开发到应用的电脑设计过程。
通过对数字秒表系统的理论设计,使我对已学知识有了更深入的理解,以与对更多模块与单片机芯片元件的功能和类型有了进一步的了解。
它使我学到了更多理论知识。
在设计制作过程中,我初步了解了电路的原理与设计制作方法,同时也积累了一些经验。
在这次的课程设计中,我体会最深的就是,理论与实际的差别,往往理论上十分成熟的技术,在真正实现的过程中还是会出现很多问题,要考虑到诸多因素。
通过此次设计,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,只有通过实践,才能不断提高,不断进步。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 verilog 语言 编程 数字 秒表 设计