Entonces, tomé un código en línea y lo transformé para que funcionara con mi tablero DE2-115, y ahora necesito ayuda para entender exactamente cómo funciona.
DDS_accum <= DDS_accum + 32'h16FC7BBC +
((256+((message[15]==0)? message[15:7]+256 : message[15:7]-256))<<15) ; // "audio input"
Necesito ayuda para entender exactamente por qué existe la línea Verilog HDL anterior. El bloque grande de código que se muestra a continuación muestra cómo se implementa.
Este es el bloque principal de mi Proyecto de Diseño para Personas Mayores, pero mi especialización en la universidad me enseña sobre software y hardware, no tanto por Modulación de Frecuencia. Entonces, mucho de esto está pasando por encima de mi cabeza.
He leído esto y algunas páginas de Wikipedia y algunos videos de YouTube, pero no entiendo el punto de la constante y jugar con la señal de mensaje en la línea de arriba.
//make a direct digital synthesis accumulator
// and output a 10-bit sine wave to the VGA plug
// set carrier frequency to 1 MHz DDS_incr = 32'h51EB84C = 85,899,340
// 11 MHz 32'h3851DCA8 = 944889000
// 9 MHz 2DF8F778 (771291000) : 4.5 16FC7BBC (385,645,500)
// 7 Mhz 274AF224 (659223076)
// set modulation to 400 Hz 85E7
// This outputs at 146.0 MHz.
always @ (posedge CLOCK_50) begin
//generate 4.5 Mhz square wave carrier with FM modulation
// 32'h16FC7BBC = 385645500
DDS_accum <= DDS_accum + 32'h16FC7BBC +
((256+((message[15]==0)? message[15:7]+256 : message[15:7]-256))<<15) ; // "audio input"
end
//hook up the ROM table for carrier
sqwave sqTable(CLOCK_50, DDS_accum[31:24], sq_out);
//use the VGA DAC for an FM modulated RF signal
assign VGA_R = sq_out;
assign VGA_SYNC = 1 ;
assign VGA_BLANK = 1 ;
endmodule
//////////////////////////////////////////////////
// Square wave table for the DDS
module sqwave (clock, address, sq);
input clock;
input [7:0] address;
output [7:0] sq; // changed to 7:0
reg [7:0] sq; // changed to 7:0
always @ (posedge clock)
begin
sq <= (address<128)? 8'h7f : 8'h01 ; // changed
end
endmodule
///////////////////////////////////////////////////
Pido disculpas por el gran bloque de código, pero ese es el corazón de este transmisor de FM. Este código modula una señal de audio de entrada de 24 bits desde el puerto de entrada de línea y sale del puerto VGA_R como una señal de FM a aproximadamente 146.0 MHz.