Пожалуйста, не ходите по газонам.

Меню навигации для мобильных

Последние сообщения

#1
Цифровая техника / Re: Как работают побитовые опе...
Последний ответ от Slabovik - 23 Нояб., 2022, 14:15
1. Используя язык высокого уровня (а Си таковым считается, хотя и с некоторыми оговорками), программист вообще не знает, что такое регистры и как они взаимодействуют друг с другом. Это всё потому, что он работает на другом уровне абстракции т.е. выше. Потому и язык "высокого уровня" :) И, хотя в Си можно встретить механизмы, специально вводимые в него для конкретных платформ, дающие возможность программисту чутка поработать на более низком уровне, эти механизмы очень ограничены в возможностях. Поэтому по-умолчанию всё-таки можно считать, что непосредственно с АЛУ (регистрами) Си-программист всё-таки не работает.

2. Тут смотря с какой точки зрения смотреть. С точки зрения программиста, программа использует "внутренние механизмы", некий чёрный ящик. С точки зрения механики (более низкого уровня), да - АЛУ процессора работает так, что флаги в регистре SREG меняются после каждой (почти) исполненной операции с регистрами и именно по ним определяется логический результат той или иной операции. Однако True он или False - решается всё-таки программистом: на ассемблере путём прямого анализа флагов исходя из логики команд, на Си - посредством "чёрного ящика" (ну это просто потому, что для разных типов условий результирующий код тоже не будет одинаковым, а абстрактные True или False для Си-программиста одни и те же).
Чисто технически - да, результат операции (хотя точнее, не сам результат, а свойства этого результата, потому что результат - это такой же байт, или даже много, а его свойства, нулевой он, чётный, отрицательный, был ли перенос - это немного другое) находится в битах (флагах) регистра SREG. По состоянию этих битов можно производить условные переходы, есть целый набор разных команд-кодов для этого.
Т.е. чисто технически "if" реализуется какой-либо командой условного перехода, расположенной сразу за операцией сравнения "!=" (чтобы флаги ы SREG были актуальными). Команда условного перехода, если в SREG флаг установлен в положение "да, переходим", отработает эквивалентно команде JMP, а если флаг установлен в положение "нет", то никаких действий выполнено не будет и программа продолжится, как будто бы ничего не было.
Надо понимать, что "да" и "нет" тоже условность, т.к. например для флага Z есть две команды: BREQ (BRanch if EQual) и BRNE (BRanch if Not Equal), первая выполняет переход, если Z=1, вторая выполняет переход если Z=0
(у Intel мнемоника всё-таки лучше, JZ и JNZ, т.е. Jump if Z, и Jump if Not Z, но они её запатентовали, поэтому другие вынуждены изобретать, чтобы не было похоже).

4. Регистры указатели так называются, потому что их содержимое АЛУ может использовать в качестве адреса операнда. Как правило, это адрес в ОЗУ (но не обязательно). Самые главные регистры-указатели - это регистр счётчика команд PC. Он содержит адрес исполняемой команды. И регистр SP - указатель стека. (зы: команды перехода, условные или безусловный JMP, по сути являются командами загрузки в PC нового значения-адреса).
Кроме них у AVR три регистровых пары, которые можно использовать как указатели X, Y и Z. X - это пара r26:r27, Y - r28:r29, Z - r30:r31. Указывают они на ОЗУ. Удобны при обработке массивов.
Например, команда LD r16,X+ загрузит в r16 байт из ячейки ОЗУ с адресом, который находится в r26:r27, после чего X (т.е. 16-битовое число в регистрах r26:r27) будет инкрементирован на 1.
Жаль, у AVR действия по указателям ограничиваются загрузкой-выгрузкой. У Intel, например, регистр M (ячейка памяти по адресу из регистовой пары HL) по набору доступных операций эквивалентен другим регистрам из АЛУ.

