Jump to content

    
Sign in to follow this  
doesnotmatter

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

Recommended Posts

Привет всем!

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

 

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

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

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

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

 

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

 

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

 

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

 

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

Share this post


Link to post
Share on other sites
Я занимаюсь своей дипломной работой

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

 

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

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

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

Edited by maksimp

Share this post


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

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

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

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

Share this post


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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this