VHDL/vivado语法错误

VHDL/vivado语法错误,vhdl,vivado,Vhdl,Vivado,写一个VHDL模块,用于并行输入,并行输出右移 图的寄存器(已附),但添加一个活动低电平异步 清除信号ClrN。不要在代码中使用单个触发器。 模拟该模块,以获得与图1相似的时序图 (附件) 请使用下列参数生成波形 -为3.5个时钟周期设置ClrN=1,为下半个时钟周期设置ClrN=0,为剩余fo测试设置ClrN=1 -对于5个时钟周期,设置L=1;对于接下来的3个时钟周期,设置L=0;对于其余的测试,设置L=1 -设置SI=1 -组D=0101 -对于1个时钟周期,设置Sh=0;对于接下来的5个

写一个VHDL模块,用于并行输入,并行输出右移 图的寄存器(已附),但添加一个活动低电平异步 清除信号ClrN。不要在代码中使用单个触发器。 模拟该模块,以获得与图1相似的时序图 (附件)

请使用下列参数生成波形

-为3.5个时钟周期设置ClrN=1,为下半个时钟周期设置ClrN=0,为剩余fo测试设置ClrN=1

-对于5个时钟周期,设置L=1;对于接下来的3个时钟周期,设置L=0;对于其余的测试,设置L=1

-设置SI=1

-组D=0101

-对于1个时钟周期,设置Sh=0;对于接下来的5个时钟周期,设置Sh=1;对于其余的测试,设置Sh=0

提交模拟波形,以演示设备的操作 代码

我收到错误
[Synth 8-1789]无法更新'in'对象dout

我尝试了以下方法:

library ieee;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;

entity insertname is
port (
    SI, Clk, ClrN, Sh, L : in std_logic;
    Din : in std_logic_vector (3 downto 0);
    SO : out std_logic;
    Dout : std_logic_vector (3 downto 0)
);
end entity insertname;

architecture behavioral of insertname is
    signal temp: std_logic_vector (3 downto 0) := "0000";
begin
    process (Clk, ClrN)
    begin
        if ClrN = '0' then
            temp <= x"0";
        elsif Clk'event and Clk = '1' and Sh = '1' then
            temp <= SI & temp(3 downto 1);
            SO <= temp(0);
        elsif Clk'event and Clk = '1' and Sh = '0' and L = '1' then
            temp <= Din;
        elsif Clk'event and Clk='1' and Sh='0' and L='0' then
            temp <= temp;
        end if;
    end process;
Dout <= temp;
end behavioral;
ieee库;
使用IEEE.STD_LOGIC_1164.ALL;
使用IEEE.STD_LOGIC_UNSIGNED.ALL;
使用IEEE.STD_LOGIC_ARITH.ALL;
实体insertname为
港口(
标准逻辑中的SI、Clk、ClrN、Sh、L;
Din:标准逻辑向量(3到0);
SO:输出std_逻辑;
Dout:std_逻辑_向量(3到0)
);
结束实体插入名;
insertname的体系结构是
信号温度:标准逻辑向量(3到0):=“0000”;
开始
进程(Clk、ClrN)
开始
如果ClrN='0',则

要修复语法错误,请检查实体声明中的端口列表:
Dout
信号应定义为
out
,如下所示:

Dout : out std_logic_vector (3 downto 0)

如用户1155120、IEEE标准1076-2008、6.5.2接口对象声明所述:

如果没有选择任何模式 在接口声明(而非接口)中显式给出 文件声明,假定模式为。


IEEE Std 1076-2008,6.5.2接口对象声明“如果接口声明中没有明确给出除接口文件声明以外的模式,则假定模式为。”@user1155120谢谢,很高兴将来知道。我总是明确地定义模式,所以这不是一个问题。这些都来自于小查尔斯·H·罗斯和拉里·L·金尼的《逻辑设计基础》第六版,第360-361页。请注意,您制作了一个单独的触发器。您还可以将图12.10(b)中触发器前面显示的多路复用器表示为内部if语句。您不需要在顺序元素(寄存器、触发器)中为自身赋值。注:表12-1未显示。从图12-10(b)中可以看出,您的班次分配不正确。