搜索
bottom↓
回复: 185

终于看到了希望——基于美女的VGA系统构架

[复制链接]

出0入0汤圆

发表于 2010-12-6 19:13:15 | 显示全部楼层 |阅读模式
16真彩色原理图:ADV7120 50M超频到65MHz

视频转换芯片原理图 (原文件名:image_thumb_2.png)
Quartus II RTL: NIOS II + Verilog



RTL图 (原文件名:image_thumb_3.png)


(原文件名:image_thumb_722.png)


SOPC CPU设计:SDRAM + Verilog接口

NIOS II  (原文件名:image_thumb_1.png)  

NIOS II:CPU—— Verilog协议 写BMP



原图:美女

美女原图 (原文件名:image_thumb_5.png)




VGA显示:背影杀手


我亲爱的 (原文件名:image_thumb_6.png)

DIY ColorTest

DIY ColorTest (原文件名:20101205_thumb.jpg)



走了好多歪路,自己做的硬件,自己写的软件,身边没人帮助我,很孤独。。。

还有有一大帮网友亲友团,呼呼。。。
直到今天12-4 我终于悟出来了一个道理:“一个重大的失败,往往是因为一个微小的细节。。。”

不知道是“跨时钟域信号处理上的问题”,还是我代码质量的问题,你们看 那个美女 颜色有点点问题,那个ColorTest最后一行有点点缺失
对于跨时钟我采取的是FIFO的概念  双时钟 存储SRAM
不知道各位知不知道,希望给我提供点思想
此项目是应用到视频监控上去的,硬件测试全部OK,愿与大家同甘共苦。。。
I am Crazy Bingo !!

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2010-12-6 19:16:22 | 显示全部楼层
cool

出0入0汤圆

发表于 2010-12-6 19:30:54 | 显示全部楼层
顶顶更健康

出0入0汤圆

发表于 2010-12-6 19:31:46 | 显示全部楼层
牛擦·············

出0入0汤圆

发表于 2010-12-6 19:31:55 | 显示全部楼层
做得很好

出0入0汤圆

发表于 2010-12-6 19:35:25 | 显示全部楼层
挺好看的,强悍

出0入0汤圆

发表于 2010-12-6 19:37:47 | 显示全部楼层
Mark~

出0入0汤圆

 楼主| 发表于 2010-12-6 19:41:53 | 显示全部楼层
回复【2楼】zxl2431
-----------------------------------------------------------------------

“重大的失败往往因为微小的细节”
别崇拜了  看bug啊  那个解决不了了

出0入0汤圆

发表于 2010-12-6 19:42:45 | 显示全部楼层
崇拜%

出0入0汤圆

发表于 2010-12-6 19:45:09 | 显示全部楼层
非常的棒,我也在做视频采集,一起来探讨一下

出0入0汤圆

发表于 2010-12-6 19:47:21 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-12-6 19:53:09 | 显示全部楼层
能不能共享一下

出0入0汤圆

 楼主| 发表于 2010-12-6 20:32:35 | 显示全部楼层
回复【8楼】timthorpe
-----------------------------------------------------------------------

那个问题 不知道怎么解释

出0入0汤圆

 楼主| 发表于 2010-12-6 20:53:28 | 显示全部楼层
FPGA完了2年了,走过的路也不少,歪路也不少,做过的东西也不少。。。
好吧 我还是不自私了  任何一个字母都是纯原创的
今天共享出来  (1)共同学习(2)解决问题 (3)尊重原创 (4)虽然我知道有些高傲的人会说没什么价值
希望高手帮我一把把  摄像头就在手上了,我确定硬件没问题  ,所以我们只考虑软件的问题
MT9D111美光200万 打算离开实验室前 做个有价值的东西出来
(1)为什么 图像 有闪点 好像不同色素结合处有银色的成分
(2)ColorTest 最后一排出现这种状况  why啊?
(3)跨时钟域信号传输
(4)时序约束不懂啊
点击此处下载 ourdev_602769T4LXRC.rar(文件大小:15.71M) (原文件名:VGA_CLK_SYS.rar)

创建了一个 专门的 “视频图像识别处理”的群  邀请更多的朋友159035222
谢谢

出0入0汤圆

发表于 2010-12-6 20:56:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-6 21:11:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-6 21:22:46 | 显示全部楼层
美女漂亮 。o(∩_∩)o 哈哈

出0入0汤圆

发表于 2010-12-6 22:06:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-6 22:19:26 | 显示全部楼层
牛X啊
!

