深度为16,位宽8bit的单端口SRAM——学习记录

链接:

【Verilog HDL 训练】第 13 天(存储器、SRAM)-云社区-华为云

复制代码
 module sram #(
      parameter ADDR_BITS=4
      )(
      input clk,
      input [ 7:0] addr,
      input [ 7:0] din,
      input ce,
      input we,
      output reg [ 7:0] dout
      );
      localparam MEM_DEPTH= 1<<ADDR_BITS;
      reg [7:0] mem[MEM_DEPTH-1:0];
      // synopsys_translate_off
      integer i;
      initial begin
      for(i=0; i<MEM_DEPTH;i=i+1) begin
      mem[i] = 8'h00;
      end
      end
      // synopsys_translate_on
      always @(posedge clk) begin
      if(ce & we) begin
      mem[addr] <= din;
      end
      end
      always @(posedge clk) begin
      if(ce && (!we)) begin
      dout <= mem[addr];
      end
      end
      endmodule

`timescale 1ns / 1ps
      //
      // Company: 
      // Create Date: 2019/05/16 21:04:57
      // Design Name: 
      // Module Name: SRAM_tb
      //
      module sram_tb(
      );
     	reg [7 : 0] addr;
     	reg [7 : 0]data_in;
     	reg clk;
     	reg we;
     	reg ce;
     	wire [7 : 0] data_out;
     	integer i;
     	//clock generation
     	initial begin
     		clk = 0;
     		forever
       #4 clk = ~clk;
     	end
     	initial begin
     		ce = 1'b0;
     		we = 1'b0;
     		addr = 4'd0;
     		data_in = 8'h00;
       #20
     		@(negedge clk)//read
     		ce = 1'b1;
     		for (i = 0; i<16; i=i+1) begin
     			@(negedge clk)
      addr = i;
     		end
     		@(negedge clk)//write
     			we = 1'b1;
     		for (i = 0; i<16; i=i+1) begin
     			@(negedge clk) begin
      addr = i;
      data_in = data_in + 'h01;
     			end
     		end
     		@(negedge clk)//read
     			we = 1'b0;
     		for (i = 0; i<16; i=i+1) begin
     			@(posedge clk)
      addr = i;
     		end
     		@(negedge clk)
     			ce = 1'b0;
     		 //#100 $finish;
       #100 $stop;
     	end
     	sram #( .ADDR_BITS(4) ) u_sram(
     	.clk(clk),
     	.ce(ce),
     	.we(we),
     	.addr(addr),
     	.din(data_in),
     	.dout(data_out)
     	);
      endmodule
相关推荐
励志不掉头发的内向程序员3 分钟前
从零开始的python学习——文件
开发语言·python·学习
悠哉悠哉愿意1 小时前
【数学建模学习笔记】无监督聚类模型:分层聚类
笔记·python·学习·数学建模
北冥电磁电子智能1 小时前
江协科技STM32学习笔记补充之004
笔记·科技·学习
一个响当当的名号2 小时前
c++primer 个人学习总结-模板和泛型编程
开发语言·c++·学习
落羽的落羽2 小时前
【C++】C++11的可变参数模板、emplace接口、类的新功能
开发语言·c++·学习
滴滴滴嘟嘟嘟.2 小时前
Qt对话框与文件操作学习
开发语言·qt·学习
乱飞的秋天2 小时前
IO学习
学习
snowfoootball4 小时前
近期算法学习记录
学习·算法
今天也好累4 小时前
C++ 小游戏:拍桌子
c++·笔记·学习·算法
滴滴滴嘟嘟嘟.4 小时前
Qt图表功能学习
开发语言·qt·学习