|
这是一个可综合的数据比较器,很容易看出它的功能是比较数据a与数据b,如果两个数据相同,则给出结果1,否则给出结果0。在Verilog HDL中,描述组合逻辑时常使用assign结构。注意equal=(a==b)?1:0,这是一种在组合逻辑实现分支判断时常使用的格式。
模块源代码:- //--------------- compare.v -----------------
- module compare(equal,a,b);
- input a,b;
- output equal;
- assign equal=(a==b)?1:0; //a等于b时,equal输出为1;a不等于b时,
- //equal输出为0。
- endmodule
复制代码 测试模块用于检测模块设计得正确与否,它给出模块的输入信号,观察模块的内部信号和输出信号,如果发现结果与预期的有所偏差,则要对设计模块进行修改。
测试模块源代码:- `timescale 1ns/1ns //定义时间单位。
- `include "./compare.v" //包含模块文件。在有的仿真调试环境中并不需要此语句。
- //而需要从调试环境的菜单中键入有关模块文件的路径和名称
- module comparetest;
- reg a,b;
- wire equal;
- initial //initial常用于仿真时信号的给出。
- begin
- a=0;
- b=0;
- #100 a=0; b=1;
- #100 a=1; b=1;
- #100 a=1; b=0;
- #100 $stop; //系统任务,暂停仿真以便观察仿真波形。
- end
- compare compare1(.equal(equal),.a(a),.b(b)); //调用模块。
- endmodule
复制代码 |
|