Fonction d'interfaçage
fr
BINACCU_c
//BINACCU_c Scicos Binary accumulator function block
//Classical interface function ver1.0 - scilab-3.0
//14 mars 2006 - INRIA - Author : A.Layec
function [x,y,typ]=BINACCU_c(job,arg1,arg2)
x=[];y=[];typ=[]
select job
case 'plot' then
standard_draw(arg1)
case 'getinputs' then
[x,y,typ]=standard_inputs(arg1)
case 'getoutputs' then
[x,y,typ]=standard_outputs(arg1)
case 'getorigin' then
[x,y]=standard_origin(arg1)
case 'set' then
x=arg1;
graphics=arg1.graphics;model=arg1.model;
exprs=graphics.exprs;
while %t do
txt=['Set Binary Accumulator Block'];
[ok,nbit,nw,ci,nci,ci_sup,cc2_in,cc2_out,herit,exprs]=getvalue(txt,...
['Number of bit';'Number of word';'Set output initial condition';
'Number of additional initial condition';...
'Set additional initial condition';...
'2''s complement in input (0:No/1:Yes)';...
'2''s complement in output (0:No/1:Yes)';...
'Inherit (no:0, yes:1)'],...
list('vec',-1,'vec',-1,'vec',-1,'vec',-1,...
'vec',-1,'vec',-1,'vec',-1,'vec',1),exprs);
if ~ok then break,end;
if (size(nbit)==size(nw)&size(nbit)==size(nci)&...
size(nbit)==size(ci)&size(nbit)==size(cc2_in)&...
size(nbit)==size(cc2_out)) then
if (sum(nci)==size(ci_sup,'*')) then
Nu=size(nbit,'*');
if ok then
graphics.exprs=exprs
nbit=int(nbit);nw=int(nw);nci=int(nci);ci=int(ci)
cc2_in=int(cc2_in);cc2_out=int(cc2_out)
nci=nci(:)
ipar=[cc2_in(:);cc2_out(:);nw(:);nbit(:);[0;cumsum(nci(1:$-1))];ci_sup(:)]
model.ipar=ipar(:)
model.dstate=[zeros(Nu,1);ci(:);nci(:)]
model.in=Nu;model.out=Nu
if herit==1 then
model.evtin=[]
[model,graphics,ok]=check_io(model,graphics,Nu,Nu,[],[]);
else
model.evtin=1
[model,graphics,ok]=check_io(model,graphics,Nu,Nu,1,[]);
end
x.graphics=graphics; x.model=model;
break;
end
else
message('Number of initial conditions parameter doesn''t'+...
' match with dimensions of initial condition parameter');
end
else
message('Inconsistent parameters dimensions');
end
end
case 'define' then
Nu=1
nbit=3
nw=4
ci=0
nci=0
ci_sup=0
cnw=0
cc2_in=1
cc2_out=1
herit=0
model=scicos_model()
model.sim=list('binaccu',4)
model.in=Nu
model.out=Nu
model.evtin=1
model.evtout=[]
model.dstate=[zeros(Nu,1);zeros(Nu,1);nci(:)]
model.rpar=[]
nci=nci(:)
model.ipar=[cc2_in(:);cc2_out(:);nw(:);nbit(:);[0;cumsum(nci(1:$-1))];ci_sup(:)]
model.blocktype='d'
model.firing=[]
model.dep_ut=[%f %f]
gr_i=['txt=['' Binary'';''Accumulator''];';
'xstringb(orig(1),orig(2),txt,sz(1),sz(2),''fill'');']
exprs=[string(nbit);string(nw);string(ci);string(nci);...
sci2exp(ci_sup);string(cc2_in);string(cc2_out);string(herit)]
x=standard_define([2.5 2],model,exprs,gr_i)
end
endfunction