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

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

Мой профиль
Командные олимпиады\Архитектура вычислительных систем\Особенности архитектуры МП Intel 80486/Pentium\Контрольный срез (Пример 5)\Программирование\1М - "Произведение minimaxa" 53826 Наринская Ирина, март 2007, ПМ-45
в новом окне (Установлена: 02.03.2007)

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

Сгенерированное решение прошло.

int __bits(8) a[7];
int __out __bits(8) pr;

void main() {
    int __bits(8) min = a[0];
    int __bits(8) max = a[0];
    
    for (int i = 1; i < 7; i++) {
        if (a[i] < min) {
            min = a[i];
        }
        if (a[i] > max) {
            max = a[i];
        }
    }
    
    pr = min * max;
}

Андрей Щербак

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

Мой профиль
Командные олимпиады\Архитектура вычислительных систем\Особенности архитектуры МП Intel 80386 \Контрольный срез (Пример 4)\Программирование\1М - "Среднее арифметическое" 42777 Фамина Ольга, ПОИТ-27, апрель 2006
в новом окне (Установлена: 24.04.2006)

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

Сгенерировано верное решение.

int __bits(8) mas[5];
int __out __bits(8) srd;

void main() {
    int __bits(8) min = mas[0];
    int __bits(8) max = mas[0];
    
    for (int i = 1; i < 5; i++) {
        if (mas[i] < min) {
            min = mas[i];
        }
        if (mas[i] > max) {
            max = mas[i];
        }
    }
    
    srd = (min + max) / 2;
}

Андрей Щербак

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

Мой профиль


Владислав Лисичкин:

Провёл работу по обучению ChatGPT 3.5 для возможности работать с одномерным массивом.
Ссылка на ход работы: Тык
Список задач, которые поддерживаются:
1М. Одномерный массив
1М. Произведение minimaxa
11. Спираль
1М. Среднее арифметическое
И др.
Ссылка на документ для бота: Тык
 


Командные олимпиады\Архитектура вычислительных систем\Особенности архитектуры МП Intel 80286\Контрольный срез (Пример 3)\Программирование\1М - "Производная" 41584 Липский Л., ПО-11, апрель 2006
в новом окне (Установлена: 09.04.2006)

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

Сгенерированное решение не прошло.
[1]: Ошибка компиляции (mpc): Массив не может иметь модификатор __in (строка 2): int __in __bits(8) f[11];.
Использовалась нейросеть assistant на poe.com

int __in __bits(8) n;
int __in __bits(8) f[11];
int __out __bits(8) r[10];

void main() {
    for (int i = 0; i < n; i++) {
        r[i] = f[i] * (n - i);
    }
}

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

Темы: 1985
Сообщений: 47270

Мой профиль


Андрей Щербак:


Владислав Лисичкин:

Провёл работу по обучению ChatGPT 3.5 для возможности работать с одномерным массивом.
Ссылка на ход работы: Тык
Список задач, которые поддерживаются:
1М. Одномерный массив
1М. Произведение minimaxa
11. Спираль
1М. Среднее арифметическое
И др.
Ссылка на документ для бота: Тык
 


Командные олимпиады\Архитектура вычислительных систем\Особенности архитектуры МП Intel 80286\Контрольный срез (Пример 3)\Программирование\1М - "Производная" 41584 Липский Л., ПО-11, апрель 2006
в новом окне (Установлена: 09.04.2006)

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

Сгенерированное решение не прошло.
[1]: Ошибка компиляции (mpc): Массив не может иметь модификатор __in (строка 2): int __in __bits(8) f[11];.
Использовалась нейросеть assistant на poe.com

int __in __bits(8) n;
int __in __bits(8) f[11];
int __out __bits(8) r[10];

void main() {
    for (int i = 0; i < n; i++) {
        r[i] = f[i] * (n - i);
    }
}
 
В заданиях где нужно написать программу модификаторы __in и __out вообще не нужны.
Они нужны только в тех микропрограммах, по которым генерируются схемы - для генерации контактов и корпуса.
Юрий Матафонов

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

Мой профиль
Оценка\Индивидуальные задания\По выбору\Проектирование цифровых устройств\Логические элементы\14 - "8AND" 102936 Руденков, Марухленко, Сочнева, ПО-31, февраль 2011
в новом окне (Установлена: 14.02.2011)

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

