Разработка и проектирование функциональной схемы процессора для вычисления функции sin(j) методом "цифра за цифрой", страница 6

Цена по Квайну (без учета элементарных инверсов): 16

Следовательно применение JK- триггеров наиболее эффективно, так как цена б.ф. при этом меньше.

4.3.3. Синтез Yi+1

g3

000

100

101

001

011

111

110

010

0

1

0

1

1

1

*

*

1

1

0

1

0

1

1

*

*

0


g1

000

100

101

001

011

111

110

010

0

1

1

1

1

0

*

*

1

1

0

1

1

0

1

*

*

0


g2

000

100

101

001

011

111

110

01

0

1

0

1

1

1

*

*

1

1

0

0

1

0

1

*

*

1


15

 


5.Заключение

В общем и целом, этот процессор должен работать и при этом конечно же правильно. По моему мнению синтез УА следует производить не на мультиплексорах, а на элементах логики, это будет гораздо проще.

16

 

ПРИЛОЖЕНИЕ.

#include<stdio.h>

#include<math.h>

main()

{

signed char x,x1,o,y,y1,c;

int i,j;

float k;

char to_byte();

puts("\nВведите угол в радианах");

scanf("%f",&k);

o=to_byte(k);

y=0;

j=0;

x=to_byte(0.607259);

puts("\nX=");

putbyte(x);

puts("\nY=");

putbyte(y);

puts("\nO=");

putbyte(o);

puts("");

printf("|  X(i)  |   Xсд  |  Y(i)  |   Yсд  | О(i)  |3н| X(i+1) | Y(i+1) | O(i+1) |\n");

printf("-------------------------------------------------------------------------\n");

for (i=0;i<7;i++)

{

j++;

x1=x;

y1=y;

x1=x1>>i;

y1=y1>>i;

c=to_byte(atan(pow(2,-i)));

/*Начало вывода элементов  таблицы*/

  putchar('|') ;

putbyte(x);

putchar('|');

putbyte(x1);

putchar('|');

putbyte(y);

putchar('|');

putbyte(y1);

putchar('|');

putbyte(o);

/*Cледующие элементы пойдут после вычисления */

if ( fabs(k) >= 1) c=c>>1;

if (o>=0)

{

o=o-c;

y=y-x1;

x=x+y1;

putchar('|');

17

 

 


putchar('+');

}

else

{

o=o+c;

y=y+x1;

x=x-y1;

putchar('|');

putchar('-');

}

/*Окончание таблицы */

putchar('|');

putbyte(x);

putchar('|');

putbyte(y);

putchar('|');

putbyte(o);

putchar('|');

puts("");

}

puts("Синус равен:");

putbyte(-y);

puts("\nКосинус равен:");

putbyte(x);

puts("\n----------правильный----");

putbyte(to_byte(sin(k)));

puts("");

putbyte(to_byte(cos(k)));

printf("\n\nj=%d",j);

return;

}

/* Функция распечатки байта на экране */

int putbyte(byte)

char byte;

{

char i,k;

for (i=7;i>=0;i--)

{

k=pow(2,i);

if ( (byte & k) != 0) printf("1");

else printf("0");

}

return ;

}

/* Перевод константы в байт (тип char) из переменной float */

18

 

 


char

to_byte(b)

float b;

{

signed char d;

if (fabs(b)>=1 )

{b=b*64;

d=(char)b;

}

else

{

b=b*128;

d=(char)b;

}

return d;

}


ЛИТЕРАТУРА.

1.   Байков В.Д., Смолов В.Б.  Специализированные процессоры: Итерационные алгоритмы и структуры. М.: Радио и связь, 1985.- 288 с., ил.

2.   Бай ков В.Д., Смолов В.Б. Аппаратурная реализация элементарных функций в ЦВМ. Л., Изд-во Ленингр. Ун-та, 1975, 96с


20