You are using CONV_STD_LOGIC_VECTOR to convert a std_logic_vector to a larger std_logic_vector. This is not what CONV_STD_LOGIC_VECTOR is for.
CONV_STD_LOGIC_VECTOR is for converting integers into std_logic_vectors.
My advice is:
- Do not use numeric_std, std_logic_unsigned and std_logic_arith in the same design unit. They are all there to do the same job, two of them both declare "signed" and "unsigned" datatypes, and (in some cases) they conflict with each other. IMHO, remove std_logic_arith and std_logic_unsigned, and stick with just numeric_std.
- The quickest way to do the conversion you're looking for is:
Position <= std_logic_vector(resize(unsigned(Count), 8));
This is assuming that you go for my suggestion of using numeric_std. - A slightly slower, but neater, solution would be to declare "Count" as "unsigned" (from numeric_std), and then you would only need:
Position <= std_logic_vector(resize(Count, 8));
HTH...