注册
登录
电子工程世界-论坛
返回首页
EEWORLD首页
频道
EE大学堂
下载中心
Datasheet
专题
单片机
物联网
汽车电子
嵌入式
手机/便携
模拟电子
家用电子
网络通信
电源管理
工业控制
测试测量
半导体设计/制造
安防电子
传感器
医疗电子
dongdong100的个人空间
https://home.eeworld.com.cn/space-uid-522914.html
[收藏]
[复制]
[分享]
[RSS]
空间首页
动态
记录
日志
相册
主题
分享
留言板
个人资料
借用开发板
论坛
淘帖
Collection
查看新帖
最新回复
社区活动
联系管理员
我的空间
帖子
日志
收藏
好友
勋章
积分
安全验证
请完成以下验证码
日志
【阿东之Xilinx FPGA 摄像头调试随记】
已有 1809 次阅读
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
加为好友
给我留言
打个招呼
发送消息
热门文章
头条资讯
百度4年前干翻自己,打通Waymo特斯拉路线二脉,赢得全球竞速先机
美国是如何摧毁日本的芯片产业的!
招贤纳士:Dialog期待优秀工程师人才加入创新团队!
【世说芯品】采用崭新结构的升压充电泵,想了解一下吗?
半导体集成电路产业链!
ASML的豪赌!
新增数据手册
1.5KE170A/TR13
C1812X112F5HACAUTO
68491-920
VT-800-FFR-506D-24M5760000
54111-116-05-0900LF
PP72R10000PF+/-10%630V
热搜器件
RL0805FR-7W0R62L
VJ0603A152KXQCW1BC
FTSH-140-02-L-DV-ES-P-TR
PIC18LF26K40T-I/ML
01070-1530
RN732ATTD2641A10
推荐下载
集成固体微波电路设计
示波器的使用
来个免费的
基于PIC单片机的螺杆式空气压缩机小型控制器
输入串联输出并联逆变器及其控制策略
电子琴仿真和程序
推荐关注
瑞芯微RK356X主板复用接口配置方法,触觉智能分享
深入探索明远智睿 SSD2351 开发板的魅力
【航芯ACM32F403开发板测评】 - (1)MDK工程
机械臂如何稳稳上桌?Mujoco场景修改实操
明远智睿 SSD2351 开发板:性能强劲,功能丰富
Rviz 同时显示多个独立 URDF!解决双机械臂+底盘等场景(球体+方块实例演示)