使用以下输入和输出设计1-12计数器:
复位同步高电平有效复位,强制计数器为1使能设置为高电平计数器运行Clk正边沿触发时钟输入Q [3:0]计数器输出c_enable,c_load,c_d [3:0]控制信号转到提供的4位计数器,因此可以验证正确的操作。您有以下组件可用:
下面的4位二进制计数器(count4),具有启用和同步并行负载输入(负载具有比启用更高的优先级)。 count4模块是为您提供的。在你的电路中实例化它。逻辑门
module count4(
input clk,
input enable,
input load,
input [3:0] d,
output reg [3:0] Q
);
/here begin to code:
module top_module (
input clk,
input reset,
input enable,
output [3:0] Q,
output c_enable,
output c_load,
output [3:0] c_d
);
count4 the_counter (clk, c_enable, c_load, c_d /*, ... */ );
endmodule
/here finish code
问题是在网站上(https://hdlbits.01xz.net/wiki/Exams/ece241_2014_q7a),I试图解决它但遗憾地失败了,所以你能给我一个正确的答案并告诉我原因,非常感谢!
这是我失败的代码:
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_d = 4'd1;
assign c_load = (reset||(Q==4'd12)) ? 1 : 0;
count4 the_counter (clk, c_enable, c_load, c_d, Q );
endmodule
我注意到了一个差异。我不知道你复制文本是否有错,或者错误是在原始作业中:
信号c_d
是测试平台(top_module)中的输出,但是输入到count4模块。这意味着在上面的代码中没有人在驱动信号。
提问时请更准确。 “结果是错误的”也没有帮助。最好是在文字中描述“我应该在时间B看A,但在时间C,D出来”。在这种情况下,我还会并排显示波形。