[Logo] Форум DL
  [DL]  На главную страницу 
Индекс форума ->Учебный процесс ГГУ/СШ 27 ->Проектирование цифровых систем 1, 2, 3, 4, 5, 6, 7, 8, ... 25, 26, 27
Автор Сообщение
Михаил Долинский

Темы: 2010
Сообщений: 47872

Мой профиль
Здорово что
1) Сдано
2) Написан такой короткий изящный код.

Но
1) Мне кажется такой код можно писать, только если уверен, что не ошибёшься
(в принципе бота мы хотим именно так и научить писать и имена переменных меньше придумывать придётся)
Тем не менее пока предлагаю писать оба варианта
сначала последовательный - по одной операции в строке, как писали ребята выше
- такой код легче отлаживать в случае ошибок
и свёрнутый компактный
посмотрим какому бота легче научить.
2) Надо сдавать и схему, сгенерированную по этой микропрограмме.
3) По-моему, надо исправить некоторые недочёты

unsigned __bits(16) CBW(unsigned __bits(8) A) {return A;}
unsigned __bits(32) CWD(unsigned __bits(16) A) {return A;}
Мне кажется, они должны принимать и возвращать int

int __bits(16) IDIV(int __bits(32) A, int __bits(32) B) {return A/B;}

Этот можно оставить и таким
Но ещё нужно сделать DIV, в котором будет возвращаться два значения частное и остаток - это нужно для решения многих задач
Например для проверки делимости
А разделение возврата на два значения делать сдвигами
- и то надо как минимум показывать в библиотеке в комментариях
- или, если возможно, как-то define прикрутить, который будет из вывода библиотечной функции делать нужные переменные

unsigned __bits(3) ICMP(int __bits(32) A, int __bits(32) B) {return (A > B) ? 4 : (A == B) ? 2 : 1;
}
Надо давать пример получения выходных линий ICMP как я писал > = <
Чтобы потом их использовать

unsigned __bits(16) SUM(unsigned __bits(16) A, unsigned __bits(16) B) {return A+B;}

Мне кажется тоже должно быть int и на вводе и на выводе


 	One = ISUB(SUM(IDIV(a32,b32),c16),x32Tox16(IMUL(d16,a)));
	Zero = ISUB(b,x32Tox16(IMUL(SUM(c16,IDIV(a32,d32)),b)));

	A = ICMP(IMUL(a,d16),0);

	RES = MSb16x2(Zero, One, A);

Это очень красиво, молодец
Но повторюсь
Мне кажется такой код можно писать, только если уверен, что не ошибёшься
(в принципе бота мы хотим именно так и научить писать)
Тем не менее пока предлагаю писать оба варианта
сначала последовательный - по одной операции в строке как писали ребята выше
- такой код легче отлаживать в случае ошибок
а уж потом такой свёрнутый
проверять на DL разумеется оба

4) Предлагаю использовать #include - он поддерживается в Winter
чтобы сделать код более компактным, например так:

include <hlccad_lib.mpc>

int __in __bits(8) c;
int __in __bits(8) d;
int __in __bits(16) a;
int __in __bits(16) b;

int __out __bits(16) RES;

void main() {
	int __bits(16) One;
	int __bits(16) Zero;
	unsigned __bits(1) A;
	int __bits(16) c16 = CBW(c);
	int __bits(16) d16 = CBW(d);
	int __bits(16) a32 = CWD(a);
	int __bits(16) b32 = CWD(b);
	int __bits(16) c32 = CWD(c16);
	int __bits(16) d32 = CWD(d16);
	

	One = ISUB(SUM(IDIV(a32,b32),c16),x32Tox16(IMUL(d16,a)));
	Zero = ISUB(b,x32Tox16(IMUL(SUM(c16,IDIV(a32,d32)),b)));

	A = ICMP(IMUL(a,d16),0);

	RES = MSb16x2(Zero, One, A);
}


Где hlccad_lib.mpc содержит такие строки

unsigned __bits(16) CBW(unsigned __bits(8) A) {return A;}
unsigned __bits(32) CWD(unsigned __bits(16) A) {return A;}
int __bits(16) ISUB(int __bits(16) A, int __bits(16) B) {return A-B;}
int __bits(32) IMUL(int __bits(16) A, int __bits(16) B) {return A*B;}
int __bits(16) IDIV(int __bits(32) A, int __bits(32) B) {return A/B;}
unsigned __bits(16) x32Tox16(unsigned __bits(32) A) {return A;}
unsigned __bits(3) ICMP(int __bits(32) A, int __bits(32) B) {return (A > B) ? 4 : (A == B) ? 2 : 1;}
unsigned __bits(16) MSb16x2(unsigned __bits(16) Zero, unsigned __bits(16) One, unsigned __bits(1) A) {return A ? One : Zero;}
unsigned __bits(16) SUM(unsigned __bits(16) A, unsigned __bits(16) B) {return A+B;}

Ну и все другие функции библиотеки сюда же пихать

В перспективе идеально hlccad_lib.mpc разместить где-то в Winter и подключать оттуда.
А то сейчас всем этот файл нужно где-то брать - например с форума
Пока может и удобно чтобы все понимали реализацию, а когда всё наладится - незачем наверно.
Ангелина Булкина

Темы: 0
Сообщений: 15

Мой профиль
14.12 13:58 Сам-п2. Задача №2 0 / 100 Ошибка: Несовпадение RES:0=17700 [1 ns] Arifm.prd DelTA4 at NIT1 Win10 HLCCAD project
14.12 13:55 Сам-с1. Задача №2 100 / 100 Все тесты пройдены (основной + секретный). src.mpc DelTA4 at NIT1 Win10 Winter mpc

