HDLBits刷题笔记——Exams/ece241 2014 q7a(Counter1-12)

难点:题目的理解

 

这道题有点绕,关键在于count4的同步负载输入,我的理解是这样的:

module count4(
	input clk,
	input enable,
	input load,
	input [3:0] d,
	output reg [3:0] Q
);

题目说同步并行负载输入的优先级高于enable,意思就是当load高电平时,输出Q=d,也可以把load信号理解为(Q=d)的使能信号。

理解了所给的计数器模块后,再来分析这道题:

计数器count4内部逻辑是不需要我们负责的,答案代码中只需要我们判断并给出count4的输入信号的状态即可,最后将cout4例化,即可完成。

答案:

module top_module (
    input clk,
    input reset,
    input enable,
    output [3:0] Q,
    output c_enable,
    output c_load,
    output [3:0] c_d
); //
    //这部分只是用于判断同步负载信号,而计数器内部的逻辑判断是不需要我们写的
  	always@(*)
        begin
            if(reset)
                begin
                    c_load <= 1'b1;//可以这样理解:c_load是c_d(同步并行负载输入的使能信号
                    c_d	<= 4'd1;
                end
            else
                begin
                    c_load <= 1'b0;
					c_d <= 4'd0;
                    if((enable == 1'b1) && (Q == 4'd12))
       			 		begin
                     		c_load <= 1'b1;
                     		c_d <= 4'd1;
                		 end
                end
        end
    assign	c_enable = enable;
    	
    count4	count4_inst(
        .clk	(clk)	,
        .enable	(enable)	,
        .load	(c_load)	,
        .d		(c_d)	,
        .Q		(Q)
    );

endmodule

你可能感兴趣的:(HDLBits刷题笔记,笔记)