MyFPGA Forum

标题: ED2 framebuffer and video capture interface for SOPC [打印本页]

作者: jeff    时间: 2010-3-10 22:21
标题: ED2 framebuffer and video capture interface for SOPC
基於友晶數位相機範例修改為sopc架構
包含簡易的framebuffer及viedo capture功能及可執行之範例
平台:altera7.0+de2
文件:http://www.scribd.com/doc/13353357/-SOPC-
程式:http://www.ntut.edu.tw/~wyliang/SOPC-VideoFramework.zip
可延伸應用
(1)可整合uclinux fb
(2)多圖層疊圖
(3)簡易影像偵測功能
作者: jeff    时间: 2010-3-19 15:14
update to altera 9.1 and using avalon bus naming with basic test case only
http://webhd.xuite.net/_oops/jeff_tw/ah3
作者: kay54068    时间: 2010-3-19 20:08
不好意思,請問在de2上該如何操作,我測試此專案都沒畫面。

煩請指教,謝謝。
作者: jeff    时间: 2010-3-19 21:31
我記得de2(非de2-70)好像有兩版hw如果你手上是舊的那版的話
請在該專案 DE2_TOP.v中加上
assign TD_RESET = 1'b1; // Bypress 27 MHz  PIN_C3
舊的不加這行27mhz會打不出來,畫面有可能就是黑的了
另外demo中有編好的程式你可以先試著執行看看~
作者: kay54068    时间: 2010-3-20 00:41
本帖最后由 kay54068 于 2010-3-20 00:59 编辑

感謝您的回覆,之前問題沒寫好,再請問您幾個問題:
1.這個project 下載.sof 檔 至de2後,再透過niosii IDE下載 .elf 後該如何控制,系統才會正常動作(目前VGA畫面是黑色,LCM是白色)。
2.此project每秒大概可以處理幾張CCD透過NIOS II 處理過後的動態影像畫面?
3.大大是否有從DE2-70建構的版本可以參考?

操作環境: Quartus II 8.0 Web Edition、Nios II  7.2 IDE。

以上問題,煩請指教。
kay54068@hotmail.com
作者: jeff    时间: 2010-3-20 08:29
1.我猜你的是de2舊版的,有可能是27mhz沒起來,vga跟lcm都是吃那個clock(可以用signaltap看一下)
   你可以試著打開專案在 DE2_TOP.v中加入assign TD_RESET = 1'b1; 重編sof
   我有做了一版你可以試一下http://webhd.xuite.net/_oops/jeff_tw/hrl
2.ccd是靠dma搬的基本上不吃cpu的資源但吃sdram的頻寬,如果你不需要把ccd停下來處理資料
    應該ccd吐多少出來就會吃到多少,如果你把ccd停下來處理資料,那這中間的frame就要可能要捨棄了
