欢迎光临散文网 会员登陆 & 注册

HDLBits (8) — 异或非门

2021-09-10 01:22 作者:僚机Wingplane  | 我要投稿

本题链接:

https://hdlbits.01xz.net/wiki/Xnorgate

创建一个能够实现 XNOR 门的模块。

预期的解决方案长度:大约 1 行。

模块声明:

module top_module( 
    input a, 
    input b, 
    output out );

提示

按位异或运算符是 ^。没有逻辑异或运算符。

题目

module top_module( 
    input a, 
    input b, 
    output out );

endmodule

答案

module top_module( 
    input a, 
    input b, 
    output out );
    assign out = ~(a ^ b);
endmodule
module top_module( 
    input a, 
    input b, 
    output out );
    assign out = ~(~a + ~b);
endmodule

输出波形

Verilog 中提供了大约 9 种操作符,分别是算术、关系、等价、逻辑、按位、归约、移位、拼接、条件操作符。

大部分操作符与 C 语言中类似。同类型操作符之间,除条件操作符从右往左关联,其余操作符都是自左向右关联。圆括号内表达式优先执行。

不同操作符之间,优先级是不同的。其中单目运算( + - ~ ! )优先度最高,按位 ^  优先度为第8(倒数第5)。当没有圆括号时,Verilog 会根据操作符优先级对表达式进行计算。为了避免由操作符优先级导致的计算混乱,在不确定优先级时,建议用圆括号将表达式区分开来。

在本题中,使用了异或运算符,异或运算符是按位运算符,没有逻辑异或的说法。

按位操作符对 2 个操作数的每 1bit 数据进行按位操作。

如果 2 个操作数位宽不相等,则用 0 向左扩展补充较短的操作数。

参考内容:

2.4 Verilog 表达式 | 菜鸟教程:https://www.runoob.com/w3cnote/verilog-expression.html


HDLBits (8) — 异或非门的评论 (共 条)

分享到微博请遵守国家法律