【问题标题】:VHDL - (modelsim) - Fatal error that indicated during test bench at CASEVHDL - (modelsim) - 在 CASE 测试台期间显示的致命错误
【发布时间】:2020-10-14 07:50:51
【问题描述】:

我正在刷新我的VHDL编程技能(通过使用ModelSim),我编写了移位寄存器项目和一个测试台,我成功地编译了它们。 当我尝试运行 TB 文件时,出现与 CASE 相关的致命错误:shl(shift left)/Shr(shift right/rtl/rtr

谁能帮我理解问题出在哪里?

Library ieee;
Use ieee.std_logic_1164.all;
Use work.New_Data_Pack.all;

Entity Shift_Reg IS
port(
    Clk,Rst :IN std_logic;
    Data :IN byte; -- std_logic_vector(7 downto 0);
    Sel :IN t_shift; --sample, shl, shr, rotl, rotr
    Q_out :OUT byte

);

End Shift_Reg;

ARCHITECTURE Shift_Reg_arc OF Shift_Reg IS
Signal ACC: byte:=(OTHERS=>'0'); -- std_logic_vector(7 downto 0);
BEGIN

PROCESS (Clk,Rst)
BEGIN
    IF Rst='1' Then
        Q_out<=(OTHERS=>'0');
        ACC<=(OTHERS=>'0');
    ELSIF Clk'EVENT and Clk='1' THEN
        **CASE Sel is
            WHEN sample=>
                ACC<=Data;
            WHEN shl=>
                ACC<=ACC (6 downto 1) & '0'; -- & concatenation
            WHEN shr=>
                ACC<='0'&ACC(6 downto 1);
            WHEN rotl=>
                ACC<=ACC(6 downto 1)& ACC(7);
            WHEN rotr=>
                ACC<=ACC(0)&ACC(6 downto 1);**
        END CASE;

    END IF;
 
    Q_out<=ACC;

End PROCESS;
End Shift_Reg_arc;

谢谢你 伊丹

【问题讨论】:

  • 提供minimal reproducible example,这里的包 New_Data_Pack 显然提供了声明类型 t_shift、类型字节、样本、shl、shr、rotl 和 rotr 以及实际完整的错误文本。是否需要测试平台源也不清楚。
  • 删除为强调而添加的双星号,为 new_data_pack 生成一个包声明,其中包含 t_shift 的枚举类型声明,其值显示在 SEL 声明注释中,以及一个子类型字节声明,其范围来自注释ACC 声明展示了对包声明、测试平台和实际错误消息的需求。分配给具有 7 个元素的波形的 8 个元素(例如ACC(6 downto 1)&amp; ACC(7))的 ACC 将导致仿真错误。参见 IEEE Std 1076-2008 14.7.3.4 Signal update para 2 b)。
  • Modelsim vsim 错误的形式为# ** Fatal: (vsim-3420) Array lengths do not match. Left is 8 (7 downto 0). Right is 7 (0 to 6). 在修复当前错误后,它们可能会按顺序出现在下一个错误中。第30行,第32行,第34行和第36行分别对应shl、shr、rotl和rotr(顺序是根据你后面问题中的testbench)。

标签: vhdl fpga modelsim


【解决方案1】:

请注意,您在 case 块之前和之后都有 **

删除这些:

**CASE Sel is
^^

ACC<=ACC(0)&ACC(6 downto 1);**
                            ^^

【讨论】:

  • 按照 OP 说明运行测试平台不会发现语法错误。
猜你喜欢
  • 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
相关资源
最近更新 更多