RU9M,
:
module excontrol (slow_clock, level_data, level_data_comp, level_nCS, level_nWR, rx_tune_phase[14:0], tx_tune_phase[14:0], Conn_X1 );
input slow_clock;
output reg [7:0] level_data;
input [7:0] level_data_comp;
output reg level_nCS;
output reg level_nWR;
input [14:0] rx_tune_phase;
input [14:0] tx_tune_phase;
output reg [6:0] Conn_X1;
//
//***************************************************************************
// BPF Control
always @(rx_tune_phase[14:0])// Every time, if freq changes.....
begin
if (rx_tune_phase[14:0] < 800 )// If freq less than 1.5M....
Conn_X1[3:0] <= 0; //then... code = 0
else if (rx_tune_phase[14:0] < 1333 )//If not and less than 2.5...
Conn_X1[3:0] <= 1; //then... code = 1
else if (rx_tune_phase[14:0] < 2133 )//If not and less 4.0...
Conn_X1[3:0] <= 2; //code = 2
else if (rx_tune_phase[14:0] < 3200 )// <6
Conn_X1[3:0] <= 3; // = 3
else if (rx_tune_phase[14:0] < 4000 ) // <7.5
Conn_X1[3:0] <= 4;
else if (rx_tune_phase[14:0] < 6666 )// <12.5
Conn_X1[3:0] <= 5;
else if (rx_tune_phase[14:0] < 8000 )// <15
Conn_X1[3:0] <= 6;
else if (rx_tune_phase[14:0] < 10666 )// <20
Conn_X1[3:0] <= 7;
else if (rx_tune_phase[14:0] < 16000 )// <30
Conn_X1[3:0] <= 8;
else //If more than 30
Conn_X1[3:0] <= 9;
end
//*******************************************************
// LPF Control
always @(tx_tune_phase[14:0])// Every time, if freq changes.....
begin
if (tx_tune_phase[14:0] < 1333 )// <2.5M
Conn_X1[6:4] <= 1; //
else if (tx_tune_phase[14:0] < 2400 )// <4.5M
Conn_X1[6:4] <= 2; //
else if (tx_tune_phase[14:0] < 4266 )// <8M
Conn_X1[6:4] <= 3; //
else if (tx_tune_phase[14:0] < 8000 )// <15
Conn_X1[6:4] <= 4; // = 3
else if (tx_tune_phase[14:0] < 10666 ) // <20
Conn_X1[6:4] <= 5;
else if (tx_tune_phase[14:0] < 16000 )// <30
Conn_X1[6:4] <= 6;
else // >30M
Conn_X1[6:4] <= 7;
end
//*************************************************************************
// Level Control
reg level_max;
reg [7:0] level_band;
reg [7:0] count;
always @(level_data_comp, rx_tune_phase[14:0] )
begin
if (tx_tune_phase[14:0] < 1333 ) // < 2.5....
level_band <= 255; //1.8M Point of Measurement
else if (tx_tune_phase[14:0] < 2400 )// < 4.5...
level_band <= 216; //3.6M Point of Measurement
else if (tx_tune_phase[14:0] < 3200 )// < 6.0....
level_band <= 178; //5.3M
else if (tx_tune_phase[14:0] < 4266 )// < 8.0...
level_band <= 159; //7M
else if (tx_tune_phase[14:0] < 6400 )// < 12....
level_band <= 145; //10M
else if (tx_tune_phase[14:0] < 10666 )// < 20...
level_band <= 145; //14M
else if (tx_tune_phase[14:0] < 13866 )// < 26....
level_band <= 145; //23M
else if (tx_tune_phase[14:0] < 17066 )// < 32....
level_band <= 145; //28M
else if (tx_tune_phase[14:0] < 20000 )// < 37.5...
level_band <= 175; //35M
else if (tx_tune_phase[14:0] < 22666 )// < 42.5....
level_band <= 205; //40M
else if (tx_tune_phase[14:0] < 25333 )// < 47.5...
level_band <= 226; //45M
else level_band <= 255; //52M // > 47.5
//
//level_data <= level_data_comp * level_band / 255; // Calibration ON
level_data <= level_data_comp; // Calibration OFF
end
//
always @(posedge slow_clock)
begin
count <= count + 1;
if (count < 127) begin level_nCS <= 1; level_nWR <= 1; end
else if (count > 127) begin level_nCS <= 0; level_nWR <= 0; end
end
endmodule
RU9M,
:
excontrol ex (slow_clock, level_data, level_data_comp, level_nCS, level_nWR,
rx_tune_phase[30:16], tx_tune_phase[30:16], Conn_X1[6:0] ) ;
, , . 3 , 3 .