Решение задачи на HLCCAD.

Сначала я решал задачу своим методом, а именно я увеличил количество контактов у блока AND2 с двух до восьми. После чего я отправил свое решение Боту https://poe.com/ в виде текстового файла и пояснил условия задачи. После некоторого времени он отправил мне свое решение в виде текстового изображения, которое тоже является верным решением.

Ссылка на документ - https://docs.google.com/document/d/1gbXr_fQqy7yL2qHED1DzRGQSM3dpRvPq9UMUOElbXnY/edit?usp=sharing
Юрий Матафонов

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

Мой профиль
Оценка\Индивидуальные задания\По выбору\Проектирование цифровых устройств\По логическим функциям\2 - "Логические функции" 40899 Бобрик Евгений, ПМ-45, март 2006
в новом окне (Установлена: 27.03.2006)

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

Решение задачи на HLCCAD.

Также сначала составил схему решения задачи, а потом отправил это решение Боту https://poe.com/ в текстовом виде. Отправил ему условие задачи и Бот выдал решение-схему в текстовом формате. В первый раз у него произошла ошибка в одном месте, но после того как я указал на его ошибку он исправил её.

Ссылка на документ - https://docs.google.com/document/d/1L02rJz4jOqY9lUt1e84vXWBDgmGmpX_1v6EN4WC4WUs/edit?usp=sharing
Юрий Матафонов

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

Мой профиль
Оценка\Индивидуальные задания\По выбору\Проектирование цифровых устройств\Комбинационные схемы\2 - "Четное/нечетное" 39309 Науменко Юлия, ПОИТ-27, март 2006
в новом окне (Установлена: 04.03.2006)

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

Решение задачи на HLCCAD.

Составил схему решения задачи и отправил её Боту https://poe.com/, но к сожалению он не смог составить свою схему решения этой задачи. Также он смог определить, что мое решение является верным, и он смог составить пошаговый план решения этой задачи.

Ссылка на документ - https://docs.google.com/document/d/1cG2HFlitwgq89bhVfUNcKvKgiFQ_rEpMEDnSedic7iA/edit?usp=sharing
Евгений Яковцев

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

Мой профиль


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


Евгений Яковцев:

Я хотел бы поделиться некоторыми советами о том, как максимально эффективно использовать взаимодействие с чат-ботом в учебных целях:
Будьте конкретны в своих вопросах: чем конкретнее ваш вопрос, тем более целенаправленным будет ответ чат-бота. Если вы спрашиваете о конкретной возможности или функции языка программирования, постарайтесь предоставить как можно больше подробностей о том, чего вы пытаетесь достичь, или о проблемах, с которыми вы сталкиваетесь.

Приведите примеры кода. Если вы работаете над фрагментом кода и у вас возникли проблемы с ним, поделитесь кодом с чат-ботом.
Поймите ограничения чат-бота: хотя чат-бот и является мощным инструментом, он не идеален.
Чат часто использует функционал которого не существует в языке, не пытайтесь сказать, что это неправильно, попытайтесь заменить его конструкцию на свою и попросить использовать её вместо той функции которой нет.

Например данная ошибка с расширением переменных и перемещением памяти:
Ошибка byte ptr Y нет в данной модификации языка
mov al, byte ptr Y
Мне пришлось заменить данную конструкцию на следующую:
mov al, Y
cbw
add ax, A9 ; Y+A9 is stored in ax
mov bx, X
в Дополнении чат не знал о функциях расширениях кроме cbw пришлось объяснить ему, что существую другие функции.

Помните, что цель чат-бота — помочь и облегчить ваш процесс обучения.
Он не решил данную задачу, но он предоставил базу задачи и объяснил как она работает. После чего я её доработал.
Так же он может посоветовать как лучше упростить ту или иную конструкцию:

Ссылка на источник чата:
https://disk.yandex.ru/d/6i1HB6ZDMaa_nw
 
Пока незачёт
1. Надо указать какую задачу решал (привести ссылку на задачу)
2. Надо переложить файл доки так, чтобы он открывался по одному клику
 


