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

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

时间:2022-11-08 12:24:28浏览次数:35  
标签:code 15 HDLBits top 16 module output input Sim

Sim/circuit1

从波形不难看出ab是相与的关系。

module top_module (
    input a,
    input b,
    output q );//

    assign q = a&b; // Fix me

endmodule

Sim/circuit2

 

 根据波形图可以画出卡诺图并且之前有写过这个卡诺图的逻辑表达式,不难看出相邻逻辑输出会取反,所以这个是一个四变量的异或,0000输出为1,所以还要再取反。

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

    assign q = ~(a^b^c^d); // Fix me

endmodule

Sim/circuit3

继续画卡诺图

 

 

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

    assign q = (b&d)||(a&d)||(b&c)||(a&c); // Fix me

endmodule

Sim/circuit4

还是画卡诺图,把四个0的位置确定好就行。

 

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

    assign q = b|c; // Fix me

endmodule

Sim/circuit5

显然这是一个数据选择器,c的0123分别选择bead,c为别的值的时候输出值为f。

module top_module (
    input [3:0] a,
    input [3:0] b,
    input [3:0] c,
    input [3:0] d,
    input [3:0] e,
    output [3:0] q );
    
    always@(*)
    begin
           q=4'hf;
        case(c)
            0:q=b;
            1:q=e;
            2:q=a;
            3:q=d;
        endcase
    end

endmodule

Sim/circuit6

暴力强解。

module top_module (
    input [2:0] a,
    output [15:0] q ); 

    always@(*)
    begin
        case(a)
            0:q=16'h1232;
            1:q=16'haee0;
            2:q=16'h27d4;
            3:q=16'h5a0e;
            4:q=16'h2066;
            5:q=16'h64ce;
            6:q=16'hc526;
            7:q=16'h2f19;
            default:q=0;
        endcase
    end
    
endmodule

Sim/circuit7

由图中不难看出来q是对a的取反,采取时序逻辑恰好延后了一个周期。

module top_module (
    input clk,
    input a,
    output reg q );

    always@(posedge clk)
    begin
        q <= ~a;
    end
    
endmodule

Sim/circuit8

从波形图不难看出p在clock高电平时改变,低电平锁存,所以是一个锁存器。q在时钟下降沿发生变化,是一个下降沿触发的触发器。

module top_module (
    input clock,
    input a,
    output reg p,
    output reg q );
    
    always@(*)
    begin
        if(clock)
            p = a;
    end
    
    always@(negedge clock)
    begin
        q <= a;
    end

endmodule

Sim/circuit9

该电路在a为低电平时计数,高电平置为4,并且计数最多到6就清零。

module top_module (
    input clk,
    input a,
    output [3:0] q );

    always@(posedge clk)
    begin
        if(~a)
            q <= (q<6)?(q+1):0;
        else
            q <= 4;
    end
        
endmodule

Sim/circuit10

仔细看波形图,状态在ab同为1跳转为1,ab同为0跳转为0。

分别观察两个状态的逻辑,发现恰好一个是异或一个异或非。

module top_module (
    input clk,
    input a,
    input b,
    output q,
    output reg state  );
    
    parameter A=0,B=1;
    reg next_state;
    
    always@(posedge clk)
    begin
        state <= next_state;
    end
    
    always@(*)
    begin
        if(a&b)
            next_state <= B;
        else if(~(a|b))
            next_state <= A;
    end
    assign q=state?~(a^b):(a^b);

endmodule

 

标签:code,15,HDLBits,top,16,module,output,input,Sim
From: https://www.cnblogs.com/magnolia666/p/16869258.html

相关文章

  • [LeetCode] 1544. Make The String Great
    Givenastring s ofloweranduppercaseEnglishletters.Agoodstringisastringwhichdoesn'thave twoadjacentcharacters s[i] and s[i+1] where:......
  • iOS15.6以后UITableview设置UITableViewStyleGrouped底部会多出一段空白
    在适配iPhone14的过程中,发现之前没问题的UITableview底部会多出一截,查看低版本系统手机正常显示,iOS15.6的iPhone11也有同样的问题。继iOS11以后UITableview多出空白又有新......
  • Atcoder Beginner Contest 276(A~G)
    赛时A简单字符串处理;B简单vector处理;C找上一个排列。D找到每一个数因子\(2\)的个数和\(3\)的个数,并判断除去这些因子之后剩下的值是否相同,若不同则不能满足条......
  • android-code-getip
    publicStringgetIP(){try{for(Enumeration<NetworkInterface>en=NetworkInterface.getNetworkInterfaces();en.hasMoreElements();){......
  • android-code-saveLog
    一个工具类。第一个用来将logcat保存到文件,第二个用来获得logcat字符串。publicclassLogcat{publicfinalstaticStringTAG="VLC/Util/Logcat";/***Wr......
  • android-code-调整音量
    这是不弹出界面的方式:/***@paramvalue*0-15*/publicvoiddealCMDSound(intvalue){AudioManagermAudioManager=(AudioManager)getSy......
  • vscode常用配置的json文件
    {"editor.parameterHints":true,"editor.quickSuggestions":{"other":true,"comments":true,"strings":true},"wind......
  • 小程序开发vscode常用插件
    wechat-snippet微信小程序代码辅助,代码片段自动完成minapp微信小程序标签、属性的智能补全(同时支持原生小程序、mpvue和wepy框架,并提供snippets)wxapp-helper微信......
  • vscode常用配置
    {"editor.quickSuggestions":{"other":true,"comments":true,"strings":true},"editor.fontSize":16,"editor.wordWrap":"off",//永不......
  • leetcode 35. 搜索插入位置 js 实现
    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(logn) 的算法。......