5. SUBI - вычитание из регистра непосредственного значения (константы).
Например, SUBI R18,7 означает, что из значения в регистре R18 будет вычтено число 7, ну а результат логично будет в R18 же. Именно это вот эта запись "Rd ← Rd - K" и означает. Её можно переписать как "Rd←(Rd-K)" или вообще (Rd-K)→Rd, но изначальная запись соответствует канонам ассемблера:
Команда операнд1,операнд2
с командой понятно, а вот операнд1 - это операнд, с которым производится работа, в нём же результат работы, а операнд2 даёт значение, которое будет применено к операнду1, при этом операнд 2 остаётся неизменным. Например
ADD A,C означает, что значение из регистра A будет сложено со значением из регистра C, а результат будет помещён в регистре A.

Кстати, наверняка заметил, что у AVR регистры не совсем равнозначны. Регистрам R0..R15 недоступны некоторые операции (точнее, операции с непосредственными значениями). Та же команда SUBI работает только с R16..R31, а вот просто SUB работает со всеми регистрами.
#2
Цифровая техника / Re: Как работают побитовые опе...
Последний ответ от Nikopol - 22 Нояб., 2022, 22:50
С кодом вроде разобрался. Да пример привел не совсем верный, но суть вы уловили спасибо, что ответили.
Задаю возникающие вопросы.:

1. Я правильно понимаю, что в Си взаимодействие с регистром статуса (SREG) происходит в основном на уровне компилятора и программист редко обращается к нему напрямую?
2. Результат операции if ({переменная} != {константа}) заноситься в этот бит (если происходит SUBI (XOR)):
↓ спойлер ↓
• Bit 1 – Z: Zero Flag
The Zero Flag Z indicates a zero result in an arithmetic or logic operation. See the "Instruction
Set Description" for detailed information.
[свернуть]
[свернуть]
И следующей частью кода читается уже от туда?
3. Если да, то считать взведённое состояние этого бита true или falce зависит уже от контекста?
В примере выше взведённое состояние будет falce, а вот так  if ({переменная} == {константа}) будетtrue.
4. Что такое регистры указатели и как они работают?
5. Можно подробнее описать как происходит SUBI и что означает вот эта надпись из даташита напротив этой команды Rd ← Rd - K ?

#3
Цифровая техника / Re: Стандарты VESA: как сгенер...
Последний ответ от Slabovik - 21 Нояб., 2022, 17:10
Да я бы и рад сразу на цифру перелезть, да не могу. Скилл надо прокачивать. Ибо, как я вычитал, в цифровых интерфейсах минимальная пиксельная частота 25 МГц. Это довольно много для рассыпных микросхем, с которыми обычно имеем дело. Обычно для таких частот хардверную логику перекладывают уже на ПЛМ, а вот с ними я не умею работать, несмотря на наличие желания.
#4
Цифровая техника / Re: Стандарты VESA: как сгенер...
Последний ответ от Shaman - 21 Нояб., 2022, 04:21
ИМХО стоит смотреть всё-таки в сторону цифрового интерфейса, с заделом на будуще, для VGA интерфейсов хватает, но вот что с ними делать? Мониторов конечно осталось ещё уйма (более 30 лет существования стандарта  сделали своё дело), но он уже отмирает и почти не поддерживается. А с захватом вообще труба.
Вот для примера интересное решение для захвата сигнала со старых ПК с нестандартными сигналами.
#5
Цифровая техника / Re: Стандарты VESA: как сгенер...
Последний ответ от Slabovik - 20 Нояб., 2022, 22:45
За прошедший год нарисовал аж два взможных варианта "видеоадаптеров" для бытового ностальжи-ПК. Один простой, на замену Орион-128, второй сложный, более универсальный под проц i8086. Но в силу стеснённости ресурсами не реализовал ни один. Второй получился интересным, настраиваемым по всем параметрам вплоть до посадки адресов видеопамяти и полностью прозрачный для основного ЦП. Но сложный... Первый же проще, но с жёсткой логикой работы. И я бы его уже сделал, но боюсь ошибиться с таймингами, из-за которых вся работа по схеме может превратиться в тыкву...

