Nato a Pavia il 2 settembre 1942, consegue la maturità classica presso il Liceo Ugo Foscolo di Pavia. È allievo del Collegio Ghislieri mentre studia alla facoltà di giurisprudenza presso l’Università di Pavia, dove si laurea nel 1965.
Assistente ordinario di Istituzioni di diritto e procedura penale dal 1969, ricopre il ruolo di professore ordinario a tempo pieno di Procedura penale nella Facoltà di giurisprudenza dell'Ateneo pavese dal 1974, dopo aver insegnato la stessa materia nella facoltà di giurisprudenza dell'Università di Macerata (1971-75). Socio fondatore e segretario (dal 1985 al 1997) dell'Associazione tra gli studiosi del processo penale è stato uno dei tre membri italiani (insieme a Giorgio Marinucci e Giuliano Vassalli) della Fondation internationale pénale et pénitentiaire.
Membro del Consiglio direttivo della Scuola di Specializzazione per le professioni legali dell'Università di Pavia - Università Bocconi fin dalla sua istituzione, è stato tra i docenti più attenti al percorso formativo dei giovani laureati in giurisprudenza.
E' stato componente delle Commissioni governative per il nuovo codice di procedura penale e per le relative integrazioni (a più riprese dal 1974 al 1998) e di numerose altre Commissioni ministeriali in tema di giustizia penale. Ha fatto parte della direzione delle riviste «Cassazione penale» e «Rivista italiana di diritto e procedura penale». Direttore della collana "Giustizia penale oggi" (Cedam, Padova) e condirettore della collana "Procedura penale" (Giappichelli, Torino).