OpenRisc-27-wishbone接口的vga ipcore的分析与仿真
引言
图形,总是给人直观的感觉。想让ORPSoC能有image/video的输出,是一件很有意义的事情,而VGA就是其中一个不错的选择。
本小节就分析一下一个wishbone接口的vga模块。
1,模块准备
下载:
http://opencores.org/project,vga_lcd
2,模块的architecture
3,模块的使用
这一步需要一点与LCD/vedio相关的知识。我曾经写过一个LCDC的linux driver,并且有数字电视的开发经验,所以理解起来就容易了很多。
这里只把最重要的timing拿来。更过详细信息,请参考内附的spec.
下面这个图要仔细看,真正理解了才行。理解之后,后面的很多事情就好说了。
建议:想象一下,电视的刷新过程。
这个模块是比较简单的,没有复杂的图像处理功能,但是这里还是必须把下面几个概念搞明白:
1>行同步(水平同步),行宽,前肩,后肩。
2>列同步(垂直同步),场宽
3>回扫
4>像素
5>rgb
6>灰阶
7>wishbone的burst访问
8>双buffer工作机制
9>alpha blanking
10>fifo的underrun和overrun
11>调色板的本质作用
4,仿真的整体结构
要想对vga_eng_top这个模块进行仿真,需要建立必要的仿真模型,并将它们连接起来。
5,仿真过程概述
1>复位
2>测试寄存器的读写是否有问题(reg_test)
3>初始化mem。
4>测试vga所有模式下的输出时序是否正确(tim_test),共6个模式。
5>测试DVI pixel数据的正确性:dvi_pd_test
6>测试VGA pixel的数据的正确性:pd1_test
7>测试FIFO的underrun:ur_test
6,各个模式下参数的设置:
for(mode=0;mode<6;mode=mode+1)begin// reset corescen = 0;m0.wb_wr1( `CTRL, 4'hf, 32'h0000_0000);repeat(10) @(posedge clk);$display("Mode: %0d", mode);case(mode)0:beginthsync = 0;thgdel = 0;thgate = 319; // gate = 320thlen = 345;tvsync = 0;tvgdel = 0;tvgate = 239; // vgate = 240tvlen = 245;hpol = 0;vpol = 0;cpol = 0;bpol = 0;end1:beginthsync = 18;thgdel = 18;thgate = 319; // gate = 320thlen = 390;tvsync = 18;tvgdel = 18;tvgate = 239; // vgate = 240tvlen = 290;hpol = 1;vpol = 0;cpol = 0;bpol = 0;end2:beginthsync = 1;thgdel = 1;thgate = 639; // hgate = 640thlen = 644;tvsync = 1;tvgdel = 1;tvgate = 479; // vgate = 480tvlen = 484;hpol = 0;vpol = 1;cpol = 0;bpol = 0;end3:beginthsync = 0;thgdel = 2;thgate = 799; // hgate = 800thlen = 804;tvsync = 0;tvgdel = 2;tvgate = 599; // vgate = 600tvlen = 604;hpol = 0;vpol = 0;cpol = 1;bpol = 0;end4:beginthsync = 3;thgdel = 2;thgate = 799; // hgate = 800thlen = 807;tvsync = 2;tvgdel = 2;tvgate = 599; // vgate = 600tvlen = 606;hpol = 0;vpol = 0;cpol = 0;bpol = 1;end5:beginthsync = 6;thgdel = 2;thgate = 799; // hgate = 800thlen = 810;tvsync = 4;tvgdel = 2;tvgate = 599; // vgate = 600tvlen = 608;hpol = 1;vpol = 1;cpol = 1;bpol = 1;endendcase/*thsync = 0;thgdel = 0;thgate = 64;thlen = 70;tvsync = 0;tvgdel = 0;tvgate = 64;tvlen = 70;hpol = 0;vpol = 0;cpol = 0;bpol = 0;
*/m0.wb_wr1( `HTIM, 4'hf, {thsync, thgdel, thgate} );m0.wb_wr1( `VTIM, 4'hf, {tvsync, tvgdel, tvgate} );m0.wb_wr1( `HVLEN, 4'hf, {thlen, tvlen} );m0.wb_wr1( `CTRL, 4'hf, {16'h0,bpol, cpol,vpol, hpol,1'b0, // PC2'h0, // CD2'h0, // VBL2'h0, // Reserved5'h01 // Bank Switch, INT, VideoEn});repeat(2) @(posedge vsync);scen = 1;repeat(4) @(posedge vsync);end
7,仿真结果
说明:仿真过程需要很长时间(我的电脑超过30mins),所以只选取了一行数据的输出波形,如下;
可以看到行同步型号,混合同步信号,blank信号,rgb信号等重要的几个信号的时序关系。
8,小结
剩下的工作就是FPGA验证了,参考之前的blog内容,将其挂在arbiter_dbus上面。
与之前那个FFT模块的接口一样,也是一个slave接口,和一个master接口。
http://blog.csdn.net/rill_zhen/article/details/8849149
附:
本实验的所有源码和文档我已上传:
http://download.csdn.net/detail/rill_zhen/5353755
good luck!
OpenRisc-27-wishbone接口的vga ipcore的分析与仿真相关推荐
- 计算机主机的声音线是哪个好,电脑显示器连接线哪种接口好|VGA、HDMI视频接口选哪个好...
电脑显示器和主机之间需要专用线路来连接,显示器和主机箱通常会同时配置多种视频接口,比较常见的视频接口有VGA.DVI.HDMI和DP,其中VGA和HDMI比较常用.视频接口这么多种,要选择哪一种比较好 ...
- 显示器接口:VGA、HDMI、DVI 、DisplayPort
最常见的显示器接口有VGA端子.数码视频接口 (DVI).高画质多媒体接口(HDMI)和DisplayPort(DP). 1)VGA端子 VGA端子(Video Graphics Array (VGA ...
- 常见视频接口(HDMI/VGA/SDI/CmaeraLink)介绍
对于常见的视频接口总结以下图 模拟接口 CVBS(RCA接口) Composite Video Broadcast Signal(复合视频广播信号) CVBS是Composite Video Broa ...
- 使用OPC DA接口将robotdtudio与西门子sim进行仿真连接
使用OPC DA接口将robotdtudio与西门子sim进行仿真连接 简介 使用软件 博途TIA V16 RobotStudio 6.01 ABB IRC5 OPC Configuration Ne ...
- USB接口供电不足的原因分析与解决方案
USB接口供电不足的原因分析与解决方案 USB接口供电不足是什么原因.我们在使用电脑的时候,经常会用到电脑的USB接口,因为有很多USB接口的设备会连接电脑.但是当我们的电脑提示USB接口供电不足,那 ...
- 怎么用python爬股票接口对股票数据进行分析
怎么用python爬股票接口对股票数据进行分析 在 Python的QSTK中,是通过 s_datapath 变量,定义相应股票数据所在的文件夹. 具体的股票数据来源,例如沪深.港股等市场,你可以使用免 ...
- 高速接口之VGA接口
原理介绍 VGA(Video Graphics Array)即视频图形阵列,是IBM在1987年推出的使用模拟信号的一种视频传输标准,在当时具有分辨率高.显示速率快.颜色丰富等优点,在彩色显示器领域得 ...
- 关于DP和HDMI和VGA和RS232这几种接口的实用性和功能性分析
感觉很多朋友对液晶显示器的接口类型缺乏了解,笔者以最常见的几种液晶显示器接口为例,为各位读者一一介绍一下. 1:HDMI,中文名为"高清晰度多媒体接口",与VGA和DVI等接口不同 ...
- 【Computer Organization笔记27】接口电路和外部设备
本次笔记内容: P53 计算机组成原理(53) P54 计算机组成原理(54) 我的计组笔记汇总:计算机组原理成笔记 视频地址:计算机组成原理 清华大学刘卫东 全58讲 国家精品课程 1080P 更完 ...
最新文章
- springboot整合freemarker(转)
- Memcache 内存分配策略和性能(使用)状态检查
- 1023:Hello,World!的大小
- powershell新建python文件_powershell如何打开Python
- Jsoup代码解读之七-实现一个CSS Selector
- 【C++模板】特化与偏特化 template [partial] specialization
- 大道至简 读后有感
- PHP扩展详解(一)
- ssis zip压缩文件_SSIS平面文件与原始文件
- 【shell 练习5】编写简单的多级菜单
- 数据挖掘—Apriori算法
- 手机内存带宽和分辨率
- 桌面文件不见了怎么恢复?整理的这3个方法你一定不能错过
- 【O2O领域】外卖订餐APP商家手机端Axure原型作品(实战项目功能全)
- 130个资源网站,总有一个你用得着
- jsp+ssm计算机毕业设计st音乐网站论文【附源码】
- 数据挖掘常用算法优缺点分析
- 红黑树(一)的原理和算法详细介绍
- 华为云数据中心建设全面复工进行中,预计2021年投入使用
- VMware 14 Pro 永久许可证激活密钥
热门文章
- 神经网络与PyTorch:线性回归
- 基于数字电路典型分频电路设计
- My dear dalao please daidai wo。
- 静态化freemarker,分布式文件系统minIO
- meo学习笔记4:C++中对象占用内存情况
- benj™ 100+城市街拍电影人像调色LR预设/移动LR预设/LUT预设效果预览
- 在Qt中使用OpenGL(三)
- 蓝牙音乐SRC侧的安卓实现
- 分辨率并不是越高越好,因为人眼分辨能力存在极限
- 小程序支付“”商户号该产品权限未开通,请前往商户平台产品中心检查后重试“”解决方案