问题描述
我正在更新我的 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);**
^^