Bloc Convertisseur Analogique Numérique
- q :
Type 'vec' de taille -1. La description du paramètre 1.
- vmin :
Type 'vec' de taille -1. La description du paramètre 2.
- type :
Type 'vec' de taille -1. La description du paramètre 3.
- number of bit :
Type 'vec' de taille -1. La description du paramètre 4.
- code complément à 2 (0/1) :
Type 'vec' de taille -1. La description du paramètre 5.
- toujours actif: non
- direct-feedthrough: non
- détection de passage à zéro: non
- mode: non
- nombre/taille des entrées régulières: 1 / 1
- nombre/taille des sorties sorties régulières: 1 / 1
- nombre/taille des entrées évènementielles: 1 / 1
- nombre/taille des sorties évènementielles: 0 /
- possède un état continu: non
- possède un état discret: non
- nom de la fonction de calcul: can
CAN_f.sci
c can.f Analog to Digital Convertor
c IRCOM Group - A. Layec
c REVISION HISTORY :
c $Log$
c
subroutine can(flag,nevprt,t,xd,x,nx,z,nz,tvec,ntvec,
& rpar,nrpar,ipar,nipar,u,nu,y,ny)
double precision t,xd(*),x(*),z(*),tvec(*),rpar(*),u(*),y(*)
integer flag,nevprt,nx,nz,ntvec,nrpar,ipar(*)
integer nipar,nu,ny
integer i,j
double precision fsr
do 15 i=1,nu
if(ipar(i).eq.1)then
if (u(i).lt.0.0d0)then
y(i)=rpar(i)*(ANINT(u(i)/rpar(i)+0.5d0))
else
y(i)=rpar(i)*(ANINT(u(i)/rpar(i)-0.5d0))
endif
elseif(ipar(i).eq.2)then
c qzrnd.f
if (u(i).lt.0.0d0)then
y(i)=rpar(i)*(ANINT(u(i)/rpar(i)+0.5d0)-0.5d0)
else
y(i)=rpar(i)*(ANINT(u(i)/rpar(i)-0.5d0)+0.5d0)
endif
elseif(ipar(i).eq.3) then
c qzflr.f
y(i)=rpar(i)*ANINT(u(i)/rpar(i)+0.5d0)
elseif(ipar(i).eq.4) then
c qzcel.f
y(i)=rpar(i)*ANINT(u(i)/rpar(i)-0.5d0)
endif
15 continue
do 20 i=1,nu
fsr=(2**ipar(i+nu))*rpar(i)
if(y(i).lt.rpar(nu+i)) then
y(i)=rpar(nu+i)
elseif(y(i).gt.(rpar(nu+i)+fsr))then
y(i)=rpar(nu+i)+fsr
endif
c write(6,'(''fsr='',e10.3,'' ipar(i+nu)='',i1)') fsr,ipar(i+nu)
c write(6,'(''rpar(nu+i)+fsr='',e10.3)') rpar(nu+i)+fsr
20 continue
do 30 i=1,nu
y(i)=aint( (y(i)-rpar(nu+i))/rpar(i))
c write(6,'(''y(i)='',e10.3,''s= '',i1)') y(i),2**(ipar(i+nu)-1)
if(ipar(2*nu+i).eq.1)then
y(i)=y(i)-(2**(ipar(i+nu)-1))
endif
30 continue
end
IRCOM Group
Alan Layec