VHDL-modelsim-在CASE的测试台上显示的致命错误

问题描述

我正在更新我的 VHDL 编程技能(通过使用ModelSim),编写了移位寄存器项目和测试平台,并成功地编译了这两个程序。 当我尝试运行TB文件时,出现了与CASE相关的致命错误:shl(向左移位)/ Shr(向右移位/ 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;

谢谢你 伊丹

解决方法

请注意,案例栏前后有**

删除这些:

**CASE Sel is
^^

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