组合逻辑 ROM 表
本课属于 Coddy Verilog 学习旅程的“RTL 设计与验证”单元。第 21 课,共 38 课。
固定查找表描述了从地址到数据的只读映射。完整的 case 或 function 可以表示其内容。使用组合读时,地址变化会直接改变输出,无需等待时钟。综合工具会选择一种实现方式;这段源代码并不保证使用特定的 FPGA 存储器原语。
相关代码片段;周边的声明和连接已在挑战中提供。
function [7:0] lookup;
input [1:0] addr;
begin
case(addr)
0: lookup=3;
1: lookup=5;
2: lookup=8;
3: lookup=13;
default: lookup=0;
endcase
end
endfunction每个地址都会选中一个已定义的常量,不会保留之前的输出。
指定表中的每个条目,并区分组合查找与寄存读取延迟。挑战
中等实现一个组合逻辑八项查找表。地址 0 到 7 分别返回 3、5、8、13、21、34、55、89。使用完整的基于 case 的 function 来驱动 y。输出列:y。所有激励值都是已知的二进制值。
完成 design.v,并保留其模块名称和端口。锁定的 testbench.v 会提供输入变化,并在输出稳定后打印结果。它使用模拟器参数(例如 +CASE=1)选择场景;不需要标准输入。不要在设计中添加打印语句、延迟或仿真终止操作。预期输出是每次观测对应一行十进制值,值之间以一个空格分隔,行尾以换行符结束。
亲手试试
module dut (input [2:0] addr, output [7:0] y);
// 用你的设计替换此占位内容。
assign y = 0;
endmodule这节课包含一个小测验。开始学习即可作答,并记录你的进度。
RTL 设计与验证中的所有课
自己练习: Verilog 在线编译器