lvds在FPGA中的使用5 - ALTLVDS_TX核外部pll模式调试
2017-08-22 22:35
441 查看
我的开发环境:quartus13.1
lvds连载4博文中,使用的是lvds核调用PLL的方式,这样一组lvds发送端口需要一个PLL,比较浪费资源。其实在使用ALTLVDS核时,还可以使用External PLL(外部pll),使用外部pll,不仅可以节省一个PLL,还可以减少逻辑资源的使用。
下面来说说调用ALTLVDS_TX核时,怎么使用外部PLL。与转载4相同,还是5个通道,每个通道对应7个解串因子,勾上Use external PLL框,后面Frequency/PLL settings不需要设置,从下图资源消耗可以看出,使用外部PLL,相对于调用PLL来说,使用更少的reg(198个)。
上面的设置看着很方便,其实不然,对于cyclone4器件,在使用外部PLL时,需要外部提供两个时钟:tx_inclock和tx_syncclock,并且需要手动设置好相移,这部分需要参考手册LVDS SERDES Transmitter/Receiver IP Cores User Guide中ALTLVDS IP Core in External PLL Mode部分进行设置,下表给出了详细的时钟及相移计算方法。
从手册中可以知道,tx_clock为c0,我的系统中,像素时钟为25MHz,计算得到c0为175MHz,相移-180°,tx_syncclock为c2(我也不是很确定,手册中没有提到),时钟为25MHz,相移-25.7°。
时钟设置好,开始编译,编译通过。程序设计思路是:FPGA内部产生图像源数据,每行数据依次递增,如果电脑采集到的数据与FPGA内部预设一致,就说明lvds发送数据ok。采到的图像及数据(matlab打开采集的图片)如下,相邻两个像素数据一样,郁闷了,看着像是使用高倍时钟对每个数采了两次。
第一感觉是可能需要将时钟二分频,不过想来也没道理了,毕竟Altera手册里面说的清清楚楚的,上网找了一番,看到一篇文章,日文,好在咱有Google Translate。网址如下:
http://www.hdl.co.jp/UTL/UTL-023/rei_1/
发现里面的快时钟使用的是像素时钟*解串因子/2,修改程序后,果然数据就正确了,似乎是cyclone4和cyclone5器件设置不太一样,cyclone4的器件对应的c0为像素时钟*解串因子/2,cyc
4000
lone5的器件对应的c0为像素时钟*解串因子。不管了,数据正确了就行,对咱们器件级开发者而言,硬件底层的东西还是不要搞了。
至此,ALTLVDS_TX算是调完了,内部调用PLL、外部PLL两种模式都调试ok。需要注意的是,在使用LVDS核时,需要根据外部器件(显示器件、采集卡)的属性进行位分配。
lvds连载4博文中,使用的是lvds核调用PLL的方式,这样一组lvds发送端口需要一个PLL,比较浪费资源。其实在使用ALTLVDS核时,还可以使用External PLL(外部pll),使用外部pll,不仅可以节省一个PLL,还可以减少逻辑资源的使用。
下面来说说调用ALTLVDS_TX核时,怎么使用外部PLL。与转载4相同,还是5个通道,每个通道对应7个解串因子,勾上Use external PLL框,后面Frequency/PLL settings不需要设置,从下图资源消耗可以看出,使用外部PLL,相对于调用PLL来说,使用更少的reg(198个)。
上面的设置看着很方便,其实不然,对于cyclone4器件,在使用外部PLL时,需要外部提供两个时钟:tx_inclock和tx_syncclock,并且需要手动设置好相移,这部分需要参考手册LVDS SERDES Transmitter/Receiver IP Cores User Guide中ALTLVDS IP Core in External PLL Mode部分进行设置,下表给出了详细的时钟及相移计算方法。
从手册中可以知道,tx_clock为c0,我的系统中,像素时钟为25MHz,计算得到c0为175MHz,相移-180°,tx_syncclock为c2(我也不是很确定,手册中没有提到),时钟为25MHz,相移-25.7°。
时钟设置好,开始编译,编译通过。程序设计思路是:FPGA内部产生图像源数据,每行数据依次递增,如果电脑采集到的数据与FPGA内部预设一致,就说明lvds发送数据ok。采到的图像及数据(matlab打开采集的图片)如下,相邻两个像素数据一样,郁闷了,看着像是使用高倍时钟对每个数采了两次。
第一感觉是可能需要将时钟二分频,不过想来也没道理了,毕竟Altera手册里面说的清清楚楚的,上网找了一番,看到一篇文章,日文,好在咱有Google Translate。网址如下:
http://www.hdl.co.jp/UTL/UTL-023/rei_1/
发现里面的快时钟使用的是像素时钟*解串因子/2,修改程序后,果然数据就正确了,似乎是cyclone4和cyclone5器件设置不太一样,cyclone4的器件对应的c0为像素时钟*解串因子/2,cyc
4000
lone5的器件对应的c0为像素时钟*解串因子。不管了,数据正确了就行,对咱们器件级开发者而言,硬件底层的东西还是不要搞了。
至此,ALTLVDS_TX算是调完了,内部调用PLL、外部PLL两种模式都调试ok。需要注意的是,在使用LVDS核时,需要根据外部器件(显示器件、采集卡)的属性进行位分配。
相关文章推荐
- lvds在FPGA中的使用3- lvds_tx核与lvds_rx核的使用
- [原创][FPGA][IP-Core]altlvds_tx & altlvds_rx
- lvds在FPGA中的使用4 - 板级调试
- [笔记]ALTLVDS_TX和ALTLVDS_RX及Modelsim使用技巧
- 在Emacs调试JAVA程序,使用GUD模式
- How to:如何在调用外部文件时调试文件路径(常见于使用LaunchAppAndWait和LaunchApp函数)
- IE8"开发人员工具"使用详解下(浏览器模式、文本模式、JavaScript调试、探查器)
- SharePoint 2010无法使用外部asp.net web应用程序调试的解决办法
- [笔记].关于使用JLINK的三线SWD模式调试NUC1xx的一点粗浅认识
- 在不同解决方案之间,或者使用反射加载程序集,怎样使程序进入实时调试模式?
- IE8"开发人员工具"使用详解下(模式,JS调试,探查器)
- 资源受限--使用signaltapII调试FPGA设计中的bug
- IE8"开发人员工具"使用详解下(浏览器模式、文本模式、JavaScript调试、探查器)
- IE8"开发人员工具"使用详解下(浏览器模式、文本模式、JavaScript调试、探查器)
- VirtualBox下使用NAT模式实现外部访问guest(端口映射)
- 在Emacs调试JAVA程序,使用GUD模式
- IE8开发人员工具使用详解下(浏览器模式、JavaScript调试)
- 解决问题:vs 使用命令行参数调试时出现"当前项目设置指定将使用特定的安全权限对该项目进行调试.在此模式下,命令行参数将不会传递给可执行文件."
- IE8"开发人员工具"使用详解下(浏览器模式、文本模式、JavaScript调试、探查器)
- altera的FPGA芯片中的PLL使用