blob: 7180c14438435ee933766a2343308b8b5802bcef [file] [log] [blame]
// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
//############################################################################
// *Name: sdc_ana
// *Module Description: ADC Analog
//############################################################################
module adc_ana (
input ast_pkg::awire_t adc_a0_ai, // ADC A0 Analog Input
input ast_pkg::awire_t adc_a1_ai, // ADC A1 Analog Input
output logic [10-1:0] adc_d_ch0_o, // ADC A0 Digital Output
output logic [10-1:0] adc_d_ch1_o // ADC A1 Digital Output
);
`ifndef SYNTHESIS
// Behavioral Model
////////////////////////////////////////
real vref = 2.3;
real adc_vi0_hook = 1.0;
real adc_vi1_hook = 1.0;
real adc_vi0, adc_vi1;
`ifdef ANALOGSIM
assign adc_vi0 = adc_a0_ai;
assign adc_vi1 = adc_a1_ai;
`else
assign adc_vi0 = adc_a0_ai ? adc_vi0_hook : 0.0;
assign adc_vi1 = adc_a1_ai ? adc_vi1_hook : 0.0;
`endif
assign adc_d_ch0_o = $rtoi((adc_vi0/vref) * $itor(10'h3ff));
assign adc_d_ch1_o = $rtoi((adc_vi1/vref) * $itor(10'h3ff));
`else // of SYNTHESIS
// FPGA/VERILATOR
////////////////////////////////////////
logic [10-1:0] adc_d_vi0_hook, adc_d_vi1_hook;
assign adc_d_vi0_hook = 10'h155;
assign adc_d_vi1_hook = 10'h2AA;
assign adc_d_ch0_o = adc_a0_ai ? adc_d_vi0_hook : 10'h000;
assign adc_d_ch1_o = adc_a1_ai ? adc_d_vi1_hook : 10'h000;
`endif
endmodule : adc_ana