В CMPA прошло, в HLCCAD сгенерированная схема не прошла
https://dl.gsu.by/task.jsp?nid=2351890&cid=1335

int __in __bits(8) c ;
int __in __bits(8) d ;
int __in __bits(16) a;
int __in __bits(16) b;
int __out __bits(16) RES;



unsigned __bits(16) CBW(unsigned __bits(8) A) {return A;}

unsigned __bits(32) CWD(unsigned __bits(16) A) {return A;}

int __bits(16) ISUB(int __bits(16) A, int __bits(16) B) {return A-B;}

int __bits(32) IMUL(int __bits(16) A, int __bits(16) B) {return A*B;}

int __bits(16) IDIV(int __bits(32) A, int __bits(32) B) {return A/B;}

unsigned __bits(16) x32Tox16(unsigned __bits(32) A) {return A;}

unsigned __bits(3) ICMP(int __bits(32) A, int __bits(32) B) {return (A > B) ? 4 : (A == B) ? 2 : 1;}

unsigned __bits(16) MSb16x2(unsigned __bits(16) Zero, unsigned __bits(16) One, unsigned __bits(1) A) {return A ? One : Zero;}

unsigned __bits(16) SUM(unsigned __bits(16) A, unsigned __bits(16) B) {return A+B;}

void main(){
  int __bits(16) res1;
  int __bits(16) res2;
  unsigned __bits(1) A = 0;
  unsigned __bits(1) B = 0;

  int __bits(16) a32 = CWD(a);
  int __bits(16) b32 = CWD(b);
  int __bits(16) c16 = CBW(c);
  int __bits(16) c32 = CWD(c16);
  int __bits(16) d16 = CBW(d);
  int __bits(16) d32 = CWD(d16);

  int x1 = IDIV(IDIV(a32,b32),c32);
  int x2 = x32Tox16(IMUL(ISUB(x32Tox16(IMUL(d16,c16)),IDIV(d32,b32)),a));

  res1 = SUM(x1,x2);

  int y1 = x32Tox16(IMUL(SUM(x32Tox16(IMUL(a, b)),c16), d16));
  int y2 =  x32Tox16(IMUL(SUM(x32Tox16(IMUL(a,d16)),b), c16));
  int y3 = ISUB(y1,y2);
  res2 = IDIV(y3, b);
  if (ICMP(b32,0) == 4 || ICMP(c32,0) == 4) A = 1;
  if (ICMP(b32,0) == 1 && (ICMP(c32,0) == 1) || (ICMP(c32,0) == 2)) A = 0;
  RES = MSb16x2(res2, res1, A);

}


Пустые строки между функциями вставила намеренно

Отработка пропуска 21_09
Александр Мезенцев

Темы: 0
Сообщений: 8

Мой профиль
14.12 15:06 Сам-п8. Задача №8 0 / 100 Ошибка: Несовпадение RES:1=10 [2,001 ps] Arifm.prd DelTA4 at NIT1 Win10 HLCCAD project
14.12 15:03 Сам-с8. Задача №8 100 / 100 Все тесты пройдены (основной + секретный). src.mpc DelTA4 at NIT0 Winter mpc

В CMPA прошло, в HLCCAD сгенерированная схема не прошла.
http://dl.gsu.by/task.jsp?nid=2351896&cid=1335

int __in __bits(8) A9;
int __in __bits(8) B7;
int __in __bits(16) X;
int __in __bits(16) Y;
int __out __bits(16) RES;

unsigned __bits(16) CBW(unsigned __bits(8) A) {return A;}
unsigned __bits(32) CWD(unsigned __bits(16) A) {return A;}
int __bits(16) ISUB(int __bits(16) A, int __bits(16) B) {return A-B;}
int __bits(32) IMUL(int __bits(16) A, int __bits(16) B) {return A*B;}
int __bits(16) IDIV(int __bits(32) A, int __bits(32) B) {return A/B;}
unsigned __bits(16) x32Tox16(unsigned __bits(32) A) {return A;}
unsigned __bits(3) ICMP(int __bits(32) A, int __bits(32) B) {return (A > B) ? 4 : (A == B) ? 2 : 1;}
unsigned __bits(16) MSb16x2(unsigned __bits(16) Zero, unsigned __bits(16) One, unsigned __bits(1) A) {return A ? One : Zero;}
unsigned __bits(16) SUM(unsigned __bits(16) A, unsigned __bits(16) B) {return A+B;}


void main(){
unsigned __bits(1)A=0;
int __bits(16) x32 = CWD(X);
int __bits(16) y32 = CWD(Y);
int __bits(16) a16 = CBW(A9);
int __bits(16) a32 = CWD(a16);
int __bits(16) b16 = CBW(B7);
int __bits(16) b32 = CWD(b16);

int mul1=x32Tox16(IMUL(X,a16));
int sum1=SUM(Y,mul1);
int sub1=ISUB(sum1,b16);
int __bits(32) q1= CWD(sub1);
int div1=IDIV(q1,y32);	
int  __bits(16)res1=div1;

int sum2=SUM(Y,a16);
int	mul2=(IMUL(sum2,X));
int	div2=IDIV(mul2,y32);
int sub2=ISUB(div2,b16);
int  __bits(16)res2=sub2;

int xy=IMUL(X,Y);

if (ICMP(xy,0) == 4 || ICMP(xy,0) == 2) A = 1;
if (ICMP(xy,0) == 1) A = 0;
RES=MSb16x2(res2,res1,A);
}


