If statement VHDL-IF替换
我想写一个if的替代,我有下面的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 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));