Menu
CoddyTech

组合逻辑 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

每个地址都会选中一个已定义的常量,不会保留之前的输出。

指定表中的每个条目,并区分组合查找与寄存读取延迟。
challenge icon

挑战

中等

实现一个组合逻辑八项查找表。地址 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
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

RTL 设计与验证中的所有课

自己练习: Verilog 在线编译器