首页 > 其他分享 >【HDLBits刷题笔记】15 Finding bugs in code

【HDLBits刷题笔记】15 Finding bugs in code

时间:2022-11-07 18:56:26浏览次数:83  
标签:code 15 HDLBits module endmodule output input sel out

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

 

标签:code,15,HDLBits,module,endmodule,output,input,sel,out
From: https://www.cnblogs.com/magnolia666/p/16867017.html

相关文章

  • LeetCode40. 组合总和 II
    题意给一个数组和target,找出数组中所有和为target的组合方法DFS代码classSolution{private:vector<vector<int>>res;vector<int>tmp;public:......
  • 使用 vscode 编译+运行 typescropt Mac win同理
    一、.d.ts文件最好在src/typings目录下,可在tsconfig.json文件配置二、vs监听文件变化,自动编译ts文件tsconfig.json{"compilerOptions":{"target":"es5"......
  • 【VScode】画出逻辑清晰的UML
    背景无论是作为程序员还是产品经理,都不可避免的需要输出逻辑清晰的UML【时序图/活动图(流程图)/状态图等等】,从而清晰的表达展示自己内心想法。但多数情况,大部分人面对复杂......
  • code
    点击查看代码//ZhangKaitai2100012922#include<stdio.h>#include"cachelab.h"#include<stdlib.h>#include<unistd.h>#include<getopt.h>#include<string.h......
  • sql中decode函数用法
    decode(字段或字段的运算,值1,值2,值3)      这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3 当然值1,值2,值3也可以是表达式,这个函数......
  • CodeTON Round 3 (Div. 1 + Div. 2, Rated, Prizes!)
    我要死给普,给我死给普A记得好像开场不会来着。就只要判断\(a_1\)是否为\(1\)就行了。正确性显然。B分讨两种情况,一种是所有的01都算上,另一种是取全0或全1段,......
  • Codeforces Subsequences
    题目:KarllikesCodeforcesandsubsequences.HewantstofindastringoflowercaseEnglishlettersthatcontainsatleastksubsequencescodeforces.Outofall......
  • encodeuricomponent有什么用?
    encodeuricomponent有什么用? 1、encodeuricomponent可把字符串作为URI组件进行编码。该方法不会对ASCII字母和数字进行编码,也不会对这些ASCII标点符号进行编码......
  • CodeTON Round 3 (C.差分维护,D.容斥原理)
    C.ComplementaryXOR题目大意:给你两个01串ab,问你是否可以通过一下两种操作在不超过n+5次的前提下将两个串都变为0,同时需要输出可以的操作方案选择一个区间[l,r]将......
  • VSCode使用笔记
    官网下载下载慢解决方式点击下载获取下载地址这个时候直接复制vscode.cdn.azure.cn替换地址上面的下载......