简单秒表
1. 秒表功能介绍2. 秒表电路设计2.1 错误结果分析2.2 最终版本
3. 数码管显示4. 顶层文件和约束文件
这是一篇错误示范,记录下来
能下板正常运行的在这:
Ego1下板_计数秒表
1. 秒表功能介绍
秒表显示的时间分为3个十进制数字,从00.0到99.9秒循环计数。包含一个同步清零信号clr,使秒表返回00.0,还包含一个启动信号go,开始或停止计数。在本设计中,一个十进制数用4位的BCD码表示。例如139表示为“0001 0011 1001”和140表示为“0001 0100 0000”。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210323144912164.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0J1bm55OV9f,size_16,color_FFFFFF,t_70#pic_center)
2. 秒表电路设计
计数脉冲由EGo1板的系统时钟产生。 系统时钟频率为100MHz,所以需要设置一个最大值为10_000_000的计数器,让她每0.1秒产生一个时钟周期的脉冲,用于三位BCD计数器的计数时钟。
2.1 错误结果分析
module stop_watch(
output wire [3:0] d2,
output wire [3:0] d1,
output wire [3:0] d0,
input wire clk, // system clk
input wire go, // start or not
input wire clr // reset
);
parameter count_value = 10_000_000;
reg [23:0] ms_reg;
wire ms_tick;
reg [3:0] d2_reg, d2_next;
reg [3:0] d1_reg, d1_next;
reg [3:0] d0_reg, d0_next;
always @ (posedge clk) begin
if (clr == 1'b0) begin
ms_reg an[3]}]
set_property -dict {PACKAGE_PIN C2 IOSTANDARD LVCMOS33} [get_ports {an[2]}]
set_property -dict {PACKAGE_PIN C1 IOSTANDARD LVCMOS33} [get_ports {an[1]}]
set_property -dict {PACKAGE_PIN H1 IOSTANDARD LVCMOS33} [get_ports {an[0]}]
set_property -dict {PACKAGE_PIN B4 IOSTANDARD LVCMOS33} [get_ports {seg[0]}]
set_property -dict {PACKAGE_PIN A4 IOSTANDARD LVCMOS33} [get_ports {seg[1]}]
set_property -dict {PACKAGE_PIN A3 IOSTANDARD LVCMOS33} [get_ports {seg[2]}]
set_property -dict {PACKAGE_PIN B1 IOSTANDARD LVCMOS33} [get_ports {seg[3]}]
set_property -dict {PACKAGE_PIN A1 IOSTANDARD LVCMOS33} [get_ports {seg[4]}]
set_property -dict {PACKAGE_PIN B3 IOSTANDARD LVCMOS33} [get_ports {seg[5]}]
set_property -dict {PACKAGE_PIN B2 IOSTANDARD LVCMOS33} [get_ports {seg[6]}]
set_property -dict {PACKAGE_PIN D5 IOSTANDARD LVCMOS33} [get_ports {seg[7]}]
set_property -dict {PACKAGE_PIN P17 IOSTANDARD LVCMOS33} [get_ports clk ]
set_property -dict {PACKAGE_PIN N4 IOSTANDARD LVCMOS33} [get_ports {clr}]
set_property -dict {PACKAGE_PIN R1 IOSTANDARD LVCMOS33} [get_ports {go}]
|