1. 문제 및 설명
- 4자리 BCD 카운터를 설계하시오.
- 상위 세 자리에 대해서, 각 자릿수가 증가되어야 할 시점을 나타내는 Enable신호도 함께 출력하시오.
2. 모듈 정의
module top_module (
input clk,
input reset, // Synchronous active-high reset
output [3:1] ena,
output [15:0] q);
3. 답
module top_module (
input clk,
input reset, // Synchronous active-high reset
output [3:1] ena,
output [15:0] q);
wire [3:0] upper;
assign ena[1] = (q[3:0] == 4'd9);
assign ena[2] = ena[1]&(q[7:4] == 4'd9);
assign ena[3] = ena[1]&ena[2]&(q[11:8] == 4'd9);
BCD_Counter i0 [3:0] (clk, reset, {ena[3:1], 1'b1}, q);
endmodule
module BCD_Counter(
input clk,
input reset,
input ena,
output reg [3:0] q
);
always @(posedge clk)
begin
if (reset || (q == 9&ena)) // Count to 10 requires rolling over 9->0 instead of the more natural 15->0
begin
q <= 0;
end
else if(ena)
begin
q <= q+1'b1;
end
else
q <= q;
end
endmodule'Verilog > HDLbits' 카테고리의 다른 글
| [HDLBits] Shift4 (0) | 2026.01.14 |
|---|---|
| [HDLBits] Count clock (0) | 2026.01.14 |
| [HDLBits] Exams/ece241 2014 q7b (0) | 2026.01.14 |
| [HDLBits] Exams/ece241 2014 q7a (0) | 2026.01.06 |
| [HDLBits] Countslow (0) | 2026.01.05 |