1
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
全部0条评论
快来发表一下你的评论吧 !