Отработка пропуска 14_09
Александр Мезенцев

Темы: 0
Сообщений: 8

Мой профиль
14.12 15:44 Сам-п16. Задача №16 100 / 100 Все тесты пройдены (основной + секретный) Arifm.prd DelTA4 at NIT1 Win10 HLCCAD project
14.12 15:42 Сам-с16. Задача №16 100 / 100 Все тесты пройдены (основной + секретный). bbbbb.mpc DelTA4 at NIT0 Win10 Winter mpc



int __in __bits(16) x;
int __in __bits(16) y;
int __in __bits(8) a;
int __in __bits(8) b;
int __out __bits(16) R;

unsigned __bits(16) CBW(unsigned __bits(8) A) {return A;}
unsigned __bits(32) CWD(unsigned __bits(16) A) {return A;}
int __bits(16) ISUB(int __bits(16) A, int __bits(16) B) {return A-B;}
int __bits(32) IMUL(int __bits(16) A, int __bits(16) B) {return A*B;}
int __bits(16) IDIV(int __bits(32) A, int __bits(32) B) {return A/B;}
unsigned __bits(16) x32Tox16(unsigned __bits(32) A) {return A;}
unsigned __bits(3) ICMP(int __bits(32) A, int __bits(32) B) {return (A > B) ? 4 : (A == B) ? 2 : 1;}
unsigned __bits(16) MSb16x2(unsigned __bits(16) Zero, unsigned __bits(16) One, unsigned __bits(1) A) {return A ? One : Zero;}
unsigned __bits(16) SUM(unsigned __bits(16) A, unsigned __bits(16) B) {return A+B;}


void main(){
unsigned __bits(1)A=0;
int __bits(16)a16 =	CBW(a);
int __bits(32)a32 = CWD(a16);
int __bits(16)b16 = CBW(b);
int __bits(32)b32 = CWD(b16) ;
int __bits(32)x32 = CWD(x);
int __bits(32)y32 = CWD(y);

int div1=IDIV(x32,y32);
int sum1=SUM(a16,b16);
int	__bits(16)q1= CWD(sum1);
int sub1=ISUB(a16,b16);
int __bits(16)q2= CWD(sub1);
int div2= IDIV(q1,q2);
int mul1=x32Tox16(IMUL(div1,div2));
int res1=mul1;


int sub11=ISUB(x,y);
int sum11=SUM(a16,b16);
int mulq=IMUL(sub11,sum11);
int div11=IDIV(b32,a32);
int sum12=SUM(mulq,div11);
int res2=sum12;


if (ICMP(a32,b32) == 2) A = 1;
if (ICMP(a32,b32) == 1 || ICMP(a32,b32) == 4) A = 0;
R=MSb16x2(res1,res2,A);
}

Отработка пропуска 5_10
Ангелина Булкина

Темы: 0
Сообщений: 15

Мой профиль
14.12 15:56 Сам-п3. Задача №3 0 / 100 Ошибка: Несовпадение RES:11=350 [10,009 ps] Arifm.prd DelTA4 at NIT0 Win10 HLCCAD project
14.12 15:53 Сам-с3. Задача №3 100 / 100 Все тесты пройдены (основной + секретный). src.mpc DelTA4 at NIT1 Win10 Winter mpc

В CMPA прошло, в HLCCAD сгенерированная схема не прошла
https://dl.gsu.by/task.jsp?nid=2351891&cid=1335


MD:

14.12.2023 15:56:22 01.01.2024 17:20:44 Булкина Ангелина Архитектура вычислительных систем (ПО4/ИТ3/ПИ2) - 2023 Сам-п3. Задача №3 0 Ошибка: Несовпадение RES:0=0FFFF [44,008 ps] Arifm.prd DelTA4 at NIT0 Win10

Увеличение времени не помогает на данном тесте
 

int __in __bits(16) a;
int __in __bits(16) b;
int __in __bits(8) c;
int __in __bits(8) d;
int __out __bits(16) RES;



unsigned __bits(16) CBW(unsigned __bits(8) A) {return A;}

unsigned __bits(32) CWD(unsigned __bits(16) A) {return A;}

int __bits(16) ISUB(int __bits(16) A, int __bits(16) B) {return A-B;}

int __bits(32) IMUL(int __bits(16) A, int __bits(16) B) {return A*B;}

int __bits(16) IDIV(int __bits(32) A, int __bits(32) B) {return A/B;}

unsigned __bits(16) x32Tox16(unsigned __bits(32) A) {return A;}

unsigned __bits(3) ICMP(int __bits(32) A, int __bits(32) B) {return (A > B) ? 4 : (A == B) ? 2 : 1;}

unsigned __bits(16) MSb16x2(unsigned __bits(16) Zero, unsigned __bits(16) One, unsigned __bits(1) A) {return A ? One : Zero;}

int __bits(16) SUM(unsigned __bits(16) A, unsigned __bits(16) B) {return A+B;}

