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

「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

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

相关文章:

  • 2024年图像处理、多媒体技术与机器学习
  • 鸿蒙学习笔记:用户登录界面
  • 【CVE-2024-56145】PHP 漏洞导致 Craft CMS 出现 RCE
  • 数智化医院分布式计算框架融合人工智能方向初步实现与能力转换浅析
  • PHP 微信棋牌开发全解析:高级教程
  • lpips使用笔记
  • 机器学习第10天:集成学习
  • Vue 2.0的源码目录设计
  • vue3 vue-router 笔记
  • C# static关键字详解
  • 【Java程序员面试专栏 算法训练篇】二叉树高频面试算法题
  • 10-19 HttpServletResponse
  • ComText让机器人有了情节记忆
  • Upwork 新手使用指南——如何快速在Upwork上接单
  • 基于Vue+SpringBoot的校园电商物流云平台开源项目
  • MTK Pump Express 快速充电原理分析
  • 美国服务器:全面剖析其主要优点与潜在缺点
  • npm报错
  • QT自定义信号,信号emit,信号参数注册
  • c++处理tcp粘包问题以及substr方法
  • vue3使用element-plus
  • 拼图小游戏
  • 轻松实现公网访问本地内网搭建的WBO白板【内网穿透】
  • Labview中for循环“无法终止”问题?即使添加了条线接线端,达到终止条件后,仍在持续运行?
  • PostgreSQL 难搞的事系列 --- vacuum 的由来与PG16的命令的改进 (1)
  • 基于LLM+场景识别+词槽实体抽取实现多轮问答