Главная » Каталог    
рефераты Разделы рефераты
рефераты
рефератыГлавная

рефератыБиология

рефератыБухгалтерский учет и аудит

рефератыВоенная кафедра

рефератыГеография

рефератыГеология

рефератыГрафология

рефератыДеньги и кредит

рефератыЕстествознание

рефератыЗоология

рефератыИнвестиции

рефератыИностранные языки

рефератыИскусство

рефератыИстория

рефератыКартография

рефератыКомпьютерные сети

рефератыКомпьютеры ЭВМ

рефератыКосметология

рефератыКультурология

рефератыЛитература

рефератыМаркетинг

рефератыМатематика

рефератыМашиностроение

рефератыМедицина

рефератыМенеджмент

рефератыМузыка

рефератыНаука и техника

рефератыПедагогика

рефератыПраво

рефератыПромышленность производство

рефератыРадиоэлектроника

рефератыРеклама

рефератыРефераты по геологии

рефератыМедицинские наукам

рефератыУправление

рефератыФизика

рефератыФилософия

рефератыФинансы

рефератыФотография

рефератыХимия

рефератыЭкономика

рефераты
рефераты Информация рефераты
рефераты
рефераты

Разработка системы самоконтроля аналого цифрового преобразователя


program
ADC_model_fixed_1;
uses
crt;
type
o=array[1
.. 100,1 .. 100] of integer;
q=array[1
.. 100] of boolean;
w=array[1
.. 9] of boolean; { 9 - enabled input }
var
data : q;
    error:o;
    in_data :w;
   
i,j,e,n,x_coor,max,orig,a,s,d,counter:integer;
    test1_comp,test3_comp:boolean;
