如何在vhdl中的basys 3中的七段显示中使用单独的数字

时间:2016-04-15 21:51:40

标签: constraints vhdl seven-segment-display

我正在制作关于制作秒表的项目。为了做到这一点,我必须在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]}] 

如何使用单独的数字?如果你通过一个例子向我解释它会非常有用。提前谢谢。

2 个答案:

答案 0 :(得分:0)

@Brian Drummond和@ user1155120已经回答了你的问题。显示器是时间复用的。你需要一遍又一遍地重复这个序列,以至于人眼无法察觉你一次只能驾驶一个数字:

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

所以,你需要一些驱动U2的VHDL代码,然后是U4,然后是V4,然后是W4,然后是U2等,还有一些其他的VHDL代码可以为每个数字驱动7段输出。

答案 1 :(得分:0)

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

您的统计机器应该具有每个数字的状态(激活正确的引脚)和优选的“其他”状态,如果错误输入无法访问的状态,它将返回到第一状态。

这应该让你开始。

此致 塞巴斯蒂安

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