如何删除由于 std_ulogic 类型与整数文字不匹配而导致的 VHDL 类型不匹配错误?

How to remove VHDL type mismatch error due to std_ulogic type does not match integer literal?

我的目标是制作一个开关轨道,用于控制 position_trackcolor_track 用于 player1(9 位)和 player2(9 位)基于 VHDL 的 Tic-Tac-Toe 游戏中的棋盘显示。

目前,我能够显示 3x3 网格并显示开关的颜色。仅针对player1 ('Blue'),在Altera DE2 板中分配给SW[9]SW[0]player2 ('Red') 在 VGA 显示中对 SW[17]SW[9] 中的任何一个没有响应。

这是一个使用 VHDL 和 Altera DE2 板、Cyclone II 芯片的项目。过去,我曾尝试检查实体架构(行为方法)的语法,以指定跟踪FPGA板中内置硬件开关变化的逻辑。

使用标准库,例如 ieee.std_logic_1164.all 和 ieee_std.logic_unsigned.all。

FPGA

architecture behavioral of switch_track is
begin
    process
    begin
        if (player1(0) = '1') then
            position_track(0) <= 1; -- error occurs in this line (19) --
            color_track(0) <= 1;
        elsif
        -- [same logic applies for player2(0)]
        else
            position_track(0) <= 0;
            color_track(0) <= 0;
        end if;
    end process;
end architecture behavioral;

我预计.vhd 文件中的代码可以正确合成。然而,在Quartus II编译器中遇到的唯一错误是:

Error (10517): VHDL type mismatch error at switch_track.vhd(19): std_ulogic type does not match integer literal.

我不确定为什么 std_ulogic 出现在编译器中。我是 VHDL 和 Quartus II 硬件设计的新手。感谢建设性的反馈。

出现错误是因为我没有将 position_track 和 color_track 的 1 和 0 分类为“1”和“0”以正确表示二进制数。我没有使用正确的语法。