当前位置: 首页 > 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

相关文章:

  • 【ChatGPT】 如何让ChatGPT分析数据并得出结论
  • 冗余连接2 hard题 代随C#写法
  • 万字长文分析函数式编程
  • Java设计模式面试题及参考答案
  • android dvr黑屏
  • 字节、快手、Vidu“打野”升级,AI视频小步快跑
  • 机器学习第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+场景识别+词槽实体抽取实现多轮问答