void main(){
  int __bits(16) res1;
  int __bits(16) res2;
  unsigned __bits(1) A = 0;

  int __bits(16) a32 = CWD(a);
  int __bits(16) b32 = CWD(b);
  int __bits(16) c16 = CBW(c);
  int __bits(16) c32 = CWD(c16);
  int __bits(16) d16 = CBW(d);
  int __bits(16) d32 = CWD(d16);

  int sum1 = SUM(a,c16);
  int mul1 = IMUL(sum1,d16);
  int div1 = IDIV(mul1,b);
  int sum2 = SUM(a,d16);
  int mul2 = IMUL(sum2,c16);
  int div2 = IDIV(mul2,b);
  res1 = ISUB(div1, div2);

  int sum3 = CWD(SUM(b, d16));
  int div3 = IDIV(a32, sum3);
  int mul3 = IMUL(a,a);
  int sum4 = SUM(c16, b);
  int div4 = IDIV(mul3, CWD(sum4));
  int mul4 = IMUL(x32Tox16(mul3),a);
  int sum5 = SUM(d16, c16);
  int sum6 = SUM(sum5, 1);
  int div5 = IDIV(mul4, CWD(sum6));
  res2 = ISUB(SUM(div3,div4),div5);
  if (ICMP(b32,0) == 4 && ICMP(d32,b32) == 4 || ICMP(d32, b32) == 2) A = 1;
  RES = MSb16x2(res2, res1, A);
}



Пустые строки между функциями вставила намеренно

Отработка пропуска 24_10
Евгений Даровский

Темы: 0
Сообщений: 10

Мой профиль
14.12 16:06 Сам-п20. Задача №20 0 / 100 Ошибка: Несовпадение RES:1501=605 [5,004 ps] Arifm.prd DelTA4 at NIT0 Win10 HLCCAD projec
14.12 16:03 Сам-с20. Задача №20 100 / 100 Все тесты пройдены (основной + секретный). src.mpc DelTA4 at NIT0 Win10 Winter mpc

В CMPA прошло, в HLCCAD сгенерированная схема не прошла.
https://dl.gsu.by/task.jsp?nid=2351908&cid=1335


MD:

14.12.2023 16:06:06 01.01.2024 17:25:30 Даровский Евгений Архитектура вычислительных систем (ПО4/ИТ3/ПИ2) - 2023 Сам-п20. Задача №20 100 Все тесты пройдены (основной + секретный) Arifm.prd DelTA4 at NIT0 Win10
Время на тест увеличено, прошло. 

int __in __bits(8) a;
int __in __bits(8) b;
int __in __bits(16) x;
int __in __bits(16) y;

int __out __bits(16) RES;

unsigned __bits(16) CBW(unsigned __bits(8) A) {return A;}
unsigned __bits(32) CWD(unsigned __bits(16) A) {return A;}
int __bits(16) ISUB(int __bits(16) A, int __bits(16) B) {return A-B;}
int __bits(32) IMUL(int __bits(16) A, int __bits(16) B) {return A*B;}
int __bits(16) IDIV(int __bits(32) A, int __bits(32) B) {return A/B;}
unsigned __bits(16) x32Tox16(unsigned __bits(32) A) {return A;}
unsigned __bits(3) ICMP(int __bits(32) A, int __bits(32) B) {return (A > B) ? 4 : (A == B) ? 2 : 1;}
unsigned __bits(16) MSb16x2(unsigned __bits(16) Zero, unsigned __bits(16) One, unsigned __bits(1) A) {return A ? One : Zero;}
unsigned __bits(16) SUM(unsigned __bits(16) A, unsigned __bits(16) B) {return A+B;}

void main() {
  int __bits(16) res1;
    int __bits(16) res2;
    unsigned __bits(1) A = 0;
    
    int __bits(16) x32 = CWD(x);
    int __bits(16) y32 = CWD(y);
    int __bits(16) a16 = CBW(a);
    int __bits(16) a32 = CWD(a16);
    int __bits(16) b16 = CBW(b);
    int __bits(16) b32 = CWD(b16);

	int	x1=IMUL(5,x);
	int x2=IDIV(a32,b32);
	res1=ISUB(SUM(x1,x32Tox16(x2)),y);

    int y1=IDIV(x32,5);
	int y2=IDIV(b32,a32);
	res2=SUM(ISUB(y1,y2),y);
    if((ICMP(a,0)==4 || ICMP(a,0)==2) &&( ICMP(b,0)==4 || ICMP(b,0)==1)){
	  A=1;
	}
    else{
	  A=0;
	}
   RES = MSb16x2(res2, res1, A);
}

26_09
Юрий Матафонов

Темы: 1
Сообщений: 16

Мой профиль
Оценка\Обучение\Проектирование - учебные задания\1 - "Понижение разрядности " 237746 Болдуев Денис, ПО-51, февраль 2012
в новом окне (Установлена: 13.12.2023)

https://dl.gsu.by/task.jsp?nid=2351995&cid=1336

int __in __bits(32) a;
int __in __bits(32) b;

int __out __bits(32) RES;

int __bits(32) IMUL(int __bits(16) A, int __bits(16) B) {return A*B;}

void main() {
	RES = IMUL(a,b);
}


Оценка\Обучение\Проектирование - учебные задания\2 - "Повышение разрядности" 237747 Болдуев Денис, ПО-51, февраль 2012
в новом окне (Установлена: 13.12.2023)

https://dl.gsu.by/task.jsp?nid=2351996&cid=1336

int __in __bits(16) a;
int __in __bits(8) d;

int __out __bits(16) RES;

int __bits(16) IDIV(int __bits(16) A, int __bits(8) B) {return A/B;}

void main() {
	RES = IDIV(a,d);
}


Оценка\Обучение\Проектирование - учебные задания\3 - "SIGN (знак)" 237748 Болдуев Денис, ПО-51, февраль 2012
в новом окне (Установлена: 13.12.2023)

