1、 1 基于 FPGA 的数字式秒表 草鱼 设计任务及要求 草鱼 草鱼 草鱼 草鱼 草鱼 秒表由于其计时精确 , 鲤鱼 分辨率高( 0.01 草鱼 秒) , 鲤鱼 在各种竞技场所得到了广泛的应用 , 鲤鱼 本次设计的任务就是设计一个基于 草鱼 FPGA 草鱼 的数字式秒表 。 草鱼 草鱼 1、 p ork基本要求 : pork草鱼 ( 1)性能指标 : p ork草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 秒表的分辨率为 草鱼 0.01 草鱼 秒 , 鲤鱼 最长计时时间为 草鱼 99.99 草鱼 秒 ; pork草鱼 ( 2)设置启 /停开关和复位开关(计数控制器) : p ork草鱼 草鱼 草鱼 草鱼
2、 草鱼 草鱼 启 /停开关 草鱼 S1 草鱼 的使用方法与传统的机械计时器相同 , 鲤鱼 即按一下启 /停开关 , 鲤鱼 启动计时器开始计时 , 鲤鱼再按一下启 /停开关计时终止 。 草鱼 复位开关 草鱼 S2 草鱼 用来使计时器清 草鱼 0, 鲤鱼 复位开关可以在任何情况下使用 , 鲤鱼 即使在计时过程中 , 鲤鱼 只要按一下复位开关 , 鲤鱼 计时进程应立即终止 , 鲤鱼 并对计时器清零 。 草鱼 (开关按下为 草鱼 0, 鲤鱼 弹起为 草鱼 1) 。 草鱼 草鱼 秒表的计时基准信号 : p ork草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 以周期为 草鱼 0.01 草鱼 秒(频率 草鱼 100H
3、Z)的计时脉冲作为一个比较精准的计时基准信号输入到 0.01 草鱼 秒位计数器的时钟端 ; pork在设计中采用分频器把 草鱼 1000HZ 草鱼 的时钟信号转换为 草鱼 100HZ 草鱼 的计时基准信号 , 鲤鱼 其分频系数为 草鱼 10。 草鱼 草鱼 数码管动态显示 : p ork草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 七段数码管采用动态扫描的方式显示 , 鲤鱼 扫描需要一个比较高频率的信号 , 鲤鱼 本次设计选用 草鱼 1000HZ 草鱼 。 草鱼为了得到 草鱼 1000Hz 草鱼 信号 , 鲤鱼 必须对输入的时钟信号 草鱼 50MHZ 草鱼 进行分频 。 草鱼 显示模块共用 草鱼 11 草
4、鱼 个管脚 , 鲤鱼 其中 草鱼 8 草鱼个用于连接 草鱼 8 草鱼 个数码管的七段 草鱼 LED, 鲤鱼 还有 草鱼 3 草鱼 个管脚用于选择点亮哪个数码管 , 鲤鱼 每隔很短的一段时间 草鱼 8 草鱼个数码管交替点亮 , 鲤鱼 依次循环 , 鲤鱼 动态显示 , 鲤鱼 由于人眼的视觉残留 , 鲤鱼 可以观察到连续的测量计数器的计数值 。草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 上电后 , 鲤鱼 八个数码管中左边四个显示自己的学号后四位 , 鲤鱼 在运行过程中一直不变 ; pork右边四个显示计时时间 , 鲤鱼 范围 草鱼 00009999, 鲤鱼 利用两个按钮 草鱼 S1、 porkS2 草
5、鱼 控制计时 。 草鱼 草鱼 草鱼 提高要求 : p ork草鱼 草鱼 草鱼 草鱼 加入小数点 , 鲤鱼 计时数码管显示范围 草鱼 00.0099.99。 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 系统原理框图 草鱼 2 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 1000Hz 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼
6、 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 100Hz 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼
7、 草鱼 草鱼 50MHz 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 1000Hz 草鱼 电路实现 草鱼 显示译码器 数据选择器 38 译码器 模 8 计数器 位控, 3 位信号 段控, 8 位信号 5 万分频器 模 10 计数器 10 分频器 控制器 3 草鱼 功能模块 草鱼 分频器(以 10 分频器为例) 草鱼 ( 1) Verilog 草鱼 HDL 语言程序 草鱼 module
8、 草鱼 fp10(草鱼 Clk,草鱼 Out 草鱼 );p ork草鱼 input 草鱼 Clk;pork草鱼 output 草鱼 Out;pork草鱼 reg 草鱼 Out;pork草鱼 reg 草鱼 3:0 草鱼 Cout;pork草鱼 reg 草鱼 Clk_En;pork草鱼 initial 草鱼 Out= 草鱼 4d5) 草鱼 ? 草鱼 1d1 草鱼 : 草鱼 1d0;pork草鱼 4 Out=4d9)草鱼 OUT=1d1;pork草鱼 else 草鱼 6 OUT=1d0;pork草鱼 end 草鱼 end 草鱼 end 草鱼 end 草鱼 /*-*/草鱼 assign 草鱼 CQ 草
9、鱼 = 草鱼 Led;pork草鱼 /*-*/草鱼 endmodule 草鱼 草鱼 草鱼 草鱼 草鱼 ( 2)模块化电路 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 ( 3)波形仿真 草鱼 由波形图可以看出 , 鲤鱼 100Hz 的脉冲源 , 鲤鱼 模 10 计数器 D3-D0输出 0000-1001, 鲤鱼 每 10 个脉冲进位位 OUT输出一个单脉冲 。 草鱼 草鱼 数据选择器 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 ( 1) Verilog 草鱼 HDL 语言程序 草鱼 module 草鱼 numchoose(sel,num4,num5,num6,num7,k);pork草鱼
10、 input2:0sel;pork草鱼 input3:0num4;pork草鱼 input3:0num5;pork草鱼 7 input3:0num6;pork草鱼 input3:0num7;pork草鱼 output 草鱼 reg3:0 草鱼 k;pork草鱼 always 草鱼 草鱼 begin 草鱼 case(sel)草鱼 3b000: 草鱼 k=4d0;pork草鱼 3b001: 草鱼 k=4d3;pork草鱼 3b010: 草鱼 k=4d1;pork草鱼 3b011: 草鱼 k=4d1;pork草鱼 3b100: 草鱼 k=num4;pork草鱼 3b101: 草鱼 k=num5;po
11、rk草鱼 3b110: 草鱼 k=num6;pork草鱼 3b111: 草鱼 k=num7;pork草鱼 endcase 草鱼 end 草鱼 endmodule 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 ( 2)模块化电路 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 ( 3)波形仿真 草鱼 草鱼 草鱼 草鱼 8 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 由波形图可以看出 , 鲤鱼 在 1000Hz 的扫描信号及 100Hz 的计时信号下 , 鲤鱼 数据选择器输出前四位输出学号后四位 0311 ( 00
12、00,0011,0001,0001 ) , 鲤鱼 后四位输出范围 0000 9999 ( 0000,0000,0000,0000 1001,1001,1001,1001) 。 草鱼 草鱼 显示译码器(带小数点) 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 ( 1) Verilog 草鱼 HDL 语言程序 草鱼 module 草鱼 xianshiyimaqi( 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 k,草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Sev_Seg_Led_Data_n,草鱼 del 草鱼 );pork草鱼 input 草鱼
13、 3:0 草鱼 k;pork草鱼 output 草鱼 7:0 草鱼 Sev_Seg_Led_Data_n;pork草鱼 input 草鱼 2:0 草鱼 del;pork草鱼 reg 草鱼 7:0 草鱼 Led;pork草鱼 reg 草鱼 3:0D,C,A,B;pork草鱼 always(k)草鱼 begin 草鱼 草鱼 if(del=3b101) 草鱼 草鱼 草鱼 case 草鱼 (k)草鱼 4b0000: 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Led 草鱼 = 草鱼 8b0111_1111;pork草鱼 4b0001: 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Led 草鱼 = 草鱼 8b0000_
14、1101;pork草鱼 4b0010: 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Led 草鱼 = 草鱼 8b1011_0111;pork草鱼 草鱼 草鱼 草鱼 草鱼 4b0011: 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Led 草鱼 = 草鱼 8b1001_1111;pork草鱼 4b0100: 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Led 草鱼 = 草鱼 8b1100_1101;pork草鱼 4b0101: 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Led 草鱼 = 草鱼 8b1101_1011;pork草鱼 9 4b0110: 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Led 草鱼 = 草鱼 8b1111_1
15、011;pork草鱼 4b0111: 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Led 草鱼 = 草鱼 8b0000_1111;pork草鱼 4b1000: 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Led 草鱼 = 草鱼 8b1111_1111;pork草鱼 4b1001: 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Led 草鱼 = 草鱼 8b1101_1111;pork 草鱼 草鱼 default 草鱼 : 草鱼 Led 草鱼 = 草鱼 8b0000_000;pork 草鱼 草鱼 endcase 草鱼 草鱼 else 草鱼 草鱼 草鱼 case 草鱼 (k)草鱼 4b0000: 草鱼 草鱼 草鱼 草鱼 草鱼
16、 草鱼 Led 草鱼 = 草鱼 8b0111_1110;pork草鱼 4b0001: 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Led 草鱼 = 草鱼 8b0000_1100;pork草鱼 4b0010: 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Led 草鱼 = 草鱼 8b1011_0110;pork草鱼 草鱼 草鱼 草鱼 草鱼 4b0011: 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Led 草鱼 = 草鱼 8b1001_1110;pork草鱼 4b0100: 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Led 草鱼 = 草鱼 8b1100_1100;pork草鱼 4b0101: 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼
17、 Led 草鱼 = 草鱼 8b1101_1010;pork草鱼 4b0110: 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Led 草鱼 = 草鱼 8b1111_1010;pork草鱼 4b0111: 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Led 草鱼 = 草鱼 8b0000_1110;pork草鱼 4b1000: 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Led 草鱼 = 草鱼 8b1111_1110;pork草鱼 4b1001: 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 Led 草鱼 = 草鱼 8b1101_1110;pork 草鱼 草鱼 default 草鱼 : 草鱼 Led 草鱼 = 草鱼 8b0000_0
18、00;pork草鱼 草鱼 草鱼 endcase 草鱼 草鱼 end 草鱼 assign 草鱼 Sev_Seg_Led_Data_n 草鱼 = 草鱼 Led;pork 草鱼 endmodule 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 ( 2)模块化电路 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 ( 3)小数点问题 草鱼 10 草鱼 草鱼 草鱼 草鱼 由于是只在第六个数码管( S5)上加小数点 , 鲤鱼 且一直存在 , 鲤鱼 故编写显示译码器程序时 , 鲤鱼 在其输出 8 位段码时 , 鲤鱼 再加一个位控选
19、择器 , 鲤鱼 即当位码为 101( S5)时 , 鲤鱼 段码最后一位( D0)总为 1。 草鱼 草鱼 计数控制器 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 草鱼 ( 1) Verilog 草鱼 HDL 语言程序 草鱼 草鱼 草鱼 module 草鱼 control(草鱼 S1,S2,草鱼 P,CR 草鱼 );p ork草鱼 input 草鱼 S1,S2;pork草鱼 output 草鱼 P,CR;pork草鱼 wire 草鱼 S1,S2;pork草鱼 reg 草鱼 P;pork草鱼 reg 草鱼 CR;pork草鱼 initial 草鱼 P=0;p o rk草鱼 always 草鱼 (negedge 草鱼 S1 草鱼 or 草鱼 negedge 草鱼 S2 草鱼 )草鱼 begin 草鱼 if(S2)草鱼 begin 草鱼 CR=0;p ork草鱼 P=0;p o rk草鱼 end 草鱼 else 草鱼 begin 草鱼 CR=1;p ork草鱼 P=P;p o rk草鱼 end 草鱼 end 草鱼 Endmodule 草鱼