第1个回答 2019-06-14
//这是39进制计数器,可进行加减操作,为0时减操作输出38,为38是加操作输出0.你改一下就成9进制了
module
counter_39{
add,
dec,
counter
};
input
add;
//为1时加操作
input
dec;
//为1时减操作
output
[5:0]
counter;
reg
[5:0]
counter;
always
@(add
and
dec)
begin
if(add
&&
!dec)
begin
if(counter
==
6'd38)
begin
counter
<=
6'd0;
end
else
begin
counter
<=
counter
+
1'b1;
end
end
if(!add
and
dec)
begin
if(counter
==
6'd0)
begin
counter
<=
6'd38;
end
else
begin
counter
<=
counter
-
1'b1;
end
end
end
endmodule
第2个回答 2019-01-14
module
CNT10
(CLK,
RST,
EN,
CQ,
COUT);
input
CLK,RST,EN;
output[3:0]
CQ;
output
COUT;
reg[3:0]
CQ,CQI;
reg
COUT;
always
@(posedge
CLK)//检测时钟上升沿
begin
:
u1
if
(RST
==
1'b1)//计数器复位
begin
CQI={4{1'b0}};
end
begin
if(EN==1'b1)//检测是否允许计数
begin
if
(CQI<9)
begin
CQI=CQI+1;
//允许计数
end
else
begin
CQI={4{1'b0}};
//大于9,计数值清零
end
end
end
if
(CQI==9)
begin
COUT<=1'b1
;
//计数大于9,输出进位信号
end
else
begin
COUT<=1'b0
;
end
CQ<=CQI
;
//将计数值向端口输出
end
endmodule