https://dl.gsu.by/task.jsp?nid=2351997&cid=1336

int __in __bits(16) x;

int __out __bits(16) y;

int __bits(16) SIGN(int __bits(16) A) {return (A > 0) ? 1 : (A == 0) ? 0 : -1;}

void main() {
	y = SIGN(x);
}


Оценка\Обучение\Проектирование - учебные задания\4 - "ABS (модуль)" 237749 Болдуев Денис, ПО-51, февраль 2012
в новом окне (Установлена: 13.12.2023)

https://dl.gsu.by/task.jsp?nid=2351998&cid=1336

int __in __bits(16) x;

int __out __bits(16) y;

int __bits(16) ABS(int __bits(16) A) { return (A > 0) ? A : (A*(-1));}

void main() {
	y = ABS(x);
}


Оценка\Обучение\Проектирование - учебные задания\5 - "Условия (И, ИЛИ)" 237750 Болдуев Денис, ПО-51, февраль 2012
в новом окне (Установлена: 13.12.2023)

https://dl.gsu.by/task.jsp?nid=2351999&cid=1336

int __in __bits(16) a;
int __in __bits(16) b;
int __in __bits(32) x;

int __out __bits(16) RES;



unsigned __bits(16) SUM(unsigned __bits(16) A, unsigned __bits(16) B) {return A+B;}
int __bits(16) ISUB(int __bits(16) A, int __bits(16) B) {return A-B;}
unsigned __bits(3) ICMP(int __bits(32) A, int __bits(32) B) {return (A <= B) ? 4 : (A >= B) ? 2 : 1;}
unsigned __bits(16) MSb16x2(unsigned __bits(16) Zero, unsigned __bits(16) One, unsigned __bits(1) A) {return (A) ? One : Zero;}


void main() {
	int __bits(16) One;
	int __bits(16) Zero;
	unsigned __bits(1) A;

	Zero = SUM(a,b);
	One = ISUB(a,b);

	A = (ICMP(x,1) >> 1) & (ICMP(x,8) >> 2);

	RES = MSb16x2(Zero,One,A);
}


Оценка\Обучение\Проектирование - учебные задания\6 - "X! (факториал)" 237751 Болдуев Денис, ПО-51, февраль 2012
в новом окне (Установлена: 13.12.2023)

https://dl.gsu.by/task.jsp?nid=2352000&cid=1336

unsigned __in __bits(32) x;

unsigned __out __bits(32) RES;

unsigned __bits(32) FACT(unsigned __bits(32) A) {
	unsigned __bits(32) RES;
	RES = 1;
	while (A > 1) 
		RES *= A--;
	return RES;
}

void main() {
	RES = FACT(x);
}unsigned __in __bits(32) x;

unsigned __out __bits(32) RES;

unsigned __bits(32) FACT(unsigned __bits(32) A) {
	unsigned __bits(32) RES;
	RES = 1;
	while (A > 1) 
		RES *= A--;
	return RES;
}

void main() {
	RES = FACT(x);
}


Оценка\Обучение\Проектирование - учебные задания\7 - "Константы" 237752 Болдуев Денис, ПО-51, февраль 2012
в новом окне (Установлена: 13.12.2023)

https://dl.gsu.by/task.jsp?nid=2352001&cid=1336

int __in __bits(16) a;
int __in __bits(16) b;

int __out __bits(32) RES;

int __bits(32) IMUL(int __bits(16) A, int __bits(16) B) {return A*B;}
int __bits(16) ISUB(int __bits(16) A, int __bits(16) B) {return A-B;}
int __bits(16) SUM(int __bits(16) A, int __bits(16) B) {return A+B;}

void main() {
	RES = IMUL(SUM(a,3),ISUB(b,8));
}


Оценка\Обучение\Проектирование - учебные задания\8 - "Сумматор" 237753 Болдуев Денис, ПО-51, февраль 2012
в новом окне (Установлена: 13.12.2023)

https://dl.gsu.by/task.jsp?nid=2352002&cid=1336

unsigned __in __bits(16) a;
unsigned __in __bits(16) b;

unsigned __out __bits(16) RES;

unsigned __bits(16) SUM(unsigned __bits(16) A, unsigned __bits(16) B) {return A+B;}

void main() {
	RES = SUM(a,b);
}


Оценка\Обучение\Проектирование - учебные задания\9 - "Выбор из двух" 237754 Болдуев Денис, ПО-51, февраль 2012
в новом окне (Установлена: 13.12.2023)

https://dl.gsu.by/task.jsp?nid=2352003&cid=1336

int __in __bits(16) a;
int __in __bits(16) b;

int __out __bits(16) RES;

int __bits(32) IMUL(int __bits(16) A, int __bits(16) B) {return A*B;}
unsigned __bits(3) ICMP(int __bits(32) A, int __bits(32) B) {return (A > B) ? 4 : (A == B) ? 2 : 1;}
unsigned __bits(16) MSb16x2(unsigned __bits(16) Zero, unsigned __bits(16) One, unsigned __bits(1) A) {return (A) ? One : Zero;}

void main() {
	int __bits(16) Zero;
	int __bits(16) One;
	int __bits(1) A;
	Zero = b;
	One = a;
	A = ICMP(IMUL(a,b),0);
	RES = MSb16x2(Zero,One,A);
}

Юрий Матафонов

Темы: 1
Сообщений: 16

