欢迎来到天天文库
浏览记录
ID:53786348
大小:214.50 KB
页数:11页
时间:2020-04-07
《数电课程设计基于FPGA的数字式秒表报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、.数字电子技术课程设计报告..基于FPGA的数字式秒表一、设计任务及要求秒表由于其计时精确,分辨率高(0.01秒),在各种竞技场所得到了广泛的应用,本次设计的任务就是设计一个基于FPGA的数字式秒表。1、基本要求:(1)性能指标:秒表的分辨率为0.01秒,最长计时时间为99.99秒;(2)设置启/停开关和复位开关(计数控制器):启/停开关S1的使用方法与传统的机械计时器相同,即按一下启/停开关,启动计时器开始计时,再按一下启/停开关计时终止。复位开关S2用来使计时器清0,复位开关可以在任何情况下使用,即使在计时过程中,只要按一下复位开关,计时进
2、程应立即终止,并对计时器清零。(开关按下为0,弹起为1)。(3)秒表的计时基准信号:以周期为0.01秒(频率100HZ)的计时脉冲作为一个比较精准的计时基准信号输入到0.01秒位计数器的时钟端;在设计中采用分频器把1000HZ的时钟信号转换为100HZ的计时基准信号,其分频系数为10。(4)数码管动态显示:七段数码管采用动态扫描的方式显示,扫描需要一个比较高频率的信号,本次设计选用1000HZ。为了得到1000Hz信号,必须对输入的时钟信号50MHZ进行分频。显示模块共用11个管脚,其中8个用于连接8个数码管的七段LED,还有3个管脚用于选择点
3、亮哪个数码管,每隔很短的一段时间8个数码管交替点亮,依次循环,动态显示,由于人眼的视觉残留,可以观察到连续的测量计数器的计数值。上电后,八个数码管中左边四个显示自己的学号后四位,在运行过程中一直不变;右边四个显示计时时间,范围0000~9999,利用两个按钮S1、S2控制计时。2、提高要求:加入小数点,计时数码管显示范围00.00~99.99。..一、系统原理框图段控,8位信号38译码器位控,3位信号显示译码器模8计数器数据选择器1000Hz控制器5万分频器模10计数器100Hz10分频器50MHz1000Hz二、电路实现..一、功能模块1、分
4、频器(以10分频器为例)(1)VerilogHDL语言程序modulefp10(Clk,Out);inputClk;outputOut;regOut;reg[3:0]Cout;regClk_En;initialOut<=0;always@(posedgeClk)beginCout<=(Cout==4'd10)?4'd0:(Cout+4'd1);Clk_En<=(Cout>=4'd5)?1'd1:1'd0;Out<=Clk_En;endEndmodule(2)模块化电路(3)波形仿真由波形仿真图可以看出,10分频器将1000Hz的脉冲分频成100
5、Hz的脉冲。2、计数器(以模10计数器为例)(1)VerilogHDL语言程序modulecounter10(Clk,EN,RET,CQ,OUT..);inputClk;inputEN,RET;output[3:0]CQ;outputOUT;regOUT;/*---------------------------------------------------*/wireRst_n;assignRst_n=RET;/*---------------------------------------------------*/reg[3:0]Led
6、;regClk_En;always@(posedgeClkornegedgeRst_n)beginif(~Rst_n)beginOUT=0;Led=4'd0;endelsebeginClk_En=Clk;if(Clk_En&EN)beginbeginif(Led<=4'd8)Led=Led+3'd1;elseLed=4'd0;endbeginif(Led>=4'd9)OUT=1'd1;elseOUT=1'd0;endendendend/*---------------------------------------------------*/a
7、ssignCQ=Led;/*---------------------------------------------------*/..endmodule(2)模块化电路(3)波形仿真由波形图可以看出,100Hz的脉冲源,模10计数器D3-D0输出0000-1001,每10个脉冲进位位OUT输出一个单脉冲。3、数据选择器(1)VerilogHDL语言程序 modulenumchoose(sel,num4,num5,num6,num7,k); input[2:0]sel; input[3:0]num4; input[3:0]num5;
8、 input[3:0]num6; input[3:0]num7; outputreg[3:0]k; always begin case(se
此文档下载收益归作者所有