在简单双端口ram中最简单有9个端口:分别是
clka 为输入端口的时钟
wea 读写控制端,高为写,低为读
addra 写地址
dina 待写入的数据
clkb 为输出端口的时钟的
addrb 读地址
doutb 读出的数据
在ip核中还可以加入ena/enb端口,这两个端口的作用是控制相应写入和读出端口的数据,为高是正常写入或读出,为低时写入为0,读出为0。
也可以加入复位端口rst,不过复位有两种优先级CE和SR,选择CE时,rst的优先级低于ENA的优先级;选择SR时,rst的优先级高于ENA的优先级。
还可以选择复位的方式,同步还是异步,一般选择同步。
端口介绍完后,就开始使用双端口ram,工作方式是:可以写入也可以预先用coe文件存入数据,写入数据后就可以读取数据了 ,这里的读取数据和rom的相同,写入地址是多少,就去读取相应地址的数据。
双端口ram和单端口的ram不同,单端口的ram读取数据方式是,写入数据的下一个时钟自动输出数据,仅可用于流水线式数据处理。
这里写了一个简单双端口的ram测试代码


1 `timescale 1ns / 1ps 2 `define clk_period 20 3 //////////////////////////////////////////////////////////////////////////////// 4 // Company: 5 // Engineer: 6 // 7 // Create Date: 11:39:21 06/04/2018 8 // Design Name: ram 9 // Module Name: E:/digital image processing/finial_code/ram_test/testbench/ram_tb.v 10 // Project Name: ram_test