Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vhdl 如何使用case编写顺序组件_Vhdl - Fatal编程技术网

Vhdl 如何使用case编写顺序组件

Vhdl 如何使用case编写顺序组件,vhdl,Vhdl,下面的代码未编译。我如何修改它使其工作?多谢各位 case S is when '0' => U1: hi port map (x,y,z); when others => U2: hey port map (x,y,z); end case; 如果没有剩下的代码,可能会有一些猜测,但您可能在进程之外使用了case,因此“非法并发语句”消息,因为case是一个只能在进程中使用的语句。但是,带有端口映射(x,y,z)的组件实例化是一个并发语句,因此只能在进程外部使用 VHDL不是一种

下面的代码未编译。我如何修改它使其工作?多谢各位

case S is
when '0' =>
U1: hi port map (x,y,z);
when others =>
U2: hey port map (x,y,z);
end case;

如果没有剩下的代码,可能会有一些猜测,但您可能在
进程
之外使用了
case
,因此“非法并发语句”消息,因为
case
是一个只能在进程中使用的语句。但是,带有
端口映射(x,y,z)
的组件实例化是一个并发语句,因此只能在进程外部使用

VHDL不是一种编程语言,而是一种硬件描述语言(VHDL的HDL部分),因此在编写VHDL代码时,将其视为描述电路,在这种情况下,部分是固定的,但信号值可能随时间而变化


因此,使用
端口映射(x,y,z)
实例化进程外部的组件,并控制来自进程、其他组件、端口等的信号值。

如果没有剩余的代码,将有一些猜测,但您可能在
进程外部使用了
case
,因此出现了“非法并发语句”消息,因为
case
是只能在流程中使用的语句。但是,带有
端口映射(x,y,z)
的组件实例化是一个并发语句,因此只能在进程外部使用

VHDL不是一种编程语言,而是一种硬件描述语言(VHDL的HDL部分),因此在编写VHDL代码时,将其视为描述电路,在这种情况下,部分是固定的,但信号值可能随时间而变化


因此,使用
端口映射(x,y,z)
实例化进程外部的组件,并控制来自进程、其他组件、端口等的信号值。

如果没有剩余的代码,将有一些猜测,但您可能在
进程外部使用了
case
,因此出现了“非法并发语句”消息,因为
case
是只能在流程中使用的语句。但是,带有
端口映射(x,y,z)
的组件实例化是一个并发语句,因此只能在进程外部使用

VHDL不是一种编程语言,而是一种硬件描述语言(VHDL的HDL部分),因此在编写VHDL代码时,将其视为描述电路,在这种情况下,部分是固定的,但信号值可能随时间而变化


因此,使用
端口映射(x,y,z)
实例化进程外部的组件,并控制来自进程、其他组件、端口等的信号值。

如果没有剩余的代码,将有一些猜测,但您可能在
进程外部使用了
case
,因此出现了“非法并发语句”消息,因为
case
是只能在流程中使用的语句。但是,带有
端口映射(x,y,z)
的组件实例化是一个并发语句,因此只能在进程外部使用

VHDL不是一种编程语言,而是一种硬件描述语言(VHDL的HDL部分),因此在编写VHDL代码时,将其视为描述电路,在这种情况下,部分是固定的,但信号值可能随时间而变化


因此,使用
端口映射(x,y,z)
实例化进程外的组件,并控制来自进程、其他组件、端口等的信号值。

实例化组件时,您不在进程内,因此无法使用顺序编程结构

但是,如果。。。生成
,只要
S
是一个通用或常量,它就可以根据
S
的值选择性地生成硬件。(如果您可以将信号输入到
If…generate
,则当信号值更改时,需要硬件出现或消失…不会发生!)

请注意,
如果。。。generate
没有“elsif”或“else”选项,因此您必须以稍微尴尬的方式表达您的示例:

gen_S_0 : if S = '0' generate
   U1: hi port map (x,y,z);
end generate;

gen_S_others: if S /= '0' generate
   U2: hey port map (x,y,z);
end generate;

在实例化组件时,您不在流程内,因此不能使用顺序编程结构

但是,如果。。。生成
,只要
S
是一个通用或常量,它就可以根据
S
的值选择性地生成硬件。(如果您可以将信号输入到
If…generate
,则当信号值更改时,需要硬件出现或消失…不会发生!)

请注意,
如果。。。generate
没有“elsif”或“else”选项,因此您必须以稍微尴尬的方式表达您的示例:

gen_S_0 : if S = '0' generate
   U1: hi port map (x,y,z);
end generate;

gen_S_others: if S /= '0' generate
   U2: hey port map (x,y,z);
end generate;

在实例化组件时,您不在流程内,因此不能使用顺序编程结构

但是,如果。。。生成
,只要
S
是一个通用或常量,它就可以根据
S
的值选择性地生成硬件。(如果您可以将信号输入到
If…generate
,则当信号值更改时,需要硬件出现或消失…不会发生!)

请注意,
如果。。。generate
没有“elsif”或“else”选项,因此您必须以稍微尴尬的方式表达您的示例:

gen_S_0 : if S = '0' generate
   U1: hi port map (x,y,z);
end generate;

gen_S_others: if S /= '0' generate
   U2: hey port map (x,y,z);
end generate;

在实例化组件时,您不在流程内,因此不能使用顺序编程结构

但是,如果。。。生成,只要
S
是一个通用或常量,它就可以根据
S
的值选择性地生成硬件。(如果您可以将信号输入到
If…generate
,则当信号值更改时,需要硬件出现或消失…不会发生!)

请注意,
如果。。。generate
没有“elsif”或“else”选项,因此您必须以稍微尴尬的方式表达您的示例:

gen_S_0 : if S = '0' generate
   U1: hi port map (x,y,z);
end generate;

gen_S_others: if S /= '0' generate
   U2: hey port map (x,y,z);
end generate;

您能添加错误消息吗?非法的concurent语句