CD4017 参数速查:十拍循环、时钟禁止、复位与进位级联
更新时间:2026-10-30。本篇属于芯片选型速查系列,电气参数依据通用 CD4017B 数据手册整理,逻辑行为由 Vivado Simulator 2017.4 验证。更多器件见 CD4017 所在的芯片参数速查中心。
CD4017 是一颗五级 Johnson 计数器与十路译码器组合起来的 CMOS 器件。每接受一个有效计数沿,Q0~Q9 中只有一路高电平依次向后移动;走过 Q9 后重新回到 Q0,所以十个时钟就完成一轮。它既能当十进制计数器,也能把一连串时钟脉冲分配到十条输出线上,经典流水灯、顺序控制和十分频都能直接利用这个特点。比「十路轮流亮」更重要的是三个控制问题:怎样暂停而不丢当前位置,怎样立即回到 Q0,以及怎样用进位输出扩展更多位数。
本文要回答的问题
- CD4017 为什么能用十路一热输出表示十拍循环,内部又是怎样的结构?
- CLOCK、CLOCK INHIBIT 与 RESET 同时存在时,谁负责走拍、暂停和归零?
- Q0~Q9 与 CARRY-OUT 的引脚位置、有效电平和级联关系是什么?
- 十拍回绕、四拍禁止保持、复位和进位的行为仿真覆盖了哪些结论?
- 用 CD4017 做流水灯或顺序控制时,供电、负载、级联和输入处理有哪些坑?
一、CD4017 的功能与内部结构:五个状态位译出十路输出
CD4017 并不是把 Q0~Q9 做成十个独立翻转的寄存器。内部核心是一组五级 Johnson 计数状态,再经译码逻辑形成十个互斥输出。任一稳定时刻只有 Q0~Q9 中的一路为高,其余九路为低。有效时钟让状态前进,复位让译码结果回到 Q0,进位输出则把内部周期整理成可供下一级使用的较慢波形。
读这张概念卡要分清「状态」和「显示」。Johnson 计数器保存当前走到哪一拍,译码器把该状态变成容易接线的一热输出。因此使用十盏 LED 时不需要另写二进制到十路译码电路,但也不能把 Q0~Q9 当作一个十位二进制数来读。
图中的 RESET 直接进入计数核心,不经过时钟允许判断。这意味着复位具有高优先级,不需要再等一个 CLOCK 沿;INHIBIT 只负责阻止时钟推进,并不会把已经点亮的输出清零。这个差别是理解暂停、归零和重新启动的关键。
二、关键参数讲人话:宽电压不等于随意混接
CD4017B 常见推荐供电范围为 3~18V,但必须服从具体厂商与后缀的表格。 宽供电让它能用于 5V 小型控制板,也能出现在较高电压的传统 CMOS 设备里。输入门限和输出驱动会随 VDD 改变,不能因为在 5V 下验证过,就默认 3.3V 控制器能在 12V 或 15V 供电时直接驱动它。跨电压连接应使用合适的电平转换,并核对输入绝对最大额定值。
RESET 是高有效异步复位,不是「下一拍清零」。 RESET 拉高后,计数状态被清到对应 Q0 的位置,Q0 为高、Q1~Q9 为低。释放 RESET 后,计数器从当前初始位置等待新的有效时钟。如果 RESET 在上电时只得到一个缓慢、不确定的边沿,输出起点可能不可靠;要求确定上电顺序时,应设计明确的上电复位或由控制器给出干净脉冲。
CLOCK INHIBIT 是保持功能,不是输出使能。 把它拉高后,CLOCK 继续有脉冲也不会让输出向前走,当前 Qn 仍保持高电平。它不是三态控制,Q 输出不会被断开。恢复计数时还要遵守数据手册规定的时钟与禁止信号建立关系,避免在时钟边沿附近同时改变 INHIBIT。
CARRY-OUT 是周期指示,不是第十路译码输出。 在标准 CD4017 逻辑中,Q0~Q4 有效期间 CARRY-OUT 为高,Q5~Q9 有效期间为低,因此它每十个输入时钟完成一个周期。它既可用于十分频,也可作为后级计数器的时钟来源;但它不是「仅在 Q9 有效时输出一个窄脉冲」,画级联时序时必须按完整高低区间理解。
三、核心参数一览
下表聚焦逻辑设计与接线最常见的项目。传播延迟、最高时钟频率、输入门限和输出电流都依赖供电、负载、温度与厂商,本文不用脱离条件的单个数值替代数据手册。
| 参数 | CD4017 通用规格与含义 |
|---|---|
| 逻辑功能 | 十进制 Johnson 计数器,带十路译码输出,也可作十进制分配器 |
| 有效状态 | Q0~Q9 共十拍,Q9 后回到 Q0 |
| 输出形式 | 十路高有效一热输出,稳定时仅一路为高 |
| 计数输入 | CLOCK,通常在低有效禁止条件下由上升沿推进 |
| 时钟禁止 | CLOCK INHIBIT 高电平时保持当前计数,不清零、不设高阻 |
| 复位 | RESET 高有效,异步回到 Q0 |
| 进位输出 | CARRY-OUT 在 Q0~Q4 为高、Q5~Q9 为低,每十拍一周 |
| 工作电压 | CD4017B 常见为 3~18V,以采购型号的推荐工作条件为准 |
| 常见引脚数 | 16 脚,具体 DIP、SOIC 等封装尺寸与订货后缀有关 |
| 动态参数 | 最高频率与传播延迟随 VDD、负载和温度变化,查对应曲线与限值表 |
| 输出驱动 | 按单脚电流、总电流和封装功耗共同校核,不能只凭 LED 试亮判断 |
四、引脚定义与计数时序
CD4017 的输出编号在封装上并不按 Q0、Q1、Q2 的顺序绕圈排列。画原理图符号与 PCB 封装时必须逐脚对照,尤其 Q5 在 1 脚、Q0 在 3 脚,不能凭位置直觉布线。
| 引脚 | 名称 | 功能 |
|---|---|---|
| 1 | Q5 | 第 5 拍高有效输出 |
| 2、4、7、10 | Q1、Q2、Q3、Q4 | 第 1~4 拍输出 |
| 3 | Q0 | 初始及每轮起点输出 |
| 5、6、9、11 | Q6、Q7、Q8、Q9 | 第 6~9 拍输出 |
| 8 | VSS | 电源地 |
| 12 | CARRY-OUT | 进位/十分频输出 |
| 13 | CLOCK INHIBIT | 高电平禁止 CLOCK 推进 |
| 14 | CLOCK | 计数时钟输入 |
| 15 | RESET | 高有效异步复位 |
| 16 | VDD | 正电源,就近退耦 |
把计数、保持和复位串在一张波形里更容易看清优先级。下面十个时钟周期中,前两拍正常前进,中间 INHIBIT 拉高四拍所以停在 Q2,恢复后走到 Q3、Q4;随后 RESET 拉高使输出回 Q0,释放后再由下一拍走到 Q1。
波形表达的是稳定逻辑状态,不包含实际传播延迟。中间四拍虽然 CLOCK 仍有边沿,输出数据始终保持 Q2;RESET 所在位置则不等计数允许,直接回到 Q0。由于这段序列没有走到 Q5,CARRY-OUT 全程为高,也再次说明进位脚不是每次普通走拍都翻转。
五、实验:十拍回绕、禁止保持、复位与进位联合检查
5.1 实验设计
测试台围绕四个可观察性质组织检查,而不是只看仿真是否结束。第一段从初始状态连续施加十个时钟,要求重新回到 Q0;第二段在禁止有效时施加四个时钟,要求保持 Q0;其余检查覆盖复位回到起点与 CARRY-OUT 的对应关系。每处错误都会累加 errors,只有计数为零才打印 PASS。
行为模型直接保存十路一热状态。复位优先级高于计数,禁止为高时不更新状态,允许时才在时钟上升沿左移一位;走到 Q9 后显式回到 Q0。模型输出命名为 carry_n,它是实物 CARRY-OUT 的补码,便于直接检查 Q0~Q4 与 Q5~Q9 两个区间。
assign carry_n = ~(q[0] | q[1] | q[2] | q[3] | q[4]);
always @(posedge clk or posedge reset) begin
if (reset)
q <= 10'b00000_00001;
else if (!clock_enable_n) begin
if (q[9])
q <= 10'b00000_00001;
else
q <= q << 1;
end
end这段代码用于验证逻辑规则,并没有模拟某一厂商 CD4017 的电压门限、输出电流或传播延迟。carry_n 也不是芯片第 12 脚的原名和原极性;换算实物 CARRY-OUT 时应再取反,不能把模型信号直接按同极性连线。
5.2 软件方法
实验使用 Vivado Simulator 2017.4 的 xvlog、xelab、xsim 批处理链。测试台按预定序列驱动时钟、禁止和复位,在稳定观察点检查输出,并在 139ns 结束仿真。这里的纳秒数值只是测试激励的时间安排,不是 CD4017 的最高速度或延迟实测。
终端记录先给出十拍回 Q0,再给出四个禁止时钟保持 Q0。SUMMARY errors=0 是测试台所有断言的汇总,后面的 PASS 明确列出 sequence、carry、inhibit、reset 四组检查;因此通过范围不只是一条流水灯循环。
5.3 原始数据与结果对照
以下摘录保留仿真末尾的原始输出。139ns 对应本次测试台的结束位置,不能外推为器件工作频率,也不能替代电气测量。
Vivado Simulator 2017.4
Time resolution is 1 ps
run -all
SEQUENCE ten clocks returned to Q0
INHIBIT four clocks held Q0
SUMMARY errors=0
PASS sequence carry inhibit reset
$finish called at time : 139 ns : File "C:/win-jobs/runs/chipref-cd4017-20261030-mac/tb.v" Line 62| 检查项 | 激励与期望 | 原始结果 | 结论 |
|---|---|---|---|
| 十拍序列 | 连续十拍后回到 Q0 | SEQUENCE ten clocks returned to Q0 | 模十回绕正确 |
| 时钟禁止 | 禁止期间连续四拍保持 Q0 | INHIBIT four clocks held Q0 | 保持功能正确 |
| 复位 | RESET 后回到初始译码状态 | 汇总 PASS 含 reset | 复位检查通过 |
| 进位 | 检查 carry_n 在 Q0~Q4 为低、Q5~Q9 为高 | 汇总 PASS 含 carry | 补码进位关系正确 |
| 总错误数 | 全部观察点错误计数 | SUMMARY errors=0 | 未检出逻辑偏差 |
5.4 实验结论与边界
结果支持本文的四个核心判断:十个有效计数沿形成完整循环,INHIBIT 能在不丢失当前位置的情况下冻结序列,RESET 能回到 Q0,carry_n 与内部计数区间保持规定的补码关系。它验证的是行为模型,不是某一批次实物。真实板卡仍需测量电源、电平、复位脉宽、时钟质量与负载波形;尤其在高速或高电压设计中,不能把零错误的 RTL 仿真当作电气合格证明。
六、替代型号与选型时机
| 型号或方案 | 主要差别 | 何时选择 |
|---|---|---|
| 74HC4017 / 74HCT4017 | 逻辑功能相近,但 HC/HCT 供电与输入门限不同 | 低压高速逻辑系统,按对应数据手册重新核对电平 |
| CD4022 | 八进制计数/分配器,Q0~Q7 八路输出 | 只需要八拍顺序,想保留相似的一热输出用法 |
| 74HC390 等 BCD 计数器 | 输出为二进制编码,不是十路一热译码 | 后级本身接受 BCD,或还要接 BCD 译码器 |
| CD4060 | 多级二进制纹波计数并带振荡结构 | 目标是长时间分频,而不是十路逐拍分配 |
| 单片机加 GPIO/驱动 | 顺序由软件决定,可改花样但需程序与更多接口资源 | 序列频繁变化、需要通信或复杂状态控制时 |
替换首先要看输出语义。BCD 计数器的「十进制」只表示计数十个状态,不能直接代替 Q0~Q9 十路输出;若后级是十盏独立 LED,还要新增译码与驱动。CD4022 的封装和控制脚也不能凭名字相似直接原位替换。所谓兼容 CD4017 的不同厂商型号,同样要核对 RESET、INHIBIT、CARRY-OUT 引脚和时序表。
七、应用与踩坑:流水灯之外还有顺序控制
7.1 十路流水灯与可调顺序
最直接的接法是让 Q0~Q9 各经过限流电阻驱动一盏 LED,时钟来自按键消振电路、低频振荡器或控制器。每拍只有一路输出为高,天然形成单点移动效果。若只需要六拍,不必更换芯片,可以把 Q6 接到 RESET:序列走到 Q6 时立即复位,稳定可见输出就限制在 Q0~Q5。截短序列时要考虑复位脉冲宽度与传播延迟,并按数据手册确认这种接法的时序边界。
7.2 进位级联不要只记一根连线
单级的 CARRY-OUT 每十拍形成一个周期,适合送给下一级做更低频计数。标准逻辑中它在 Q4→Q5 时下降,在 Q9→Q0 时上升;后级若直接用 CLOCK 上升沿计数,推进位置就是个位回零点。设计两位显示、事件计数或精确相位控制时,应把两级完整时序画出来,确认需要的是模十分频还是严格同步的个位回零进位,不要把「每十拍一次」误读成「每个边沿都计一次」。
7.3 六个常见硬件坑
- 输入不能悬空。 不用的 INHIBIT 接低,RESET 按所需初态给确定电平;按键时钟要消振,否则一次按下可能被计成多拍。
- 复位与禁止作用不同。 想暂停时拉 INHIBIT,想从 Q0 重来时用 RESET;用 RESET 暂停会丢失当前位置。
- LED 必须限流并核算总功耗。 一路能点亮不代表十路长期切换、较高 VDD 或较重负载仍安全,继电器与电机另加驱动级。
- 时钟边沿要干净。 缓慢爬升、反弹和噪声可能造成多计或误计;不要只检查平均频率,还要检查边沿质量与门限裕量。
- 上电初态要明确。 若系统必须从指定输出启动,使用受控复位,不依赖电源上升过程恰好形成理想初始化。
- 退耦与地回路不可省。 VDD 附近放置合适的陶瓷退耦电容,让时钟源、CD4017 和负载参考同一地;大电流负载回路不要穿过逻辑地。
实验环境
- 机器/系统:Windows worker
- 工具版本:Vivado Simulator 2017.4(xvlog / xelab / xsim 批处理链)
- 日期:2026-10-30
- 完整命令:
xvlog counter.v tb.v && xelab tb -s snap && xsim snap -R,由run.bat顺序调用并在失败时退出。
代码获取
本实验的完整源码、运行脚本、README 与原始输出已放在公开仓库 experiments/chip-ref-cd4017/。在 Windows 上把 run.bat 中的 Vivado 安装路径改为本机路径后执行该脚本,即可复现十拍循环、禁止保持、复位和进位检查。
参考来源
- Texas Instruments, CD4017B CMOS Decade Counter/Divider with 10 Decoded Outputs:功能、引脚、推荐工作条件、复位与进位时序。
- Nexperia, HEF4017B 5-stage Johnson decade counter with 10 decoded outputs:逻辑描述、功能表与动态参数测试条件。
- 本文实验:
counter.v与tb.v的行为级联合检查,仅用于验证逻辑关系,不替代 datasheet 的电气规格与实物测量。
这一篇在知识体系里的位置
本篇属于 CD4017 十进制计数/分配器所在的芯片参数速查中心,重点是把固定节拍变成十路互斥控制信号。如果目标不是十路同时引出,而是用少量 GPIO 串行扩展八路输出,可对照 用 CD4017 思路理解顺序输出与 74HC595 串转并;若任务是把地址编码变成外设片选,则 74HC138 参数速查 的组合译码更合适。三颗料分别解决时序分配、串行扩展和地址选择,不应只因都有多路输出就混用。
总结
CD4017 的核心是一个十状态 Johnson 计数核心加十路高有效译码:CLOCK 让 Q0~Q9 顺序前进,INHIBIT 为高时冻结当前位置,RESET 为高时异步回到 Q0,CARRY-OUT 则每十拍完成一个周期用于分频和级联。行为仿真已覆盖十拍回绕、四拍禁止保持、复位与进位,并得到 errors=0;实际使用仍要按具体 datasheet 校核供电、电平、时序和驱动。做流水灯时重点防按键多计与输入悬空,做级联时尤其要记住进位下降沿对应 Q4→Q5、上升沿对应 Q9→Q0,不能混淆两个边沿。