реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Преобразование данных 16 бит в 24 бит, как правильно реализовать
torik
сообщение Feb 9 2009, 07:20
Сообщение #1


Гуру
******

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



Всем привет.

Q8.1, SOPC...
Шина данных с памятью - 16 бит, необходимо из нее читать(записывать) видео 24 бит. Шина авалон "автоматически" не может преобразовать из 16 в 24, значит надо сделать преобразование самому (попроавьте, если я чего-то не знаю).

Как правильно реализовать сие преобразование, где подглядеть?


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
Methane
сообщение Feb 9 2009, 07:24
Сообщение #2


Гуру
******

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



Цитата(torik @ Feb 9 2009, 09:20) *
Всем привет.

Q8.1, SOPC...
Шина данных с памятью - 16 бит, необходимо из нее читать(записывать) видео 24 бит. Шина авалон "автоматически" не может преобразовать из 16 в 24, значит надо сделать преобразование самому (попроавьте, если я чего-то не знаю).

Как правильно реализовать сие преобразование, где подглядеть?

Можно расширить до 32 байт (байт на альфа-канал или просто пустой) можно и 24 до 16 ужать. Можно и последовательно читать.
Go to the top of the page
 
+Quote Post
Serhiy_UA
сообщение Feb 9 2009, 07:39
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112



Цитата(torik @ Feb 9 2009, 10:20) *
Как правильно реализовать сие преобразование, где подглядеть?

Т.е. нужно два 24-разрядных слова плотно записать (считать) в три соседних 16-разрядных слова?
Если так, то или программно путем перекомпоновки, или аппаратно. Во втором случае между памятью и Nios нужна внешняя схема с FSM.
Go to the top of the page
 
+Quote Post
per_aspera_ad_as...
сообщение Feb 9 2009, 08:10
Сообщение #4


Участник
*

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



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


--------------------
За беспокойство не беспокойтесь.
Go to the top of the page
 
+Quote Post
torik
сообщение Feb 9 2009, 08:26
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
Methane
сообщение Feb 9 2009, 08:32
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 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
итд.
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 9 2009, 08:43
Сообщение #7


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(torik @ Feb 9 2009, 02:26) *
Через 8бит FIFO, это, как я понял, сперва нужно преобразовать в последовательный код? Частоты слишком высокие...


это пишете по 16, а читаете 3 такта по 8.
или пишете по 16, читаете по 32 + на выходе фифо логика склеевания (но этот вариант более опасен, если что ошибка может размножиться).


--------------------
Go to the top of the page
 
+Quote Post
torik
сообщение Feb 9 2009, 08:46
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 9 2009, 08:49
Сообщение #9


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(torik @ Feb 9 2009, 02:46) *
представьте себе это в коде...


элементарно, 1 регистр + 3 мультиплексора и flip-flop.

Цитата
т.к. данные видео 24 бит параллельно, то частота при чтении по 8 бит в 3 раза выше...


а вы как хотели, чудес то не бывает %)


--------------------
Go to the top of the page
 
+Quote Post
torik
сообщение Feb 9 2009, 12:37
Сообщение #10


Гуру
******

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



Сейчас преобразую 16 в 24, надо всего лишь в 1.5 раза больше частоту. Правда как-то пока корявенько код выглядит...


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
Methane
сообщение Feb 9 2009, 12:47
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 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.

Я понятно выражаюсь?:
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 10th July 2025 - 01:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01456 секунд с 7
ELECTRONIX ©2004-2016