If statement 更改IF语句,保存一些代码

If statement 更改IF语句,保存一些代码,if-statement,vhdl,If Statement,Vhdl,朋友们好,专业程序员们,我是VHDL的新手,我有一个问题。 我想说: if counter >= 0 and counter <=95 then aux_Hs <= '0'; else aux_Hx <= '1'; end if; 在这样的情况下: aux_Hs <= (counter >= 0 and counter <=95); aux_Hs <= '0'; if not (counter >=

朋友们好,专业程序员们,我是VHDL的新手,我有一个问题。 我想说:

   if counter >= 0 and counter <=95 then
    aux_Hs <= '0';
   else
    aux_Hx <= '1';
   end if;
在这样的情况下:

   aux_Hs <= (counter >= 0 and counter <=95);
aux_Hs <= '0';
if not (counter >= 0 and counter <=95) then
   aux_Hx <= '1';
end if;
此错误显示为:

第73行。辅助装置的类型与和的类型不兼容

aux_Hs是一种信号标准逻辑

有没有办法保存IF语句?假货说明


提前感谢:

作为并发代码,无需VHDL-2008:

   aux_Hs <= '1' when (counter >= 0 and counter <=95) else '0' ;
   aux_Hs <= counter ?>= 0 and counter ?<=95 ;
使用VHDL-2008:

   aux_Hs <= '1' when (counter >= 0 and counter <=95) else '0' ;
   aux_Hs <= counter ?>= 0 and counter ?<=95 ;

作为并发代码,无VHDL-2008:

   aux_Hs <= '1' when (counter >= 0 and counter <=95) else '0' ;
   aux_Hs <= counter ?>= 0 and counter ?<=95 ;
使用VHDL-2008:

   aux_Hs <= '1' when (counter >= 0 and counter <=95) else '0' ;
   aux_Hs <= counter ?>= 0 and counter ?<=95 ;

如果需要在进程内执行此操作,可以保存一行代码,如下所示:

   aux_Hs <= (counter >= 0 and counter <=95);
aux_Hs <= '0';
if not (counter >= 0 and counter <=95) then
   aux_Hx <= '1';
end if;
或者,如果不支持VHDL-2008,您可以使用VHDL-2008查找编译器上的开关并记录错误!允许在进程内进行条件分配:

aux_Hs <= '0' when (counter >= 0 and counter <=95) else '1' ;

如果需要在进程内执行此操作,可以保存一行代码,如下所示:

   aux_Hs <= (counter >= 0 and counter <=95);
aux_Hs <= '0';
if not (counter >= 0 and counter <=95) then
   aux_Hx <= '1';
end if;
或者,如果不支持VHDL-2008,您可以使用VHDL-2008查找编译器上的开关并记录错误!允许在进程内进行条件分配:

aux_Hs <= '0' when (counter >= 0 and counter <=95) else '1' ;

你可以在进程内使用它们?据我所知,在进程内使用IF,在进程外使用when语句。这是一个好规则。Jim上面写的代码行是在进程之外执行的。初始示例中的代码属于时钟进程内部。在VHDL-2008之前,条件赋值(又称when)要求位于进程外部。使用VHDL-2008,您还可以在进程内使用它们。假设工具支持,第二个代码段中的2008代码可以在任何地方使用。请记住,对于合成而言,VHDL-2008的大部分内容仍处于最前沿-在您有迫切需要时使用,但始终测试并报告错误-这就是我们如何确定新功能优先级的方法。您可以在流程中使用它们吗?据我所知,在您需要使用的流程中,如果,在一个过程之外,你可以在语句出现时执行。这是一个很好的规则。Jim上面写的代码行是在进程之外执行的。初始示例中的代码属于时钟进程内部。在VHDL-2008之前,条件赋值(又称when)要求位于进程外部。使用VHDL-2008,您还可以在进程内使用它们。假设工具支持,第二个代码段中的2008代码可以在任何地方使用。请记住,对于合成而言,VHDL-2008的大部分内容仍处于最前沿-在您有迫切需要时使用,但始终测试并报告错误-这就是我们如何确定新功能优先级的方法。您的两个代码示例正确吗?他们似乎做了相反的事情你的两个代码示例正确吗?他们似乎做了相反的事情