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

 
 
> Графический TFT LCD с параллельной шиной и 18-битным цветом. Помогите запустить, Есть три модели от Sharp, Nec и U.R.S. у всех разные тайминги.
syoma
сообщение Mar 14 2008, 18:38
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Народ подскажите пожалуйста, кто сталкивался с реализацией интерфейса от процессора к таким LCD. То есть есть видеобуффер с 18-битным цветом. И я делаю на FPGA реализацию низкоуровнего интерфейса, который бы с определнным Фреймрейтом(60FPS) запихивал его в LCD. Прикол в том, что есть два последних дисплея из вышеупомянутого списка и спецификация от Шарпа на такой же дисплей.
Все дисплеи имеют абсолютно одинаковую распиновку, разрешение 320х240, по 6 бит на цвет и одинаковые и как я понял стандартные сигналы VSYNC, HSYNC, DATA_ENABLE, CLK, R/L, U/D.
С двумя последними вроде все понятно - они определяют направление развертки и по идее просто цепляются к соответсвующим напряжениям питания.
Но со всеми остальными полная фигня.
Во первых я так и не понял - в двух моделях описано два возможных режима работы FIXED и DE. Второй вроде как упрощенный - только DE, но почему-то в одном дисплее используется сигнал VSYNC, а в другом просто DE должен быть длинней и это вроде как начало кадра.
Во вторых у всех FIXED Mode вроде как одинаковый, но у каждого свои тайминги для VSYNC и HSYNC и свои количества холостых линий и пикселей - у одного 50 линий после VSYNC, у другого 37, у трeтьего 74, то есть при всей своей одинаковости - заменить один дисплей на другой без изменения программы нельзя - картинка просто будет сдвинута. Также в этом режиме одному нужен DE, другой только без DE работает а в третьем можно и так и так - DE определяет начало рабочих данных.
Ну и что вообще меня убило, что у них разная полярность сигнала DE и что самое прикольное фазировка CLK! У одного синхрoнизация по спаду у другого по фронту!
В общем я офигел, причем все пишут что базируются на одной спецификации от Sharpa.
В итоге 2 дня мудохаюсь, на одном дисплее всякие полоски мигают. Другой просто черный.
Помогите разобраться плиз - все таки надо этот FIXED режим реализовывать или как то еще их можно запустить?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vladimir_orl
сообщение Apr 13 2018, 13:23
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 191
Регистрация: 18-09-12
Из: Орёл
Пользователь №: 73 591



Прикрепленное изображение



Позвольте продолжить тему.

Сейчас только начинаю осваивать и верилог и подключение таких дисплеев.

Прикрепленный файл  OSD057VA01CT_V0.4__With_Touch_.pdf ( 390.22 килобайт ) Кол-во скачиваний: 28


Имею плату DE2-115 от альтеры (точнее терасик). Пишу на верилоге.

Имею дисплей OSD057VA (даташит во вложении)

Подскажите, сигналы vsync и hsync когда в 1, а когда в 0 ?

И то же самое про сигнал DE.

Как я понял, лучше перевести дисплей в режим sync ( не de-оnly). Правильно?



Код модуля на верилоге:

Код
module osdDisplaySimple (input clkPin, input adjVal, output reg pixPin, output reg HYNC_PIN, output reg VSYNC_PIN, output reg dePin, output reg ledAdjPin, output refOutPin);


integer pixCnt;
integer lineCnt;
integer frameCnt;
integer ledAdjCnt;
integer deLogic;



assign refOutPin = clkPin;


initial
begin
    ledAdjCnt = 0;
    pixCnt = 0;
    lineCnt = 0;
    frameCnt = 0;

    HYNC_PIN = 0;
    VSYNC_PIN = 0;
    dePin = 0;
    ledAdjPin = 0;
end


always @(posedge clkPin)
begin

    ledAdjCnt = ledAdjCnt + 1;
    if(ledAdjCnt > 1250)
    begin
        ledAdjCnt = 0;
        ledAdjPin =  ~ledAdjPin;
    end
    


        
    pixPin = ~pixPin;

    //    Pixels block    
    pixCnt = pixCnt + 1;
    if(pixCnt < 640*2)
        HYNC_PIN = 1;
    else if(pixCnt < 800*2)
        HYNC_PIN = 0;
    else
    begin
        HYNC_PIN = 0;
        pixCnt = 0;

        lineCnt = lineCnt + 1;

        if (lineCnt < 480)
            VSYNC_PIN = 1;
        else if(lineCnt < 525)
            VSYNC_PIN = 0;
        else
        begin
            VSYNC_PIN = 0;
            lineCnt = 0;
        end
    end
    
        
    dePin = HYNC_PIN & VSYNC_PIN;


end

endmodule



топ-модуль:

Код
module top(
    input wire [17:0] SW,
    input wire [3:0] KEY,
    input wire OSC_50,
    output wire [7:0] LED_GREEN,
    output wire [6:0] HEX0,
    output wire [6:0] HEX1,
    output wire [6:0] HEX2,
    output wire [6:0] HEX3,
    output wire [35:0] GPIO,
    output wire UART_TXD,
    output wire [17:0] LED_RED
);
    
  
    integer samples[1024];
    integer sampCnt1;
    integer sampCnt2;
    integer cnt;
    integer cntClk;
    integer trig;
    integer unitCnt;
  
//module osdDisplaySimple (clkPin, adjVal, pixPin, HYNC_PIN, VSYNC_PIN, dePin, ledAdjPin, refOutPin);
osdDisplaySimple Simple   (OSC_50, SW[3], GPIO[33],    GPIO[1],GPIO[2],    GPIO[3], GPIO[4], GPIO[11]);


//    RED color
assign GPIO[32] = SW[0];

//    GREEN color
assign GPIO[6] = SW[1];

//    BLUE color
assign GPIO[5] = SW[2];

//    DMS
assign GPIO[0] = SW[4];

endmodule



всё равно не работает....


В какой полярности д.б. сигналы, подскажите пожалуйста.
Go to the top of the page
 
+Quote Post



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

 


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


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