【问题标题】:VHDL syntax error using with-select statement使用 with-select 语句的 VHDL 语法错误
【发布时间】:2021-03-25 11:20:06
【问题描述】:

我正在为一个项目编写一个七段解码器的代码,但是当我检查语法错误时,它向我显示了这些:

错误 (10500):Sevenseg.vhd(16) 靠近文本“with”的 VHDL 语法错误;期望“end”,或“(”,或标识符(“with”是保留关键字),或顺序语句

错误 (10500):Sevenseg.vhd(17) 靠近文本“when”的 VHDL 语法错误;期待“;”

我的代码:

library IEEE;
use IEEE.std_logic_1164.all;

entity sevenseg is
    port (m3, m2, m1, m0:in std_logic;
            out7 : out std_logic_vector (6 downto 0));
end sevenseg;

architecture ssdec of sevenseg is
    signal min : std_logic_vector (3 downto 0);
begin
    process(m0, m1, m2, m3)
begin
    min <= m3 & m2 & m1 & m0; --concatenate m0, m1, m2, m3 into vector min
    
    with min select                                 --here is where the error specify
    out7    <=  "0111111"   when "0000" | "1010",   -- 0 
                "0000110"   when "0001" | "1011",   -- 1
                "1010111"   when "0010" | "1100",   -- 2
                "1001111"   when "0011" | "1101",   -- 3
                "1100110"   when "0100" | "1110",   -- 4
                "1101101"   when "0101" | "1111",   -- 5
                "1111100"   when "0110",            -- 6
                "0000111"   when "0111",            -- 7
                "1111111"   when "1000",            -- 8
                "1100111"   when "1001";            -- 9

end process;
end ssdec;

什么是错误以及我如何纠正它,谢谢。

【问题讨论】:

  • 这称为选择信号分配。参见 IEEE Std 1076-2008 10. 顺序语句,10.5 信号分配语句,10.5.4 选定信号分配。在修订版 -2008 之前,选定的信号分配仅可用作并发语句(例如 -2002 9 并发语句、9.5 并发信号分配语句、9.5.2 选定信号分配)。另请参阅 -2008 11.6 并发信号分配语句。

标签: syntax-error vhdl


【解决方案1】:

在 2008 年之前的 VHDL 版本中,with..select 语句只能在进程之外使用。所以要修复错误,要么:

  1. 将 with..select 移出进程
  2. 使用 VHDL 2008 或更高版本

如果您选择上面的 2.,您还需要将 min 添加到进程敏感度列表中。

您还有一个问题,即 with..select 中没有“其他”选项。所有案例都必须包含在with..select 中。因为min 是一个std_logic_vector,所以您必须涵盖所有9 种独立状态类型的所有组合。因此when others 通常是涵盖所有内容的最佳方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多