Нашёл интересный файлик уже цифрового стандарта.  Если с VESA калькуляторов всё просто, то со стандартами какая-то довольно толстенькая непонятка. Стандарты говорят, что произвольно никто ничего поддерживать не желает. Тем не менее, вот в этом файле из приложения, есть очень неплохой вариант - режим 24, пригодный для подачи на цифровой интерфейс, а если внимательно присмотреться, то разделив частоту (и количество горизонтальных пикселей) на три получим знакомый нам 480x288, который легко адаптируется в 480x256 путём отсекания. Однако что меня смущает? Смущает тактовая частота пикселей 9 МГц. Потому что в исходном варианте CVT-RB частота 10 МГц. При этом общая длина строки 640 пикселей при 480 активных. Здесь же 576 пикселей.

В общем, пока в замешательстве, какой режим брать за основу, если целью пока является подача сигнала через аналоговый VGA-разъём, но с целью сохранить совместимость с древним уполовиненным TV (312 строк), но в перспективе вдруг получится зацепить HDMI
Что выбрать?
#6
 У меня таких карт не было, но некоторые те, которые были с внешним (через доп.фишку) питанием, иногда имели на фишке один контакт отдельно от других, но подсоединялся он тоже к +12 вольт. Зачем - сам не знаю, но мало ли? На твоей карте нет вдруг подобного, но отчего-то не подсоединённого.

Вообще, без +12 многие (не могу сказать за все) карты начинают работать в BIOS, показывают стартовое текстовое изображение, но с предупреждением, что нет питания и стопом на этом этапе (у меня как раз такая сейчас, но она ATI).
зы: перекос вряд  ли что-то меняет, а вот отсутствие во время старта - может быть.
С другой стороны, во время старта потребление вряд ли сразу на максимум, поэтому может быть стоит попробовать диод?
#7
Имеем:
Видеокарта 3070ti после майнинга. Какие действия с ней производили неизвестно, изображение выводит.
Тестовый стенд мамка Asus b450m-a, процессор Rizen3 1200? 8Гб оперативки. БП на 450
Лабораторный источник питания на 20А.

Опустим, что данный стенд слабоват для этой видеокарты, самое главное он совместим.

Проблема:
Видеокарта не хочет стартовать когда доп питание поступает с лабораторника (если подать питание с БП карта стартует).
Видеокарта вставлялась как в рейзер так и напрямую в слот на мамке, итог один.
Другие доступные видеокарты запускаются от лабораторника без проблем самая старшая, что я запускал до этой, 1080.

У меня есть два предположения почему так происходит.
1. Небольшой перекос по напряжениям слота PCI и лабораторника, который я мультиметром не вижу, а видеокарта отслеживает, но тогда она бы запустилась с рейзером там все питания внешние.
2. Видеокарте не нравиться, что питания подаются е одновременно (я немогу включить ЛБП с пк поэтому включаю его раньше).

Есть у кого еще предположения такого поведения и решения проблемы? Пойдут даже самые идиотские.
#8
Цифровая техника / Re: Как работают побитовые опе...
Последний ответ от Nikopol - 17 Нояб., 2022, 14:56
Реакция есть, за ответ спасибо, сейчас перевариваю. Дать подробный ответ сейчас не могу, нет времени. Постараюсь в выходные.
#9
Путешествия / Re: Из кабины машиниста
Последний ответ от Slabovik - 16 Нояб., 2022, 15:18
Сиваш и жара
Новоалексеевка - Сиваш на ЭР-1 в жару
[свернуть]
и вечерком обратно
Сиваш - Геническ
[свернуть]
#10
Цифровая техника / Re: Как работают побитовые опе...
Последний ответ от Slabovik - 15 Нояб., 2022, 11:01
Как-то по отсутствию реакции не совсем понятно, зашло ли, куда надо? Возможно, надо было начинать вообще с того, что такое процессор и как он работает?