奇数分频电路—5分频(verilog实现)

本文探讨了如何利用计数器实现奇数分频,特别关注5分频电路,包括不设限占空比的5分频方法和50%占空比的实现策略。通过实例展示了如何通过额外寄存器和时钟操作来确保50%的占空比,并介绍了如何扩展到任意奇数分频。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

前文我们讲到,可以通过计数器的方法实现偶数分频,实现方式可以参考4分频电路实现
那么对于奇数分频电路应该如何实现呢?是否也可以通过计数器实现呢?答案是肯定的。这里我们仍然采用计数器的方法实现奇数分频。

占空比不为50%的奇数分频

对于占空比不为50%的电路来说比较简单,这里我们以5分频电路为例。用计数器计数到1时翻转时钟信号,在计数到4时再翻转时钟。这样即可实现5分频电路,且占空比为60%,这里给出实现代码如下:

`timescale 1ns/1ns

module tb();
  reg clk, rst;
  wire clk_out;
  nequal_div_5 dut(.clk(clk),
                   .rst(rst), 
                   .clk_out(clk_out)
                  );
  initial begin 
    clk <= 0;
    forever begin
      #5 clk <= !clk;
    end
  end
  initial begin
    rst <= 0;
    repeat(2) @(posedge clk);
    rst <= 1;
  end
  initial begin 
    #500 $finish;
  end
  endmodule


//no equal divided_5  and the duty cycle is 60%

module nequal_div_5(input clk, input rst, output clk_out);
  reg clk_out;
  reg [3:0] cnt;

  always @(posedge clk or negedge rst) begin //count generate
    if (!rst) begin
      cnt <= 0;
    end 
    else if (cnt == 3'b100)
    begin
      cnt <= 0;
    end
    else 
      cnt <= cnt + 1'b1;
  end

  always @(posedge clk or negedge rst) begin  //clk divided
    if (!rst) begin
      clk_out <= 0;
    end
    else if (cnt == 1'b1) begin
      clk_out <= ~clk_out;
    end
    else if (cnt == 3'b100) begin
      clk_out <= ~clk_out;
    end
    else 
      clk_out <= clk_out;
    end
    endmodule


仿真结果如下图:
在这里插入图片描述

占空比为50%的5分频电路

对于占空比没有要求的奇数分频实现方式当然简单,那么如何实现%50占空比的要求呢?这里我们在代码中声明了两个新的输出时钟寄存器,分别是clk_p和clk_n,clk_p在计数到2时翻转信号,而clk_n则是在时钟下降沿采样clk_p的值,然后将两者求或,即可得到满足我们要求的输出时钟clk_out
代码如下:

`timescale 1ns/1ns
module tb();
reg clk,rst;
wire clk_out;

equal_div_5 dut(.clk(clk),
                .rst(rst), 
                .clk_out(clk_out)
               );

 //clk generate              
 initial begin
  clk <= 0;
  forever begin
   #5 clk <= !clk;
  end
end
 //rst signal
 initial begin
   #10 rst <= 0;
   repeat(2) @(posedge clk);
   rst <= 1;
 end
 //finish signal
 initial begin
  #500 $finish;
end
endmodule

