4501|7

19

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【Altera SoC体验之旅】+ app_vip_demo_video_audio部分代码解读 [复制链接]

本帖最后由 chuqiao 于 2015-6-26 20:58 编辑

刚刚学习SOC不久。这几天在DE1-SoC上编译和运行了友晶提供的一些sample,初步学习了一些相关代码,把自己的理解写下来,希望各位大侠不吝赐教。


1.    硬件(HPS-FPGA)架构
Qsys中连接h2f_ axi_master(而不是h2f_lw_axi_master)到sdram,作为数据输出的FIFO

同时也连接到alt_vip_vfr_0,读出进行图像处理。

经过alt_vip_mix_0进行处理后,最后通过alt_vip_itc_0 alt_vip_itc_0_clocked_video_vid_data输出到VGA接口进行显示。

2.    HPS侧软件

打开内存设备
main.c
    if( ( fd = open("/dev/mem", ( O_RDWR | O_SYNC ) ) ) == -1 ) {
             printf("ERROR: could not open \"/dev/mem\"...\n" );
             return( 1 );
    }


然后进行地址映射
axi_virtual_base=mmap(NULL,HW_FPGA_AXI_SPAN,(PROT_READ|PROT_WRITE),MAP_SHARED,   fd,ALT_AXI_FPGASLVS_OFST );      


通过H2F bridge 映射到连接frame buffer
h2p_vip_frame_reader0_addr=virtual_base + ( ( unsigned long  )(ALT_LWFPGASLVS_OFST + ALT_VIP_VFR_0_BASE ) & ( unsigned long)( HW_REGS_MASK) );


其中ALT_VIP_VFR_0_BASE 对应于Qsys中定义的地址
hps_0.h(80):#define ALT_VIP_VFR_0_BASE 0x100


h2p_memory_add映射到FPGA侧的SDRAM0x0000_0000 -0x03ff_ffff
h2p_memory_addr=axi_virtual_base
+ ((unsigned long)(DEMO_VGA_FRAME0_ADDR)& (unsigned long)(HW_FPGA_AXI_MASK));


配置Frame buffer的位置,图像大小
VIP_FR_Config(VIDEO_WIDTH, VIDEO_HEIGHT);
把frame0/frame1映射到h2p_memory_addr上:
thread_data0.frame0=(volatile unsigned long *)((char*)h2p_memory_addr+FR0_FRAME0_ OFFSET);
thread_data0.frame1=(volatile unsigned long *)((char*)h2p_memory_addr +FR0_FRAME1_ OFFSET);


创建mpg_decode_thread线程
ret0=pthread_create(&id0,NULL,(void *)mpg_decode_thread,&thread_data0);


在mpg_decode_thread函数中,解码后的RGB数据轮流写入frame0和frame1
void mpg_decode_thread(void *ptr)
{
    …
    mpg_decode(mpgfile,data->ID, data->frame0,data->frame1);
    fclose(mpgfile);
}

mpg_decode函数中,使用memcpy将解码后的数据写入frame0frame1,即直接写入FPGA侧的SDRAM
void mpg_decode (FILE * mpgfile, const int ID, volatile unsignedlong *frame0,volatile unsigned long *frame1)
{
    …
    if (nActiveFrame == 0x00)
             memcpy((void *)frame0, (void *)pFrame_xRGB, nFrameSize);
    else
             memcpy((void *)frame1, (void *)pFrame_xRGB, nFrameSize);
    …
}


此帖出自FPGA/CPLD论坛

最新回复

来点更实现的,有对应的license没  详情 回复 发表于 2015-7-16 23:27
点赞 关注(1)
 

回复
举报

111

帖子

1

TA的资源

一粒金砂(中级)

沙发
 
常来交流哦
此帖出自FPGA/CPLD论坛
 
 

回复

19

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

好,多多指教.
此帖出自FPGA/CPLD论坛
 
 
 

回复

5979

帖子

8

TA的资源

版主

4
 
不错!
如果注意一下排版就更好了  哈哈
此帖出自FPGA/CPLD论坛
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 
 

回复

1891

帖子

2

TA的资源

纯净的硅(中级)

5
 
不错呦。。。。。。
此帖出自FPGA/CPLD论坛
 
 
 

回复

19

帖子

0

TA的资源

一粒金砂(中级)

6
 
chenzhufly 发表于 2015-6-26 13:50
不错!
如果注意一下排版就更好了  哈哈

谢谢提醒,改了一下
此帖出自FPGA/CPLD论坛
 
 
 

回复

105

帖子

0

TA的资源

一粒金砂(中级)

7
 
不错,赞一个
此帖出自FPGA/CPLD论坛
 
 
 

回复

105

帖子

0

TA的资源

一粒金砂(中级)

8
 
来点更实现的,有对应的license没
此帖出自FPGA/CPLD论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表