!!! Исправил мой посты
Михаил Долинский

Темы: 1985
Сообщений: 47270

Мой профиль
Выложи новый пост.
Чтобы не надо было искать в форуме твой старый пост.
Михаил Долинский

Темы: 1985
Сообщений: 47270

Мой профиль
Получается есть два рабочих варианта

unsigned __bits(16) MS(unsigned __bits(3) A, 
                       unsigned __bits(16) X0, 
                       unsigned __bits(16) X1,
                       unsigned __bits(16) X2
                       ...
                      )
       ...
       if (A==0) MS = X0;
       if (A==1) MS = X1;
       if (A==2) MS = X2;
       ...

и когда X передаётся как 2^A-битный вектор (с выделением сдвигами отдельных элементов).
Наверно первый удобнее.

для арифметических схем нужно ещё реализовать
x16=CBW(x8) 
x32=CWD(x16)
s16=SUM(A16,B16)
s16=ISUB(A16,B16)
p32=iMUL(A16,B16) 
d16=iDIV(A32,B16)
x16=x32                 // скорей всего уже правильно работает
R16=MS(A1,X16_0,X16_1)

Тогда схема условного арифметического выражения реализуется в С-МПА
как последовательность этих операторов
в порядке вычислений
и с правильными названиями переменных, чтобы передавать сигналы
с верхних блоков в нижние (в программе)
как с левых на правые (в схеме)

Для реализации всех остальных схем нужно
сделать также блоки
DC
CD
MS
(Матафонов Юра, ПИ-21 уже занимается)
Тогда для того, чтобы добиться от ИИ помощи в генерации схем для HLCCAD,
достаточно научить его писать С-МПА программы, вызывающие такие блоки
в нужной последовательности и правильно называя переменные.

Программы можно будет проверять, автоматически генерируя схемы
и отправляя их на тестирование.

Рисовать схему в HLCCAD можно глядя на текст такой программы.
Нарисованную схему тоже потом можно отправлять на тестирование.

Совсем круто, чтобы ИИ писал такую программу прямо с условия задачи.
Михаил Долинский

Темы: 1985
Сообщений: 47270

Мой профиль


Виктория Богомазова:

Была сделана работа с попыткой нейросети дать базовое понимание работы HICCAD, чтобы сделать хотя бы одну ветку с арифметическими выражениями с учетом размерности данных. Вся информация: Текст с объяснением для нейросети, ветка, которая была дана для решения, проблемы, правила решения этих проблем и пример есть в этом файле.

https://docs.google.com/document/d/1B_XfyxLgP2IkqldmTCQydavcR_Xnwe25/edit?usp=sharing&ouid=112378336648240327604&rtpof=true&sd=true

Нейросеть: https://you.com/search?q=who%20are%20you&tbm=youchat 


Теперь когда определена библиотека функций в С-МПА под HLCCAD (см.сообщение выше).
Надо просто написать решение например Варианта 1 задания на арифметическое выражение в HLCCAD
используя только эти функции и ничего больше.
Фактически это именно та работа, которую ты проводила, только с возможностью автоматической проверки и программы, и схемы.
Евгений Яковцев

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

Мой профиль
Я хотел бы поделиться некоторыми советами о том, как максимально эффективно использовать взаимодействие с чат-ботом в учебных целях:
Будьте конкретны в своих вопросах: чем конкретнее ваш вопрос, тем более целенаправленным будет ответ чат-бота. Если вы спрашиваете о конкретной возможности или функции языка программирования, постарайтесь предоставить как можно больше подробностей о том, чего вы пытаетесь достичь, или о проблемах, с которыми вы сталкиваетесь.

Приведите примеры кода. Если вы работаете над фрагментом кода и у вас возникли проблемы с ним, поделитесь кодом с чат-ботом.
Поймите ограничения чат-бота: хотя чат-бот и является мощным инструментом, он не идеален.
Чат часто использует функционал которого не существует в языке, не пытайтесь сказать, что это неправильно, попытайтесь заменить его конструкцию на свою и попросить использовать её вместо той функции которой нет.

