• Altera自带的RAM仿真学习


    (1)单口RAM

    1.无读使能rden信号的ModelSim功能仿真:

    wave_4

    在不使用读使能rden信号的情况下,单口RAM仿真结果表明:

    1.写使能wren为高时,写数据操作有效;

    2.写使能wren为低时,读数据操作有效;

    3.写有效(高)时,输出端q输出为刚写入的数据;

    4.一般选择输出寄存一拍。

    2.有读使能rden信号的ModelSim功能仿真:

    wave_1

    wave_2

    在使用读使能rden信号的情况下,单口RAM仿真结果表明:

    1.读使能rdren为高时,读数据操作有效;

    2.写有效(高)时,读使能信号为低,则输出为上次读使能信号有效时的数据;

    3.写有效(高)时,读也有效(高)时,输出端q输出为刚写入的数据。

    另外,由于地址和数据在时钟上升沿改变,因而此刻有效值仍为改变前的值。在下一上升沿,改变后的值有效。再下一个上升沿,输出端q数据读出。所以,由时序结果好像是经过“两拍”后输出数据。这源于数据是边沿有效而不是中央有效(时序约束中也有涉及),同理SignalTap II中抓取的数据也会有这个情况。对于边沿有效,在时钟上升沿,信号的有效值为改变前的结果。

    (2)双口RAM

    双口RAM的仿真选用了真双口RAM,有两组PORT(A、B),初始内部数据为0。

    2013-12-07_141236

    仿真结果如下:

    nonblocking_2

    testbench中利用非阻塞赋值,在仿真时刻完成右值的更新,在仿真结束时刻完成左值的赋值。所以和单口RAM仿真中提到的一样,信号在第一个时钟沿改变数值,在第二个时钟沿有效,在第三个时钟沿输出数据(由于输出寄存一拍),这和实际情况也一致。

    说明下图中几个标尺的解释:

    1.在25000ps时刻,地址0写入数据f0h,在下一个时钟沿q_a端输出f0h,后面同理。

    2.在155000ps时刻,A端口对地址2进行写操作,而B端口对地址2进行读操作,出现了Mixed Port Read-During_Write情况,在配置IP核时,我们选择了读端口输出Old memory contents appear,故此时B端口读出地址2原先的值f2h。同理,在165000ps时刻,B端口读出地址2原先的值02h。

    另外对于下面的设置,有点不理解,不知和上面有何区别。

    2013-12-07_141458

  • 相关阅读:
    mongodb集群搭建
    ansible 部署redis集群(三台主机6节点3主3备)
    nginx upstream bug
    回炉重造之 nginx
    docker 搭建jenkins环境
    搭建gitlab
    Dockerfile传入变量问题
    mysql8忘记root密码重置密码
    docker-compose容器化构建nginx服务
    docker-compose容器化构建minio服务
  • 原文地址:https://www.cnblogs.com/aikimi7/p/3458415.html
Copyright © 2020-2023  润新知