【Verilog】ROM & RAM

RAM & ROM

ROM:只读存储器
概念
  • ROM内部的数据是在ROM制造工序中,在工厂里用也输的方法被烧录进去的,其中的内容只能读不能改,一旦烧录进去,用户只能验证写入的资料是否正确,不能再做任何修改,如果发现资料有任何错误,则只能舍弃不用,重新订做一份,ROM是在生产线上生产的,由于成本高,一般只用在大批量应用的场合
源代码
module romv(dout,clk,addm,cs);
	input clk;
	input [2:0] addm;
	input cs;
	output [7:0] dout;
	reg [7:0] dout;
	reg [7:0]rom[7:0];
	initial begin
		rom[0]=8'b00000000;
		rom[1]=8'b00000001;
		rom[2]=8'b00000010;
		rom[3]=8'b00000011;
		rom[4]=8'b00000100;
		rom[5]=8'b00000101;
		rom[6]=8'b00000110;
		rom[7]=8'b00000111;
	end
	always @(posedge clk)
		if(cs) 
			dout<=8'bz;
		else
		    dout<=rom[addm];
endmodule
testbench
module romv_tb;
	reg clk,cs;
	reg [2:0] addm;
	wire [7:0] dout;
	romv u2(dout,clk,addm,cs);
	initial begin
		clk=0;addm=0;cs=0;
	end
	always #10 clk=~clk;
	initial begin
		repeat(7) #20 addm=addm+1;
	end
endmodule
仿真波形

在这里插入图片描述

  • 解释:
    • 与RAM不同的是,RAM可以进行读写,而ROM只能对已经写好在内存地址的数据进行读取。所以在进行代码的编写时,要事先在相应地址写入一部分数据。在测试仿真阶段,若输入已写好数据的地址,将会在data输出端将其数据进行输出显示
RAM:随机访问内存
概念
  • 随机访问内存(RAM)相当于PC机上的移动存储,用来存储和保存数据的。在任何时候都可以读写,RAM通常用作操作系统或其他正在运行的程序的临时存储介质(可称作系统内存)。不过,当电源关闭时时RAM不能保留数据,如果需要保存数据,就必须把它们写入到一个长期的存储器中(例如硬盘)。正因为如此,有时也将RAM称作"可变存储器"。RAM内存可以进一步分为静态RAM(SRAM)和动态内存(DRAM)两大类
源代码与testbench

在这里插入图片描述

仿真波形

在这里插入图片描述

  • 解释:
    • RAM外部可见端口分别为一位的CS片选输入信号、一位的clk时钟输入信号、共计两位的wr/rd读写输入信号端口、32位的addr地址输入端口、32位的data数据写入/读出的输入输出双向端口

在这里插入图片描述

  • 解释:
    • 写有效时,数据可以从data输入端进行数据的输入,并且写入到指定的addr地址位置。在此处进行的测试代码直接将地址端随时钟信号进行递增,而所需输入到地址的data数据也进行给定测试

在这里插入图片描述

  • 解释:
    • 读有效时,地址可以从addr地址输入端进行读入,并且在相应的地址区域找到相应的数据,并由data数据输出端送出。若输入的地址有效且原本已经存入数据,则正常情况下应该在data中显示。由于data设定的位inout双向输入输出端口,故在进行读出操作时,需为代码设定一个临时缓冲变量,将所需传递的数据先赋值给临时缓冲变量,再通过三态门与条件运算符读出data
  • 4
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值