Verilog数据流建模编写NAND、NOR门报错,XOR、XNOR正常如何解决
问题原因
- Verilog 语法中仅对异或非门提供了二元运算符
~^/^~,没有定义二元按位与非~&、二元按位或非~|运算符,你写的A~&B、A~|B属于非法语法,所以编译器会报语法错误。 ~&、~|在Verilog中是一元缩减运算符,仅能作用于单个向量,用来对向量的所有位做缩减与非、缩减或非运算,不能放在两个操作数之间使用。
修正方案
将NAND、NOR门的赋值语句改为先做与/或运算,再整体取反的写法即可,注意必须加括号保证运算顺序正确(按位非~优先级高于&、|,不加括号会出现逻辑错误):
assign nandd = ~(A & B); assign norr = ~(A | B);
完整修正后代码
module basic_gates_bitwise_df( input A, input B, output andd,orr,nota,nandd,norr,xorr,xnorr ); assign andd = A & B; assign orr = A | B; assign nota = ~A; assign nandd = ~(A & B); assign norr = ~(A | B); assign xorr = A ^ B; assign xnorr = A ~^ B; endmodule
内容的提问来源于stack exchange,提问作者vishnu lal
相关产品推荐
相关产品推荐

