「Verilog学习笔记」ROM的简单实现

专栏前言

本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网

分析

        要实现ROM,首先要声明数据的存储空间,例如:[3:0] rom [7:0];变量名称rom之前的[3:0]表示每个数据具有多少位,指位宽;变量名称rom之后的[7:0]表示需要多少个数据,指深度,注意这里深度为8,应该是使用[7:0],而不是[2:0]

       声明存储变量之后,需要对rom进行初始化,写入数据,然后将输入地址作为rom的索引值,将索引值对应的数据输出。

`timescale 1ns/1ns
module rom(
	input clk,
	input rst_n,
	input [7:0]addr,
	
	output [3:0]data
);
	reg [3:0] rom_data [7:0] ; 
	
	assign data = rom_data[addr] ; 

	always @ (posedge clk or negedge rst_n) begin 
		if (!rst_n) begin 
			rom_data[0] <= 4'd0 ; 
			rom_data[1] <= 4'd2 ;
			rom_data[2] <= 4'd4 ;
			rom_data[3] <= 4'd6 ;
			rom_data[4] <= 4'd8 ;
			rom_data[5] <= 4'd10 ;
			rom_data[6] <= 4'd12 ;
			rom_data[7] <= 4'd14 ;
		end
		else begin 
			rom_data[0] <= rom_data[0] ;
			rom_data[1] <= rom_data[1] ;
			rom_data[2] <= rom_data[2] ;
			rom_data[3] <= rom_data[3] ;
			rom_data[4] <= rom_data[4] ;
			rom_data[5] <= rom_data[5] ;
			rom_data[6] <= rom_data[6] ;
			rom_data[7] <= rom_data[7] ;
		end
	end

endmodule
  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UCSD.KS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值