Мой профиль
Экзамен\Индивидуальные задания\С-TCPU\Программы по схемам\По логическим функциям\8 - "Только XOR, OR и NOT" 83403 Гончаров Евгений, ПМ-44, июнь 2006
в новом окне (Установлена: 22.03.2009)

https://dl.gsu.by/task.jsp?nid=2291084&cid=1335

unsigned __bits(1) NOT(unsigned __bits(1) A) {return ~A;}
unsigned __bits(1) OR2(unsigned __bits(1) A, unsigned __bits(1) B) {return A | B;}
unsigned __bits(1) XOR2(unsigned __bits(1) A, unsigned __bits(1) B) {return A ^ B;}

unsigned __in __bits(1) IN_0;
unsigned __in __bits(1) IN_1;
unsigned __in __bits(1) IN_2;
unsigned __in __bits(1) IN_3;

unsigned __out __bits(1) OUT_0;

void main() {
	OUT_0 = XOR2(XOR2(NOT(XOR2(XOR2(IN_0,IN_1),IN_2)),OR2(OR2(IN_0,IN_1),IN_2)),NOT(IN_3));
}

Михаил Долинский

Темы: 2010
Сообщений: 47872

Мой профиль
NEW
int __bits(16)             SIGN (int __bits(16) A) {return (A > 0) ? 1 : (A == 0) ? 0 : -1;}
int __bits(16)             ABS  (int __bits(16) A) { return (A > 0) ? A : (A*(-1));}
unsigned __bits(32) FACT (unsigned __bits(4) A) {unsigned __bits(32) RES=1; while (A > 1)  RES *= A--; return RES;}



STANDARD
// Mathematics
unsigned __bits(8)   SUM  (unsigned __bits(8) A, unsigned __bits(8) B) {return A+B;}
unsigned __bits(16) MUL  (unsigned __bits(8) A, unsigned __bits(8) B) {return A*B;}
unsigned __bits(16) DIV   (unsigned __bits(16) A, unsigned __bits(16) B) {return A/B;}
unsigned __bits(3)   CMP  (unsigned __bits(8) A, unsigned __bits(8) B) {return (A > B) ? 4 : (A == B) ? 2 : 1;}
// давай ещё сделаем MOD и 
// DIVMOD в котором будут возвращаться и частное и остаток в 32-битной переменной, из которой получаются частное и остаток
// привести конкретные операторы как

//Для CMP C-МПА текст получения битов GT, EQ,LT (>,=,<)

// Logic
unsigned __bits(1) NOT    (unsigned __bits(1) A) {return ~A;}
unsigned __bits(1) OR2    (unsigned __bits(1) A, unsigned __bits(1) B) {return A | B;}
unsigned __bits(1) XOR2  (unsigned __bits(1) A, unsigned __bits(1) B) {return A ^ B;}
unsigned __bits(1) AND2  (unsigned __bits(1) A, unsigned __bits(1) B) {return A & B;}

// DC, CD, MS 
unsigned __bits(8) DC(unsigned __bits(1) CS, unsigned __bits(3) X) {
                if (CS == 0) return 0;
                unsigned __bits(8) d=1;
                d = d << X;
                return d;
}
// Шифратор мне кажется можно существенно проще написать, но пока пусть хоть так будет
// попробуй загуглить номер первой единицы – битовый трюк
unsigned __bits(4) CD  (unsigned __bits(8) X) {
                unsigned __bits(4) YG;
                unsigned __bits(3) Y;
                unsigned __bits(1) G;
                if (X != 0) G = 1; else {G = 0; return 0;}
                int i;
                i = 0;
                while (!(X & 1)) {
                               i++;
                               X = X >> 1;
                }
                Y = i;
                YG = Y;
                YG = YG << 1;
                YG += G;
                return YG;
}
unsigned __bits(1) MS  (unsigned __bits(8) X, unsigned __bits(3) A) {return ((X >> A) & 1);}


SignedArithm
int __bits(16)  CBW   (int __bits(8) A) {return A;}
int __bits(32)  CWD   (int __bits(16) A) {return A;}
int __bits(16)  ISUB   (int __bits(16) A, int __bits(16) B) {return A-B;}
int __bits(32)  IMUL  (int __bits(16) A, int __bits(16) B) {return A*B;}
int __bits(16)  IDIV    (int __bits(32) A, int __bits(32) B) {return A/B;}
int __bits(4)   ICMP   (int __bits(32) A, int __bits(32) B) {return (A > B) ? 4 : (A == B) ? 2 : 1;}

Алина Школьникова

Темы: 0
Сообщений: 15

Мой профиль
Задача 6
http://dl.gsu.by/task.jsp?nid=2351956&cid=1336

15.12 12:09 Сам-с1. Задача №6 0 / 100 [test 1]: Тест не прошел: res hex[2]: 0FFFB. src.mpc DelTA4 at NIT0 Win10 Winter mpc
15.12 12:10 Сам-с1. Задача №6 100 / 100 Все тесты пройдены (основной + секретный). src.mpc DelTA4 at NIT0 Win10 Winter mpc

int __in __bits(16) a;
int __in __bits(16) b;
int __in __bits(8) c;
int __in __bits(8) d;

int __out __bits(16) RES;

unsigned __bits(16) CBW(unsigned __bits(8) A) {	return A;}

