注册
登录
电子工程世界-论坛
返回首页
EEWORLD首页
频道
EE大学堂
下载中心
Datasheet
专题
单片机
物联网
汽车电子
嵌入式
手机/便携
模拟电子
家用电子
网络通信
电源管理
工业控制
测试测量
半导体设计/制造
安防电子
传感器
医疗电子
dongdong100的个人空间
https://home.eeworld.com.cn/space-uid-522914.html
[收藏]
[复制]
[分享]
[RSS]
空间首页
动态
记录
日志
相册
主题
分享
留言板
个人资料
借用开发板
论坛
淘帖
Collection
查看新帖
最新回复
社区活动
联系管理员
我的空间
帖子
日志
收藏
好友
勋章
积分
安全验证
请完成以下验证码
日志
【阿东之Xilinx FPGA 摄像头调试随记】
已有 1600 次阅读
2017-11-28 23:07
|
个人分类:
FPGA
|
FPGA
,
摄像头
我们的Xilinx S6M开发板是SPARTAN 6 LX9的片子,因为我们的摄像头程序都是ALTERA的QUARTUS的工程,该工程里面需要用到两个和厂家相关的特性,PLL和FIFO,XILINX和ALTERA两家对于PLL和FIFO的管脚和复位等都不一致,器件的管脚约束和时序约束也不一样,因此移植的工作量还是比较大的。如果没有对两家特性有仔细的研究,还是会遇到很多坑的。
像我阿东这样的大拿(不谦虚一下),在移植的时候,也遇到了很多坑,首先第一个就是PLL,PLL带有复位管脚,复位管脚PLL的手册上没有说是高复位还是低复位,虽然我之前经常使用XILINX的各种FPGA,不过还是没有记住,然后测试了下,发现复位管脚高是复位的,低是解复位。另外ALTERA的PLL和XILINX的PLL,可能倍频性能也不一致,当然这次没有遇到。
其次遇到的是FIFO,FIFO差异就更大了,包括复位和各个管脚都不一样,但是基本功能都是差不多的,经过测试,也发现FIFO复位高表示复位。然后是生成FIFO,XILINX的生成需要使用ISE的CORGEN工具,这个生成需要保持和ALTERA一样的FIFO特性,比如都是异步FIFO,延迟都是一拍,都需要FIFO带有datacnt(表示当前FIFO里面存储的数据个数)计数。期间因为不确定这个FIFO的
datacnt
是否可以使用,一度自己生成了一个
datacnt,不过还是没有好,最后改回去发现,Xilinx的异步FIFO的
datacnt
是可以用的。
再次遇到的是各种编译问题,首先是时钟编译报错,好好的东西在QUARTUS里面也没有报错啊,经过各种分析发现,XILINX的时钟处理很麻烦,时钟不能直接输出到IO,需要加ODDR,然后才能接到IO中,这个ODDR我是添加了,但是一直没有清晰的图像,很是纳闷,最后发现居然是ODDR时钟接错了,ODDR需要方法如下:
ODDR2 #(
.DDR_ALIGNMENT("NONE"), // Sets output alignment to "NONE", "C0" or "C1"
.INIT(1'b0), // Sets initial state of the Q output to 1'b0 or 1'b1
.SRTYPE("SYNC") // Specifies "SYNC" or "ASYNC" set/reset
) U_ODDR2_0
(
.Q (sdram_clk), // 1-bit DDR output data
.C0(
sdram_clk_tmp
), // 1-bit clock input
.C1(~
sdram_clk_tmp
), // 1-bit clock input
.CE(1'b1), // 1-bit clock enable input
.D0(1'b1), // 1-bit data input (associated with C0)
.D1(1'b0), // 1-bit data input (associated with C1)
.R(1'b0), // 1-bit reset input
.S(1'b0) // 1-bit set input
);
但是我写错成如下方式:
ODDR2 #(
.DDR_ALIGNMENT("NONE"), // Sets output alignment to "NONE", "C0" or "C1"
.INIT(1'b0), // Sets initial state of the Q output to 1'b0 or 1'b1
.SRTYPE("SYNC") // Specifies "SYNC" or "ASYNC" set/reset
) U_ODDR2_0
(
.Q (sdram_clk), // 1-bit DDR output data
.C0(
sdram_clk_tmp2
), // 1-bit clock input
.C1(~
sdram_clk_tmp
), // 1-bit clock input
.CE(1'b1), // 1-bit clock enable input
.D0(1'b1), // 1-bit data input (associated with C0)
.D1(1'b0), // 1-bit data input (associated with C1)
.R(1'b0), // 1-bit reset input
.S(1'b0) // 1-bit set input
);
导致SDRAM时钟异常,所以图像异常不清楚。还好发现了。
最开始调试时候的波形一直如下所示:
后来改了ODDR时钟后,图像恢复正常,坑爹!
然后是时序约束了,别问我不加行不,不加不行,摄像头的频率还是很高的,不加会导致图像显示异常甚至不显示,时序约束和QUARTUS的也不一致,不过转换相对简单,看懂了就知道怎么改了。
系统时钟约束如下:
Net clk_50 LOC = T8 | TNM_NET = sys_clk_pin;
TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 50000 kHz;
经过上面的几个大坑,最终OV7670/7725的视频正常清晰显示了,唯一安慰的是发现XILINX的板子的图像比ALTERA的要清晰一点点,可能是和XILINX的时序优化相关。
收藏
邀请
举报
全部
作者的其他最新日志
•
【时序约束】关于约束时钟频率
•
【区别】关于CPLD和FPGA
评论 (
0
个评论)
涂鸦板
您需要登录后才可以评论
登录
|
注册
评论
dongdong100
加为好友
给我留言
打个招呼
发送消息
热门文章
头条资讯
苏州敏芯科创板IPO获受理
AMD vs Nvidia:谁能创造出更好的GPU?
自制SMT
重磅上市 | 施耐德电气新一代Lexium 18系列伺服,精心之作,创新而来
中国AI服务器,刷新全球18项性能基准测试纪录
R课堂 | 机器人技术是农业的未来吗?
新增数据手册
CPS19-LA00A10-SNCSNCNF-RI0GRVAR-W1043-S
50643-2080EBLF
RSF12FBR976
NJ26A37192
R73RI1220500-J
SF04Z2341BALQ
热搜器件
HIN211CA
153208-2020-RB
1716946
ERJ-S1DD2871U
RT0805BRD075K42L
RNX0501K74FKEB
推荐下载
电源电路故障检修相关知识
labview 经典实例
本章小结(第4章).ppt
基于凸优化的宽带阵列方向图综合算法
DSPack 2.33 (使用DirectX技术控件包)
structure de arbre il y a des fonction des afficher et caluler
推荐关注
重磅!赛思荣膺投资家网“2024年度最具投资价值企业TOP100”!
碳化硅SiC逆变焊机革掉IGBT焊机的命-BASiC基本半导体产品在SiC逆变焊机中的应用_20...
瑞芯微方案主板Linux修改系统串口波特率教程,触觉智能RK3562开发板演示
端到端已来,智驾仿真测试该怎么做?
《RISC-V 体系结构编程与实践(第2版)》阅读心得之二--搭建RISC-V实验环境
驱动钛丝(SMA)的可靠性设计(10)供电线路材料的影响和选择