作者:桂。

时间:2018-05-14  12:11:00

链接:http://www.cnblogs.com/xingshansi/p/9035522.html


前言

主要是Xilinx 常用模块汇总(verilog)【03】中双端口RAM的细节补充,限于篇幅,单独列出。

一、双端口RAM简述

具体细节参考ug473_7Series_Memory_Resources.pdf.

这里直接调用IP核。

二、IP核参数简述

     A-Page1

  • Common Clock:同源时钟
  • Generate adderss..:默认32bit地址,否则根据深度自动调节
  • ECC:纠错
其他略.
     B-Page2
  • Read First Operating Mode is supported when the Common Clock option is selected.

  • no change mode

这里使用,通常选择no change mode。

     C-Page3

Port-A is used for write, and Port-B is used for read.(原语调用需要注意)
(PORT A/B同理):

在输出添加一个锁存器,即多延1拍,保证时序良好

     D-Page4

 
其他略。
     E-Page5
略。

三、仿真验证

任务要求【简化】

两路周期为64clocks【对应最大延迟数】的数据链,相差delay clocks,现在需要用DUAL PORT RAM进行对齐处理。

思路分析

1)选1路为参考,一路进入DUAL PORT RAM修正;

2)修正思路:对于脉冲信号,信号高为有效->判断延拍数—>根据延拍数进行地址偏移->输出对齐的数据。

Testbench:

`timescale 1ns / 1ps
/*
Function: DPRAM for data aligned
Author: Gui.
Data: 2018年5月14日12:49:07
*/
module dpram_tb;
//parameter
//parameter datwidth = 18;
parameter delay = ;
parameter start = ;
//port
logic clk,rst;
logic [:] datin1;
logic [:] datin2;
logic [:] datout;
logic [:] addra, addrb, counter, delayest;
logic [:] flag;//FSM
//initial
initial begin
clk = ;
rst = ;
#
rst = ;
#
$stop;
end always # clk = ~clk; always @(posedge clk)
begin
if(rst) begin
datin1 <= ;
datin2 <= ;
counter <= ;
end
else begin
counter <= counter+;
if(counter == start)
begin
datin1 <= {'b1,17'b0};
end
else begin
datin1 <= ;
end
if (counter == (start + delay ))
begin
datin2 <= {'b1,17'b0};
end
else begin
datin2 <= ;
end
end
end //flag control
always @(posedge clk)
begin
if(rst)
begin
delayest <= ;
addra <= ; //for primitive output register
addrb <= ;
flag <= ;
end
else begin
if (flag == 'b00)
begin
if(datout[])
begin
delayest <= ;
flag <= 'b01;
end
end
if (flag == 'b01)
begin
delayest <= delayest + ;
end
if ((flag == 'b01) & datin2[17])
begin
flag <= 'b10;
end
if (flag == 'b10)
begin
addra <= addra + delayest + ;
flag <= 'b11;//next flag state
end
else begin
addra <= addra + ;
end
addrb <= addrb + ;
end
end
//IP
blk_mem_gen_0 uut(
.clka(clk),
.wea('b1),
.addra(addra),
.dina(datin1),
.clkb(clk),
.addrb(addrb),
.doutb(datout)
); endmodule 

datout是datin1的修正,可见datin1修正后的结果—>datout 已经与datin2对齐。

DUAL PORT RAM应用实例的更多相关文章

  1. Xilinx ISE 14.1中模拟True Dual Port RAM例子

    <一>创建工程 创建工程在此略过. <二>基本代码 1.创建一个Verilog modual代码如下: module main( input clk, input rsta, ...

  2. AHB总线RAM Verilog实例

    //*************************************************************************** // Copyright(c)2017, L ...

  3. Xilinx 常用模块汇总(verilog)【03】

    作者:桂. 时间:2018-05-10  2018-05-10  21:03:44 链接:http://www.cnblogs.com/xingshansi/p/9021919.html 前言 主要记 ...

  4. 单双口RAM

    // Quartus II Verilog Template// Simple Dual Port RAM with separate read/write addresses and// singl ...

  5. RAM建模和初始化

    冯诺依曼提出的存储计算,计算存储,因此,几乎所有的CPU和ASIC都会使用存储器,它们的类型很多,包括异步RAM.同步RAM.ZBT RAM.DDR DRAM.ROM等.由于大部分的异步RAM和SRA ...

  6. [RAM] FPGA的学习笔记——RAM

    1.RAM——随机存取存储器, 分为SRAM和DRAM. SRAM:存和取得速度快,操作简单.然而,成本高,很难做到很大.FPGA的片内存储器,就是一种SRAM,用来存放程序,以及程序执行过程中,产生 ...

  7. 单口 RAM、伪双口 RAM、真双口 RAM、单口 ROM、双口 ROM 到底有什么区别呢?

    打开 IP Catalog,搜索 Block Memory Generator,即可看到其 Memory Type 可分为 5 中,分别是单口 RAM(Single Port RAM).伪双口 RAM ...

  8. IP核——RAM

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

  9. Vivado的helloword计划(一个):硬件project部分

    硬件平台:ZedBoard 软件平台:vivado2013.3 本演示样例通过综合.实现,生成比特流,发送到SDK实现. 启动vivado而且创建一个项目 依据提示操作一步步创建新项目的时候记得选择R ...

随机推荐

  1. python全栈开发day41-background、精灵图技术、定位(相、绝、固)、z-index

    一.昨日内容回顾 1.标准文档流定义: https://www.jianshu.com/p/b4d2c1dfd6e5 2.浮动和浮动的四大特性 1)脱标 2) 浮动元素相互贴靠 3)字围 4)紧凑(浮 ...

  2. web网页练习

    一. HTML部分 1. XHTML和HTML有什么区别 HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言最主要的不同: XHTML 元素必须被正确地嵌套. XHTML 元 ...

  3. ARIMA模型---时间序列分析---温度预测

    (图片来自百度) 数据 分析数据第一步还是套路------画图 数据看上去比较平整,但是由于数据太对看不出具体情况,于是将只取前300个数据再此画图 这数据看上去很不错,感觉有隐藏周期的意思 代码 # ...

  4. 程序猿(媛)的葵花宝典-- 必备idea 插件plugins 提高编码效率

    最近发现了几个非常好用   提高编码效率 的idea 插件 跟大家分享一下,,,不用谢我!!!!!!!!!!!!! 因为idea自带的插件下载可能连接不上服务器而导致插件下载失败,所以这里推荐使用引入 ...

  5. bzoj1563: [NOI2009]诗人小G 决策单调性(1D1D)

    目录 题目链接 题解 代码 题目链接 bzoj1563: [NOI2009]诗人小G 题解 \(n^2\) 的dp长这样 \(f_i = min(f_j + (sum_i - sum_j - 1 - ...

  6. HDU.3571.N-dimensional Sphere(高斯消元 模线性方程组)

    题目链接 高斯消元详解 /* $Description$ 在n维空间中给定n+1个点,求一个点使得这个点到所有点的距离都为R(R不给出).点的任一坐标|xi|<=1e17. $Solution$ ...

  7. CODEVS.3990.中国余数定理2(CRT)

    题目链接 颓了一天 写个模板吧.. Chinese_Remainder_Theorem: MashiroSky.远航之曲 #include <cstdio> #include <cc ...

  8. 本地搭建Wordpress博客网站(Windows)

    最近在写一些web功能测试的一个主题分享,里边有一个分类是数据库测试,那么数据库测试有几个点的方法,其中有一个是学会看数据库的日志.由于公司内部的数据库日志我们测试人员暂时不开放查看,所以打算自己在本 ...

  9. JavaScript_作用域(2017-03-16)

    这里写的还不够清楚. 建议去看:王福朋 的博客的加深理解. 深入理解javascript原型和闭包(8)——简述[执行上下文]上 深入理解javascript原型和闭包(9)——简述[执行上下文]下 ...

  10. 使用C3P0报错:java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector

    错误提示: java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector at JDBC.ConnectionPool.testC3P0( ...