出0入0汤圆

发表于 2010-12-6 23:00:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-6 23:05:24 | 显示全部楼层
不错

出0入0汤圆

发表于 2010-12-6 23:37:24 | 显示全部楼层
马克,楼主的模拟部分杂搞的,弄不好就偏色了

出0入0汤圆

发表于 2010-12-7 06:40:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-7 08:38:57 | 显示全部楼层
不错,记号~~

出0入0汤圆

发表于 2010-12-7 08:41:26 | 显示全部楼层
markkkkk

出0入0汤圆

发表于 2010-12-7 08:46:48 | 显示全部楼层
good

出0入0汤圆

发表于 2010-12-7 08:47:13 | 显示全部楼层
顶,赞一个!

出0入0汤圆

 楼主| 发表于 2010-12-7 09:20:33 | 显示全部楼层
回复【22楼】longquan 大巅
-----------------------------------------------------------------------
其实可以用电阻模拟的 但是那个不好  会偏色 也不稳定 所以用了ADV7120的芯片

出0入0汤圆

发表于 2010-12-7 09:21:03 | 显示全部楼层
膜拜下~
路过顶~

出0入0汤圆

发表于 2010-12-7 09:32:11 | 显示全部楼层
确认不是ADV7120的问题吗?

出0入0汤圆

 楼主| 发表于 2010-12-7 09:39:31 | 显示全部楼层
确定一定以及肯定
觉得是时序约束 走线延时上的问题
跟 什么“LCD控制器”比起来,这个真的是需要精益求精啊

出0入0汤圆

 楼主| 发表于 2010-12-7 09:44:06 | 显示全部楼层
最欠缺的是 时钟约束和时序分析
基础薄弱啊

出0入0汤圆

发表于 2010-12-7 10:10:37 | 显示全部楼层
mark,学习

出0入0汤圆

发表于 2010-12-7 10:13:05 | 显示全部楼层
深有同感!
我用LPC2478+16色7寸真彩屏显示美女图片,纯软件操作的;
也是出过同样的问题;(美女发丝问题--_>色跳变问题)
后来还是一个年轻的同事帮我解决了。
就像你说的只是一个小小的问题而已;
但是缺严重影响了细节和感官!
不知道你解决了没有?

出0入0汤圆

发表于 2010-12-7 10:14:40 | 显示全部楼层
我估计跟我软件写的烦的是同样的问题!

出0入0汤圆

发表于 2010-12-7 10:18:16 | 显示全部楼层
FPGA我不懂,不过这个问题,我可能可以指点下,有意思的话,小窗联络我:QQ:651512647
因为我也翻过同样的问题,间隔了好长时间,才解决的。
你的软件硬件是一体的,当然还是有一点细节要解决。

出0入0汤圆

发表于 2010-12-7 10:24:57 | 显示全部楼层
我承认

我是来看美女的~~~~

出0入0汤圆

发表于 2010-12-7 10:47:57 | 显示全部楼层
回复【37楼】format
我承认
我是来看美女的~~~~
-----------------------------------------------------------------------

我也承认同37楼

出0入0汤圆

发表于 2010-12-7 11:05:46 | 显示全部楼层
贝多芬~

出0入0汤圆

发表于 2010-12-7 11:11:07 | 显示全部楼层
那个怎么解决的?

出50入0汤圆

发表于 2010-12-7 11:23:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-7 11:24:56 | 显示全部楼层
好东西。。记号下

出0入0汤圆

发表于 2010-12-7 11:31:19 | 显示全部楼层
mark!

出0入0汤圆

发表于 2010-12-7 11:39:15 | 显示全部楼层
50M超频65M  怎么做到的  ??
为什么我做倍频的时候只有整数倍的呢????

请教了

出0入0汤圆

发表于 2010-12-7 11:46:59 | 显示全部楼层
嘿嘿,一看到有美女就跑进来了,呵呵,顶一下

出0入0汤圆

 楼主| 发表于 2010-12-7 13:41:31 | 显示全部楼层
回复【34楼】jiki119
-----------------------------------------------------------------------

前辈  请您指导一下迷津 重大的失败往往因为微小的细节
往往是 要做出来 不难 ,要做好  真的很难
细节决定成败啊

(原文件名:未命名.jpg)

出0入0汤圆

 楼主| 发表于 2010-12-7 13:43:21 | 显示全部楼层
回复【44楼】wo_LKH <劳>
-----------------------------------------------------------------------

PLL啊  直接给65MHz   ADV7120 一般这样超超没事的 很稳定

