difference
std_logic is resolved logic....while std_ulogic is unresolved.....
in case of std_ulogic...as it is unresolved ...so whenvr there r more than one driver on a signal...it cant resolve itself to a particular value...so here explicitly some resolution function is needed to be included....else errors...
however, since std_logic is a resolved logic, so no explicit resolution function is required...i.e. for eg. if there r two drivers on a single line...say one driving 1 and other Z...it'll be resolved as '1', or when they r driving '1' and '0' resp, it'll b resolved as 'X'....
u can check the resolution function used by std_logic in the ieee source file std_logic.vhd