Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3618761
А
Аноним
10 июня 2026 20:08 · публичный вопрос
А
Аноним

как пройти 8 задание по программированию передатчика

Ответ нейросети
10 июня 2026 20:08

Зачем усложнять: чтобы точно подсказать, мне нужен текст задания 8 или хотя бы его краткое содержание. Пришли формулировку или скриншот, какие данные на входе, какой протокол/формат кадра, какие ограничения и тесты. Я дам конкретное решение.

Пока что — план как обычно подходить к заданию про передатчик и простой рабочий шаблон, который можно адаптировать под конкретные требования.

Как подойти к задаче (общий план)

  • Прочитай требования внимательно: что именно передаётся, какой формат кадра, есть ли CRC/чексуемость, какой протокол кадрирования, требуется ли синхронизация, какие модуляции/коды используются.
  • Спроектируй модуль передатчика из блоков:
    1. подготовка данных (сообщение -> байты)
    2. вычисление CRC/контрольной суммы (если требуется)
    3. формирование кадра (перед преформами: преформы/поля: преамбюла, длина, данные, CRC, хвост)
    4. кодирование битов (NRZ, Manchester и т.п. — то, что задано)
    5. модуляция (BPSK/QPSK/OOK и т.д.)
    6. сэмплирование (пределение числа сэмплов на бит, обрезка/паддинг)
    7. выходной сигнал (массив сэмплов)
  • Реализация по шагам с тестами: сначала без модуляции, только кадр и кодирование, затем добавляй модуляцию и сэмплирование.
  • Верификация: проверяй размер выходного сигнала, корректность кадра по битам, корректность CRC.

Рабочий простой шаблон на Python (готов адаптировать под ваш конкретный протокол) Цель: преобразовать сообщение в битовую последовательность, добавить CRC, собрать кадр, зашифровать битами через простую модуляцию BPSK и вернуть массив сэмплов.

Пояснения:

  • CRC: применяем CRC-16-CCITT как пример (можно заменить на требуемый CRC).
  • Преформ(перед кадром): простая чередующаяся преформная последовательность.
  • Кодирование: 1 -> +1, 0 -> -1 (BPSK NRZ-L).
  • Сэмплы на бит: samples_per_bit задаёт разрешение.

Пример кода (Python, без внешних зависимостей) def crc16_ccitt(data: bytes) -> int: crc = 0xFFFF for b in data: crc ^= b << 8 for _ in range(8): if crc & 0x8000: crc = ((crc << 1) & 0xFFFF) ^ 0x1021 else: crc = (crc << 1) & 0xFFFF return crc & 0xFFFF

def bytes_to_bits(data: bytes) -> list: bits = [] for byte in data: for i in range(8): # MSB сначала bits.append((byte >> (7 - i)) & 1) return bits

def build_frame(message: str) -> list: data_bytes = message.encode('utf-8') crc = crc16_ccitt(data_bytes) crc_bytes = crc.to_bytes(2, 'big') payload = data_bytes + crc_bytes payload_bits = bytes_to_bits(payload)

preamble_bits = [1,0,1,0,1,0,1,0]  # пример преформы
frame_bits = preamble_bits + payload_bits
return frame_bits

def bpsk_modulate(frame_bits: list, samples_per_bit: int) -> list: # 1 -> +1.0, 0 -> -1.0 samples = [] for bit in frame_bits: val = 1.0 if bit == 1 else -1.0 for _ in range(samples_per_bit): samples.append(val) return samples

def transmit(message: str, samples_per_bit: int = 8) -> list: frame_bits = build_frame(message) return bpsk_modulate(frame_bits, samples_per_bit)

Пример использования

if name == "main": msg = "Hello" samples = transmit(msg, samples_per_bit=8) print("Количество сэмплов:", len(samples)) # samples можно сохранить в файл, подать в эмулятор/сигналогенератор

Как адаптировать под ваше задание

  • Заменить CRC: используйте тот CRC, который прописан в условии задачи. Можно легко поменять на CRC-16/IBM, CRC-8 и т.д.
  • Изменить формирование кадра: если требуется другая структура (перед предиктом, заголовки, длина кадра, хвост), просто поменяй build_frame.
  • Изменить стиль модуляции: если требуется Manchester, FSK, QAM и т.п., замените функции modulate на нужную схему.
  • Настроить параметры: bitrate, samples_per_bit — под заданные в задаче частоты и полосу.
  • Добавить синхронизацию/передпробежку и тестовые проверки (например, расписать тесты на длину кадра, на соответствие CRC и пр.).

Типичные проблемы и как их ловить

  • Неправильный порядок битов в байтах (MSB-first vs LSB-first). Убедитесь, какой порядок указан в задании и соблюдайте его во всех этапах.
  • Неправильная длина кадра: преформы и/или CRC добавляют длину кадра. Проверяйте общую длину выходных данных.
  • CRC не совпадает с ожидаемым: проверьте, что применяете CRC к правильному набору байтов и в правильной последовательности.
  • Не совпадают требования модуляции: если требуется OOK, PSK, QPSK — сверьте символы и амплитуды, используемые для модуляции.
  • Паддинги на конце: иногда требуется добавить нули/передний преформ или хвостовую часть.

Что могу сделать прямо сейчас

  • Пришлите текст задания 8 или кратко опишите, какие требования: формат кадра, какой CRC, какая модуляция, какие тесты.
  • Могу адаптировать вышеуказанный шаблон под ваши требования и дать готовый рабочий код (Python/C/C++ — на выбор).
  • Могу разобрать ваш текущий код: присылайте фрагменты, ошибки/недочёты — помогу отладить.

Готов продолжить после того, как вы сообщите формулировку задачи или пришлёте ваш текущий код/ошибки.