当前位置: 首页 > news >正文

分频器code

理论学习

                数字电路中时钟占有非常重要的地位。时间的计算都依靠时钟信号作为基本单元。一般而言,一块板子只有一个晶振,即只有一种频率的时钟,但是数字系统中,经常需要对基准时钟进行不同倍数的分频,进而得到各模块所需的频率。

                若想得到比系统时钟更慢的时钟,可以将基准时钟进行分频。

                若想得到比系统时钟更快的时钟,可以将基准时钟进行倍频。

                不管是分频还是倍频,都通过PLL实现或者用verilog描述实现。

        我们用verilog实现的一般是分频电路,即分频器。分频电路是数字系统设计中常用的基本电路之一。

        分频器分为偶数分频和奇数分频。

偶数分频

module    divider_six    
(input    wire    sys_clk         ,input    wire    sys_rst_n       ,output   reg     clk_out
);reg    [3:0]    cnt    ;always@(posedge sys_clk or negedge sys_rst_n )beginif( sys_rst_n == 1'b0 )begincnt    <=    4'd0    ;endelse if( cnt == 4'd2 )begincnt    <=    4'd0    ;endelsebegincnt    <=    cnt    +    1'b1    ;endendalways@(posedge sys_clk or negedge sys_rst_n )beginif( sys_rst_n == 1'b0 )beginclk_out    <=    1'b0    ;endelse if( cnt == 4'b2 )beginclk_out    <=    ~clk_out    ;endendendmodule

奇数分频

module    divider_five
(input    wire    sys_clk        ,input    wire    sys_rst_n      ,output   wire    clk_out);reg    [2:0]    cnt    ;reg             clk1   ;reg             clk2   ;//产生0 ~4 循环always@( posedge sys_clk or negedge sys_rst_n )beginif( sys_rst_n == 1'b0 )begincnt    <=    3'b0    ;endelse if( cnt == 3'd4 )begincnt    <=    3'd0    ;endelsebegincnt    <=    cnt    + 1'b1    ;endend//产生三个高电平和两个低电平always@( posedge sys_clk or negedge sys_rst_n )beginif( sys_rst_n == 1'b0 )beginif( sys_rst_n == 1'b0 )beginclk1    <=    1'b1    ;endelse    if( cnt == 3'd2 )beginclk1    <=    1'b0    ;endelse    if( cnt == 3'd4 )beginclk1    <=    1'b1    ;endendend//产生两个高电平和三个低电平always@( negedge sys_clk or negedge sys_rst_n )beginif( sys_rst_n == 1'b0 )beginclk2    <=    1'b1    ;end  else    if( cnt == 3'd2 )beginclk2    <=    1'b0    ;endelse    if( cnt == 3'd4 )beginclk2    <=    1'b1    ;endendassign    clk_out    =    clk1 & clk2    ;endmodule

http://www.lryc.cn/news/522437.html

相关文章:

  • C#中字符串方法
  • Python毕业设计选题:基于django+vue的二手电子设备交易平台设计与开发
  • 【愚公系列】《微信小程序与云开发从入门到实践》059-迷你商城小程序的开发(加入购物车与创建订单功能开发)
  • Mac Android studio :gradle 配置、代理设置、及各种环境变量配置;
  • unity——Preject3——开始界面拼面板
  • 【达梦数据库(Oracle模式)】如何将视图中的数据导出
  • GB44495-2024 汽车整车信息安全技术要求 - V2X部分前置要求
  • FastAPI 应用的容器化与 Docker 部署:提升性能与可扩展性
  • QT入门的一些吐槽
  • 4.Spring AI Prompt:与大模型进行有效沟通
  • 深入内核讲明白Android Binder【二】
  • Python基于Django的图像去雾算法研究和系统实现(附源码,文档说明)
  • TCP 连接状态标识 | SYN, FIN, ACK, PSH, RST, URG
  • WXML模版语法-事件绑定
  • 楚慧杯Web
  • 工商业储能电站能量管理本地系统及多站点云平台
  • HTML标签笔记
  • pthread_create函数
  • C# 并发和并行的区别--16
  • Java日志配置
  • python中的RPA->playwright自动化录制脚本实战案例笔记
  • Linux查看日志命令
  • (8)ERC20详细介绍
  • opencv projectPoints函数 computeCorrespondEpilines函数 undistortPoints函数
  • springboot集成websocket实现实时大量数据,效率性能高
  • 游戏引擎学习第80天
  • Windows 上的 MySQL 8.4.3 和 WSL(Ubuntu)的 MySQL 8.0.40 之间配置 主从同步
  • 【狂热算法篇】探秘图论之 Floyd 算法:解锁最短路径的神秘密码(通俗易懂版)
  • Sentinel配置流控规则详解
  • 解锁动态规划的奥秘:从零到精通的创新思维解析(6)