23#ifndef FILTERMODELCONFIG6581_H
24#define FILTERMODELCONFIG6581_H
26#include "FilterModelConfig.h"
42class FilterModelConfig6581 final :
public FilterModelConfig
45 static std::unique_ptr<FilterModelConfig6581> instance;
47 friend std::unique_ptr<FilterModelConfig6581>::deleter_type;
50 static constexpr unsigned int DAC_BITS = 11;
55 static constexpr double VOLTAGE_SKEW = 1.015;
60 const double WL_snake;
65 const double dac_zero;
66 const double dac_scale;
74 unsigned short vcr_nVg[1 << 16];
75 double vcr_n_Ids_term[1 << 16];
82 double getDacZero(
double adjustment)
const {
return dac_zero + (1. - adjustment); }
84 FilterModelConfig6581();
85 ~FilterModelConfig6581() =
default;
92 inline double getVoiceDC(
unsigned int env)
const override
100 void setFilterRange(
double adjustment);
110 unsigned short*
getDAC(
double adjustment)
const;
112 inline double getWL_snake()
const {
return WL_snake; }
114 inline unsigned short getVcr_nVg(
int i)
const {
return vcr_nVg[i]; }
115 inline unsigned short getVcr_n_Ids_term(
int i)
const
117 const double tmp = vcr_n_Ids_term[i] *
uCox;
118 assert(tmp > -0.5 && tmp < 65535.5);
119 return static_cast<unsigned short>(tmp + 0.5);
122 inline constexpr double getUt()
const {
return Ut; }
123 inline double getN16()
const {
return N16; }
Definition FilterModelConfig6581.h:43
double getVoiceDC(unsigned int env) const override
Definition FilterModelConfig6581.h:92
unsigned short * getDAC(double adjustment) const
Definition FilterModelConfig6581.cpp:276
double uCox
Transconductance coefficient: u*Cox.
Definition FilterModelConfig.h:79
static constexpr double Ut
Transistor parameters.
Definition FilterModelConfig.h:74
const double N16
Fixed point scaling for 16 bit op-amp output.
Definition FilterModelConfig.h:87
Definition Integrator6581.h:165