设为首页 加入收藏

TOP

【HDLBits刷题笔记】15 Finding bugs in code
2023-07-23 13:25:58 】 浏览:144
Tags:HDLBits Finding bugs code

Bugs mux2

原本代码的逻辑是反的,这不是坑人吗。

module top_module (
    input sel,
    input [7:0] a,
    input [7:0] b,
    output [7:0]out  );

    assign out = ({8{sel}} & a) | ({8{~sel}} & b);

endmodule

Bugs nand3

五输入的与门现在要实现三输入的与非门,多余的门可以输入1并将输出取反。

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

    wire out_n;
    andgate inst1 ( out_n,a, b, c, 1'b1,1'b1 );
    assign out = ~out_n;

endmodule

Bugs mux4

bug1:mux0和mux1的位宽没设置,默认是1;

bug2:选通引脚有问题,应该先通过mux[0]判断是ac还是bd,再通过mux[1]进行判断。

module top_module (
    input [1:0] sel,
    input [7:0] a,
    input [7:0] b,
    input [7:0] c,
    input [7:0] d,
    output [7:0] out  ); //

    wire [7:0]mux0, mux1;
    mux2 u_mux0 ( sel[0],    a,    b, mux0 );
    mux2 u_mux1 ( sel[0],    c,    d, mux1 );
    mux2 u_mux2 ( sel[1], mux0, mux1,  out );

endmodule

Bugs addsubz

verilog中~是按位取反,!是逻辑取反。

同时需要补充out不为0的情况,否则输出会默认保持,综合出latch。

// 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 = a+b;
          1: out = a-b;
        endcase

        if (!out)
            result_is_zero = 1;
        else
            result_is_zero = 0;
    end

endmodule

Bugs case

这道题比较考验眼力,一个是d要改成h,还有一个是6位改成8位。晕。

还有就是先给两个输出赋默认值,就不会综合出latch了,而且代码也更加简洁。

module top_module (
    input [7:0] code,
    output reg [3:0] out,
    output reg valid );//

     always @(*)
     begin
         out = 0;
         valid = 1'b1;
         case (code)
             8'h45: out = 0;
             8'h16: out = 1;
             8'h1e: out = 2;
             8'h26: out = 3;
             8'h25: out = 4;
             8'h2e: out = 5;
             8'h36: out = 6;
             8'h3d: out = 7;
             8'h3e: out = 8;
             8'h46: out = 9;
             default: valid = 0;
         endcase
     end

endmodule

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【HDLBits刷题笔记】16 Buid a ci.. 下一篇用状态机实现串口多字节数据发送

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目