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

时间:2013-11-12 06:39:35

标签: 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);

错误显示:

  

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

aux_Hs是一个信号STD_Logic

有哪些方法保存 IF语句?伪“?:”指令?

提前谢谢你:)

2 个答案:

答案 0 :(得分:4)

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

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

使用VHDL-2008:

   aux_Hs <= counter ?>= 0 and counter ?<=95 ;

答案 1 :(得分: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' ;