quartus之ram的IP测试

1、基本原理

ram,读取存储器,用于储存数据。基本的原理就是使用时钟驱动时序,利用地址区分位置,使用使能控制写入。输出的结果以写入的位宽输出。

2、实际操作

顶层代码:

module ram(
input clk,
input rst_n,
output [7:0] q
);
reg [7:0] address;
reg [7:0] data; always@(posedge clk)begin
if(!rst_n)begin
address<=8'd0;
data<=8'd0;
end
else if(address<8'd100)begin
address<=address+1'b1;
data<=address;
end
end ram_ip U1(
.address(address),
.clock(clk),
.data(data),
.wren(rst_n),
.q(q)
); endmodule

ram_ip是quartus中直接调用IP得到的文件,IP的所有设置均为默认。

测试文件:

`timescale 1ns/1ns
module ram_tb; reg clk;
reg rst_n;
wire [7:0] q; initial begin
clk<=1'b0;
rst_n<=1'b0;
end always #10 clk<=~clk; initial begin
$monitor($time,,"q=%h",q);
#20
rst_n<=1'b1;
#10000
$stop;
end ram U1_tb(
.clk(clk),
.rst_n(rst_n),
.q(q)
); endmodule

这个是测试的激励文件,采用变量监测的方式得到想要的结果。

                    0 q=0030 q=xx
50 q=0090 q=01110 q=02130 q=03150 q=04170 q=05190 q=06210 q=07230 q=08250 q=09
270 q=0a
290 q=0b
310 q=0c
330 q=0d
350 q=0e
370 q=0f
390 q=10410 q=11430 q=12450 q=13470 q=14
490 q=15510 q=16530 q=17550 q=18570 q=19590 q=1a
610 q=1b
630 q=1c
650 q=1d
670 q=1e
690 q=1f
710 q=20730 q=21750 q=22770 q=23790 q=24810 q=25830 q=26850 q=27870 q=28890 q=29910 q=2a
930 q=2b
950 q=2c
970 q=2d
990 q=2e
1010 q=2f
1030 q=301050 q=311070 q=321090 q=331110 q=341130 q=351150 q=361170 q=371190 q=381210 q=391230 q=3a
1250 q=3b
1270 q=3c
1290 q=3d
1310 q=3e
1330 q=3f
1350 q=401370 q=411390 q=421410 q=431430 q=441450 q=451470 q=461490 q=471510 q=481530 q=491550 q=4a
1570 q=4b
1590 q=4c
1610 q=4d
1630 q=4e
1650 q=4f
1670 q=501690 q=511710 q=521730 q=531750 q=541770 q=551790 q=561810 q=571830 q=581850 q=591870 q=5a
1890 q=5b
1910 q=5c
1930 q=5d
1950 q=5e
1970 q=5f
1990 q=602010 q=612030 q=622050 q=63** Note: $stop : D:/Library/FPGA_altera/A3_ram/ram_tb.v(20)
Time: 10020 ns Iteration: 0 Instance: /ram_tb

数据比较多,通过存储器的视图查看:

从前面的30ns时q的值为xx的情况可以看出,在一个完整的时钟周期内,如果wren发生了变化,读取的数据也将不确定。这也是异步时序的缺点,容易出现未知情况。如果使能信号为同步时序,则可以有效避免。

3、最后小结

ram还是使用的比较多的IP,一般的设计中需要处理大量的数据时,一般会采用ram来完成。与之相似的还有ROM,其值是直接配置好后读取的,无法写入,具体的操作和RAM类似。ROM数据的配置文件可以了解一下。

quartus之ram的IP测试的更多相关文章

  1. shell脚本和python脚本实现批量ping IP测试

    先建一个存放ip列表的txt文件: [root@yysslopenvpn01 ~]# cat hostip.txt 192.168.130.1 192.168.130.2 192.168.130.3 ...

  2. Shell学习笔记之shell脚本和python脚本实现批量ping IP测试

    0x00 将IP列表放到txt文件内 先建一个存放ip列表的txt文件: [root@yysslopenvpn01 ~]# cat hostip.txt 192.168.130.1 192.168.1 ...

  3. LoadRunner 使用虚拟IP测试流程

    LoadRunner 使用虚拟IP测试流程 LoadRunner 使用IP欺骗的原因 . 当某个IP的访问过于频繁,或者访问量过大是,服务器会拒绝访问请求,这时候通过IP欺骗可以增加访问频率和访问量, ...

  4. RHEL7 配置临时IP 测试

    RHEL7 配置或添加临时IP地址测试: [root@rhel7 Desktop]# ip a s enp0s3 ---查看原网卡IP 为192.168.1.7 : enp0s3: <BROAD ...

  5. Ping N个IP测试网络连通性

    #-----------------------Smokeping移动节点-------------------##! /bin/bashecho "------------- Statin ...

  6. PHP 使用 GeoIP 进行不同国家 ip 测试

    $ip = "67.220.91.30";// USA switch (mt_rand(0, 15)) { case 0:// India $ip = "210.212. ...

  7. RAM/ROM IP一次性总结

    1, 若需要修改memory mode, 需重新编译; 若不需要修改memory mode, 直接修改宏参数即可; 2, 宏参数列表: 3, 注意用LE搭memory的情况; 4, memory ty ...

  8. mysql all_ip_test局域网IP测试工具,有需要的改一改.

    1 import threading 2 import subprocess 3 import pymysql 4 # threading.Lock() 5 6 7 class Link(object ...

  9. 代理ip 测试

    Line #1218 : 101.232.208.245 - - [16/Jan/2018:02:47:34 +0800] "GET /?xltestdesfs HTTP/1.1" ...

  10. IP核——RAM

    一.Quartus 1.打开Quartus ii,点击Tools---MegaWizard Plug-In Manager 2.弹出创建页面,选择Creat a new custom megafunc ...

随机推荐

  1. C++ 线程的学习---线程同步

    因为是学习篇,写下是为了个人的学习与理解.故参考其他文章为多. 为什么需要线程同步? 在程序中使用多线程时,一般很少有多个线程能在其生命期内进行完全独立的操作.更多的情况是一些线程进行某些处理操作,而 ...

  2. win32-改变显示器的亮度

    调用SetMonitorBrightness 代码示例: #pragma comment(lib, "dxva2.lib") #include <windows.h> ...

  3. Maven应用常见问题

    在Spring Boot项目中打包指定类为启动类 <build> <plugins> <plugin> <groupId>org.springframe ...

  4. 重点:递归函数,数学模块,随机模块---day14

    1.递归函数 自己调用自己的函数是递归函数 递:去 归:回 一去一回叫作递归 简单递归 def digui(n): print(n,'<==1==>') if n > 0: digu ...

  5. go语言range语句中的值的坑

    在range语句中生成的数据的值是真实集合元素的副本,它们不是原有元素的引用.这意味着更新这些值将不会 修改原来的数据,同时也意味着使用这些值的地址将不会得到原有数据的指针. package main ...

  6. 01-Redis系列之-Redis介绍安装配置

    Redis初识 Redis主要内容 1 redis介绍,特性,安装和配置,典型应用场景 2 单线程架构,5大数据类型操作,通用指令和高级API的使用 3 高级用法(慢查询,管道,shu发布订阅,bit ...

  7. CXP2.0的相机是否可以使用CXP1.1的Grabber

    可以 答案是肯定的. 目前CXP共有2个发布版本: 2011年发布CXP1.1 2021年发布CXP2.1,向后兼容,新标准增加了同步功能.数据率放大了一倍. 只要是符合CXP标准.接插件匹配,那么C ...

  8. 深入理解maven及应用

    在项目里用了快一年的maven了,最近突然发现maven项目在eclipse中build时非常慢,因为经常用clean install命令来build项目,也没有管那么多,但最近实在受不了乌龟一样的b ...

  9. 【Azure Service Fabric】关于Service Fabric的相关问题

    问题一:Service Fabric 是否支持Private Link? 在Azure Private Endpoint文档中,罗列出了 Azure 上支持 Private Link 的服务.Serv ...

  10. 开源短信项目 platform-sms 发布了新版本 0.5.0

    Github : https://github.com/makemyownlife/platform-sms 短信服务 platform-sms 0.5.0 发布 ,新的版本做了非常多的优化和改进. ...