Menu
CoddyTech

回顾:双读端口存储体

本课属于 Coddy Verilog 学习旅程的“RTL 设计与验证”单元。第 25 课,共 38 课。

challenge icon

挑战

中等

实现 4 个 8 位字,具有一个时钟控制的写入端口,以及两个寄存器保存的旧数据读取输出 qa 和 qb。we 在 waddr 处写入。同步 rst 只清除 qa 和 qb。否则,re 会启用从 raddr_a 和 raddr_b 进行的读取;读取未启用时,输出保持不变。同一时钟沿上的写入不会改变这些读取所捕获的旧值。测试会在读取前初始化各个字。输出列:qa、qb。所有控制信号和数据在每个时钟上升沿之前都保持稳定;之后观察结果。

完成 design.v,并保留其模块名称和端口。已锁定的 testbench.v 会提供输入变化,并在输出稳定后打印输出。它使用模拟器参数(例如 +CASE=1)选择场景;不需要标准输入。不要在设计中添加打印、延迟或仿真终止代码。预期输出是每次观察对应一行十进制值,值之间用一个空格分隔,并以换行符结尾。

亲手试试

module dut (input clk, input rst, input we, input re, input [1:0] waddr, input [1:0] raddr_a, input [1:0] raddr_b, input [7:0] data, output reg [7:0] qa, output reg [7:0] qb);
    // 用你的设计替换这里的占位内容。
    initial qa = 0;
    initial qb = 0;
endmodule

RTL 设计与验证中的所有课

自己练习: Verilog 在线编译器