const
    t=true;
    f=false;
{-----------------------------------------------------------------------}
procedure
clear_array;
begin
 for i:=1 to 100 do data[i]:=f; {if t then
error }
end;
{-----------------------------------------------------------------------}
procedure
set_in_data1;
begin
test3_comp:=t;
test1_comp:=f;
in_data[1]:=f;
in_data[2]:=f;
in_data[3]:=f;
in_data[4]:=f;
in_data[5]:=f;
in_data[6]:=f;
in_data[7]:=f;
in_data[8]:=f;
in_data[9]:=f;
end;
{-----------------------------------------------------------------------}
procedure
set_in_data2;
begin
test3_comp:=f;
test1_comp:=f;
in_data[1]:=t;
in_data[2]:=f;
in_data[3]:=f;
in_data[4]:=f;
in_data[5]:=f;
in_data[6]:=f;
in_data[7]:=f;
in_data[8]:=f;
in_data[9]:=f;
end;
{-----------------------------------------------------------------------}
procedure
set_in_data3;
begin
test3_comp:=f;
test1_comp:=f;
in_data[1]:=t;
in_data[2]:=t;
in_data[3]:=f;
in_data[4]:=f;
in_data[5]:=f;
in_data[6]:=f;
in_data[7]:=f;
in_data[8]:=f;
in_data[9]:=f;
end;
{-----------------------------------------------------------------------}
procedure
set_in_data4;
begin
test3_comp:=f;
test1_comp:=f;
in_data[1]:=t;
in_data[2]:=t;
in_data[3]:=t;
in_data[4]:=f;
in_data[5]:=f;
in_data[6]:=f;
in_data[7]:=f;
in_data[8]:=f;
in_data[9]:=f;
end;
{-----------------------------------------------------------------------}
procedure
set_in_data5;
begin
test3_comp:=f;
test1_comp:=f;
in_data[1]:=t;
in_data[2]:=t;
in_data[3]:=t;
in_data[4]:=t;
in_data[5]:=f;
in_data[6]:=f;
in_data[7]:=f;
in_data[8]:=f;
in_data[9]:=f;
end;
{-----------------------------------------------------------------------}
procedure
set_in_data6;
begin
test3_comp:=f;
test1_comp:=f;
in_data[1]:=t;
in_data[2]:=t;
in_data[3]:=t;
in_data[4]:=t;
in_data[5]:=t;
in_data[6]:=f;
in_data[7]:=f;
in_data[8]:=f;
in_data[9]:=f;
end;
{-----------------------------------------------------------------------}
procedure
set_in_data7;
begin
test3_comp:=f;
test1_comp:=f;
in_data[1]:=t;
in_data[2]:=t;
in_data[3]:=t;
in_data[4]:=t;
in_data[5]:=t;
in_data[6]:=t;
in_data[7]:=f;
in_data[8]:=f;
in_data[9]:=f;
end;
{-----------------------------------------------------------------------}
procedure
set_in_data8;
begin
test3_comp:=f;
test1_comp:=t;
in_data[1]:=t;
in_data[2]:=t;
in_data[3]:=t;
in_data[4]:=t;
in_data[5]:=t;
in_data[6]:=t;
in_data[7]:=t;
in_data[8]:=f;
in_data[9]:=f;
end;
{-----------------------------------------------------------------------}
procedure
set_error;
begin
data[e]:=t;
e:=e+1;
end;
{-----------------------------------------------------------------------}
procedure
fixed_false_test;
begin
{first_line}
if data[1]=true
then data[1]:=t else
data[1]:=not(in_data[2]);
if
data[2]=true then data[2]:=t else
data[2]:=not(in_data[3]);
if
data[3]=true then data[3]:=t else
data[3]:=not(in_data[4]);
if
data[4]=true then data[4]:=t else
data[4]:=not(in_data[6]);
{second_line}
if
data[5]=true then data[5]:=t else
data[5]:=not(in_data[9]);
if
data[6]=true then data[6]:=t else
data[6]:=not(in_data[1]);
if
data[7]=true then data[7]:=t else
data[7]:=not(data[1]);
if
data[8]=true then data[8]:=t else
data[8]:=not(data[2]);
if
data[9]=true then data[9]:=t else
data[9]:=not(data[3]);
if
data[10]=true then data[10]:=t else
data[10]:=not(in_data[5]);
if
data[11]=true then data[11]:=t else
data[11]:=not(data[4]);
if
data[12]=true then data[12]:=t else
data[12]:=not(in_data[7]);
{third_line}
if
data[13]=true then data[13]:=t else
data[13]:=(data[5]
and data [6]);
if
data[14]=true then data[14]:=t else
data[14]:=(data[5]
and data [1]);
if
data[15]=true then data[15]:=t else
data[15]:=(data[5]
and data [2]);
if
data[16]=true then data[16]:=t else
data[16]:=(data[5]
and data [3]);
if
data[17]=true then data[17]:=t else
data[17]:=(data[5]
and data [7]);
if
data[18]=true then data[18]:=t else
data[18]:=(data[10]
and data [8]);
if
data[19]=true then data[19]:=t else
data[19]:=(data[5]
and data [4]);
if
data[20]=true then data[20]:=t else
data[20]:=(data[8]
and data [9]);
if
data[21]=true then data[21]:=t else
data[21]:=(data[5]
and data [7]);
if
data[22]=true then data[22]:=t else
data[22]:=(data[9]
and data [12]);
if
data[23]=true then data[23]:=t else
data[23]:=(in_data[1]
and in_data[2]);
if
data[24]=true then data[24]:=t else
data[24]:=(in_data[3]
and in_data[4]);
if
data[25]=true then data[25]:=t else
data[25]:=(in_data[5]
and in_data[6]);
if
data[26]=true then data[26]:=t else
data[26]:=(in_data[7]
and in_data[8]);
{fourth_line}
if
data[27]=true then data[27]:=t else
data[27]:=(data[7]
and data [15]);
if
data[28]=true then data[28]:=t else
data[28]:=(data[17]
and data [18]);
if data[29]=true
then data[29]:=t else
data[29]:=(data[19]
and data [20]);
if
data[30]=true then data[30]:=t else
data[30]:=(data[21]
and data [22]);
if
data[31]=true then data[31]:=t else
data[31]:=(data[23]
and data [24]);
if
data[32]=true then data[32]:=t else
data[32]:=(data[25]
and data [26]);
{fifth_line}
if
data[33]=true then data[33]:=t else
data[33]:=(data[9]
and data [28]);
if
data[34]=true then data[34]:=t else
data[34]:=(data[11]
and data [30]);
if
data[35]=true then data[35]:=t else
data[35]:=(data[31]
and data [32]);
{sixth_line}
if
data[36]=true then data[36]:=t else
data[36]:=(data[13]
and data [14]);
if
data[37]=true then data[37]:=t else
data[37]:=(data[16]
or data [27]);
if
data[38]=true then data[38]:=t else
data[38]:=(data[13]
or data [14]);
if
data[39]=true then data[39]:=t else
data[39]:=(data[29]
or data [33]);
if
data[40]=true then data[40]:=t else
data[40]:=(data[27]
or data [13]);
if
data[41]=true then data[41]:=t else
data[41]:=(data[33]
or data [34]);
if data[42]=true
then data[42]:=t else
data[42]:=not(data[35]
and data [5]);
{seventh_line}
if
data[43]=true then data[43]:=t else
data[43]:=not(data[36]
or data [37]);
if
data[44]=true then data[44]:=t else
data[44]:=not(data[39]
or data [38]);
if
data[45]=true then data[45]:=t else
data[45]:=not(data[40]
or data [41]);
if
data[46]=true then data[46]:=t else
data[46]:=not(data[42]
and data [5]);
{eight_line}
if
data[47]=true then data[47]:=t else
data[47]:=not(data[46]);
{nineth
line}
if
data[48]=true then data[48]:=t else
data[48]:=(data[46]
xor data[42]);
if
data[49]=true then data[49]:=t else
data[49]:=(data[46]
xor data[42]);
if
data[50]=true then data[50]:=t else
data[50]:=not(data[42]
and data[47]);
{tenth
line}
if
data[51]=true then data[51]:=t else
data[51]:=(data[44]
and data[45]);
{eleventh
line}
if
data[52]=true then data[52]:=t else
data[52]:=(data[44]
or data[45]);
if
data[53]=true then data[53]:=t else
data[53]:=(data[43]
or data[52]);
if
data[54]=true then data[54]:=t else
data[54]:=(test3_comp
and data[53]);
if
data[55]=true then data[55]:=t else
data[55]:=not(data[43]
and data[51]);
if
data[56]=true then data[56]:=t else
data[56]:=(test1_comp
and data[55]);
if
data[57]=true then data[57]:=t else
data[57]:=(data[48]
and data[56]);
if
data[58]=true then data[58]:=t else
data[58]:=not(data[49]);
if
data[59]=true then data[59]:=t else
data[59]:=(data[50]
and data[55]);
if
data[60]=true then data[60]:=t else
data[60]:=(data[59]
and data[55]);
{writeln
('A2=',data[43],' ','A1=',data[44],' ','A0=',data[45]);
writeln
('Error1=',data[57],' ','Error2=',data[58],
  ' ','Error3=',data[54],'
','Error4=',data[60]);}
if
((data[57]=t) or (data[58]=t) or (data[54]=t) or (data[60]=t)) then
 begin
  counter:=counter+1;
  error[x_coor,n]:=j;
  x_coor:=x_coor+1;
  if max<x_coor then max:=x_coor;
 end;
end;
{-----------------------------------------------------------------------}
begin
 clrscr;
 writeln
('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');
 writeln ('!!                 ЂЈҐў Ђ«ҐЄбҐ© ђ-682                 !!');
 writeln
('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');
 writeln
('#########################################################');
 writeln ('#* 
Џ®¤бз%в Є®«ЁзҐбвў ­ҐЁбЇаў­®б⥩ , ®ЇаҐ¤Ґ«пҐ¬ле   *#');
 writeln ('#*               бЁб⥬®© ᬮЄ®­ва®«п Ђ–Џ             *#');
 writeln
('#*******************************************************#');
 writeln ('#*     ‚Ё¤ ­ҐЁбЇаў­®бвЁ : ®¤Ё­®з­п , дЁЄбжЁп 1      *#');
 writeln
('#*******************************************************#');
 writeln;
 writeln ('ЋЎ­а㦥­® ­ҐЁбЇаў­®б⥩
: 43 Ё§ 60 (71.6%)');
 writeln;
 max:=1;
 e:=1;
 counter:=0;
 n:=1;
 x_coor:=1;
 for j:=1 to 60 do
  begin
   clear_array;
   set_error;
   set_in_data1;
   fixed_false_test;
  end;
{  writeln(counter);}
  e:=1;
  n:=2;
  x_coor:=1;
  for j:=1 to 60 do
  begin
   clear_array;
   set_error;
   set_in_data2;
   fixed_false_test;
  end;
  e:=1;
  n:=3;
  x_coor:=1;
  for j:=1 to 60 do
  begin
   clear_array;
   set_error;
   set_in_data3;
   fixed_false_test;
  end;
  e:=1;
  n:=4;
  x_coor:=1;
  for j:=1 to 60 do
  begin
   clear_array;
   set_error;
   set_in_data4;
   fixed_false_test;
  end;
  e:=1;
  n:=5;
  x_coor:=1;
  for j:=1 to 60 do
  begin
   clear_array;
   set_error;
   set_in_data5;
   fixed_false_test;
  end;
  e:=1;
  n:=6;
  x_coor:=1;
  for j:=1 to 60 do
  begin
   clear_array;
   set_error;
   set_in_data6;
   fixed_false_test;
  end;
  e:=1;
  n:=7;
  x_coor:=1;
  for j:=1 to 60 do
  begin
   clear_array;
   set_error;
   set_in_data7;
   fixed_false_test;
  end;
  e:=1;
  n:=8;
  x_coor:=1;
  for j:=1 to 60 do
  begin
   clear_array;
   set_error;
   set_in_data8;
   fixed_false_test;
  end;
  for i:=1 to 8 do
   begin
    write('‚室­®© ­Ў®а ',i,' ');
    for j:=1 to max-1 do
     begin
      if error[j,i]<>0 then
      if error[j,i]<10 then write('   ',error[j,i]) else write('  ',error[j,i])
     end;
     writeln('');
   end;
end.
program
ADC_model_fixed_1;
uses
crt;
type
o=array[1
.. 100,1 .. 100] of integer;
q=array[1
.. 100] of boolean;
w=array[1
.. 9] of boolean; { 9 - enabled input }
var
data : q;
    error:o;
    in_data :w;
   
i,j,e,n,x_coor,max,orig,a,s,d,counter:integer;
    test1_comp,test3_comp:boolean;
const
    t=true;
    f=false;
{-----------------------------------------------------------------------}
procedure
clear_array;
begin
 for i:=1 to 100 do data[i]:=f; {if t then
error}
end;
{-----------------------------------------------------------------------}
procedure
set_in_data1;
begin
test3_comp:=t;
test1_comp:=f;
in_data[1]:=f;
in_data[2]:=f;
in_data[3]:=f;
in_data[4]:=f;
in_data[5]:=f;
in_data[6]:=f;
in_data[7]:=f;
in_data[8]:=f;
in_data[9]:=f;
end;
{-----------------------------------------------------------------------}
procedure
set_in_data2;
begin
test3_comp:=f;
test1_comp:=f;
in_data[1]:=t;
in_data[2]:=f;
in_data[3]:=f;
in_data[4]:=f;
in_data[5]:=f;
in_data[6]:=f;
in_data[7]:=f;
in_data[8]:=f;
in_data[9]:=f;
end;
{-----------------------------------------------------------------------}
procedure
set_in_data3;
begin
test3_comp:=f;
test1_comp:=f;
in_data[1]:=t;
in_data[2]:=t;
in_data[3]:=f;
in_data[4]:=f;
in_data[5]:=f;
in_data[6]:=f;
in_data[7]:=f;
in_data[8]:=f;
in_data[9]:=f;
end;
{-----------------------------------------------------------------------}
procedure
set_in_data4;
begin
test3_comp:=f;
test1_comp:=f;
in_data[1]:=t;
in_data[2]:=t;
in_data[3]:=t;
in_data[4]:=f;
in_data[5]:=f;
in_data[6]:=f;
in_data[7]:=f;
in_data[8]:=f;
in_data[9]:=f;
end;
{-----------------------------------------------------------------------}
procedure
set_in_data5;
begin
test3_comp:=f;
test1_comp:=f;
in_data[1]:=t;
in_data[2]:=t;
in_data[3]:=t;
in_data[4]:=t;
in_data[5]:=f;
in_data[6]:=f;
in_data[7]:=f;
in_data[8]:=f;
in_data[9]:=f;
end;
{-----------------------------------------------------------------------}
procedure
set_in_data6;
begin
test3_comp:=f;
test1_comp:=f;
in_data[1]:=t;
in_data[2]:=t;
in_data[3]:=t;
in_data[4]:=t;
in_data[5]:=t;
in_data[6]:=f;
in_data[7]:=f;
in_data[8]:=f;
in_data[9]:=f;
end;
{-----------------------------------------------------------------------}
procedure
set_in_data7;
begin
test3_comp:=f;
test1_comp:=f;
in_data[1]:=t;
in_data[2]:=t;
in_data[3]:=t;
in_data[4]:=t;
in_data[5]:=t;
in_data[6]:=t;
in_data[7]:=f;
in_data[8]:=f;
in_data[9]:=f;
end;
{-----------------------------------------------------------------------}
procedure
set_in_data8;
begin
test3_comp:=f;
test1_comp:=t;
in_data[1]:=t;
in_data[2]:=t;
in_data[3]:=t;
in_data[4]:=t;
in_data[5]:=t;
in_data[6]:=t;
in_data[7]:=t;
in_data[8]:=f;
in_data[9]:=f;
end;
{-----------------------------------------------------------------------}
procedure
set_error;
begin
data[e]:=t;
e:=e+1;
end;
{-----------------------------------------------------------------------}
procedure
fixed_false_test;
begin
{first_line}
if data[1]=true
then data[1]:=f else
data[1]:=not(in_data[2]);
if
data[2]=true then data[2]:=f else
data[2]:=not(in_data[3]);
if
data[3]=true then data[3]:=f else
data[3]:=not(in_data[4]);
if
data[4]=true then data[4]:=f else
data[4]:=not(in_data[6]);
{second_line}
if
data[5]=true then data[5]:=f else
data[5]:=not(in_data[9]);
if
data[6]=true then data[6]:=f else
data[6]:=not(in_data[1]);
if
data[7]=true then data[7]:=f else
data[7]:=not(data[1]);
if
data[8]=true then data[8]:=f else
data[8]:=not(data[2]);
if
data[9]=true then data[9]:=f else
data[9]:=not(data[3]);
if
data[10]=true then data[10]:=f else
data[10]:=not(in_data[5]);
if
data[11]=true then data[11]:=f else
data[11]:=not(data[4]);
if
data[12]=true then data[12]:=f else
data[12]:=not(in_data[7]);
{third_line}
if
data[13]=true then data[13]:=f else
data[13]:=(data[5]
and data [6]);
if
data[14]=true then data[14]:=f else
data[14]:=(data[5]
and data [1]);
if
data[15]=true then data[15]:=f else
data[15]:=(data[5]
and data [2]);
if
data[16]=true then data[16]:=f else
data[16]:=(data[5]
and data [3]);
if
data[17]=true then data[17]:=f else
data[17]:=(data[5]
and data [7]);
if
data[18]=true then data[18]:=f else
data[18]:=(data[10]
and data [8]);
if
data[19]=true then data[19]:=f else
data[19]:=(data[5]
and data [4]);
if
data[20]=true then data[20]:=f else
data[20]:=(data[8]
and data [9]);
if
data[21]=true then data[21]:=f else
data[21]:=(data[5]
and data [7]);
if
data[22]=true then data[22]:=f else
data[22]:=(data[9]
and data [12]);
if
data[23]=true then data[23]:=f else
data[23]:=(in_data[1]
and in_data[2]);
if
data[24]=true then data[24]:=f else
data[24]:=(in_data[3]
and in_data[4]);
if
data[25]=true then data[25]:=f else
data[25]:=(in_data[5]
and in_data[6]);
if
data[26]=true then data[26]:=f else
data[26]:=(in_data[7]
and in_data[8]);
{fourth_line}
if
data[27]=true then data[27]:=f else
data[27]:=(data[7]
and data [15]);
if
data[28]=true then data[28]:=f else
data[28]:=(data[17]
and data [18]);
if data[29]=true
then data[29]:=f else
data[29]:=(data[19]
and data [20]);
if
data[30]=true then data[30]:=f else
data[30]:=(data[21]
and data [22]);
if
data[31]=true then data[31]:=f else
data[31]:=(data[23]
and data [24]);
if
data[32]=true then data[32]:=f else
data[32]:=(data[25]
and data [26]);
{fifth_line}
if
data[33]=true then data[33]:=f else
data[33]:=(data[9]
and data [28]);
if
data[34]=true then data[34]:=f else
data[34]:=(data[11]
and data [30]);
if
data[35]=true then data[35]:=f else
data[35]:=(data[31]
and data [32]);
{sixth_line}
if
data[36]=true then data[36]:=f else
data[36]:=(data[13]
and data [14]);
if
data[37]=true then data[37]:=f else
data[37]:=(data[16]
or data [27]);
if
data[38]=true then data[38]:=f else
data[38]:=(data[13]
or data [14]);
if
data[39]=true then data[39]:=f else
data[39]:=(data[29]
or data [33]);
if
data[40]=true then data[40]:=f else
data[40]:=(data[27]
or data [13]);
if
data[41]=true then data[41]:=f else
data[41]:=(data[33]
or data [34]);
if
data[42]=true then data[42]:=f else
data[42]:=not(data[35]
and data [5]);
{seventh_line}
if
data[43]=true then data[43]:=f else
data[43]:=not(data[36]
or data [37]);
if
data[44]=true then data[44]:=f else
data[44]:=not(data[39]
or data [38]);
if
data[45]=true then data[45]:=f else
data[45]:=not(data[40]
or data [41]);
if
data[46]=true then data[46]:=f else
data[46]:=not(data[42]
and data [5]);
{eight_line}
if
data[47]=true then data[47]:=f else
data[47]:=not(data[46]);
{nineth
line}
if
data[48]=true then data[48]:=f else
data[48]:=(data[46]
xor data[42]);
if
data[49]=true then data[49]:=f else
data[49]:=(data[46]
xor data[42]);
if
data[50]=true then data[50]:=f else
data[50]:=not(data[42]
and data[47]);
{tenth
line}
if
data[51]=true then data[51]:=f else
data[51]:=(data[44]
and data[45]);
{eleventh
line}
if
data[52]=true then data[52]:=f else
data[52]:=(data[44]
or data[45]);
if
data[53]=true then data[53]:=f else
data[53]:=(data[43]
or data[52]);
if
data[54]=true then data[54]:=f else
data[54]:=(test3_comp
and data[53]);
if
data[55]=true then data[55]:=f else
data[55]:=not(data[43]
and data[51]);
if
data[56]=true then data[56]:=f else
data[56]:=(test1_comp
and data[55]);
if
data[57]=true then data[57]:=f else
data[57]:=(data[48]
and data[56]);
if
data[58]=true then data[58]:=f else
data[58]:=not(data[49]);
if
data[59]=true then data[59]:=f else
data[59]:=(data[50]
and data[55]);
if
data[60]=true then data[60]:=f else
data[60]:=(data[59]
and data[55]);
{writeln
('A2=',data[43],' ','A1=',data[44],' ','A0=',data[45]);
writeln
('Error1=',data[57],' ','Error2=',data[58],
  ' ','Error3=',data[54],'
','Error4=',data[60]);}
if
((data[57]=t) or (data[58]=t) or (data[54]=t) or (data[60]=t)) then
 begin
  counter:=counter+1;
  error[x_coor,n]:=j;
  x_coor:=x_coor+1;
  if max<x_coor then max:=x_coor;
 end;
end;
{-----------------------------------------------------------------------}
begin
 clrscr;
 writeln
('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');
 writeln ('!!                 ЂЈҐў Ђ«ҐЄбҐ© ђ-682                 !!');
 writeln
('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!');
 writeln
('#########################################################');
 writeln ('#* 
Џ®¤бз%в Є®«ЁзҐбвў ­ҐЁбЇаў­®б⥩ , ®ЇаҐ¤Ґ«пҐ¬ле   *#');
 writeln ('#*               бЁб⥬®© ᬮЄ®­ва®«п Ђ–Џ             *#');
 writeln
('#*******************************************************#');
 writeln ('#*     ‚Ё¤ ­ҐЁбЇаў­®бвЁ : ®¤Ё­®з­п , дЁЄбжЁп 0      *#');
 writeln
('#*******************************************************#');
 writeln;
 writeln ('');
 writeln;
 max:=1;
 e:=1;
 counter:=0;
 n:=1;
 x_coor:=1;
 for j:=1 to 60 do
  begin
   clear_array;
   set_error;
   set_in_data1;
   fixed_false_test;
  end;
  e:=1;
  n:=2;
  x_coor:=1;
  for j:=1 to 60 do
  begin
   clear_array;
   set_error;
   set_in_data2;
   fixed_false_test;
  end;
  e:=1;
  n:=3;
  x_coor:=1;
  for j:=1 to 60 do
  begin
   clear_array;
   set_error;
   set_in_data3;
   fixed_false_test;
  end;
  e:=1;
  n:=4;
  x_coor:=1;
  for j:=1 to 60 do
  begin
   clear_array;
   set_error;
   set_in_data4;
   fixed_false_test;
  end;
  e:=1;
  n:=5;
  x_coor:=1;
  for j:=1 to 60 do
  begin
   clear_array;
   set_error;
   set_in_data5;
   fixed_false_test;
  end;
  e:=1;
  n:=6;
  x_coor:=1;
  for j:=1 to 60 do
  begin
   clear_array;
   set_error;
   set_in_data6;
   fixed_false_test;
  end;
  e:=1;
  n:=7;
  x_coor:=1;
  for j:=1 to 60 do
  begin
   clear_array;
   set_error;
   set_in_data7;
   fixed_false_test;
  end;
  e:=1;
  n:=8;
  x_coor:=1;
  for j:=1 to 60 do
  begin
   clear_array;
   set_error;
   set_in_data8;
   fixed_false_test;
  end;
  for i:=1 to 8 do
   begin
    write ('‚室­®© ­Ў®а ',i,' ');
    for j:=1 to max-1 do
     begin
      if error[j,i]<10 then write('  ',error[j,i]) else write(' ',error[j,i])
     end;
     writeln('');
   end;
end.
Задание на
курсовую работу.
Спроектировать 
систему  самоконтроля  аналого-цифрового  прео-
бразователя, 
которая бы в течение работы  АЦП
проверяла его исправность.
Сущность метода
АЦП.
Часто требуется преобразовать аналоговый сигнал в число,
пропорциональное амплитуде. Это актуально для измерительных приборов,  где  информация  выдается 
в  виде  аналогового  сигнала,  звукоснимателей  и  т.д. 
В
данной работе используется метод параллельного кодирования .
Параллельное кодирование. В этом
методе напряжение входного сигнала подается на один из входов п компараторов одновременно; другие
входы компараторов подключены к п
опорным источникам с равномерно распределенными напряжениями. Шифратор с
приоритетом формирует цифровой выходной сигнал, соответствующий самому старшему
компаратору из активизированных входным сигналом (рис. 1).
Параллельное
кодирование (один из видов «мгновенного» кодирования) - это самый быстрый метод А/Ц-преобра-зования. Время
задержки от входа до выхода равно сумме времен задержки на компараторе и
шифраторе. Параллельные преобразователи, выпускаемые промышленностью, имеют до 1024 уровней квантования (с
выходами до 16
разрядов). При большем числе разрядов они становятся дорогими и громоздкими.
Быстродействие их колеблется от 15 до 300 млн. отсчетов в секунду.
 На
рис.1 приведена общая схема паралельного АЦП.
Ниже
приведена схема приоритетного шифратора 74F148 , имеющего 8 входных и 3
выходных  информационных линии.
 
                                           Таблица 1.
Таблица истинности приоритетного шифратора 74F148.
Принцип
работы приоритетного шифратора :
Шифратор получает данные с восьми входных линий
, которые активны в состоянии логического нуля и преобразует их в три выходных
линии , также считающиеся активными в состоянии логического нуля. Значение
приоритета связывается с каждым входом и когда две или более входных линий
одновременно активны , значение приоритета старшего входа передаётся на выход ,
вход 7 имеет наивысший приоритет. Логическая единица на EI(Enable Input) установит на всех выходах
неактивное состояние. Выход GS(Group Signal) активен, когда хотя бы один из входов активен. EO(Enabled Output) активен , когда все входы
неактивны.EO и EI используются при
каскадировании приоритетных шифраторов.
Рис
3. Расширение разрядов АЦП.
Комментарии к схеме рис. 3.
0-7 (на обоих шифраторах) – информационные
входные линии.
А0-А4 – информационные выходные линии.
Enable – логический ноль разрешает работу шифратора.
FLAG – если ноль, то хотя бы один их входов активен.
Разработка
системы самоконтроля.
В
литературе нами было обнаружено  два
типа систем самоконтроля :
1.
Дублирование
преобразователя и последующее сравнение 
выходов.
2.
Обратное
преобразование цифрового сигнала в аналоговый и сравнение его с исходным.
Эти
методы  имеют существенный недостаток –
громоздкая схема контроля и как следствие - понижение надёжности , повышение
цены изделия ,  возникает проблема
«сторожа за сторожем».
Имеет
смысл разработка системы контроля , которая будет обнаруживать
меньшее
количество неисправностей (по сравнению с методами , указаными выше)  аналого-цифрового преобразователя , но будет
возможно более простой и надёжной.
Рис. 4. Функциональная схема АЦП с системой
самоконтроля.
Описание системы тестов.
Из рис.4 видно что местами подключения схемы
самоконтоля являются входы  и выходы
аналогового участка схемы и приоритетного шифратора , реализованные в виде
интегральныз микросхем. Принцип построения тестов следующий : при определённом значении на
входе АЦП происходит просмотр выходных значений и если обнаружено
нессответствие , то выдаётся сообщение о ошибке ; контроль происходит с учётом
особенностей работы схемы приоритетного шифратора (подробнее см. ниже).
Test1.
При
подаче нулевого потенциала  на вход АЦП
компаратор test1_comp разрешает тестирование - происходит анализ выходных
значений , в случае ,  если хотя бы один
из информационных выходов имеет нулевой уровень , либо GS=1;E0=0 не
соответствует действительности , выдаётся сообщение об ошибке.
Test2.
 В отличие от предыдущего теста , test2 контролтрует
схему в течение всего времени её работы , 
происходит сравнеиие значений GS и EO ,
и если они
равны , то выводится сообщение об ошибке.
Test3.
При
подаче на вход АЦП такого потенциала , при увеличении которого не происходит
изменения
значений информационных выходов А0-А2 ( в нашем случае 10V). 
На
входах I0-I7 – уровни логического нуля  (Uin=10 V) ,
компаратор test3_comp разрешает тестирование – происходит анализ выходных
значений , в случае , если хотя бы один из информационных выводов имеет уровень
логической единицы , то выводится сообщение об ошибке.
Test4.
Особенностью
работы приоритетного шифратора является то , что значения на вызодах EO и GS различны.
Когда на входах I0-I7 – уровни логической единицы (Uin=0) ,
GS=1 , EO=0 ;
В
остальных случаях GS=0 , EO=1. Test4 проверяет выход АЦП на
неединичные  значения и GS=0;EO=1;
Схема аналого-цифрового преобразователя с
системой самоконтроля представлена на рис. 5.
Комментарии к схеме рис.5
Элементы :
1-46 приоритетный шифратор
47-60 система самоконтроля
Test1_Error, Test2_Error, Test3_Error,
Test4_Error – индикаторы
ошибок
A0,A1,A2 – выходные линии
Uin – вход АЦП
I0-I7 –  линии связи
аналогово и цифрового участков схемы. 
Моделирование
исправной схемы.
Моделирование
исправной схемы призводится при помощи
программного комплекса Electronics Workbench. 5.12. , представляющего собой
программный продукт, позволяющий производить моделирование, тестирование,
разработку и отладку электрических цепей.
Выбор
EWB для моделирования исправной схемы обусловлен тем , что представляет
значительное удобство графический интерфейс процесса , а также то , что
программа позволяет работать с аналоговым участком схемы.
                                                                                    Таблица
2                                     
                                                                                    Результаты
моделирования. Uin EI* E0 GS I2 I1 I0 Error1 Error2 Error3 Error4 10 F T F F F F F F F F 9 F T F F F T F F F F 8 F T F F T F F F F F 7 F T F F T T F F F F 5 F T F T F F F F F F 4 F T F T F T F F F F 2 F T F T T F F F F F 0 F F T T T T F F F F
·
EI=const
F – логический ноль
Т –
логическая единица
Error1, Error2, Error3, Error4 – логическая единица  указывает на наличие ошибки , обнаруженной
системой самоконтроля.
Как
видно из результатов моделирования , ни при 
одном допустимом входном наборе сообщение об ошибке не появляется.
Моделирование
неисправной схемы.
Целью моделирования неисправностей является
определение доли ошибок АЦП , обнаруживающихся системой контроля. Для решения
данной задачи использовались самостоятельно разработанные программы , исходные
тексты которых приведёны в приложении.
Описание работы программы моделирования
неисправностей.
Моделируются
неисправности следующего вида: одиночные, фиксация 0 и 1.
Логическое
описание схемы находится в исходном тексте программы, для изменения
моделируемой схемы необходима значительная переделка программы и её компиляция
, поэтому данная программа предназначена исключительно для моделирования
неисправностей данной схемы. Моделирование производится следующим образом : на
линиях схемы поочерёдно устанавливаются 
обрыв и замыкание на общий провод и производится моделирование схемы с
учётом данной неисправности. 
В
таблицах 3 и 4 приведены результаты моделирования неисправностей. Записям в
таблицах соответствуют неисправности на выходе соответствующего элемента.
                                                          Таблица 3.
                                                          
Результаты моделирования неисправностей.
                                                           Вид
неисправности: одиночная, фиксация 1.
  0 V 35 43 44 45 46 50 52 53 54 56 57 58 59 60 2 V 35 46 50 54 56 57 58 59 60 4 V 35 46 50 54 56 57 58 59 60 5 V 35 46 50 54 56 57 58 59 60 7 V 32 35 46 50 54 56 57 58 59 60 8 V 32 35 46 50 54 56 57 58 59 60 9 V 26 32 35 46 50 54 56 57 58 59 60 10 V 1 2 3 4 6 10 12 13 14 15 16 18 19 22 27 28 29 30 33 34 36 37 38 39 40 41 46 54 55 56 57 58 60
 
  
                                                           Таблица
4.
                                                          
Результаты моделирования неисправностей.
                                                           Вид
неисправности: одиночная, фиксация 0. 0 V 5 6 13 38 40 42 47 49 2 V 5 42 47 49 4 V 5 42 47 49 5 V 5 42 47 49 7 V 5 42 47 49 8 V 5 42 47 49 9 V 5 42 47 49 10 V 5 43 44 45 49 51
На рис. 6 и 7
представлены информативности водных наборов с точки зрения обнаружения ошибок.
 
Заключение.
1. Несмотря на то , что схема контроля
составляет пятую часть от элементной базы схемы , eю обнаружено 71% и 20%
неисправностей фиксации 1 и 0 соответственно.
2.
При увеличении разрядов АЦП разница между основной схемой и контроля
увеличивается
и схема контроля вносит всё меньший относительный вклад в надёжность изделия.
3.
В схеме контроля используются тесты двух типов :
  
a)тесты постоянной проверки (test1 и test3)
   б)тесты проверки лишь при
достижении критических значений (test1 и test3)
   Наибольший вклад в
количество обнаруженных неисправностей вносят тесты типа б , но необходимость
введения тестов постоянной проверки обусловлена тем , что возможно такое
использование АЦП , при котором  на вход не будут
подаваться предельные значения (тогда тесты
типа б не имеют смысла). 
Содержание.
Задание на курсовую
работу.                                       
2
Сущность метода АЦП.                                                 
2    
Разработка системы
самоконтроля.                           
6       
Моделирование исправной
схемы.                             

Моделирование неисправной
схемы.                          9            
Заключение.                                                                    
11       
Приложение.                                                                    12
Список
использованных источников                         25   
           Министерство общего и
профессионального образования РФ
          Дальневосточный Государственный
Технический Университет
                                            
                                                          Кафедра
ЭКТ  
Пояснительная записка к
курсовому проекту
Тема :
Разработка системы самоконтроля аналого-цифрового преобразователя.
                                                                                               
Выполнили студенты
                                                                                                группы
Р-682:
                                                                                               
Агаев А.
                                                                                            Воронов С.
                                                                                            Похилько Е.
                                                                                            Шичков Е.
         
                                                                                               
Проверил преподаватель:
                                                                                                Добржинский Ю.В.
Владивосток
1999
рефераты Рекомендуем рефератырефераты

     
Рефераты @2011