Jump to content

    

doesnotmatter

Новичок
  • Content Count

    1
  • Joined

  • Last visited

Community Reputation

0 Обычный
  1. Привет всем! Я занимаюсь своей дипломной работой - реализацией на FPGA от Xilinx помехоустойчивого кодера на кодах Рида-Маллера. Работаю в Xilinx ISE 14.7, использую Verilog. По сути, вся работа кодера разбивается на несколько пунктов: - принимать поток символов и делить его на блоки; - над этими блоками выполнять арифметические операции; - склеивать блоки обратно в поток битов. Но кодирование является избыточным - и если входящие блоки по условию составляют 7 бит, то на выходе каждый блок расширяется до 64 бит. По моей задумке, деление на блоки и склеивание обратно проводится через регистры - то есть на входе я по тактовому счёту заношу информацию по одному биту в регистр сдвига 1->7 (самописный на Verilog), откуда спустя каждые пришедшие 7 битов вывожу весь блок на обработку по семибитной шине. Допустим, в таком параллельном виде операции я провёл - и на выходе есть регистр 64->1, который по тактовому счёту должен выводить информацию обратно в канал, собирать всё из кучи шин в один поток - и тут назревает вопрос: Если на входе мы накапливаем блоки по 7 бит, а выпускаем уже по 64 бита с той же скоростью - то мы же просто не будем успевать их выпускать? Надо ли делать тактовые импульсы, поступающие на выходной регистр, в 8 раз короче (и соответственно уменьшать длительность передачи каждого одиночного бита)? Или как это реализовать по-другому? То есть в общем виде мой вопрос прозвучит так: как на практике реализуется избыточное кодирование (в плане соотношения скоростей передачи на входе и выходе кодера) - с использованием какого-либо буфера (который, по идее, всё равно переполнится через несколько тактов?), с изменением ли скорости выходного потока, или каким-то другим методом? Не смог сформулировать волнующий меня вопрос кратко и "научно", поэтому поиски в Интернете пока ничего не дали :) Буду премного благодарен толковым разъяснениям от опытных людей! :)