unsigned __bits(32) CWD(unsigned __bits(16) A) { return A;}
int __bits(16) ISUB(int __bits(16) A, int __bits(16) B) {int __bits(16) C; C = A - B; return C;}
int __bits(16) SUM(int __bits(16) A, int __bits(16) B) {int __bits(16) C; C = A + B; return C;}
int __bits(32) IMUL(int __bits(16) A, int __bits(16) B) {int __bits(32) C; C = A * B; return C;}
int __bits(16) IDIV(int __bits(32) A, int __bits(32) B) {int __bits(16) C; C = A / B; return C;}
unsigned __bits(3) ICMP(int __bits(32) A, int __bits(32) B) {return (A > B) ? 4 : (A == B) ? 2 : 1;}
unsigned __bits(16) MSb16x2(unsigned __bits(16) Zero, unsigned __bits(16) One, unsigned __bits(1) A) {return A ? One : Zero;}

void main(){
	int __bits(16) c16=CBW(c);
	int __bits(16) d16=CBW(d);
	int __bits(32) a32=CWD(a);
	int __bits(32) b32=CWD(b);
	int __bits(32) c32=CWD(c16);
	int __bits(32) d32=CWD(d16);

	int __bits(16) a1=ISUB(0,a);
	int __bits(32) ab=IMUL(a1,b);
	int __bits(32) cd=IMUL(c,d);
	int __bits(16) dd=ab;
	int __bits(16) cc=cd;
	int __bits(16) abc=ISUB(ab,cc);
	int __bits(16) ac=IDIV(a32,c32);
	int __bits(16) bd=IDIV(b32,d32);
	int __bits(16) sm1=SUM(abc,ac);
	int __bits(16) sm2=SUM(sm1,bd);
	int __bits(16) r1=sm2;
	int __bits(16) abv=SUM(a,b);
	int __bits(32) aab=IMUL(abv,a);
	int __bits(16) p1=aab;
	int __bits(32) pr1=IMUL(p1,b);
	int __bits(16) pp1=pr1;
	int __bits(32) pr2=IMUL(pp1,c16);
	int __bits(16) pp2=pr2;
	int __bits(32) prz3=IMUL(pp2,d16);
	int __bits(16) dc=ISUB(c16,d16);
	int	__bits(32) dc2=dc;
	int __bits(32) r2=IDIV(prz3,dc2);
	int __bits(32) cs=ISUB(0,c32);
	unsigned __bits(1) A1;
	if (ICMP(b32,cs)==2) A1=1;
	if (ICMP(b32,cs)==1 || ICMP(b32,cs)==4) A1=0;
	RES = MSb16x2(r2,r1,A1);
}

Отработка пропуска 15_09
Валерия Коваленко

Темы: 0
Сообщений: 11

Мой профиль
Задача 11
https://dl.gsu.by/task.jsp?nid=2301698&cid=1336

15.12 12:23 Сам-п11. Задача №11 0 / 100 Ошибка: Несовпадение RES:19910=62636 [3,002 ps] Arifm.prd DelTA4 at NIT1 Win10 HLCCAD project
15.12 12:20 Сам-с1. Задача №11 100 / 100 Все тесты пройдены (основной + секретный). src.mpc DelTA4 at NIT0 Win10 Winter mpc

int __in __bits(8) a9;
int __in __bits(8) b7;
int __in __bits(16) x;
int __in __bits(16) y;
int __out __bits(16) RES;

int __bits(16)  ISUB   (int __bits(16) A, int __bits(16) B) {return A-B;}
int __bits(32) IMUL(int __bits(16) A, int __bits(16) B) {return A*B;}
int __bits(16) IDIV(int __bits(32) A, int __bits(32) B) {return A/B;}
unsigned __bits(16) SUM(unsigned __bits(16) A, unsigned __bits(16) B) {return A+B;}
unsigned __bits(16) CBW(unsigned __bits(8) A) {return A;}
unsigned __bits(32) CWD(unsigned __bits(16) A) {return A;}
unsigned __bits(3) ICMP(int __bits(32) A, int __bits(32) B) {return (A > B) ? 4 : (A == B) ? 2 : 1;}
unsigned __bits(16) MSb16x2(unsigned __bits(16) Zero, unsigned __bits(16) One, unsigned __bits(1) A) {return A ? One : Zero;}

void main(){

unsigned __bits(1)A=0;
int __bits(16) a16 = CBW(a9);
int __bits(16) b16 = CBW(b7);
int sub1=ISUB(a16,b16);
int __bits(16) sub132 = CWD(sub1);

int imul1=(IMUL(x,y));
int s1=SUM(sub132,imul1);

int __bits(16) x32 = CWD(x);
int r1=IDIV(s1,x32);


int s2=SUM(b7,a9);

int __bits(16) y32 = CWD(y);
int d2=IDIV(x32,y32);

int __bits(16) s216 = CBW(s2);
int pr2=(IMUL(s216,d2));
int __bits(16) pr = pr2;
int r2=ISUB(pr2,x);


if (ICMP(imul1,0) == 4 || ICMP(imul1,0) == 2) A = 0;
if (ICMP(imul1,0) == 1) A = 1;
RES=MSb16x2(r1,r2,A);

}


Отработка пропуска 8_12
Татьяна Пыршина

Темы: 0
Сообщений: 19

Мой профиль
Задача 1

http://dl.gsu.by/task.jsp?nid=2351951&cid=1336

15.12 13:51 Сам-п1. Задача №1 0 / 100 Ошибка: Несовпадение RES:50=378 [39,010 ps] Arifm.prd DelTA4 at NIT0 Win10 HLCCAD project
15.12 13:49 Сам-с1. Задача №1 100 / 100 Все тесты пройдены (основной + секретный). 11.mpc DelTA4 at NIT0 Win10 Winter mpc


