当前位置:网站首页>易灵思T35 FPGA驱动LVDS显示屏
易灵思T35 FPGA驱动LVDS显示屏
2022-07-27 00:49:00 【ltqshs】
易灵思FPGA,天生适合MIPI/LVDS等相关应用,加上硬核DDR3控制器,简直就是完美。
T35F324开发板支持LVDS LCD显示与HDMI显示,具体框图如下。这里,我将就花一定的篇幅,讲讲Trion系列FPGA T35的LVDS TX Hard IP如何使用,并且实战驱动我设计的1024*600的7寸 LVDS屏幕。
1.硬件介绍
如下图所示,为1024*600 LVDS LCD接口,这里直接与FPGA的LVDS IO对接驱动,其中相关Bank使用了3.3V电平。由于我在LCD驱动板侧已经处理好了所有的电源驱动,因此用户接口驱动,只需要给PWM与LVDS数据即可。

其中LVDS为1对差分时钟,4对差分数据线,查阅LCD手册(群创),相关的驱动协议如下所示(8bit DE模式,其中时钟采用了3:4占空比)
另外,1024*600的驱动时序,如下所示。这里时钟范围为 40.8~67.2MHz,并且时序与VGA Timing完全一样。我曾详细的介绍过如何驱动VGA显示器,这里在LVDS之前的RGB时序,是完全一样的。

所以我们的整体的Pipeline应该是这样的:lcd_driver <–> lcd_display --> LVDS Interface

2.Trion FPGA LVDS原理

打开Efinity软件,点击Help-Document,在Interface Designer中找到LVDS Interface,查询Trion系列FPGA的LVDS Interface,如下图所示:

可见LVDS是硬核心,并且支持800MHz LVDS速率,兼容2:1 ~ 8:1,并且FPGA片上已经集成了100R终端电阻,如下所示:

另外,如果LVDS bank用于GPIO,要求必须相邻2对unassigned LVDS pins,否则软件会报错

接着,以LVDS TX为例,我们打开相关的小节,可见文档给出的框图:

这里,由PLL产生fastclk与slowclk,供给Serializer,随后进行串行数据的输出。以n=7为例,help给出了如下时序图,即按照3:4,输出7bit的数据。

另外,需要注意的是在Using the Trion LVDS Block中,可见fastclk0与slowclk的关系。首先fastclk就是serial clock, slowclk就是parallel cock;其次,在Trion系列FPGA中,fastclk=slowclkn/2,那么当n=7时,fastclk=3.5slowclk。

3.LVDS TX设计流程
分析完Trion FPGA的LVDS TX特性,我们有米可炊,直接上刀,如下:
1)首先,File→Create Project,创建工程,选择对应的器件


2)接着加入已有的代码(99.9%的人都是移植,不会在国产上初学吧)

3)然后,打开Interface,配置时钟、引脚、PLL,以及锁相环等

a.Create Block创建IO,包括clk、lcd_pwm控制信号
这如果是GPIO,选择输入或者输出;如果是clk,则还得哪一类时钟,如下所示:
这里我们定义pll_clkin,硬件上已经连接到PLL_CLKIN引脚,不可当作其他用途,如下:

b.然后配置引脚,对着原理图操作,这里会显示Resource,如下所示:

c.接着设置PLL,在PLL处Create Block,创建tx_pll如下。这里需要选择PLL_BR0,对应clk输入的引脚,硬件固定是GPIOR_138。

d.打开Automated Clock Calculation,配置时钟输入为24MHz,输出慢时钟48MHz,快时钟=慢时钟*3.5=168MHz(lvds=7bit),并且快时钟需要90度phase,以及txpll_locked,GUI配置如下(与前面分析一致):
e.最后,配置LVDS IO,如下所示,其中要注意LVDS Resource的选择,以及Serialization Width=7,并且选择tx_fastclk的名字,软件会自动根据该Name进行wire:
这里的LVDS TX或者CLK,与硬件原理图中的分配必须一致,如下:
图片
f.最后,Generate Efinity约束文件,如果有错误此时会报出,比如没有90°,或者倍率不对,IO分配不对等。这一步完成后生成了工程的约束文件,包括顶层空壳等。