Например данная ошибка с расширением переменных и перемещением памяти:
Ошибка byte ptr Y нет в данной модификации языка
mov al, byte ptr Y
Мне пришлось заменить данную конструкцию на следующую:
mov al, Y
cbw
add ax, A9 ; Y+A9 is stored in ax
mov bx, X
в Дополнении чат не знал о функциях расширениях кроме cbw пришлось объяснить ему, что существую другие функции.

Помните, что цель чат-бота — помочь и облегчить ваш процесс обучения.
Он не решил данную задачу, но он предоставил базу задачи и объяснил как она работает. После чего я её доработал.
Так же он может посоветовать как лучше упростить ту или иную конструкцию:

Ссылка на источник чата:
https://docs.google.com/document/d/1goZajfWUkfdm72v-S252SwXyUTdlaZ6KjhNOUAy2_3M/edit?usp=sharing

Ссылка на условие задачи:
https://dl.gsu.by/task.jsp?nid=2285821&cid=1335
Евгений Яковцев

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

Мой профиль
Диалог с AI phind для помощи в решении задачи в HLCCAD: https://docs.google.com/document/d/1L0gnqnhwpIn0BpnAU8HLOmcMr2ghJ663zabh3d6dF5Q/edit?usp=sharing

Я не помнил, как решаются задачи по таблицам истинности с помощью HLCCAD, поэтому я решил попросить помощи у AI.

Главный итог: считаю, что максимум, который можно получить от чата это предоставление смысла решения задачи, которое можно применить в HLCCAD, если вы знаете о всех его особенностях, включая компоненты.

В файле который предоставлен по ссылке, есть фотография решения.

Также можно посоветоваться у чата на счет логического решения задачи.Например, вы можете просто не знать некоторых конструкций и методик работы с битовыми последовательностями.

На основе его идеи можно придумать мультиплексор, с помощью него можно решать ограниченное множество задач, такие задачи можно решить к примеру в C через IF. (Тоесть у нас есть ограниченное множество возможных решений)

Ссылка на условие задачи:
https://dl.gsu.by/task.jsp?nid=2293082&cid=1335
https://dl.gsu.by/task.jsp?nid=2300882&cid=1336

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

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

Мой профиль


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

Получается есть два рабочих варианта

unsigned __bits(16) MS(unsigned __bits(3) A, 
                       unsigned __bits(16) X0, 
                       unsigned __bits(16) X1,
                       unsigned __bits(16) X2
                       ...
                      )
       ...
       if (A==0) MS = X0;
       if (A==1) MS = X1;
       if (A==2) MS = X2;
       ...

и когда X передаётся как 2^A-битный вектор (с выделением сдвигами отдельных элементов).
Наверно первый удобнее.

для арифметических схем нужно ещё реализовать
x16=CBW(x8) 
x32=CWD(x16)
s16=SUM(A16,B16)
s16=ISUB(A16,B16)
p32=iMUL(A16,B16) 
d16=iDIV(A32,B16)
x16=x32                 // скорей всего уже правильно работает
R16=MS(A1,X16_0,X16_1)

Тогда схема условного арифметического выражения реализуется в С-МПА
как последовательность этих операторов
в порядке вычислений
и с правильными названиями переменных, чтобы передавать сигналы
с верхних блоков в нижние (в программе)
как с левых на правые (в схеме)

Для реализации всех остальных схем нужно
сделать также блоки
DC
CD
MS
(Матафонов Юра, ПИ-21 уже занимается)
Тогда для того, чтобы добиться от ИИ помощи в генерации схем для HLCCAD,
достаточно научить его писать С-МПА программы, вызывающие такие блоки
в нужной последовательности и правильно называя переменные.

Программы можно будет проверять, автоматически генерируя схемы
и отправляя их на тестирование.

Рисовать схему в HLCCAD можно глядя на текст такой программы.
Нарисованную схему тоже потом можно отправлять на тестирование.

Совсем круто, чтобы ИИ писал такую программу прямо с условия задачи. 


Экзамен\Индивидуальные задания\Проектирование цифровых устройств\Комбинационные схемы\5 - "Сумматор" 12579 Еременко Оксана, ПМ4, апрель 2005
в новом окне (Установлена: 26.12.2003)

http://dl.gsu.by/task.jsp?nid=2293170&cid=1335

