Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: чем разложить pal в параллельный rgb ?
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Аудио/Видео интерфейсы
bzzz77
здрасьте,

ищу какую-нибудь микросхему раскладывающую pal и/или ntsc в параллельный rgb с отдельной синхронизацией. может быть кто-ниудь знает такие?

спасибо
Alex11
Где-то это здесь уже обсуждалось. Одной микросхемы не нашли. Ставите декодер (как вариант TVP5150, их много разных), а затем на FPGA делаете из последовательного потока нужный Вам параллельный, попутно переводя цветоразностный сигнал в RGB.
DAV
FPGA конечно хорошо, на неё ещё что то нагрузить можно - но возможно жирновато. Посмотрите ADV7441, то же конечно не постно.
bzzz77
спасибо
_pv
Цитата(DAV @ Feb 20 2012, 13:28) *
FPGA конечно хорошо, на неё ещё что то нагрузить можно - но возможно жирновато.

а в мелкую cpld не влезет?
умножители на встроенной памяти (хватит ли скорости?, у MAX II/V UFM последовательный и медленный. у Lattice может подходящие CPLD есть), часть на сдвигах сделать.
во внутреннюю память положить таблицы умножения на 298/256 для Y компоненты.
и 408/256 для Cr->R.
остальные Cr->G, Cb->G ровно в два/четыре раза отличаются,
516/256 тоже можно округлить до 2.

хотя в 5M160 с умножением на логике и так вроде влезет.
tvp5150 + 5M160 всё равно заметно дешевле чем ADV7441.

DAV
Может оно и дешевле, только надо ещё и 4:2:2 в 4:4:4 перед матрицей не забыть перевести. Надо считать, если от FPGA ничего более не надо я бы наверное декодер поставил. Правда он на простой и документация на дороге не воляется.
_pv
Цитата(DAV @ Feb 20 2012, 18:39) *
Может оно и дешевле, только надо ещё и 4:2:2 в 4:4:4 перед матрицей не забыть перевести.

это не сложно

Код
module YCrCb2RGB(YCrCb, R, G, B, clk, rst);
input [7:0] YCrCb;
output [7:0] R;
output [7:0] G;
output [7:0] B;
input clk;
input rst;

reg [7:0]rY;
reg [7:0]rCr;
reg [7:0]rCb;
reg [1:0]cnt;

wire [8:0]tY;
wire [8:0]tCr;
wire [6:0]tCb;
assign tY = rY[7:0] + rY[7:3] + rY[7:4];
assign tCr = rCr[7:0] + rCr[7:1] + rCr[7:4] + rCr[7:5];
assign tCb = rCb[7:2] + rCb[7:3] + rCb[7:6];
assign R = (tY[8:0]                     + tCr[8:0] - 8'd223);
assign G = (tY[8:0] - tCb[6:0]          - tCr[8:1] + 8'd135);
assign B = (tY[8:0] + {rCb[7:0],rCb[7]}            - 8'd276);

always @ (posedge clk)
begin
  if (rst)
  begin
    cnt <= 0;
    rY  <= 0;
    rCr <= 0;
    rCb <= 0;
  end
  else
  begin
    case(cnt)
      0: rY  <= YCrCb;
      1: rCr <= YCrCb;
      2: rY  <= YCrCb;
      3: rCb <= YCrCb;
    endcase  
    cnt <= cnt + 1'b1;  
  end
end
endmodule

это никак не проверялось.
занимает 103/160 в 5M160.
с умножением, наверное, можно было бы и по красивее обойтись.
да и арифметику проверить не перепоняется ли чего.
DAV
Я имел ввиду другое. Разностные сигналы Y-R и Y-B на 6.75 МГц идут и правильно их на 13.5МГц на фильтре поднять. Правда как Аналоговые Девицы (ADV7441) делают я не уточнял. А фильтры поболее ресурсов кушают. Может конечно для Вашей задачи это и не важно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.