组合逻辑函数
本课属于 Coddy Verilog 学习旅程的“RTL 设计与验证”单元。第 11 课,共 38 课。
Verilog function 将零时间计算封装起来,供模块内重复使用。声明返回值的位宽、输入参数和局部变量,然后将结果 assign 给 function 名称。组合函数不包含延迟或事件控制;有固定边界的循环可以描述重复逻辑。
相关摘录;挑战中提供了周围的声明和连接。
function [7:0] gray;
input [7:0] value;
begin gray = value ^ (value >> 1); end
endfunction调用function会计算一个表达式,而不会增加仿真时间。
在每条路径上都为 function 结果赋值,并确保组合函数中不包含时序控制。
挑战
中等实现一个 Verilog function gray,将无符号 8 位二进制值转换为格雷码,方法是将 value 与右移一位后的 value 进行异或。调用 function,并传入 a,以驱动 y。输出列:y。所有激励值都是已知的二进制值。
完成 design.v,并保留其模块名称和端口。已锁定的 testbench.v 会提供输入变化,并在信号稳定后打印输出。它使用模拟器参数(例如 +CASE=1)选择场景;不需要标准输入。不要在设计中添加打印、延迟或仿真终止操作。预期输出是每次观测对应一行十进制值,值之间用一个空格分隔,末尾带换行符。
亲手试试
module dut (input [7:0] a, output [7:0] y);
// 用你的设计替换这里的占位内容。
assign y = 0;
endmodule这节课包含一个小测验。开始学习即可作答,并记录你的进度。
RTL 设计与验证中的所有课
自己练习: Verilog 在线编译器