Перейти к содержанию
    

Избыточное кодирование на практике

Привет всем!

Я занимаюсь своей дипломной работой - реализацией на FPGA от Xilinx помехоустойчивого кодера на кодах Рида-Маллера. Работаю в Xilinx ISE 14.7, использую Verilog.

 

По сути, вся работа кодера разбивается на несколько пунктов:

- принимать поток символов и делить его на блоки;

- над этими блоками выполнять арифметические операции;

- склеивать блоки обратно в поток битов.

 

Но кодирование является избыточным - и если входящие блоки по условию составляют 7 бит, то на выходе каждый блок расширяется до 64 бит. По моей задумке, деление на блоки и склеивание обратно проводится через регистры - то есть на входе я по тактовому счёту заношу информацию по одному биту в регистр сдвига 1->7 (самописный на Verilog), откуда спустя каждые пришедшие 7 битов вывожу весь блок на обработку по семибитной шине. Допустим, в таком параллельном виде операции я провёл - и на выходе есть регистр 64->1, который по тактовому счёту должен выводить информацию обратно в канал, собирать всё из кучи шин в один поток - и тут назревает вопрос:

 

Если на входе мы накапливаем блоки по 7 бит, а выпускаем уже по 64 бита с той же скоростью - то мы же просто не будем успевать их выпускать? Надо ли делать тактовые импульсы, поступающие на выходной регистр, в 8 раз короче (и соответственно уменьшать длительность передачи каждого одиночного бита)? Или как это реализовать по-другому?

 

То есть в общем виде мой вопрос прозвучит так: как на практике реализуется избыточное кодирование (в плане соотношения скоростей передачи на входе и выходе кодера) - с использованием какого-либо буфера (который, по идее, всё равно переполнится через несколько тактов?), с изменением ли скорости выходного потока, или каким-то другим методом? Не смог сформулировать волнующий меня вопрос кратко и "научно", поэтому поиски в Интернете пока ничего не дали :)

 

Буду премного благодарен толковым разъяснениям от опытных людей! :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я занимаюсь своей дипломной работой

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

 

То есть в общем виде мой вопрос прозвучит так: как на практике реализуется избыточное кодирование (в плане соотношения скоростей передачи на входе и выходе кодера) - с использованием какого-либо буфера (который, по идее, всё равно переполнится через несколько тактов?), с изменением ли скорости выходного потока, или каким-то другим методом?

Так или иначе, скорость передачи на выходе кодера больше.

На практике - посмотрите например как работают с NAND Flash. Но понятно, что скорость записи данных в микросхему памяти больше, чем передачи данных по USB при сохранении файла на флешку.

Изменено пользователем maksimp

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То есть в общем виде мой вопрос прозвучит так: как на практике реализуется избыточное кодирование (в плане соотношения скоростей передачи на входе и выходе кодера) - с использованием какого-либо буфера (который, по идее, всё равно переполнится через несколько тактов?), с изменением ли скорости выходного потока, или каким-то другим методом?

Да Вы уже ответили на свой вопрос (как говорится грамотно-заданный вопрос уже содержить 50% ответа, а может и все 70 :) ).

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

А вывод такой: в любом случае, помехоустойчивое кодирование увеличивает символьную скорость в канале передачи или что там у Вас. Исключение составляет пожалуй такая пакетная передача, где символьная скорость на входе и выходе устройства одинаковая, а регулировка средней скорости осуществляется на этапе формирования пакетов (новый пакет не формируется пока не будет отправлен старый).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Буду премного благодарен толковым разъяснениям от опытных людей! :)

Сделать управление потоком, как в COM - портах (протокол RTS/CTS или XON/XOFF). Т.е., сигнализировать тому, кто передает вашему устройству данные о том, что ваше устройство временно не готово их принимать ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...