VL53. 单端口RAM
描述
题目描述:
设计一个单端口RAM,它有: 写接口,读接口,地址接口,时钟接口和复位;存储宽度是4位,深度128。
注意rst为低电平复位
信号示意图:
输入描述
输入信号 enb, clk, rst addr w_data输出描述
输出信号 r_dataVerilog 解法, 执行用时: 0ms, 内存消耗: 0KB, 提交时间: 2022-08-06
`timescale 1ns/1ns module RAM_1port( input clk, input rst, input enb, input [6:0]addr, input [3:0]w_data, output wire [3:0]r_data ); //*************code***********// reg [3:0] mem[127:0]; integer i; always@(posedge clk or negedge rst)begin if(!rst)begin for(i=0;i<127;i=i+1) mem[i]<=0; end else if(enb)begin mem[addr]<=w_data; end end assign r_data = (!enb)?mem[addr]:4'd0; //*************code***********// endmodule
Verilog 解法, 执行用时: 0ms, 内存消耗: 0KB, 提交时间: 2022-08-06
`timescale 1ns/1ns module RAM_1port( input clk, input rst, input enb, input [6:0]addr, input [3:0]w_data, output wire [3:0]r_data ); //*************code***********// reg [3:0] MEM [0:127]; assign r_data = enb ? 0 :MEM[addr]; //write integer i; always@(posedge clk,negedge rst)begin if(~rst)begin for(i=0;i<127;i=i+1)begin MEM[i] <= 0; end end else if(enb)begin MEM[addr] <= w_data; end end //*************code***********// endmodule
Verilog 解法, 执行用时: 0ms, 内存消耗: 0KB, 提交时间: 2022-08-06
`timescale 1ns/1ns module RAM_1port( input clk, input rst, input enb, input [6:0]addr, input [3:0]w_data, output wire [3:0]r_data ); //*************code***********// reg [3:0] data[127:0]; reg [3:0] rdata; integer i; assign r_data = (!enb) ? data[addr] : 4'd0; always@(posedge clk or negedge rst) begin if(!rst) for(i=0;i<128;i=i+1) data[i] <= 4'd0; else if(enb) data[addr] <= w_data; end //*************code***********// endmodule
Verilog 解法, 执行用时: 0ms, 内存消耗: 0KB, 提交时间: 2022-08-06
`timescale 1ns/1ns module RAM_1port( input clk, input rst, input enb, input [6:0]addr, input [3:0]w_data, output wire [3:0]r_data ); //*************code***********// reg [3:0] ram [127:0]; integer i; always @(posedge clk or negedge rst) begin if(!rst) for(i=0;i<=128;i=i+1) ram[i] <=0; else ram[addr] <= enb? w_data: ram[addr]; end assign r_data = enb ? 4'd0:ram[addr]; //*************code***********// endmodule
Verilog 解法, 执行用时: 0ms, 内存消耗: 0KB, 提交时间: 2022-08-06
`timescale 1ns/1ns module RAM_1port( input clk, input rst, input enb, input [6:0]addr, input [3:0]w_data, output wire [3:0]r_data ); //*************code***********// reg[3:0] ram_reg[127:0] ;//前面是位宽,后面是深度 integer i; always@(posedge clk or negedge rst)begin if(~rst)begin for(i = 0; i < 128;i = i+1)begin ram_reg[i] <= 4'b0; end end else begin if(enb)begin//读使能有效 ram_reg[addr] <= w_data; end else begin//不有效保持不变 ram_reg[addr] <= ram_reg[addr]; end end end assign r_data = enb ? 4'b0:ram_reg[addr];//只要不是写使能,它就认为是读的东西 //*************code***********// endmodule