zoukankan      html  css  js  c++  java
  • [笔记]ALTLVDS_TX和ALTLVDS_RX及Modelsim使用技巧

    LVDS OUTPUT只能锁定在BANK0或者BANK2上,而LVDS INPUT无此要求。

    由于在仿真ALTLVDS_RX中发现信号线rx_dpa_locked并没有锁住。后来发现是我初始化出错了。在洪鸿榕的调试下,我学到了modelsim中用字母I、O可以放大和缩小波形,在输入信号端口上右击可以强制对输入信号进行赋值,这样可以不受testbench的影响(要能灵活应用,GOOD!)。在《ug_altlvds.pdf》文档中第36/105页中语句1如图1所示,再结合第38/105页初始化步骤(程序的步骤就要严格按照这个来写,所以一定要吃透并理顺),可以发现我自己对信号rx_fifo_reset的理解是有着致命的错误。也明白了并非所有的复位信号一开始就让其有效是对的。这边就出现rx_fifo_reset信号开始要为0,等到rx_dpa_locked信号有效再置有效且只能一个时钟的脉冲,这样才能达到复位功能。

    建议在对LVDS_RX进行初始化请一定要按照《ug_altlvds.pdf》第38/105页,如果严格按照上面的要求就会得到正确的结果。其中字调整需要4个脉冲,这是参考《arriav_hankbook.pdf》第157/426页串行与并行关系得到。

    Modelsim中常用到restart -f; run 5us; radix -hex等语句,及向上箭号来寻找之前的命令。调试中要善于对输入信号进行强制赋值来对比。

    常用到的命令有cat,pwd,cd等,有些指令与Linux底下的使用类似。

    Modelsim下方时间单位ps改为us的方法:Tools-->Window Preferences...-->Grid & Timeline中Time units选择us即可。

    dir可以查看文件目录列表,notepad filename可以以写字板打开文件看里面的东西 。

    Modelsim保存wave中自己设置好的信号方法:File-->Save Format...即可。

    Modelsim的wave中信号针对某个值进行查找时方法是:Edit-->Wave Signal Search...-->Search for Signal Value输入所需的值就可以定位。

    Modelsim的wave中对某些信号线进行合并,即提取所需的信号总线,方法是:Tools-->Combine Signals...-->Result Name输入所取的名字就可以。 

    Modelsim的wave中信号针对某个值进行查找时方法是:Edit-->Wave Signal Search...-->Search for Signal Value输入所需的值就可以定位。

    Modelsim的wave中信号线颜色和命名颜色的改变方法是:在该信号上右击-->Properties...-->View-->Wave Color / Name Color就可以。

    使用ModelSim do文件实现仿真(Verilog)http://www.eetop.cn/blog/html/51/806951-29326.html  这篇文章写得很好,很价值。

    modelsim批处理和do文件 来源: http://blog.21ic.com/user1/8510/archives/2012/91124.html

    批处理后缀是*.bat文件,使用类似GCC,可以参考GCC使用手册



    在Altera的ArriaV中也有ALTLVDS_TX和ALTLVDS_RX宏功能模块。由于之前在做Xilinx器件时,有用过将LVDS的差分信号转成单端信号的相关源语。以为在Altera器件上也需要,其实Altera完全可以不用,只需要定义和锁定P引脚就可以,但需要将IO Standard定义成LVDS形式,如下所示:

    # | module altera_lvds_rx_1
    set_instance_assignment -name IO_STANDARD LVDS -to LVDS_RX1_p[0]
    set_location_assignment PIN_F16 -to LVDS_RX1_p[0]

    这样就可以省去一大堆的差分转单端的源语了,太给力了。

    ###################################################################################################

    对于LVDS_TX和LVDS_RX宏功能模块中PLL的共享一定要保证所要求的信号源一致,就是采用同一根信号。我之前一直没能理解过来,且不会转变,后来还是洪鸿榕做出来了。其实我是定位对了,但没能理解过来。语文!!

    文档《ug_altlvds.pdf》第51/105页中有提到:when both use identical input clock sources, identical pll_areset sources, identical deserialization factors, and identical output settings.

    我在用LVDS_TX和LVDS_RX宏功能模块时,出现如下三个问题:

    第一问题:我对LVDS_RX宏功能模块分别进行功能仿真和时序仿真,在输入时钟为74.25MHZ,占空比是4/7,串行因子是7bit的条件下,功能仿真是将7个拆开成3个和4个输出的,而时序仿真却是将7个拆开成4个和3个输出的。我们不确定哪种是正确的,请问文档中哪边有提到吗?下面这张是当串行因子为8bit时的接收情况,它是8个拆开成4个和4个接收的。而7个的话就不知道如何拆开呢? 

     

    第二个问题:我们PANNEL上LVDS发送格式如下图所示。那么我们要如何使用Arria LVDS_RX宏功能模块去正确接收? 

    第三问题:还有LVDS_TX宏功能模块的发送格式是如下所示,我们要如何处理才能变成上图的格式输出呢? 

  • 相关阅读:
    Oracle 左连接、右连接、全外连接、(+)号作用
    ORA-01940:无法删除当前已链接的用户(转)
    博客正式开通
    python扫描内网存活主机(scapy与nmap模块)
    Python学习之扫描网段主机与开启端口(避坑)
    Python学习之服务器与客户端的交互
    python渗透测试编程之kali linux2的AptanaStudio3安装
    Shellcodeloader免杀过火绒
    Cracer之Waf绕过
    30 Day Challenge Day 16 | Leetcode 692. Top K Frequent Words
  • 原文地址:https://www.cnblogs.com/zlh840/p/2671946.html
Copyright © 2011-2022 走看看