Cette page a au moins 8 ans !
This page is at least 8 years old !
This page is at least 8 years old !
Silicium: Selection du volume
Photos par John McMaster.
6 bascules D. 4 pour le volume fixe, et 2 pour choisir l'EG (fixe, EG/4, EG/2, EG).
Le AY-3-8910 n'a qu'un bit pour choisir volume fixe ou EG.
Test...
always @(posedge CLK) // Bascules D begin MODE[1] <= DATA_BUS[5]; MODE[0] <= DATA_BUS[4]; V_IN[3] <= DATA_BUS[3]; V_IN[2] <= DATA_BUS[2]; V_IN[1] <= DATA_BUS[1]; V_IN[0] <= DATA_BUS[0]; end // Complements et decodeur assign MODE_SEL_0 = ~(MODE[1] | MODE[0]); assign MODE_SEL_1 = ~(MODE[1] | ~MODE[0]); assign MODE_SEL_2 = ~(~MODE[1] | MODE[0]); assign MODE_SEL_3 = ~(~MODE[1] | ~MODE[0]); // Selection V_OUT[0] = (V_IN[0] & MODE_SEL_0) | (ENV[2] & MODE_SEL_1) | (ENV[1] & MODE_SEL_2) | (ENV[0] & MODE_SEL_3); V_OUT[1] = (V_IN[1] & MODE_SEL_0) | (ENV[3] & MODE_SEL_1) | (ENV[2] & MODE_SEL_2) | (ENV[1] & MODE_SEL_3); V_OUT[2] = (V_IN[2] & MODE_SEL_0) | (ENV[3] & MODE_SEL_2) | (ENV[2] & MODE_SEL_3); V_OUT[3] = (V_IN[3] & MODE_SEL_0) | (ENV[3] & MODE_SEL_3);Ou plus simplement...
// Bascules D always @(posedge CLK) {MODE, V_IN} <= DATA_BUS[5:0]; // Magie ! V_OUT = (MODE == 0) ? V_IN : (MODE == 1) ? {2'b0, ENV[3:2]} : (MODE == 2) ? {1'b0, ENV[3:1]} : ENV;
Quelqu'un avec beaucoup plus d'experience que moi dans ce domaine m'a dit que les passages de "oh putain c'est l'enfer" à "c'est bidon en fait" sont très fréquents...
...