注册
登录
电子工程世界-论坛
返回首页
EEWORLD首页
频道
EE大学堂
下载中心
Datasheet
专题
单片机
物联网
汽车电子
嵌入式
手机/便携
模拟电子
家用电子
网络通信
电源管理
工业控制
测试测量
半导体设计/制造
安防电子
传感器
医疗电子
dongdong100的个人空间
https://home.eeworld.com.cn/space-uid-522914.html
[收藏]
[复制]
[分享]
[RSS]
空间首页
动态
记录
日志
相册
主题
分享
留言板
个人资料
借用开发板
论坛
淘帖
Collection
查看新帖
最新回复
社区活动
联系管理员
我的空间
帖子
日志
收藏
好友
勋章
积分
安全验证
请完成以下验证码
日志
【阿东之Xilinx FPGA 摄像头调试随记】
已有 1667 次阅读
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
加为好友
给我留言
打个招呼
发送消息
热门文章
头条资讯
5G 为车联网和自动驾驶注入新的活力,Qorvo能做些什么?
最后1天报名|安森美半导体超低功耗RSL10蓝牙SoC开发板详解
如何发展5G无线基础设施建设?Qorvo在2017中国西部微波射频技术研讨会为你解答
设计工程师面对的 Wi-Fi 6 挑战及解决方案
羊年第一天,贸泽电子给各位拜年了!祝大家羊年大吉,喜气洋洋!
轻松战胜设计挑战,TI 助力设计小巧、高效和高性能的多参数患者监护仪
新增数据手册
ATS145-1840-DB452
ALS41G102ND450
M55342K02B43D2P
NCD270J5KVSLE.25LSF
ABM81-54.000MHZ-10-N3X-T
CXOM3ESM3-120.0M,A2B0
热搜器件
MAX4211CETE
E5CC-QX2ABM-800
C1206C333K3REC7210
TCMT4100
88-637493-35S
714-43-159-31-007000
推荐下载
野火emwin实战教程
利于可持续发展的“功率元器件”和电源IC技术的相关新产品及专业术语解说
AVR--USB--PC:USB电压表(mega8实现)
单片机控制PWM调压技术在微波治疗仪中的应用
QTE实例源代码
MAX5078 4A、20ns、MOSFET驱动器数据资料
推荐关注
减速机速比对照表相关内容
ESP-NOW WIFI 收发不稳定问题
Ubuntu20.04取消root账号自动登录的方法,触觉智能RK3568开发板演示
瑞芯微开发板/主板Android配置APK默认开启性能模式方法
linux系统串口终端软件显示异常解决方法,触觉智能出品
The Decibel(分贝)