生成的文件,可在Result中的Interface查看,如下,其中特别关注sdc与template.v
4)LCD_LVDS_Test_1024600.v顶层代码的修改
上一步中,软件帮我们生成了顶层的template.v,如下所示:

可见PLL的输出时钟,直接作为我们逻辑的输入时钟使用;另外,LVDS我们只需要输处配置好的7bit串行化的时钟与数据,此外我们并不需要例化PLL、LVDS IP等。这个初次见面,真的就非常奇特了。
a.于是乎,我们顶层的接口就变成了这样。这里像素时钟自然是慢时钟,clk和fast时钟不需要用我们注释掉即可:

b.正常例化rgb lcd驱动代码,如下:

c.将rgb及de数据送给lvds port,这里就有点坑了,一开始没有研究时序,如下:

这里7bit并转串传输时,先发送的是lsb,然后才是msb,因此rgb驱动的代码还需要转一下,操作如下(最初的时候想当然以为是msb,浪费了好多宝贵的时间):
5)最后,在dashboard中双击图标,进行一系列的编译、综合、布局布线,并最终生成目标bit文件。

关于设计占用的资源,可以在左侧的Result中查看,如下所示,占用了一个PLL,5个LVDS:

6)上板验证,打开Programmer,选择bit文件,下载到FPGA后,终于点亮了LVDS屏幕,万事开头难就,如下:

4.Trion FPGA LVDS总结
最终总结一下,易灵思Trion FPGA的LVDS TX IP相关注意事项:
1)首先fastclk = n/2 * slowclk;
2)其次一定要记得fastclk 有90deg的相位
3)再者串行数据是先发LSB,再发MSB的。
4)最后LVDS TX Hard IP配置好后,直接在代码顶层使用,无需再例化。
版权声明,本文来自于网络:《易灵思T35 FPGA驱动LVDS显示屏》。
边栏推荐
- Kubernetes Dashboard 部署应用以及访问
- Common questions and answers of software testing interview (divergent thinking, interface, performance, concept,)
- Boom 3D全新2022版音频增强应用程序App
- Plato Farm全新玩法,套利ePLATO稳获超高收益
- 在线问题反馈模块实战(十五):实现在线更新反馈状态功能
- 如何白嫖最新版BurpSuite Pro
- CAS deployment and successful login jump address
- 软件测试面试常见问题及答案(发散思维、接口、性能、概念、)
- What did kubedmin do?
- 185. 部门工资前三高的所有员工(必会)
猜你喜欢

哈希表与一致性哈希的原理理解以及应用

Baidu cloud face recognition

浅浅梳理一下双轴快排(DualPivotQuickSort)

单例模式(双检锁)

Plato Farm全新玩法,套利ePLATO稳获超高收益

抖音服务器带宽有多大,才能供上亿人同时刷?

Okaleido tiger is about to log in to binance NFT in the second round, which has aroused heated discussion in the community

LabVIEW中编程更改进程的优先级

Integrated water conservancy video monitoring station telemetry terminal video image water level water quality water quantity flow velocity monitoring

杀毒软件 clamav 的安装和使用
随机推荐
A math problem cost the chip giant $500million!
localStorage与sessionStorage
IDEA 连接数据库查询数据后控制台表头中文乱码的解决方法
CAS部署使用以及登录成功跳转地址
朴素贝叶斯——文档分类
CS224W fall 1.2 Applications of Graph ML
Skywalking系列学习之告警通知源码分析
基于GoLang实现API短信网关
Arduino UNO +74hc164 water lamp example
{“errcode“:44001,“errmsg“:“empty media data, hint: [1655962096234893527769663], from ip: 222.72.xxx.
The most complete basic knowledge of software testing in the whole network (a must for beginners)
我的爬虫笔记(七) 通过爬虫实现blog访问量+1
iNFTnews | GGAC联合中国航天ASES 独家出品《中国2065典藏版》
2649: 段位计算
五、MFC视图窗口和文档
Okaleido tiger is about to log in to binance NFT in the second round, which has aroused heated discussion in the community
shell(38) : ssh端口转发
Debezium series: pull historical data based on debezium offset to ensure that data is not lost
cocos小游戏实战-04-碰撞检测与NPC渲染
百度云人脸识别