Verilog快速入门
(1) 四选一多路器
(2)异步复位的串联T触发器
(3)奇偶校验
(4)移位运算与乘法
(5)位拆分与运算
(6)使用子模块实现三输入数的大小比较
(7)4位数值比较器电路
(8)4bit超前进位加法器电路
(9)优先编码器电路①
(10)用优先编码器①实现键盘编码电路
(11)8线-3线优先编码器
(12)使用8线-3线优先编码器实现16线-4线优先编码器
(13)用3-8译码器实现全减器
(14)使用3-8译码器①实现逻辑函数
(15)数据选择器实现逻辑函数
(16)状态机
(17)ROM的简单实现
一、题目描述
实现一个深度为8,位宽为4bit的ROM,数据初始化为0,2,4,6,8,10,12,14。可以通过输入地址addr,输出相应的数据data。
接口信号图如下:
文章来源:https://www.toymoban.com/news/detail-473992.html
输入描述:
clk:系统时钟
rst_n:异步复位信号,低电平有效
addr:8bit位宽的无符号数,输入到ROM的地址
输出描述:
data:4bit位宽的无符号数,从ROM中读出的数据文章来源地址https://www.toymoban.com/news/detail-473992.html
二、解析与代码
`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] <= rom[0];
rom[1] <= rom[1];
rom[2] <= rom[2];
rom[3] <= rom[3];
rom[4] <= rom[4];
rom[5] <= rom[5];
rom[6] <= rom[6];
rom[7] <= rom[7];
end
end
assign data = rom[addr];
endmodule
到了这里,关于Verilog快速入门(17)—— ROM的简单实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!