在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4096|回复: 11

[求助] 如何设计一个3位的计数器

[复制链接]
发表于 2021-7-19 15:47:12 | 显示全部楼层 |阅读模式
20资产
求助:如何用verilog设计一个三位的计数器,当上升clk来的时候,输出从000到111,到111的时候,clk上升沿再来,就从111下降,直到000,如此往复,输出相当于从低到高,再从高到低,希望大神们可以提供一些思路,不胜感激!

最佳答案

查看完整内容

用寄存器和一些组合逻辑实现的,舍弃加法器,优化资源。
发表于 2021-7-19 15:47:13 | 显示全部楼层
用寄存器和一些组合逻辑实现的,舍弃加法器,优化资源。

图片.png

图片.png



 楼主| 发表于 2021-7-19 15:52:25 | 显示全部楼层
顶顶顶
发表于 2021-7-19 16:37:11 | 显示全部楼层
0000低三位和最高位异或?
发表于 2021-7-19 19:05:14 | 显示全部楼层
module upDownCounter ( input clk,
                           input rst_n,
                           output reg [ 2 : 0 ] counterOut );

  reg up, down;

  always @( * ) begin
    up   <= ~|counterOut;
    down <= ~&counterOut;
  end
  always @( posedge clk or negedge rst_n ) begin
    if( ! rst_n ) begin
      counterOut <= 3'b000;
    end
    else begin
      case( { up, down } )
        2'b01:   counterOut <= counterOut - 1'b1;
        2'b10:   counterOut <= counterOut + 1'b1;
        default: counterOut <= counterOut;
      endcase
    end
  end
endmodule
发表于 2021-7-19 19:32:36 | 显示全部楼层
你的电路一共有14个状态,所以需要4个寄存器。按照本科学过的数字集成电路的知识,把状态迁移图画出来就能设计出来了
发表于 2021-7-20 10:03:01 | 显示全部楼层
毕业证交出来吧,少年
 楼主| 发表于 2021-7-21 14:15:41 | 显示全部楼层


nick_zhu1990 发表于 2021-7-20 10:03
毕业证交出来吧,少年


不是搞数字的 太多年了 忘了
发表于 2021-8-11 19:27:25 | 显示全部楼层


beita 发表于 2021-8-9 23:09
用寄存器和一些组合逻辑实现的,舍弃加法器,优化资源。


点赞。。
这样的实诚人不多见了!想交个朋友!
发表于 2021-8-11 21:12:45 | 显示全部楼层


lichen867 发表于 2021-8-11 19:27
点赞。。
这样的实诚人不多见了!想交个朋友!


过奖过奖,举手之劳而已
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-25 21:56 , Processed in 0.022893 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表