当前位置: 首页 > article >正文

【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL23

ROM的简单实现

描述

实现一个深度为8,位宽为4bit的ROM,数据初始化为0,2,4,6,8,10,12,14。可以通过输入地址addr,输出相应的数据data。

接口信号图如下:

使用Verilog HDL实现以上功能并编写testbench验证。

输入描述:

clk:系统时钟

rst_n:异步复位信号,低电平有效

addr:8bit位宽的无符号数,输入到ROM的地址

输出描述:

data:4bit位宽的无符号数,从ROM中读出的数据

解题思路

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

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

		end
		else begin
			rom[0] <= 4'd0;
			rom[1] <= 4'd2;
			rom[2] <= 4'd4;
			rom[3] <= 4'd6;
			rom[4] <= 4'd8;
			rom[5] <= 4'd10;
			rom[6] <= 4'd12;
			rom[7] <= 4'd14;			
		end
	end

	assign data = rom[addr];

endmodule


http://www.kler.cn/a/311560.html

相关文章:

  • Linux的基本指令(二)
  • LSM-TREE和SSTable
  • 【Python】轻松实现机器翻译:Transformers库使用教程
  • Android笔记(三十五):用责任链模式封装一个App首页Dialog管理工具
  • 使用ChatGPT神速精读文献,12个高阶ChatGPT提示词指令,值得你复制使用
  • 小红书图文矩阵的运营策略与引流技巧解析
  • C++笔记21•C++11的新特性•
  • Springboot请求响应案例
  • Ruoyi Cloud K8s 部署
  • Golang | Leetcode Golang题解之第415题字符串相加
  • MySQL:索引02——使用索引
  • kafka 超详细的消息订阅与消息消费几种方式
  • 【运维】自定义exporter
  • Redis——笔记01
  • 【PyQt5】object属性
  • Java中的异步编程模式:CompletableFuture与Reactive Programming的实战
  • 性格类型识别系统源码分享
  • DTD 实体
  • 【HTTP】HTTP报文格式和抓包
  • C++初阶:STL详解(五)——vector的模拟实现
  • 【JOIN 详解】SQL连接全面解析:从基础到实战
  • PostgreSQL主从切换测试
  • 使用BGP及静态路由方式实现链路冗余和ByPass
  • C:字符串函数(完)-学习笔记
  • 北斗盒子TD20——水上作业的安全防线,落水报警守护生命
  • React 中的延迟加载