unsigned __in __bits(16) A;
unsigned __in __bits(16) B;
unsigned __in __bits(1) C;
unsigned __out __bits(16) S;
unsigned __out __bits(1) P;


unsigned __bits(17) SUM(unsigned __bits(16) A, unsigned __bits(16) B, unsigned __bits(1) C0) {
   unsigned __bits(17) SUM;
   SUM = A + B + C0;
   return SUM;
}

void main() {
	S = SUM(A, B, C);
	P = SUM(A, B, C) >> 16;
}


Дешифратор
?

unsigned __in __bits(3) X;
unsigned __in __bits(1) CS;

unsigned __out __bits(8) Y;

unsigned __bits(8) DC(unsigned __bits(1) CS, unsigned __bits(3) X) {
	if (CS == 0)
		return 0;
	unsigned __bits(8) d;
	d = 1;
	d = d << X;
	return d;
}

void main() {
	Y = DC(CS, X);
}


Экзамен\Индивидуальные задания\Проектирование цифровых устройств\Обработка битов\6 - "Приоритетный дешифратор" 41250 Мохорев И., ПОИТ-36, март 2006
в новом окне (Установлена: 31.03.2006)

http://dl.gsu.by/task.jsp?nid=2293318&cid=1335

unsigned __in __bits(3) X;

unsigned __out __bits(8) Y;

unsigned __bits(8) DC(unsigned __bits(3) X) {
	unsigned __bits(8) d;
	d = 255;
	d = d >> (8-X);
	return d;
}

void main() {
	Y = DC(X);
}


Экзамен\Индивидуальные задания\С-TCPU\Программы по схемам\Обработка битов\16 - "Обратный шифратор" 83536 Юрий Кадетов
в новом окне (Установлена: 22.03.2009)

http://dl.gsu.by/task.jsp?nid=2291226&cid=1335

unsigned __in __bits(8) X;

unsigned __out __bits(3) Y;
unsigned __out __bits(1) G;

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;
}

void main() {
	G = CD(X);
	Y = CD(X) >> 1;
}


Шифратор
?

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;
}

void main() {
	G = CD(X);
	Y = CD(X) >> 1;
}


Мультиплексор
?

unsigned __in __bits(8) X;
unsigned __in __bits(3) A;

unsigned __out __bits(1) Y;

unsigned __bits(1) MS(unsigned __bits(8) X, unsigned __bits(3) A) {
	return ((X >> A) & 1);
}

void main() {
	Y = MS(X, A);
}


Там где знак '?' я проверял вручную / не успел проверить.
Александр Дудинский

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

Мой профиль
Командные олимпиады\Архитектура вычислительных систем\Команды ММХ\Контрольный срез (Пример 6)\Проектирование\ТИ - "Делится ли на 2.3.4.5" 28920 Хруцкий Дмитрий, апрель 2005
в новом окне (Установлена: 18.04.2005)

https://dl.gsu.by/task.jsp?nid=2348465&cid=1336
unsigned __in __bits(6) IN=6;

unsigned __out __bits(1) TWO;
unsigned __out __bits(1) THREE;
unsigned __out __bits(1) FOUR;
unsigned __out __bits(1) FIVE;

unsigned __bits(32) DIV(unsigned __bits(32) A, unsigned __bits(32) B){
	unsigned __bits(32) otvet;
	otvet=A%B;
	otvet=otvet << 16;
	otvet=otvet | A/B;
	return otvet;
}

void main(){
	unsigned __bits(32) chislo;
	unsigned __bits(32) x2=2;
	unsigned __bits(32) x3=3;
	unsigned __bits(32) x4=4;
	unsigned __bits(32) x5=5;
	chislo=IN;

	TWO   = !(DIV(chislo, x2) >> 16);
	THREE = !(DIV(chislo, x3) >> 16);
	FOUR  = !(DIV(chislo, x4) >> 16);
	FIVE  = !(DIV(chislo, x5) >> 16);
}


Программа с реализованным блоком DIV. Для IDIV нужно все переменные unsigned поменять на int.
 
Индекс форума ->Учебный процесс ГГУ/СШ 27 ->Проектирование цифровых систем 1, 2, 3, 4, 5, 6, ... 25, 26, 27
Time:0,047