- 理解4bit-counter输入输出的关系
- 学习如何调用已有模块实现要求逻辑
问题分析:
1、count4输入输出分析
module count4(
input clk, //沿触发计数
input enable, //高电平有效才开始计数
input load, //置位使能信号,高电平有效
input [3:0] d, //load有效时将d作为预设值
output reg [3:0] Q
);
2、count4例化和顶层的关系
module count4(
input clk,
input enable,
input load,
input [3:0] d,
output reg [3:0] Q
);
module top_module (
input clk, //clk共用
input reset, //reset高电平有效,实现置位,
input enable, //enable共用
output [3:0] Q, //共同输出
output c_enable, //c_enable=enable
output c_load, //c_load=reset| (Q==4'b1100) 还需要考虑一下enable的优先级(一般reset优先级更高)
//复位信号有效或者已经计数到12了,在下一个时钟上升沿来的时候置位信号有效
output [3:0] c_d //置位信号有效时,c_d置为1
);
参考解决方式
//My solution
module top_module (
input clk,
input reset,
input enable,
output [3:0] Q,
output c_enable,
output c_load,
output [3:0] c_d
); //
assign c_enable=enable;
assign c_load = reset|((Q==4'b1100)&enable);
assign c_d = 4'b0001;
count4 the_counter (.clk(clk),.enable(c_enable),.load(c_load), .d(c_d) ,.Q(Q));
endmodule