module equal_div_5(input clk, input rst, output clk_out);
  reg [2:0]cnt;
  reg clk_p;
  reg clk_n;
  wire clk_out;

  always @(posedge clk or negedge rst)//count module
  begin
    if (!rst) begin;
    cnt <= 0;
  end
  else if (cnt == 3'b100) begin
    cnt  <= 0;
  end
  else begin
    cnt <= cnt +1'b1;
  end
end

  always @(posedge clk or negedge rst)//clk divided
  begin
    if (!rst) begin
      clk_p <= 0;
    end
    else if (cnt == 3'b010) begin
      clk_p <= ~clk_p;
    end 
    else if (cnt == 3'b100) begin
      clk_p <= ~clk_p;
    end
    else 
      clk_p <= clk_p;
  end
  always @(negedge clk) begin
    clk_n <= clk_p;
  end
  assign clk_out = clk_n | clk_p;
endmodule

仿真结果可以看到电路的占空比为50%
在这里插入图片描述

扩展

同理,我们可以实现任意大小的奇数分频,且占空比为50%。即对于n分频电路,首先在(n-1)/2处进行信号翻转并把值赋给一个寄存器,然后在再其时钟下降沿检测这个寄存器的值,并赋值给另外一个寄存器,然后二者求或,结果就是最终的分频时钟的值。

目 录 译者序 第7版序言 第一部分 基础知识 第1章 数据库管理概述 1 1.1 引言 1 1.2 什么是数据库系统 3 1.3 什么是数据库 6 1.4 为什么用数据库 10 1.5 数据独立性 12 1.6 关系系统及其他 15 1.7 小结 17 练习 17 参考文献和简介 19 部分练习答案 19 第2章 数据库系统体系结构 22 2.1 引言 22 2.2 三级体系结构 22 2.3 外模式 24 2.4 概念模式 26 2.5 内模式 26 2.6 映象 27 2.7 数据库管理员 27 2.8 数据库管理系统 28 2.9 数据通信管理器 31 2.10 客户/服务器体系结构 31 2.11 工具 33 2.12 分布式处理 33 2.13 小结 35 练习 35 参考文献和简介 36 第3章 关系数据库介绍 38 3.1 引言 38 3.2 关系模型概述 38 3.3 关系和关系变量 41 3.4 关系的含义 42 3.5 优化 44 3.6 数据字典 45 3.7 基本关系变量和视图 46 3.8 事务 49 3.9 供应商和零件数据库 49 3.10 小结 51 练习 52 参考文献和简介 53 部分练习答案 54 第4章 SQL概述 55 4.1 引言 55 4.2 综述 56 4.3 目录 58 4.4 视图 59 4.5 事务 59 4.6 嵌入式SQL 59 4.7 SQL是不完美的 66 4.8 小结 66 练习 67 参考文献和简介 68 部分练习答案 73 第二部分 关系数据模型 第5章 域、关系和基本关系变量 77 5.1 引言 77 5.2 域 79 5.3 关系值 86 5.4 关系变量 90 5.5 SQL的支持 93 5.6 小结 96 练习 97 参考文献和简介 98 部分练习答案 101 第6章 关系代数 106 6.1 引言 106 6.2 关系封闭性 107 6.3 语法 109 6.4 语义 110 6.5 举例 117 6.6 关系代数的作用 119 6.7 附加的操作符 120 6.8 分组与分组还原 125 6.9 关系比较 127 6.10 小结 128 练习 129 参考文献和简介 131 部分练习答案 133 第7章 关系演算 140 7.1 引言 140 7.2 元组演算 141 7.3 举例 147 7.4 关系演算与关系代数的比较 149 7.5 计算能力 152 7.6 域演算 153 7.7 SQL语言 155 7.8 小结 162 练习 163 参考文献和简介 165 部分练习答案 167 第8章 完整性 179 8.1 引言 179 8.2 类型约束 180 8.3 属性约束 181 8.4 关系变量约束 182 8.5 数据库约束 182 8.6 黄金法则 183 8.7 静态约束和动态约束 184 8.8 码 185 8.9 SQL对完整性的支持 191 8.10 小结 194 练习 194 参考文献和简介 196 部分练习答案 201 第9章 视图 209 9.1 引言 209 9.2 视图的用途 211 9.3 视图检索 213 9.4 视图更新 214 9.5 快照 225 9.6 SQL对视图的支持 226 9.7 小结 227 练习 228 参考文献和简介 229 部分练习答案 232 第三部分 数据库设计 第10章 函数依赖 238 10.1 引言 238 10.2 基本概念 239 10.3 平凡的函数依赖和非平凡的函数 依赖 241 10.4 依赖集的闭包 241 10.5 属性集的闭包 242 10.6 最小函数依赖集 244 10.7 小结 245 练习 246 参考文献和简介 247 部分练习答案 249 第11章 进一步规范化Ⅰ:1NF、2NF、 3NF和BCNF 252 11.1 引言 252 11.2 无损分解和函数依赖 254 11.3 第一、第二和第三范式 257 11.4 保持函数依赖 262 11.5 BOYCE/CODD范式 264 11.6 具有关系值属性的关系变量 268 11.7 小结 270 练习 270 参考文献和简介 272 部分练习答案 274 第12章 进一步规范化Ⅱ:高级范式 282 12.1 引言 282 12.2 多值依赖与第四范式 282 12.3 连接依赖与第五范式 285 12.4 规范化过程小结 289 12.5 逆规范化 291 12.6 正交设计 292 12.7 其他的规范化形式 295 12.8 小结 296 练习 296 参考文献和简介 297 部分练习答案 302 第13章 语义建模 306 13.1 引言 306 13.2 总体方法 307 13.3 E/R模型 309 13.4 E/R图 312 13.5 基于E/R模型的数据库设计 313 13.6 简单分析 317 13.7 小结 319 练习 320 参考文献和简介 321 第四部分 事务管理 第14章 恢复 333 14.1 引言 333 14.2 事务 334 14.3 事务恢复 335 14.4 系统恢复 337 14.5 介质恢复 338 14.6 两阶段提交 338 14.7 SQL对事务的支持 339 14.8 小结 340 练习 341 参考文献和简介 341 部分练习答案 345 第15章 并发 347 15.1 引言 347 15.2 三个并发问题 347 15.3 锁 349 15.4 重提三个并发问题 350 15.5 死锁 352 15.6 可串行性 353 15.7 隔离级别 354 15.8 意向锁 355 15.9 SQL的支持 357 15.10 小结 358 练习 359 参考文献和简介 360 部分练习答案 365 第五部分 高级专题 第16章 安全性 369 16.1 引言 369 16.2 自主存取控制 371 16.3 强制存取控制 375 16.4 统计数据库 377 16.5 数据加密 381 16.6 SQL的支持 384 16.7 小结 386 练习 387 参考文献和简介 388 部分练习答案 390 第17章 优化 394 17.1 引言 394 17.2 一个启发性的例子 395 17.3 查询处理概述 396 17.4 表达式变换 399 17.5 数据库统计信息 403 17.6 分而治之的策略 404 17.7 关系操作的实现算法 406 17.8 小结 410 练习 411 参考文献和简介 413 部分练习答案 430 第18章 信息空缺 432 18.1 引言 432 18.2 3VL方法概述 433 18.3 上述方案所造成的某些结果 437 18.4 空值和码 440 18.5 外连接 442 18.6 特殊值 444 18.7 SQL的支持 444 18.8 小结 447 练习 448 参考文献和简介 449 部分练习答案 452 第19章 类型继承 454 19.1 引言 454 19.2 类型的层次结构 457 19.3 多态性和可置换性 459 19.4 变量与赋值 462 19.5 约束特化 465 19.6 比较 467 19.7 操作、版本和签名 470 19.8 一个圆是一个椭圆吗 473 19.9 约束特化—再次讨论 476 19.10 小结 478 练习 479 参考文献和简介 480 部分练习答案 481 第20章 分布式数据库 484 20.1 引言 484 20.2 一些预备知识 484 20.3 十二个目标 487 20.4 分布式系统面对的问题 493 20.5 客户/服务器系统 502 20.6 DBMS独立性 504 20.7 SQL的支持 508 20.8 小结 509 练习 509 参考文献和简介 510 第21章 决策支持 518 21.1 引言 518 21.2 决策支持的特征 519 21.3 决策支持的数据库设计 520 21.4 数据准备 525 21.5 数据仓库和数据集市 527 21.6 联机分析处理 530 21.7 数据挖掘 535 21.8 小结 536 练习 537 参考文献和简介 538 部分练习答案 540 第22章 时态数据库 541 22.1 引言 541 22.2 时态数据 542 22.3 问题是什么 544 22.4 时间间隔 548 22.5 间隔类型 549 22.6 间隔上的标量操作符 551 22.7 间隔上的聚集操作符 551 22.8 与间隔有关的关系操作符 552 22.9 间隔上的约束 557 22.10 间隔上的更新操作符 559 22.11 关于数据库设计 560 22.12 小结 562 练习 563 参考文献和简介 563 部分练习答案 565 第23章 基于逻辑的数据库 567 23.1 引言 567 23.2 综述 567 23.3 命题演算 569 23.4 谓词演算 572 23.5 数据库的证明理论观点 577 23.6 演绎数据库系统 580 23.7 递归查询过程 583 23.8 小结 588 练习 589 参考文献和简介 590 部分练习答案 596 第六部分 对象和对象/关系数据库 第24章 对象数据库 599 24.1 引言 599 24.2 对象、类、方法和消息 602 24.3 进一步的分析 605 24.4 一个详实的例子 611 24.5 混合性问题 618 24.6 小结 624 练习 626 参考文献和简介 627 部分练习答案 634 第25章 对象/关系数据库 637 25.1 引言 637 25.2 第一个根本性错误 639 25.3 第二个根本性错误 644 25.4 实现上的问题 645 25.5 真正融合的好处 647 25.6 小结 648 参考文献和简介 649 附 录 附录A SQL表达式 657 附录B SQL3概览 666 附录C 缩略语和符号 678
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

借问众神明.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值