3.2.2 Counters
3.2.2.1 Count15
创建一个计数器,当同步复位信号reset
置1
时,清零
module top_module (
input clk,
input reset, // Synchronous active-high reset
output [3:0] q);
always @ (posedge clk) begin
if(reset) begin
q <= 4'd0;
end
else begin
if(q == 4'd15) begin
q <= 4'd0;
end
else begin
q <= q + 1'b1;
end
end
end
endmodule
3.2.2.2 Decade counter
模10计数器
module top_module (
input clk,
input reset, // Synchronous active-high reset
output [3:0] q);
always @ (posedge clk) begin
if(reset) begin
q <= 4'd0;
end
else begin
if(q == 4'd9) begin
q <= 4'd0;
end
else begin
q <= q + 1;
end
end
end
endmodule
3.2.2.3 Decade counter again
从1-10计数
module top_module (
input clk,
input reset,
output [3:0] q);
always @ (posedge clk) begin
if(reset) begin
q <= 4'd1;
end
else begin
if(q == 4'd10) begin
q <= 4'd1;
end
else begin
q <= q + 1;
end
end
end
endmodule
3.2.2.3 Slow decade counter
带使能端和复位端的模10计数器
module top_module (
input clk,
input slowena,
input reset,
output [3:0] q);
always @ (posedge clk) begin
if(reset) begin
q <= 4'd0;
end
else begin
if(slowena) begin
if(q == 4'd9) begin
q <= 4'd0;
end
else begin
q <= q + 1;
end
end
else begin
q <= q;
end
end
end
endmodule
3.2.2.4 Counter1-12
根据以下输入输出信号设计一个计算1~12的计数器
Reset:同步复位信号,高复位,将计数器复位为1.
Enable:使能信号高有效
Clk:时钟上升沿触发计数器工作
Q[3:0]:计数器输出
c_enable, c_load, c_d[3:0]:题目中给我们提供了一个4-bit的计数器,这三个信号是用于该4-bit计数器的控制信号。
题目提供给我们4-bit计数器
有enable信号,带复位和置位的计数器,将该计数器例化至我们的代码中。
再用一些其他的逻辑门来完成本题
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'd12 && enable == 1'b1);
assign c_d = c_load ? 4'd1 : 4'd0;
count4 the_counter (.clk(clk), .enable(c_enable), .load(c_load), .d(c_d), .Q(Q)/*, ... */ );
endmodule
这个我没看懂,从网上找的代码