VHDL中的左移函数
原描述如下
function SHL (v2 : MVL7_VECTOR; fill : MVL7) return MVL7_VECTOR isvariable v1 : MVL7_VECTOR(v2' HIGH downto v2' LOW);vaiable shift_val : MVL7_VECTOR(v1' HIGH downto v1' LOW);variable I : integer;
beginv1 := v2;--变量v1先保存参数v2的值,只对v1进行处理for I in v1' HIGH downto (v1' LOW + 1) loopshift_val(I) := v1(I - 1);end loop;--将v1的每一位向左移一位--将移位后的新位向量保存在shift_val数组中shift_val(v1' LOW) := fill; --最后一位由参数fill填充return shift_val; --返回移位后的位向量
end;
此左移函数将一个七值逻辑位向量左移一位,而最后一位用参数fill所指定的位来填充。
该函数有两个参数,一个是要向左移位的七值逻辑位向量,另一是用来填充移位后位向量的最后一位参数,该参数的数据类型为位。返回值仍然是一个七值逻辑位向量。
其中HIGH和LOW是两个值类型属性。HIGH返回类型或子类型的上限值,而LOW则返回类型或子类型的下限值。类型或子类型的上限值是具有最大值的边界,而下限值是具有最小值的边界。