1 根据波形图编写Verilog代码-德赢Vwin官网 网

根据波形图编写Verilog代码

描述

1【题目】:

        根据下面的时序图实现这个组合逻辑电路。

组合逻辑电路

【个人思路】:

        从上面的q输出为1处,可以看到a、b均为1,所以逻辑是 a & b.

 

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

    assign q = a & b; // Fix me

endmodule

 

 2【题目】:

        根据下面的时序图实现这个组合逻辑电路。

组合逻辑电路

【个人思路】:

        这个时序图稍微复杂点,最好是列出卡诺图,如下:

组合逻辑电路

红色部分的四个数据,可以看出来是 ( a同或b ) 与上 ( c同或d );

蓝色部分的四个数据,可以看出来是 ( a异或b ) 与上 ( c异或d );

红色+蓝色 = ( a异或b ) 同或( c异或d ) =~a^b^c^d;

 

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

    //assign q = 1-a^b^c^d;
    assign q = ~a^b^c^d;
endmodule

 

3【题目】:

        根据下面的时序图实现这个组合逻辑电路。

组合逻辑电路

 【个人思路】:

          这个时序图稍微复杂点,最好是列出卡诺图,如下:

组合逻辑电路

像我这样框起来:红色:b | d;黄色:b | c;黑色:a | d;绿色:a | c;

 

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

assign q = b & d | b & c | a & d | a & c;

endmodule

 

 4【题目】:

        根据下面的时序图实现这个组合逻辑电路。

组合逻辑电路

 【个人思路】:

          这个时序图稍微复杂点,最好是列出卡诺图,如下:

组合逻辑电路

 红色:c;绿色:b;所以化简为 b | c。

 

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

    assign q = b | c; // Fix me

endmodule

 

 5【题目】:

        根据下面的时序图实现这个组合逻辑电路。

组合逻辑电路

组合逻辑电路

【个人思路】 :

        可以看出这是一个4输入、1输出的组合电路,且输出是根据c的取值来的,所以这个是个4选1电路(MUX4),所以可以用case语句来根据c的取值来进行输出。

 

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
        case(c)
            4'd0:q = b;
        4'd1:q = e;
            4'd2:q = a;
        4'd3:q = d;
         default:   q = 4'hf;
        endcase
    end
endmodule

 

 6【题目】:

        根据下面的时序图实现这个组合逻辑电路。

组合逻辑电路

【个人思路】 :

        可以看出这是一个根据输入a的取值来进行输出的组合电路,可以用case语句来根据a的取值来进行输出。

 

module top_module (
    input [2:0] a,
    output [15:0] q );
    
    always@(*)begin
        case(a)
            3'd0:q = 16'h1232;
        3'd1:q = 16'haee0;
            3'd2:q = 16'h27d4;
        3'd3:q = 16'h5a0e;
        3'd4:q = 16'h2066;
        3'd5:q = 16'h64ce;
        3'd6:q = 16'hc526;
        3'd7:q = 16'h2f19;
         default:;
        endcase
    end
    
endmodule

 

 7【题目】:

        根据下面的时序图实现这个时序逻辑电路。

 组合逻辑电路

【个人思路】 :

        可以看出输出q是输入a的取反,因为是时序逻辑,所以输出落后输入一个时钟周期。

 

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

    always@(posedge clk)begin
        if(a)
            q <= 1'b0;
        else
            q <= 1'b1;
    end
endmodule

 

 8【题目】:

        根据下面的时序图实现这个时序逻辑电路。

 组合逻辑电路

【个人思路】 :

        由图可见,p为a在clock为高电平时的选通信号,q为clock下降沿触发的信号,存放p的值。

 

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

 

 9【题目】:

        根据下面的时序图实现这个时序逻辑电路。

组合逻辑电路

【个人思路】 :

        可以看出这是一个~a使能的0~6计数器,a高电平时计数器复位到4.

 

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

always@(posedge clk)begin
        if(~a)begin
            if(q == 4'd6) 
            q <= 4'd0;
            else
                q <= q + 1'b1;
        end
        else
            q <= 4'd4;
    end
endmodule

 

10【题目】:

        根据下面的时序图实现这个电路,该电路包含组合逻辑和D触发器。

组合逻辑电路

【个人思路】 :

        可以看到当输出q为高电平时,a、b、state三个中总是有奇数个高电平,所以q是a、b、state三个的偶校验位:q = a ^ b ^ state;

        再来观察state的变化,state的变化都发生在(a == b)时,且变化的值为a(或者说b),当a不等于b时,state保持不变。

 

module top_module (
    input clk,
    input a,
    input b,
    output q,
    output state  );

    assign q = a ^ b ^ state;
    
    always @(posedge clk)begin
        if(a == b)
        state <= a;
        else
            state <= state;
    end
endmodule

 

转载:https://gitcode.csdn.net/662b4d5f9ab37021bfb1a3f8.html

 

      

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分