Lautgeschichtlich sind zwei verschiedene /f/ zu unterscheiden, von denen das eine bereits germanisch ist und das andere sich bei der zweiten (ahd.) Lautverschiebung aus germ. /p/ entwickelt hat.
Das /f/ germanischen Ursprungs wird im Althochdeutschen in intervokalischer Stellung und im Anlaut vor Vokalen zu /v/ (wie in nhd. "Vase") lenisiert ("erweicht"). Je nach Kontext klang das althochdeutsche Graphem "F" also stimmlos oder stimmhaft. Dies bleibt im Mhd. so bestehen. Zur Kennzeichnung des lenisierten (stimmhaften) Reibelauts wurde schon im AHD das neue Graphem "V" eingeführt. Gleichzeitig konnte das "F" weiterhin sowohl den lenisierten wie den nicht lenisierten Laut bezeichnen (so findet man ahd. noch "vater" und "fater").
Das aus dem germ. /p/ hervorgegangene /f/ wird nach langem Vokal und im Auslaut "F", nach kurzem Vokal "FF" geschrieben (mhd. "trëffen"/"trâfen").
Seitdem verteilten sich die beiden Buchstaben stellungsbedingt: "V" stand im Anlaut (vater) und zwischen Vokalen (des hoves), "F" im Auslaut (der hof) und in den Kombinationen "FS" und "FT" sowie bei Doppelung (hoffen).
Im 13. Jahrhundert, mit Übergang zum Frühneuhochdeutschen, wurde auch das "V" stimmlos.
Dies ist eine Vereinfachung der alt- und mittelhochdeutschen Dialektlandschaft sowie der durchwegs uneinheitlichen Orthographie. Weitere Informationen findest du z.B. in Paul, Mittelhochdeutsche Grammatik (§L100f.).