/****************************************************************/ /* */ /* maxSelector.C */ /* */ /****************************************************************/ # include "nsl_include.h" # include "maxSelector.h" MaxSelector::MaxSelector(char* str, NslModule* parent,int size) : NslModule(str, parent), in("in",this,size), up("up",this,size), uf("uf",this,size), vp("vp",this), vf("vf",this),k("k",this), tu("tu",this), tv("tv",this), hu("hu",this), hv("hv",this), wuu("wuu",this), wuv("wuv",this), wvu("wvu",this) { } void MaxSelector::initRun() { up = 0; vp = 0; uf = 0; vf = 0; } void MaxSelector::simRun() { nslDiff(up,tu, - up + wuu*uf - wvu*vf - hu + in); uf = NSLstep(up,k); nslDiff(vp,tv, - vp + nslSum(wuv*uf) - hv); // (wuv*uf).sum() vf = NSLramp(vp); } MaxSelectorStimulus::MaxSelectorStimulus(char* str, NslModule* parent,int size) : NslModule(str, parent), out("out",this,size) { } MaxSelectorModel::MaxSelectorModel() : NslModel("MaxSelectorModel"), maxSelector("maxSelector",this,10), stimulus("stimulus",this,10) { makeConn(); } void MaxSelectorModel::makeConn() { nslConnect(stimulus.out,maxSelector.in); } AslSchemaModel _MaxSelectorModel("MaxSelectorModel");