|
|
  |
Преобразование данных 16 бит в 24 бит, как правильно реализовать |
|
|
|
Feb 9 2009, 07:39
|
Знающий
   
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112

|
Цитата(torik @ Feb 9 2009, 10:20)  Как правильно реализовать сие преобразование, где подглядеть? Т.е. нужно два 24-разрядных слова плотно записать (считать) в три соседних 16-разрядных слова? Если так, то или программно путем перекомпоновки, или аппаратно. Во втором случае между памятью и Nios нужна внешняя схема с FSM.
|
|
|
|
|
Feb 9 2009, 08:10
|

Участник

Группа: Участник
Сообщений: 27
Регистрация: 26-01-08
Из: Гусь-Хрустальный - Владимир
Пользователь №: 34 452

|
Если тактов хватает, то можно через общее кратное, через 8 битную FIFO. Вся логика это 2 счетчика (один до 3-х второй до 2-х) и никаких FSM. Самое главное это лишнего чего не прочитать из нее, а для этого нужно флаги заполненности правильно запрограммировать, чтобы быть уверенным, что в FIFO есть больше или хотя бы два байта.
--------------------
За беспокойство не беспокойтесь.
|
|
|
|
|
Feb 9 2009, 08:26
|

Гуру
     
Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359

|
Цитата Т.е. нужно два 24-разрядных слова плотно записать (считать) в три соседних 16-разрядных слова? Если так, то или программно путем перекомпоновки, или аппаратно. Во втором случае между памятью и Nios нужна внешняя схема с FSM. Никакого программно - как вы себе представляете программную перекомпоновку видео с помощью ниоса? А что это за схема FSM? Цитата Можно расширить до 32 байт (байт на альфа-канал или просто пустой) можно и 24 до 16 ужать. Можно и последовательно читать. нехочется расширять до 32 байт, т.к. это требует увеличения полосы пропускания памяти (а ведеопотоков будет несколько)... Цитата Если тактов хватает, то можно через общее кратное, через 8 битную FIFO. Вся логика это 2 счетчика (один до 3-х второй до 2-х) и никаких FSM. Самое главное это лишнего чего не прочитать из нее, а для этого нужно флаги заполненности правильно запрограммировать, чтобы быть уверенным, что в FIFO есть больше или хотя бы два байта. Через 8бит FIFO, это, как я понял, сперва нужно преобразовать в последовательный код? Частоты слишком высокие...
--------------------
Быть. torizin-liteha@yandex.ru
|
|
|
|
|
Feb 9 2009, 08:32
|

Гуру
     
Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230

|
Цитата(torik @ Feb 9 2009, 10:26)  нехочется расширять до 32 байт, т.к. это требует увеличения полосы пропускания памяти (а ведеопотоков будет несколько)... А какие проблемы вообще? 1. Вычитали R0G0 2, вычитали B0,R1 -> R0G0B0 3. вычитали G1B1 -> R1G1B1 4. вычитали R2G2 5. вычитали B2R3 -> R2G2B2 6. вычитали G3B3 -> R3G3B3 итд.
|
|
|
|
|
Feb 9 2009, 08:46
|

Гуру
     
Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359

|
Цитата А какие проблемы вообще? 1. Вычитали R0G0 2, вычитали B0,R1 -> R0G0B0 3. вычитали G1B1 -> R1G1B1 4. вычитали R2G2 5. вычитали B2R3 -> R2G2B2 6. вычитали G3B3 -> R3G3B3 итд. представьте себе это в коде... Цитата это пишете по 16, а читаете 3 такта по 8. т.к. данные видео 24 бит параллельно, то частота при чтении по 8 бит в 3 раза выше...
--------------------
Быть. torizin-liteha@yandex.ru
|
|
|
|
|
Feb 9 2009, 08:49
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(torik @ Feb 9 2009, 02:46)  представьте себе это в коде... элементарно, 1 регистр + 3 мультиплексора и flip-flop. Цитата т.к. данные видео 24 бит параллельно, то частота при чтении по 8 бит в 3 раза выше... а вы как хотели, чудес то не бывает %)
--------------------
|
|
|
|
|
Feb 9 2009, 12:47
|

Гуру
     
Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230

|
Цитата(torik @ Feb 9 2009, 14:37)  Сейчас преобразую 16 в 24, надо всего лишь в 1.5 раза больше частоту. Правда как-то пока корявенько код выглядит... Не понял. Частота меняться не должна! Допустим у вас частота видео 10мегагерц, а частота внутрненней шины 100 мегагерц. Короче делайте три FIFO: На R,G и B. Для простоты по 256 байт каждое. Делайте схемму которая будет выгребать данные из ФИФА с частотой 10 мегапикселей в секунду. Разумеется делая паузы на кадровые и строчные импульсы. Потом сдлайте флаг опустошения FIFO (сами посчитаете сколько нужно). Как только fifo пустое "более чем" ваш видеоконтроллер должен подключиться к шине, и в режиме burstа выгребать данные, со скоростью 100*16 бит в секунду. На лету он должен их преобразовывать в 24 бита, и отправлять в FIFO. Я понятно выражаюсь?:
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|