出0入0汤圆

发表于 2010-12-7 13:53:54 | 显示全部楼层
顶,赞一个!

出0入0汤圆

发表于 2010-12-7 13:54:43 | 显示全部楼层
回复【37楼】format
我承认
我是来看美女的~~~~
-----------------------------------------------------------------------

出0入0汤圆

 楼主| 发表于 2010-12-7 13:56:14 | 显示全部楼层
回复【49楼】dmxfeng
-----------------------------------------------------------------------

help please
等我做好了  我直接摄像头给你们看美女好了!!!!
现在因为这点bug  有点酸。。

出0入0汤圆

 楼主| 发表于 2010-12-7 14:26:31 | 显示全部楼层
难道真的是那位前辈所谓的
CPU(NIOS II)到SRAM控制器(Verilog)之间没有数据锁存,造成了数据不能完全有效的写入??或者造成了亚稳态,是的X的出现??
难道????
我再试试看  精益求精

出0入0汤圆

 楼主| 发表于 2010-12-7 15:00:52 | 显示全部楼层
(1)CPU给SRAM控制器一个写信号
(2)给SRAM地址
(3)给SRAM写入数据(Data,CLK_L,CLK_H)

(4)SRAM控制器在写数据使能情况下读取到CPU的上升沿的时候就直接给SRAM写入一个数据
(5)循环

(6)CPU给SRAM控制器读使能,关闭写
(7)SRAM控制器从SRAM读取数据,直接输出到ADV7120
(8)ADV7120===> VGA

我想还有很多地方可以优化吧   求教

出0入0汤圆

发表于 2010-12-7 15:45:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-7 15:57:17 | 显示全部楼层
I am Crazy Bingo !!  

(原文件名:Spartan3E插鱼.JPG)

出0入0汤圆

发表于 2010-12-7 18:15:59 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2010-12-7 18:20:20 | 显示全部楼层
回复【54楼】zgq800712 SEED
-----------------------------------------------------------------------

啊???你是山寨的啊!!
帮我解决问题吧

出0入0汤圆

 楼主| 发表于 2010-12-9 09:05:16 | 显示全部楼层
问题:

  博客园:http://www.cnblogs.com/crazybingo/archive/2010/12/01/1892610.html

  博客园:http://www.cnblogs.com/crazybingo/archive/2010/12/04/1896645.html

  OURAVR:http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4437397&bbs_page_no=1&search_mode=1&search_text=VGA&bbs_id=9999

经过了无数个无眠的夜晚,问题终于解决了。。。柳暗花明又一村。。。



经过了n个网友的帮助:狼来了、最后的红旗手、达克斯特、Neddy、七哥、湘雨潇潇等人的人心帮助下,以及万般努力的情况下终于解决了。。。

现在我把我的问题,把我的bug,把我的经历,都告诉你们



首先,有几个必须要了解的知识,这些都是我个人转载整理归纳总结的:

  (1)影响FPGA设计中时钟因素的探讨:http://www.cnblogs.com/crazybingo/archive/2010/12/08/1900450.html

  (2)门控时钟与多扇出问题解决方案:http://www.cnblogs.com/crazybingo/archive/2010/12/08/1900388.html

  (3)FPGA你必须知道的那些事儿:http://www.cnblogs.com/crazybingo/archive/2010/12/07/1899597.html

  (4)全局时钟--复位设计:http://www.cnblogs.com/crazybingo/archive/2010/12/04/1896593.html



接下来就剩下我的心里话了:

  最重要的一句话是:“重大的失败,往往是因为微小的细节”,细节决定成败。

  其次,学会FPGA真的挺简单的,相信给你一个月时间你要不能驱动VGA那可能智商不够吧,但是要想学好,没那么容易,往往因为细节,让你的东西永远不完美

  最后,完美是没有极限的。。。



解释一下我的项目当时显示的美女出现边沿闪电的原因:

  (1)时序约束,时钟优化,

  (2)时序建立时间,保持时间的把握

  (3)时序逻辑,组合逻辑传输延时

  (4)最可怕的 时钟在寄存器之间的传输延时

  (5)时序逻辑的信号滞后,超前

  (6)跨时钟域信号传输,同步处理

  (7)门控时钟,始终满天飞,(用最高时钟控制一切)



部分原因还是结合代码跟你们解释吧:

(1)输入时钟是CLOCK,CLOCK2 是50MHz的,经过综合器设置适当的时钟约束(105%)可以将相关的逻辑在布线时尽量布的靠近一点,从而减少走线的时延 

