1

你好朋友和专业程序员,我是这个 VHDL 世界的新手,我有这个问题。我想做这个:

   if counter >= 0 and counter <=95 then
    aux_Hs <= '0';
   else
    aux_Hx <= '1';
   end if;

在这样的事情中:

   aux_Hs <= (counter >= 0 and counter <=95);

出现此错误

第 73 行。aux_Hs 的类型与 and 的类型不兼容。

aux_Hs是一个信号STD_Logic

有什么方法可以保存IF语句吗?伪“?:”指令?.

先感谢您 :)

4

2 回答 2

4

作为并发代码,没有 VHDL-2008:

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

使用 VHDL-2008:

   aux_Hs <= counter ?>= 0 and counter ?<=95 ;
于 2013-11-12T06:57:26.860 回答
1

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

aux_Hs <= '0';
if not (counter >= 0 and counter <=95) then
   aux_Hx <= '1';
end if;

或者您可以使用 VHDL-2008(如果不支持 VHDL2008,请查找编译器上的开关并记录错误!)它允许在进程内进行条件分配:

aux_Hs <= '0' when (counter >= 0 and counter <=95) else '1' ;
于 2013-11-12T16:43:55.437 回答