If statement VHDL-IF替换

If statement VHDL-IF替换,if-statement,syntax,vhdl,hdl,If Statement,Syntax,Vhdl,Hdl,我想写一个if的替代,我有下面的if语句 if val1(1)&val1(0) < val2(1)&val2(0) then r:="10"; else if val1(1)&val1(0) = val2(1)&val2(0) then r:="00"; else r:="01"; end

我想写一个if的替代,我有下面的if语句

if val1(1)&val1(0) < val2(1)&val2(0) then
            r:="10";
    else
            if  val1(1)&val1(0) = val2(1)&val2(0) then
                r:="00";
            else 
                r:="01";
            end if;
    end if;
如果val1(1)和val1(0)
我想把它改成下面的

s:=((data1(9)和data1(8))<(data2(9)和data2(8))?“01:((data1(9)和data1(8))=(data2(9)和data2(8))?“00:“01”)

但是编译器给了我以下错误

#错误:COMP96_0015:min:(111,49):“;应为”


我如何解决这个问题?谢谢。

问题:val1和val2的类型是什么

以下是一些改进:

  • 如果val1和val2只有2位:
    val1
  • 使用片而不是单位concats:
    val1(1向下到0)

  • 您可以使用
    y,出于什么原因您需要其他选项?编码风格?逻辑的规模?还有什么?我的回答解决了你的问题吗?是的,谢谢。另一个选项是执行函数:)
    
    function ite(cond : boolean; val1 : std_logic_vector; val2 : std_logic_vector)
    return std_logic_vector is
    begin
      if cond then
        return val1;
      else
        return val2;
      end if;
    end function;
    
    s := ite((val1(1 downto 0) < val2(1 downto 0)), "10",    -- less
         ite((val1(1 downto 0) = val2(1 downto 0)), "00",    -- equal
                                                    "01"));  -- greater
    
    function comp(val1 : std_logic_vector; val2 : std_logic_vector)
    return std_logic_vector is
    begin
      if (val1 < val2) then
        return "10";
      elsif (val1 = val2) then
        return "00";
      else
        return "01";
      end if;
    end function
    
    s := comp(val1(1 downto 0), val2(1 downto 0));