IP-RAM

IP-RAM

  1. 概述
  • 随机存取存储器
  • SRAM 和DRAM
  1. 配置
  • 单端口
  • 双端口
  1. 应用

verilog_to_RAM.v

module Verilog_to_RAM
( 
	CLK_50M,RST_N,address,wrdata,rddata,wren,rden,time_cnt
);

input CLK_50M;
input RST_N;

output reg[5:0] time_cnt;
output reg[4:0] address;
output reg[7:0] wrdata;
output [7:0] rddata;
output wren;
output rden;

reg [5:0] time_cnt_n;
reg [4:0] address_n;
reg [7:0] wrdata_n;

always@(posedge CLK_50M or negedge RST_N)
begin
	if(!RST_N)
		time_cnt<=1'b0;
	else
		time_cnt<=time_cnt_n;
end

always@(*)
begin
	if(time_cnt==6'd63)
		time_cnt_n=1'b0;
	else
		time_cnt_n=time_cnt+1'b1;
end
//
always@(negedge CLK_50M or negedge RST_N)
begin
	if(!RST_N)
		address<=1'b0;
	else
		address<=address_n;
end
always@(*)
begin
	if(address==5'd31)
		address_n=1'b0;
	else
		address_n=address+1'b1;
end


assign wren=(time_cnt >=1'b0&&time_cnt<=5'd31)? 1'b1:1'b0;


always@(negedge CLK_50M or negedge RST_N)
begin
	if(!RST_N)
		wrdata<=1'b0;
	else
		wrdata<=wrdata_n;
end
always@(*)
begin
	if(time_cnt >=1'b0&&time_cnt<=5'd31)
		wrdata_n=time_cnt;
	else
		wrdata_n=wrdata;
end

assign rden=(time_cnt >=6'd32&&time_cnt<=6'd63)? 1'b1:1'b0;
memory	memory_inst (
	.address ( address ),
	.clock ( CLK_50M),
	.data ( wrdata ),
	.rden ( rden ),
	.wren ( wren ),
	.q ( rddata )
	);
endmodule

verilog_to_RAM.vt

`timescale 1 ps/ 1 ps
module Verilog_to_RAM_vlg_tst();
// constants                                           
// general purpose registers
reg eachvec;
// test vector input registers
reg CLK_50M;
reg RST_N;
// wires                                               
wire [4:0]  address;
wire [7:0]  rddata;
wire rden;
wire [5:0]  time_cnt;
wire [7:0]  wrdata;
wire wren;

// assign statements (if any)                          
Verilog_to_RAM i1 (
// port map - connection between master ports and signals/registers   
	.CLK_50M(CLK_50M),
	.RST_N(RST_N),
	.address(address),
	.rddata(rddata),
	.rden(rden),
	.time_cnt(time_cnt),
	.wrdata(wrdata),
	.wren(wren)
);
initial                                                
begin                                                  
	CLK_50M=1'b0;
	RST_N=1'b0;
	#10 RST_N=1'b1;
	#1000000 $stop;
end                                                    
always   #1000 CLK_50M=~CLK_50M;                                                   
endmodule


modelsim图
在这里插入图片描述

signaltap 图
图片有一点时序错误不想改了 在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值