El multiplexor de frecuencia, consiste en un coodigo mediante el cual podemos asignar diferentes frecuencias a una sola salida con solo presionar una combinacion de valores, en este caso, usaremos como selector un switch de dos bits.
Un multiplexor, es un dispositivo digital que mediante un selector S. permite indicar cual de las entradas in, sera la que ira a la salida out. el numero de salidas sera 2^S, es decir,el numero de salidas sera dos elevado al numero de selectores, en este caso seria 2^2. lo cual resulta en 4 salidas.
condicional ?
En el diseño de hardware con Verilog, a menudo necesitamos realizar asignaciones basadas en condiciones. El operador ternario (
? :
) es una herramienta poderosa que nos permite tomar decisiones rápidas en una sola línea de código. Además, el uso del símbolo ?
como un comodín, o "don't care," nos da aún más flexibilidad para especificar condiciones donde ciertos bits pueden ser ignorados.ejemplo:
Mostrar código Verilog
Código Verilog
module MUX(
input clk,
output reg out,
input [1:0]s );
assign out = (s == 2'b10) ? 1'b1 :
(s == 2'b11) ? 1'b0 :
1'b0;
endmodule
Caso del multiplexor de frecuencia
el el caso del multip[lexor de frecuencia seria lo mismo la diferencia seria
que el 1'b1 o el valor despues de ? puede reemplazarse por lo que querramos, en este caso por la salida de reloj, clkout equivalente a cualquiera de las frecuencias que tengamos.
Mostrar código Verilog
Código Verilog
module MUX(
input clk,
input [1:0] s,
output reg out
);
reg frecuencia0, frecuencia1, frecuencia2, frecuencia3;
always @(*) begin
out = (s == 2'b00) ? frecuencia0 :
(s == 2'b01) ? frecuencia1 :
(s == 2'b10) ? frecuencia2 :
(s == 2'b11) ? frecuencia3 :
1'b0;
end
endmodule
para tener un ejemplo mas detallado accede a nuestro canal de youtube, donde estaremos realizando y probando el codigo con todos los divisores, para crear varias frecuencias solo es cuestion de copiar el divisor que creamos anteriormente en la seccion, divisor de frecuencia, y pegarlos varias veces reemplazandoles el nombre a las variables en cada divisor.