VHDL错误“;“期待开始”; ieee库; 使用ieee.std_logic_1164.all; 选择的实体数据为 港口( A:标准逻辑向量(3到0); B:输出标准逻辑向量(3到0); 时钟:在标准逻辑中); 选择终端实体数据; 架构选择数据的数据选择是 变量计数:0到7的整数范围; 计数:=0; 开始 如果(上升沿(clk)),则 计数:=计数+1; 如果((计数>1))则 如果((计数rem 2)=0),则 B

VHDL错误“;“期待开始”; ieee库; 使用ieee.std_logic_1164.all; 选择的实体数据为 港口( A:标准逻辑向量(3到0); B:输出标准逻辑向量(3到0); 时钟:在标准逻辑中); 选择终端实体数据; 架构选择数据的数据选择是 变量计数:0到7的整数范围; 计数:=0; 开始 如果(上升沿(clk)),则 计数:=计数+1; 如果((计数>1))则 如果((计数rem 2)=0),则 B,vhdl,Vhdl,这个代码有一些地方出错 library ieee; use ieee.std_logic_1164.all; entity data_choose is port( A :in std_logic_vector(3 downto 0); B: out std_logic_vector(3 downto 0); clk : in std_logic); end entity data_choose; architecture select_data of data_choose is var

这个代码有一些地方出错

library ieee;
use ieee.std_logic_1164.all;
entity data_choose is
port(
A :in std_logic_vector(3 downto 0);
B: out std_logic_vector(3 downto 0);
clk : in std_logic);
end entity data_choose;

architecture select_data of data_choose is


variable count : integer range 0 to 7;


count :=0;

begin


if (rising_edge(clk)) then 
count := count + 1 ;
if((count > 1)) then
    if((count rem 2)=0) then 
        B <= A;
    end if;
end if;
end if;
end architecture select_data ;
我建议您将其设置为
信号
,而不是
变量
。我还建议避免使用变量,直到您完全理解变量与信号的区别。您通常会在进程内声明一个变量,供该进程独占使用。需要由多个进程访问的东西通常会使用在体系结构中声明的信号(您当前在体系结构中声明了变量)

您在体系结构的声明区域中,在
体系结构。。。是
开始
。如果需要初始化计数器,可以使用:

count :=0;
关于下一个问题,您的行
if(上升沿(clk))然后
试图描述同步逻辑。这应该发生在流程内部,因此您应该:

signal count : integer range 0 to 7 := 0;

最后一个错误是,由于您的
计数
现在是一个信号,您应该使用
分配给它,如果计数增加到7以上,会产生一个绑定约束错误吗?@user1155120如果提问者带着这个问题回来,我建议他们创建一个新问题。
signal count : integer range 0 to 7 := 0;
process (clk)
begin
  if (rising_edge(clk)) then 
    ...
  end if;
end process;