ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

verilog HDLBits刷题[Finding bugs in code]“Bugs addsubz”---Add/sub

verilog HDLBits刷题[Finding bugs in code]“Bugs addsubz”---Add/sub 1、题目The following adder-subtractor with zero flag doesnt work. Fix the bug(s).2、分析本题想要实现一个有0标志位的加减法计数器输出out为0的时候result_is_zero11~out表示按位取反得到的还是8bit位宽if条件判断的必须是1bit位宽故可以~out对按位取反得到的8bit位宽数据进行按位与得到1bit位宽但是可读性较差可以直接out8’d02if条件语句中只有 result_is_zero 1b1;会存在锁存器 Latch 隐患需要加上else其它情况的result_is_zero的值3、代码// synthesis verilog_input_version verilog_2001 module top_module ( input do_sub, input [7:0] a, input [7:0] b, output reg[7:0] out, output reg result_is_zero );// always (*) begin case (do_sub) 0: out ab; 1: out a-b; endcase if ((~out)) result_is_zero 1b1; else result_is_zero 1b0; end endmodule 或者 // synthesis verilog_input_version verilog_2001 module top_module ( input do_sub, input [7:0] a, input [7:0] b, output reg[7:0] out, output reg result_is_zero );// always (*) begin case (do_sub) 0: out ab; 1: out a-b; endcase if (out8d0) result_is_zero 1b1; else result_is_zero 1b0; end endmodule4、结果
返回列表