【问题标题】:VHDL Simple Seven Segment Display on Basys2 FPGA boardBasys2 FPGA板上的VHDL简单七段显示
【发布时间】:2019-09-05 11:11:35
【问题描述】:

所以我是 FPGA 世界的新手,我是 VHDL 语言的新手。我试图点亮我的七段显示器,但我总是遇到错误。下面的代码仅适用于在开关打开时在七段显示第一,当您打开开关时,LED 会打开。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity binarycnt is
    Port ( clk : in STD_LOGIC;
              switches : in  STD_LOGIC_VECTOR(7 downto 0);
           LEDs : out  STD_LOGIC_VECTOR(7 downto 0);
           segments : out  STD_LOGIC_VECTOR(7 downto 0);
              anodes : out STD_LOGIC_VECTOR(3 downto 0));
end binarycnt;

architecture Behavioral of binarycnt is
begin
LEDs <= switches;
process (clk, switches)
    begin
        if(switches(0) = '1') then
                segments(1) <= '0';
                segments(2) <= '0';
                anodes(3) <= '0';

        elsif rising_edge(clk) then 
            segments(0) <= '1';
                segments(1) <= '1';
                segments(2) <= '1';
                segments(3) <= '1';
                segments(4) <= '1';
                segments(5) <= '1';
                segments(6) <= '1';
                segments(7) <= '1';
                anodes(0) <= '1';
                anodes(1) <= '1';
                anodes(2) <= '1';
                anodes(3) <= '0';
        end if;
    end process;
end Behavioral;

我尝试过这样做:

segments <= switches

用七段开关点亮任何灯条,但我不断收到此错误:

信号段 无法合成,同步描述错误。 您用于描述同步元素的描述样式 当前软件不支持(寄存器、内存等) 释放。

我正在寻找一种用开关点亮七段的方法,哦,这是我第一次使用时钟,所以如果我的实现有误,我深表歉意。任何帮助,将不胜感激。谢谢。

【问题讨论】:

  • 你能给我们提供不起作用的代码吗?
  • 产生错误的代码。
  • 当我尝试用 segments &lt;= switches 替换 LEDs &lt;= switches 时,它给了我错误。基本上我想通过打开一个开关来点亮七段显示器的任何一段。
  • @Fuzzyy segments 在您的顺序过程中也会受到影响。您不能在 2 个并发进程中影响同一个信号。
  • 那我该怎么做呢?我只是想用开关点亮七段,就像一个开关在七段显示器上只点亮一个段。

标签: vhdl xilinx xilinx-ise seven-segment-display


【解决方案1】:

您的错误消息是说您的合成器不知道如何设计与您的代码行为方式相同的电路。这就是合成器应该做的事情 - 设计一个行为方式与您的代码完全相同的电路。

你期待什么电路?你能画出来吗?你有想过吗?当您使用 HDL 设计硬件时,您应该知道您期望综合哪些硬件。不是确切地是什么硬件,而是大致的。

您是否模拟了这段代码?它的行为是否如您所愿?在合成之前始终进行模拟。

一旦您知道您期望合成什么硬件,您就可以相应地编写您的 (V)HDL。您的 VHDL 应符合少数模板之一。还有更多关于here 的内容。

【讨论】:

  • 我期待有一个电路将我的开关连接到我板上七段显示器的段。当我将LEDs &lt;= switches 替换为segments &lt;= switches 时,合成器上会出现一个十字标记。而且我没有模拟我的代码。我只是保存它并生成编程文件,然后在我的 FPGA 板上运行它。在您提到模拟的重要性之后,我将习惯模拟,谢谢。 :)
  • “我没有模拟我的代码。” 总是,总是模拟你的代码。我在 HDL 方面有 30 多年的经验,并且我仍然模拟非常小的 HDL 片段。太容易弄错了。
  • @Fuzzyy 但是什么电路?例如,它会包含人字拖吗?还是不行?
  • 不,它不会包含任何人字拖。我只是想知道如何仅使用开关点亮七段,这对我来说是一个学习步骤。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多