(2)always@(posedge MCU_CLK or negedge RST_n)

    MCU_CLK是CPU 的写时钟,没一个时钟的上升沿,verilog读取数据写入SRAM,在表上看着完全没有问题。

    实际上,当然在写数据上没问题,但因为用的不是全局时钟,是门控时钟,会影响组合逻辑Tdelay,
    我尝试了n遍,最后换成了使能时钟,跨时钟域信号同步处理(CPU 20Mhz,verilog 65MHz)reg同步时钟,写入SRAM,这样会更加的稳定,数据没有缺失

(3)always @ (negedge VGA_HS or negedge RST_n)

    VGA驱动的地方,本来VS是在HS的上升沿变化的,为了达到的数据的稳定变化(排除异常),我用HS_CLK最为跳变时钟,自我感觉良好

    但实际上在65MHz  1024*768的吞吐率下,虽然VS本身的确没有任何问题,但是由于门控时钟的介入,使布线不稳定,重者造成设计混乱。门控时中较多,也会使得整个设计的最大工作速度下降,降低产品的性能。

    因此因为这一步的出错,使得整个系统性能大大下降,数据出现了不稳定甚至亚稳态,数据不能够在保持时间内传输,以至于出现边缘闪电(变化快)

    最后我还是通过判断hcnt写成了使能时钟(问题解决)

(4)位置有点点点点不正常,盯着他才能看出来,我在我的ColorTest观察过,实际上是因为时序逻辑,组合逻辑的问题

  类似if( (hcnt >= H_DISP+H_FRONT) && (hcnt < H_DISP+H_FRONT+H_SYNC) )的地方,实际上你在时序逻辑判断时钟给一个信号赋值,但经过建立时间,组合延时,保持时间之后,已经是下一个clk了,数据的出现实际滞后了一个clk,所以要保证时序的绝对准确,要把条件减小1,这样因为超前+滞后 刚刚满足了时序



  

  就在要回寝室的那一刻,我看到了亲爱的美女,完全不在有色差 ,开心,一切尽在时序中。。。

  突然想起暑假的时候师父跟我说过:“为了系统的稳定以及高速时钟干扰,整个系统要用最高时钟控制,不能用门控时钟,只能用使能时钟”,NND问题就出在这里



  经过了冰山火海,终于解决了,我提醒我自己,回去再好好研究FPGA的时序分析,研究时序约束,研究时域分析,研究异常问题,研究系统稳定性能问题。。。。

  要做出一个东西简单,要做好一个东西真的没那么容易。。。。。

  明天把图片放上来。。。。。

  谢谢大家的关心。。。 时序分析,你完蛋了。。。

 美女啊。。。ourdev_603400MB8SZU.JPG(文件大小:2.52M,只有400K以内的图片才能直接显示) (原文件名:IMG_1823.JPG)
 



继续。。。。走一步 ,再走一步,。。。    

出0入0汤圆

发表于 2010-12-9 09:16:17 | 显示全部楼层
回复【57楼】hanbin08041813  Crazy Bing
-----------------------------------------------------------------------

well done

出0入0汤圆

发表于 2010-12-9 09:33:29 | 显示全部楼层
马克,楼主太棒了!

出0入17汤圆

发表于 2010-12-9 12:29:52 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-9 12:33:44 | 显示全部楼层
温柔乡,英雄冢

出0入0汤圆

发表于 2010-12-9 12:50:06 | 显示全部楼层
膜拜……

出0入0汤圆

发表于 2010-12-9 14:49:27 | 显示全部楼层
做下记号

出0入0汤圆

发表于 2010-12-12 18:17:55 | 显示全部楼层
mark下,好贴!!
头像被屏蔽

出0入0汤圆

发表于 2010-12-12 19:25:34 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2010-12-12 20:43:24 | 显示全部楼层
牛B

出0入0汤圆

发表于 2010-12-12 21:03:44 | 显示全部楼层
mark!~

出0入0汤圆

发表于 2010-12-13 09:34:56 | 显示全部楼层
真的不错,有空研究下

出0入0汤圆

发表于 2010-12-16 18:07:40 | 显示全部楼层
mark!~

出0入0汤圆

发表于 2010-12-19 03:59:33 | 显示全部楼层
GOOD!
WS地要求正面照,嘿嘿。

出0入134汤圆

发表于 2010-12-19 04:37:42 | 显示全部楼层
牛X

出0入0汤圆

