-1

我正在做一个关于制作秒表的项目。为此,我必须在 7 段显示器上使用单独的数字。但是,当我尝试时,所有数字的行为都相同。我将以下代码用于约束。

set_property PACKAGE_PIN W7 [get_ports {clk_out[6]}] 
set_property IOSTANDARD LVCMOS33 [get_ports {clk_out[6]}] 
set_property PACKAGE_PIN W6 [get_ports {clk_out[5]}]  
set_property IOSTANDARD LVCMOS33 [get_ports {clk_out[5]}] 
set_property PACKAGE_PIN U8 [get_ports {clk_out[4]}] 
set_property IOSTANDARD LVCMOS33 [get_ports {clk_out[4]}] 
set_property PACKAGE_PIN V8 [get_ports {clk_out[3]}]  
set_property IOSTANDARD LVCMOS33 [get_ports {clk_out[3]}] 
set_property PACKAGE_PIN U5 [get_ports {clk_out[2]}] 
set_property IOSTANDARD LVCMOS33 [get_ports {clk_out[2]}] 
set_property PACKAGE_PIN V5 [get_ports {clk_out[1]}] 
set_property IOSTANDARD LVCMOS33 [get_ports {clk_out[1]}]  
set_property PACKAGE_PIN U7 [get_ports {clk_out[0]}] 
set_property IOSTANDARD LVCMOS33 [get_ports {clk_out[0]}] 

如何使用单独的数字?如果您通过示例向我解释,那将非常有帮助。提前致谢。

4

2 回答 2

0

我首先要熟悉 7sgment 显示器的数据表。您需要做的是分别运行每个数字(例如,为每个数字使用溢出咖喱到下一个计数器的单独计数器),然后使状态机在列表 60hz x 显示数量 = x 处振荡。因此,您将有两个时钟,一个用于计算您的时间,另一个以列表中显示的每个数字 60hz 的频率运行。

然后,您的统计机应该具有每个数字的状态(激活正确的引脚输出)和更可取的“其他”状态,如果错误进入无法到达的状态,则该状态将返回到第一个状态。

这应该让你开始。

问候,塞巴斯蒂安

PS这里与您的问题类似,但对于计时器:https ://stackoverflow.com/questions/36033688/if-statement-with-two-unsigned-conditions-in-vhdl-not-working

于 2016-04-19T07:21:26.603 回答
0

@Brian Drummond 和 @user1155120 确实回答了您的问题。显示是时间多路复用的。你需要一遍又一遍地重复这个序列,以至于人眼无法感知你一次只驱动一个数字:

  • 启用 U2 并驱动单位列的 7 段输出;
  • 然后启用 U4 并驱动十列的 7 段输出;
  • 然后启用 V4 并驱动数百列的 7 段输出;
  • 然后启用 W4 并驱动千列的 7 段输出。

因此,您需要一些 VHDL 代码来驱动 U2 然后 U4 然后 V4 然后 W4 然后 U2 等以及一些其他 VHDL 代码来适当地驱动每个数字的 7 段输出。

于 2016-04-16T12:11:51.430 回答