0

所以我是 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

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

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

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

4

1 回答 1

1

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

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

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

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

于 2019-09-05T14:48:20.593 回答