3.我沒有de2-70,理論上應該是可行吧,提供的程式只是概念的實作分享,不保證沒有bug~
作者: jeff    时间: 2010-3-20 12:25
多圖層疊圖範例colorkey(altera9.1)
http://webhd.xuite.net/_oops/jeff_tw/at7
使用lcm進行兩個framebuffer疊圖(vga好像撐不住可能要把rgb改成16bit)
畫面中的紅線與底層的ccd畫面分屬不同圖層
疊圖方式就只是用一多工器選擇不同圖層
assign Read_DATA_LCM = (Read_DATA_LCM_FB1==32'h00000000) ? Read_DATA_LCM_FB0 : Read_DATA_LCM_FB1 ;
作者: kay54068    时间: 2010-3-22 14:53
我在DE2_TOP.v 加入 assign TD_RESET = 1'b1; 但還是沒有畫面,請問是哪裡出錯了呢?
作者: Steady_Chou    时间: 2010-3-22 19:43
回复 1# jeff

這個 project 太棒了!! 感謝分享~
作者: Steady_Chou    时间: 2010-3-22 19:45
我在DE2_TOP.v 加入 assign TD_RESET = 1'b1; 但還是沒有畫面,請問是哪裡出錯了呢? ...
kay54068 发表于 2010-3-22 14:53



你要不要去signaltap抓一下看看CCD進來的:
CCD_DATA,
CCD_PIXCLK,
CCD_FVAL,
CCD_LVAL,
CCD_PIXCLK
這些訊號有沒有正確WORK ?
作者: jeff    时间: 2010-3-22 23:03
demo的程式有測試過了應該是可以執行,除了舊版子那個27mhz的問題外
(1)你可以先確認一下你的平台DE2(非DE2-70)+DC2(非D5M)+LCM(非LTM)
(2)下載demo的sof加elf測試(for de2 new hw version)
(3)下載http://webhd.xuite.net/_oops/jeff_tw/hrl加demo中的elf測試(for de2 old hw version)
(先不要自已編altera7有些設定好像會跑掉,可以的話直接試9.1的版本應該比較好而且test case比較單純)
(4)signaltap直接看live的信號debug,這應該算放大絕招了這再不行那就沒辦法了,在測altera9.1的時候fifo一直沒吃到bus上的clock不知道為什麼,就是用signaltap直接看信號才抓到的,後來才從外部直接拉clock進去硬要他跑~
作者: kay54068    时间: 2010-3-22 23:36
我直接下載http://webhd.xuite.net/_oops/jeff_tw/hrl 的sof 檔再透過niosII IDE 下載至de2上是有畫面的,在Bypass 模式下畫面更新很不錯但Gray-2、 Scale-diff 、CCL模式下更新畫面的速度不是很理想(是NIOS II軟核速度更不上嗎?)。
可是我重編/重建此專案就一直沒有畫面 ,但
CCD_DATA,CCD_PIXCLK,
CCD_FVAL,CCD_LVAL,CCD_PIXCLK這些訊號都有正常WORK。

不好意思,本人較愚笨,請見諒
作者: jeff    时间: 2010-3-23 07:18
如果是這樣的話就有可能是工具的問題了,altera各版本好像不是很相容
最好是相用相同的版本不過altera7.0可能比較不好取得
之前測試也無法從7.0的程式直接升級到9.1
後來是重建整個sopc,然後再重測vga_if及ccd_if的各個信號腳正否正常
先測vga_if部分比較好測,你可以在framebuffer plan資料然後用signaltap trace
可以的話建議你使用altera9.1配合已更新至9.1版的程式(你的應該是舊版子記得加上27mhz那行)

至於niso算圖部分效能就比較差了畢竟cpu也沒有很快,還要跟vga/ccd/lcm搶sdram頻寬
這部分可能就要試著將部分運算改為硬體來改善了
作者: Steady_Chou    时间: 2010-3-23 08:50
如果是這樣的話就有可能是工具的問題了,altera各版本好像不是很相容
最好是相用相同的版本不過altera7.0可 ...
jeff 发表于 2010-3-23 07:18


我也同意jeff的說法,之前只要換Quartus II版本compile DE2_TV的code就會有問題,畫面會出不來

解決的方法是加timing constrain (撰寫.sdc)讓compile更嚴謹,但是有時候還是沒辦法解決

最後我只好把SDRAM的clock降頻才解決掉,可以試試看
作者: jeff    时间: 2010-3-27 01:02
uclinux fb demo only
開發環境未保留所以只有編好的檔案,基本上架構相同
http://webhd.xuite.net/_oops/jeff_tw/erl

作者: REN    时间: 2010-3-27 10:23
回复 15# jeff


    請問這範例是 製作一個GUI介面在 uClinux當中嗎?
作者: jeff    时间: 2010-3-27 11:09
畫面顯示的gui是nano-x demo程式( 基於fb的gui,是拿來驗證fb可動作的)
該範例主要展示vga_if經由修改altfb driver可成為uclinux的fb裝置
之前在試的時候滑鼠可是動,不過這個demo好像不行忘了要修改什麼了
作者: REN    时间: 2010-3-27 11:29
回复 17# jeff


    謝謝 Jeff 大大的回答 果然是神人輩出 讓小弟感到要更努力才行
作者: jeff    时间: 2010-3-28 13:39
多圖層疊圖alpha blending範例
http://webhd.xuite.net/_oops/jeff_tw/fec
紅色區塊為alpha rate為50%,非紅色區塊為colorkey直接穿透

作者: Steady_Chou    时间: 2010-3-28 14:34
回复 19# jeff

哇!! 這麼利害... 真的是高手阿~
感謝分享
作者: REN    时间: 2010-3-29 20:59
回复 17# jeff


    不好意思 另外想請教 uClinux terminal畫面好像是在LCM顯示,這點是如何做的呢?
作者: jeff    时间: 2010-3-31 07:46
回复 21# REN


    我使用的還是pc端的terminal,
    lcm上的那個是nano-x的範例nxterm,由於滑鼠跟鍵盤沒有驅動
     所以我也不知道那個termainal是否能正常運作
作者: REN    时间: 2010-3-31 10:39
回复 22# jeff


    我了解了 謝謝jeff..版主
作者: REN    时间: 2010-4-3 16:26
回复 22# jeff


    我後來發現那個範例是 把pc-terminal 的畫面 類似擷圖的方式 show 在uClinux畫面 並不是真的在uClinux 上面 show 出 terminal 。

   是在NIOSWIKI 上面找到 Framebuffer 範例。
作者: syjuang    时间: 2010-4-10 13:40
這個 project 太棒了!! 感謝分享~
作者: kay54068    时间: 2010-4-10 23:57
回复 19# jeff

jeff 大大您好,我想利用轉換圖層的方法在原本有晶提供的TV box DEMO 上實現外掛字幕的功能。
請問是否可以分享此多圖層疊圖的"專案範例"給我參考。謝謝︿︿

E-MAIL: kay54068@hotmail.com
作者: jeff    时间: 2010-4-11 20:36
回复 26# kay54068


    在連結中已經有附上完整的專案了
     fb0是ccd進來的畫面
     fb1是做osd層用,我有實作一個簡易的繪制字型函式
     然後兩fb做疊圖,基本上該範例應該可以延伸出簡易的osd了
     我有試過刷3個vga(640x480 32bit per pixel )會不夠力畫面會花掉,所以才用lcm(320x240)
    如果要在tv box demo基礎上做osd的話可能要注意一下頻寬的問題
作者: kay54068    时间: 2010-4-12 14:10
回复 27# jeff

謝謝jeff大大的指導,之前提出的TV BOX 外掛上字幕目前大致上已經完成。
但輸出至VGA上有時候畫面會花掉(字幕圖缺角),請問是什麼問題呢?
在TV畫面與VGA畫面多圖層多工選擇我用此寫法

assign VGA_Read_DATA = (NIOS_Read_DATA==32'h00000000) ? {TVBlue,TVGreen,TVRed} : NIOS_Read_DATA ;       

VGA_Read_DATA:輸出至 VGA_Controller 的RGB

.iRed(VGA_Read_DATA[9:0]),
.iGreen(VGA_Read_DATA[19:10]),
.iBlue(VGA_Read_DATA[29:20]),
作者: Steady_Chou    时间: 2010-4-12 14:30
回复 28# kay54068

會不會是 Deinterlace 的關係??
作者: jeff    时间: 2010-4-12 22:20
回复 28# kay54068


    我想不太到在de2上要怎麼做,基本上刷3個vga(640x480x32bit)就可能會撐不住了
     而且deinterlace就要用sdram做framebuffer,
    如果把資料用經由avalon bus送進來再出去的話應該撐不住,
     不太清楚你是怎麼做到的~

    以下是我的想法你可以參考一下(純想法未知是否可行)
     (1)如果是ccd那個範例想刷3個vga(ccd input +fb0 output + fb1 output)
        可以試著把畫素降為16bit(RGB565),這樣頻寬應該可以撐的住
     (2)tv box,我覺得用de2-70比較可行一個sdram做deinterlace
        另一個sdram給cpu做osd然後把兩個疊圖,效果應該會不錯
    (3)如果你在de2-70你還可以試著把deinterlace後的資料用ccd_if的輸入
         然後用ccd的範例的方式疊圖,但還是要降畫素,
         可以試著降osd層改為1bpp(colorkey+字型色),
          這個好處是可以抓圖,但還要配合sync的信號可能不是很好做…
作者: kay54068    时间: 2010-4-14 00:29
本帖最后由 kay54068 于 2010-4-14 00:55 编辑

回复 30# jeff

謝謝jeff大大的指導,我是利用DE2_70 平台去做的。TV-BOX那塊是用 Multi-Port SDRAM 去做Buffer,在VGA DAC輸出是利用多工器切換送進 VGA_Controller 的DATA :
assign VGA_Read_DATA = (NIOS_Read_DATA==32'h00000000) ? {TVBlue,TVGreen,TVRed} : NIOS_Read_DATA ; 。
有幾個問題想請教您:
1.我在NIOSII IDE軟體設計上簡單畫一條線例如:
        for(j=0;j<640;j++){  frame_buffer[1*640+j]=0xffffffff;}
線段會不完整會有幾個地方不會顯示。但我多畫個幾條或下面再顯示ASCII 碼  例如: (drawString("ABCDEF",100,100);)就會正常顯示。
如果我單單輸出一行ASCII 字串的話某些字會有缺口。

2.NIOSII 在做VGA_IF 初始化 中的
        //maxAddr
        maxaddr=(640*480-128)*4;
        IOWR(VGA_IF_0_BASE,7,maxaddr);
        //length
        length=128*4;
        IOWR(VGA_IF_0_BASE,3,length);

       資料的maxaddr為什麼要規劃成(640*480-128)*4 ?
       以及資料長度要規劃成128*4 ?

3.在SOPC Builder 上 Component 的 BASE都要LOCK在我們所設定的位址參數嗎?

PS:我只用一組 DMA 以及 VGA_IF 在Arbitration設置 sdram Controller 是設成 Arbitration(30,30,60)
     我猜想VGA輸出畫面會有問題是不是Arbitration設置上出錯呢?

以上問題,煩請指教^^。
作者: jeff    时间: 2010-4-14 21:32
回复 31# kay54068


    (1)是否有圖可以參考,不知破的情形大概是如何,如果是破圖的話我是猜頻寬問題
           你有提到你使用的是Arbitration(30,30,60),
           如果你的cpu、bus、sdram是在50mhz
        那這組參數有點margin,你可以試試Arbitration(20,20,60),
           如果cpu、bus、sdram都已經拉到100mhz的話那頻寬應該是夠的
     (2)maxaddr是最後一次般資料的開始位置,所以減掉最後一次搬的量
          length=128*4,這是給dma看的,單位是byte,一個畫素是32bits所以是8bits * 4
   (3)我習慣memory map是固定的,先規畫好的,這樣初始硬體的程式碼就會固定
          sopc builder有時候會亂跳,我是調好我想要的就把它lock起來,
          不lock也沒關系,但初始化硬體的程式碼就要check一下是否與實際規劃一致
作者: kay54068    时间: 2010-4-16 00:17
本帖最后由 kay54068 于 2010-4-16 00:33 编辑

回复 32# jeff
謝謝大大的回覆,我還是不知道該解決之前所說的問題,目前的Arbitration(30,30,60)-100MZ(在sopc builder中加的pll)。
1.第一次只在y=10,的地方畫一條白線,顯示有問題
  for(j=0;j<640;j++)
       {   frame_buffer2[10*640+j]=0xffffffff; }

2.之後在x=100,y=100的地方顯示ascii字串,白線有顯示出來但字串顯示不完整
    for(j=0;j<640;j++)
    {   frame_buffer2[10*640+j]=0xffffffff; }  
     drawString("ABCDEFGHIJKLMNOPQRSTUVWXYZ",100,100);  

原始圖

字串部分放大圖


SOPC Builder 設置

軟體主程式

       //dma addr
        IOWR(VGA_IF_0_BASE,4,0x00800820);
        //maxAddr
        maxaddr=(640*480-128)*4;
        IOWR(VGA_IF_0_BASE,7,maxaddr);
        IOWR(VGA_IF_0_BASE,1,&frame_buffer);     
        //writeAddress
        IOWR(VGA_IF_0_BASE,2,0x00800818);
        //length
        length=128*4;
        IOWR(VGA_IF_0_BASE,3,length);
        //master start
        IOWR(VGA_IF_0_BASE,0,0x0001);
       //dma addr
         IOWR(LTM_IF_BASE,4,0x00000080);
      //clear screen
      memset(frame_buffer,0x0,sizeof(frame_buffer));
     
           for(j=0;j<640;j++)
            {   frame_buffer2[10*640+j]=0xffffffff;
             }  

       drawString("ABCDEFGHIJKLMNOPQRSTUVWXYZ",100,100);

開發環境:Quartus II 9.0 (32-Bit)、Nios II  9.0 IDE
作者: jeff    时间: 2010-4-16 08:33
回复 33# kay54068


    試一下改vga_if中的
    VGA_FIFO u1(
             .aclr(avs_s0_export_fifo_clr),
             .data(avs_s0_writedata),
             .q(avs_s0_export_oDATA_OUT),
             .rdclk(avs_s0_export_eVgaCLK),
             .rdreq(avs_s0_export_erdreq),
             //.wrclk( avs_s0_export_system_clock ),//using cpu clock from external
             .wrclk( csi_clockreset_clk ),
             .wrreq( avs_s0_write),
             .wrusedw(wrusedw)
         );
作者: kay54068    时间: 2010-4-16 17:27
本帖最后由 kay54068 于 2010-4-16 17:28 编辑

回复 34# jeff

謝謝大大的回覆,我將vga_if 內的 wrclk 修改成.wrclk( csi_clockreset_clk ),後還次會有之前的問題。
但我在Y=480(如下片段程式)畫一條白線畫面就不會有問題了!請問我是哪裡出錯了呢?
for(j=0;j<640;j++)
               frame_buffer2[480*640+j]=0xffffffff;
作者: jeff    时间: 2010-4-16 20:20
本帖最后由 jeff 于 2010-4-16 20:56 编辑

回复 35# kay54068


    我看了一下你初始的是frame_buffer,畫的是frame_buffer2兩個是指向同一位置嗎
     如果frame_buffer2是對齊frame_buffer,畫面應該是從0~(480*640-1)
     那frame_buffer2[480*640+j]已經超出vga規劃範圍應該不會有畫面呀
     不過你的畫面看來也又沒有差很多,你可以檢是一下frame_buffer的宣告
     或者是把系統cpu bus sdram降到50mhz使用Arbitration(20,20,60)試試
    PS. 可以印一下frame_buffer的位址看看,我不確定如果沒對齊data bus(4 bytes)會有什麼情況
作者: kay54068    时间: 2010-4-16 23:06
回复 36# jeff

不好意思,貼錯程式碼。那是之前做兩個VGA_IF一個輸出至VGA一個輸出至LTM的測試,但沒有成功(LTM畫面會不穩)。

alt_32 frame_buffer[640*512];   //VGA display buffer

        //dma addr
        IOWR(VGA_IF_0_BASE,4,0x00800820);
        //maxAddr
        maxaddr=(640*480-128)*4;
        IOWR(VGA_IF_0_BASE,7,maxaddr);
        IOWR(VGA_IF_0_BASE,1,&frame_buffer);     
        
        //writeAddress
       IOWR(VGA_IF_0_BASE,2,0x00800818);
        //length
        length=128*4;
        IOWR(VGA_IF_0_BASE,3,length);
        //master start
        IOWR(VGA_IF_0_BASE,0,0x0001);
      
    memset(frame_buffer,0x0,sizeof(frame_buffer));   
     drawString("abcdefghijklmnopqrstuvwxyz",100,120);
            for(j=0;j<640;j++)
                frame_buffer[480*640+j]=0xffffffff;
有兩個問題請教您:
1.frame_buffer[480*640+j]雖然超出範圍但為何會影響其他位址的畫面輸出(畫面變正常)?
2.上述的問題會有可能是Quartus II版本問題嗎 ( 我VGA_IF是在SOPC Builder 9.0 重新匯入.V檔之後建立出的 VGA_IF_hw.tcl)  ?
作者: jeff    时间: 2010-4-17 08:53
本帖最后由 jeff 于 2010-4-17 08:54 编辑

回复 37# kay54068


     確認一下是否有實作reset的部分
      //reset device and interface fifo
     IOWR(PIO_0_BASE,0,0x0001);
     IOWR(PIO_0_BASE,0,0x0000);
     IOWR(PIO_0_BASE,0,0x0001);
     這個信號會按照順序重設vga_fifo、vga_if、VGA_Controller畫面定位才會正常
      不過你的畫面看來又是穩定的,定位看起來是正確的,掉資料的情況
      看起來像是VGA_Controller跟vga_fifo讀資料結果讀不到,想不到為什麼會這樣
      看你要不要先移掉疊圖的部分看看是否能正常動作
      如果你覺得有可能是軟體的問題,你可以用我之前分享的程式在de2上面試試畫vga是否正常
      我沒de2-70所以沒辦法幫你測,你可能要靠自已了~
    我知道有人有在de2-70上成功執行vga_if跟ccd_if了,但我不確定是否要修改什麼
作者: 9502135    时间: 2010-5-1 12:44
回复 1# jeff

請問jeff大大是否有de2-70的範例?? 我CCD_IF在de2-70 跑不起來,不知是什麼原因Frame_Cont 一直不會跑。想請問大大是否有DE2-70的範例可以給我參考一下^^。
作者: yuanhuayong    时间: 2010-8-22 15:43
请问版主,那个ucosii里面定义的Buffer数组是存放在Heap里面的吗?还是在SDRAM里面开的一个区域?
程序在SDRAM那一块运行呢?为什么我找不到ccd dma写入数据的目标地址呢?
作者: jeff    时间: 2010-9-2 13:01
回复 40# yuanhuayong


    buffer是存放在sdram上的,整個程式直接download到sdram上執行
     在c裡面宣告int buffer[640*512],這應該會被編在bss段(要保留給ccd用的fb),
     但不知道會在那個位置所以需在control開一暫存器讓程式把要使用的buffer位值交給他
     IOWR(CDD_IF_0_BASE,1,&buffer); //暫存器offest 1就是要給程式填buffer在那裡的
作者: kay54068    时间: 2010-9-27 20:18
請問大大,我系統cpu bus sdram升到 150mhz使用Arbitration 要如何設定?
作者: kay54068    时间: 2010-10-4 22:03
請問大大如果我的畫框要改成800X480(友晶的LTM)要如何修改VGA_IF與CCD_IF 呢? 還是只修改FIFO的depth?
作者: jeff    时间: 2010-10-5 12:26
本帖最后由 jeff 于 2010-10-5 12:29 编辑

回复 43# kay54068

    Arbitration要看共用的裝置及所需的頻寬決定
     如果以vga而言 640x480x60fps 大約需要25mhz 以150mb去分配至少需要保留1/6你可以實驗一下

    輸出裝置解析度變大的話要修改maxaddr及buffer的size (如果沒修改的話應該是畫面會向下移動)
   這個位置是畫面最高位址,之後會回fb的開頭搬資料
    maxaddr=(800*480-128)*4;
   
    輸入裝置部分如果為640x480時
     就看你要怎麼對齊,要上向對齊、置中、還是向下對齊因為輸入會比較小一點
作者: kay54068    时间: 2010-10-6 01:33
請問大大 buffer的size 是指?? 只需修改軟體的部份就好嗎?VGA_IF或CCD_IF都不用修改??
我試過maxaddr=(800*480-128)*4; 輸出到LTM的話畫面會亂跳~

以上問題,煩請指教~
作者: caijin2958    时间: 2011-1-6 09:11
你好jeff,请问我的系统SDRAM时钟只有75M hz,只是将RGB图像数据采集进来放进buffer中,然后只给VGA(640*480)输出,使用两个分别使用两个DMA controller,那么SDRAM的Arbitration 该如何设置。
我在默认Arbitration设置情况下要么DMA controller来不及取 CCD_IF的FIFO中的数据,要么VGA_IF的FIFO中的数据被取空了来不及补上。
理论上SDRAM的频宽是够得
作者: yqzhang    时间: 2011-1-6 20:22
不错不错。。。
作者: 058hihi    时间: 2011-1-7 12:53
Hi Jeff,
I'm doing project DE2+LTM touchscreen+D5M camera with niosII processor (don't use sdram controller 4 port).
I use project "SOPC-VideoFramework_altera9_1" but not success.
May you help me? Can you send me camera IP core
Thank you very much !!!
058hihi@gmail.com
作者: 058hihi    时间: 2011-1-7 12:54
Hi Jeff,
I'm doing project DE2+LTM touchscreen+D5M camera with niosII processor (don't use sdram controller 4 port).
I use project "SOPC-VideoFramework_altera9_1" but not success.
May you help me? Can you send me camera IP core
Thank you very much !!!
058hihi@gmail.com
作者: jeff    时间: 2011-1-24 14:02
回复 49# 058hihi

hinet隨意分享(需先點選廣告後下載)

SOPC-VideoFramework_altera9_1.rar
http://webhd.xuite.net/_oops/jeff_tw/knm

NIOS_lcm_alphablending.rar
http://webhd.xuite.net/_oops/jeff_tw/6xo

NIOS_lcm_color_key.rar
http://webhd.xuite.net/_oops/jeff_tw/8bo

uclinux_fb_demo.zip
http://webhd.xuite.net/_oops/jeff_tw/5my
作者: kay54068    时间: 2011-4-9 18:28
回复 15# jeff
請問大大如何將vga_if經由修改altfb driver 成為uclinux的fb裝置??
作者: jeff    时间: 2011-4-11 22:35
ref.zip (1.79 MB, 下载次数: 41) 回复 51# kay54068
我的資料不全你參考一吧
首先先用system_0.ptf產生nios2_system.h,這裡會檢查dma的interrupt先把它接上產生ptf,實際上硬體不要接dma的中斷
接著修改altfb.c加入初始化lcm的部分(這裡參考nios2_system.h裡面定義的io位址),接著要config啟用altfb
如果用rgb888的話vga_if要修改一下把10bits的最低2bit丟掉配合uclinux的fb格式(如果你去接nano-x這樣顏色才對的上)
基本上lcm初始化後就會一直刷fb的資料到lcm上,這裡沒有做double buffer可能會看到刷畫面的動作
其它部分我就不是很記得了
作者: kay54068    时间: 2011-4-16 14:32
回复 52# jeff

感謝jeff的回覆
請問如何做double buffer才不會一直看到刷畫面的動作?

謝謝指導。
作者: kay54068    时间: 2011-6-23 21:13
回复 53# kay54068


    感謝jeff的回覆
請問如何做double buffer才不會一直看到刷畫面的動作?

謝謝指導。
作者: 3539591    时间: 2011-7-14 09:04
如果要换成D5M要怎么改呢?
作者: jeff    时间: 2011-7-24 22:34
double buffer 部分我也沒做過,只是大概知道這樣的東西
D5M 我手邊沒有所以也不知道該怎麼改,但原理應該是一樣的

分享一個gray video的程式
http://webhd.xuite.net/_oops/jeff_tw/kdb

我把input的video取1/16到320*256,然後做轉灰階,每秒大概可以做到30fps
作者: flyfpga    时间: 2012-7-14 18:58
本帖最后由 flyfpga 于 2012-7-14 19:02 编辑

"hinet隨意分享(需先點選廣告後下載)

SOPC-VideoFramework_altera9_1.rar
http://webhd.xuite.net/_oops/jeff_tw/knm

NIOS_lcm_alphablending.rar
http://webhd.xuite.net/_oops/jeff_tw/6xo

NIOS_lcm_color_key.rar
http://webhd.xuite.net/_oops/jeff_tw/8bo

uclinux_fb_demo.zip
http://webhd.xuite.net/_oops/jeff_tw/5my"

找不见了:'(  请再上传一次好吗?:'(  非常感谢
作者: jeff    时间: 2012-7-26 19:42
回复 57# flyfpga

可以至這裡下載
    http://www.cnblogs.com/jeffblog




欢迎光临 MyFPGA Forum (http://www.myfpga.org/discuz/) Powered by Discuz! X3