int __in __bits(16) a;
int __in __bits(16) b;
int	__in __bits(8) c;
int __in __bits(8) d;
int	__out __bits(16) res;

unsigned __bits(16) CBW(unsigned __bits(8) A) {return A;}
unsigned __bits(32) CWD(unsigned __bits(16) A) {return A;}
int __bits(16) ISUB(int __bits(16) A, int __bits(16) B) {return A-B;}
int __bits(32) IMUL(int __bits(16) A, int __bits(16) B) {return A*B;}
int __bits(16) IDIV(int __bits(32) A, int __bits(32) B) {return A/B;}
unsigned __bits(16) x32Tox16(unsigned __bits(32) A) {return A;}
unsigned __bits(3) ICMP(int __bits(32) A, int __bits(32) B) {return (A > B) ? 4 : (A == B) ? 2 : 1;}
unsigned __bits(16) MSb16x2(unsigned __bits(16) Zero, unsigned __bits(16) One, unsigned __bits(1) A) {return A ? One : Zero;}
unsigned __bits(16) SUM(unsigned __bits(16) A, unsigned __bits(16) B) {return A+B;}
 

void main(){

unsigned __bits(1) A=0;

int __bits(16) c16=CBW(c);
int __bits(16) d16=CBW(d);
int __bits(32) a32=CWD(a);
int __bits(32) b32=CWD(b);
int __bits(32) c32=CWD(c16);
int __bits(32) d32=CWD(d16);


int	__bits(16) div1=IDIV(a32,b32);
int __bits(16) sum1=SUM(div1,c16);
int mul1=(IMUL(a,d16));
int __bits(16) mul116=mul1;
int	__bits(16) sub1=ISUB(sum1,mul116);
int __bits(16) res1=sub1;

int __bits(16) div2=IDIV(a32,d32);
int	__bits(16) sum2=SUM(div2,c16);
int mul2=(IMUL(sum2,b));
int __bits(16) mul216=mul2;
int __bits(16) sub2=ISUB(b,mul216);
int __bits(16) res2=sub2;

int ad=IMUL(a,d16);

if (ICMP(ad,0) == 4 || ICMP(ad,0) == 2) A = 1;
if (ICMP(ad,0) == 1) A = 0;
res=MSb16x2(res1,res2,A);
}

Отработка пропуска 20_10
Виктория Богомазова

Темы: 0
Сообщений: 8

Мой профиль
Работа с нейросетью POE(попытка скормить изображение): Ссылка, скрины и диалог находятся внутри данного файла.
https://docs.google.com/document/d/1AhJxekE8qBXOtR64LuQSkbMOkVPfbMYL/edit?usp=drive_link&ouid=112378336648240327604&rtpof=true&sd=true
Виктория Богомазова

Темы: 0
Сообщений: 8

Мой профиль
Были попытки с другими нейросетями:как с текстовыми, так и с визуальными. Итоговый результат негативный, нейросети на данном этапе не могут работать ни с изображениями, ни ссылками на них, визуальные - не подходят под наши требования.
https://docs.google.com/document/d/1BdVMA76US60dN8fMi78BLLXMLPr3r9Ze/edit?usp=drive_link&ouid=112378336648240327604&rtpof=true&sd=true

Я еще попыталась найти информацию насчет работы нейросети с изображениями и нашла такую информацию:
/*
В конце сентября компания OpenAI представила новые бета-функции ChatGPT. Их начали постепенно вводить для платных подписчиков. Одна из них — GPT-4 Vision, с помощью которой нейросеть распознает изображения и учитывает их при ответе.

Работает это так: вы прикрепляете к своему запросу файл — просто картинку, скриншот с текстом, график. Нейросеть обрабатывает и распознает изображение, а потом дает ответ на основе вашего вопроса. Это не просто «нейросеть увидела картинку велосипеда и написала, что это велосипед». Можно отправить фото велосипеда и спросить, как на нем переключать скорости. GPT-4 Vision увидит переключатель, обратит на него внимание и расскажет, как им пользоваться.

GPT-4V понимает текст, различает объекты, считает количество предметов, считывает диаграммы и графики, распознает человеческие эмоции, находит различия и дефекты, объясняет смыслы.
*/
Как я понимаю, на бесплатной основе такая возможность будет не скоро (это зависит не от нас в любом случае), а для работы с ChatGPT от OpenAI нужна будет покупка подписки.
Александр Санец

Темы: 0
Сообщений: 15

Мой профиль
Cсылка на файл помощник(Helper) для удобства поиска : https://docs.google.com/document/d/1XXIAJYC_deoJLiGpabzlk4ZSf6OXnxAs5N5PJO5IrU8/edit?usp=sharing
Изменения :
Редактирование файла
Добавление раздела для решения задач по ВЕКТОРАМ на C-MPA(предоставлен от Лисичкина Владислава)

Через некоторое время будут добавлены еще несколько разделов для решения задач по C-MPA

Используемые чат-боты : https://you.com/ и https://poe.com/
Также рекомендуем воспользоваться чат ботом https://chat.openai.com/ (chatGPT3-5) от OpenAI. Раньше этим ботом можно было пользоваться только если у пользователя был иностранный номер телефон , а с недавнего времени им можно пользоваться просто подключа VPN . Рекомендую регистрироваться через аккаунт Google.
 
Индекс форума ->Учебный процесс ГГУ/СШ 27 ->Проектирование цифровых систем 1, 2, 3, 4, 5, 6, 7, 8, ... 25, 26, 27
Time:0,072