发表于 2010-12-19 09:06:37 | 显示全部楼层
为看美女图而进来的

出0入0汤圆

发表于 2010-12-25 13:13:13 | 显示全部楼层
相当不错!!!

出0入0汤圆

发表于 2011-1-5 19:15:38 | 显示全部楼层
一定要顶啊

出0入0汤圆

发表于 2011-1-5 19:24:35 | 显示全部楼层
相当不错

出0入0汤圆

发表于 2011-1-5 20:25:30 | 显示全部楼层
你还是用专门的LCD测试图片吧,偏色错位之类的问题,可以很容易看出来。

出0入0汤圆

发表于 2011-1-6 21:14:18 | 显示全部楼层
帮顶,改天自己画画做做试试

出0入0汤圆

发表于 2011-1-8 23:21:41 | 显示全部楼层
太强了,强顶,强支持!!

出0入0汤圆

发表于 2011-1-10 09:43:16 | 显示全部楼层
好东西。记号下!学习!!!

出0入0汤圆

发表于 2011-1-16 22:53:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-22 19:55:47 | 显示全部楼层
梦里寻他千百度,木然回首,那人却在屏幕中

出0入0汤圆

 楼主| 发表于 2011-1-24 23:09:11 | 显示全部楼层

(原文件名:22012011_011.jpg)


(原文件名:22012011_007.jpg)

出0入0汤圆

 楼主| 发表于 2011-1-24 23:29:36 | 显示全部楼层
回复【76楼】weixintec 伟欣科技
-----------------------------------------------------------------------

给个专门的LCD测试图片哈哈

出0入0汤圆

发表于 2011-1-24 23:34:11 | 显示全部楼层
CrazyBingo 牛A&牛C

出0入0汤圆

发表于 2011-1-24 23:35:12 | 显示全部楼层
mark

出350入8汤圆

发表于 2011-1-25 08:41:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-1-25 09:30:09 | 显示全部楼层
好东东,看下

出0入0汤圆

发表于 2011-1-25 14:49:48 | 显示全部楼层
我看了楼主的代码,发现一个问题:

MCU写RAM时,VGA不刷新

只有MCU不写RAM时,VGA才刷新


MCU写RAM总得要时间吧  200ms  300ms 或者是500ms

对于显示静态图片来说,这几百毫没什么影响

如果来个动态的,就不行了吧。。。

出0入0汤圆

发表于 2011-1-25 14:53:55 | 显示全部楼层
RAM读写仲裁要做好

理论上,

要保证LCD刷新频率,并且不间断,VGA读RAM的优先级应该是最高的,

MCU写RAM应该是在RAM空闲的时候

出0入0汤圆

发表于 2011-1-26 20:28:31 | 显示全部楼层
回复【57楼】hanbin08041813 Crazy Bing
-----------------------------------------------------------------------

拜读。感谢

出0入0汤圆

发表于 2011-1-28 23:09:22 | 显示全部楼层
牛叉。

出0入0汤圆

 楼主| 发表于 2011-2-9 10:55:00 | 显示全部楼层
回复【90楼】liu_xf 新发
-----------------------------------------------------------------------

恩 谢谢你 我知道这个问题
因为我的硬件中只有一块SRAM,没能实现乒乓操作,
(有人说可以一个SRAM+2个FIFO来实现,觉得SRAM速度跟不上,没去写)
如果真的要实现动态,我肯定会用乒乓
只不过上面的设计,我只是测试代码和硬件的

谢谢你
下一工程 来做摄像头的 。。。。。
等有时间在说 谢谢

出0入0汤圆

发表于 2011-2-9 13:43:12 | 显示全部楼层
m

出0入0汤圆

发表于 2011-2-10 10:30:30 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-2-10 10:34:03 | 显示全部楼层
”一个重大的失败,往往是因为一个微小的细节。。。“
这句话总结的好

出0入0汤圆

发表于 2011-2-10 10:42:08 | 显示全部楼层
曾经看到别人的经验,备品,一个节拍写入SRAM ,一个节拍读取用于VGA刷新,不知我说明白否,希望你再更进一步做成动态
刷新的,成本不用再增加!。

出0入0汤圆

发表于 2011-2-10 11:32:29 | 显示全部楼层
~~~准备玩的东西先学习学习

出0入0汤圆

发表于 2011-2-10 11:32:52 | 显示全部楼层
我想用 m0 来作 叠加

出0入0汤圆

发表于 2011-2-10 11:37:43 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-2-10 12:58:41 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 10:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表