状态机任意编码计数器

用状态机设计任意编码计数器,实现如下编码 7 进制计数器: 0 2 5 3 4 6 1 , 并通过数码管显示。

div模块:

module div(clk,divi_clk1);
input clk;
output reg divi_clk1;
reg [31:0] count_reg;
always@(posedge clk)
begin
if(count_reg==32'd24999999)
begin
divi_clk1<=~divi_clk1;
count_reg<=32'd0;
end
else
begin
count_reg<=count_reg+32'd1;
end
end
endmodule
fsm7模块:

module fsm7(clk,rst,cq);
input clk,rst;
output reg [3:0]cq;
parameter [2:0]s1=3'b000,s2=3'b010,s3=3'b101,s4=3'b011,s5=3'b100,s6=3'b110,s7=3'b001;
reg [2:0]current,next;
always@(posedge clk or negedge rst)
begin 
if(!rst)
current<=s1;
else current<=next;
end
always@(current)
begin 
case(current)
s1:begin
     cq<=s1;
     next<=s2;
     end
s2:begin
     cq<=s2;
     next<=s3;
     end
s3:begin
     cq<=s3;
     next<=s4;
     end
s4:begin
     cq<=s4;
     next<=s5;
     end
s5:begin
     cq<=s5;
     next<=s6;
     end 
s6:begin
     cq<=s6;
     next<=s7;
     end 
s7:begin
     cq<=s7;
     next<=s1;
     end 
default:begin
      cq<=s1;
      next<=s1;
      end
      endcase
end
endmodule 

seg模块:

module seg(d_in,a,b,c,d,e,f,g,dp,ds);
input[3:0] d_in;
output ds;
output a,b,c,d,e,f,g,dp;
reg [7:0] seg; //g,f,e,d,c,b,a,dp 
assign ds =0;
assign dp=seg[0];
assign a=seg[1];
assign b=seg[2];
assign c=seg[3];
assign d=seg[4];
assign e=seg[5];
assign f=seg[6];
assign g=seg[7];
always @(d_in)
     case(d_in)
     4'b0000: seg = 8'b01111110; //g,f,e,d,c,b,a,dp
     4'b0001: seg = 8'b00001100;
     4'b0010: seg = 8'b10110110;
     4'b0011: seg = 8'b10011110;
     4'b0100: seg = 8'b11001100;
     4'b0101: seg = 8'b11011010;
     4'b0110: seg = 8'b11111010;
     4'b0111: seg = 8'b00001110;
     4'b1000: seg = 8'b11111110;
     4'b1001: seg = 8'b11011110;
     4'b1010: seg = 8'b11101110;
     4'b1011: seg = 8'b11111000;
     4'b1100: seg = 8'b01110010;
     4'b1101: seg = 8'b10111100;
     4'b1110: seg = 8'b11110010;
     4'b1111: seg = 8'b11100010;
     endcase

 endmodule    
     

 

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泰西颖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值