分频器code

server/2025/1/18 17:38:12/

理论学习

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

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

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

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

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

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

偶数分频demo1

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

偶数分频demo2

module    divider_six
(input    wire    sys_clk      ,input    wire    sys_rst_n    ,outpur   reg     clk_out
);reg    [2:0]    cnt    ;always@( posedge sys_clk or negedge sys_rst_n )beginif( sys_rst_n == 1'b0 )begincnt    <=    3'd0    ;endelse    if( cnt == 3'd5 )begincnt    <=    3'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 == 3'd4 )beginclk_out    <=    1'b1    ;endelse    beginclk_out    <=    1'b0    ;    endendendmodule

偶数分频对应的tb

`timescale    1ns/1nsmodule    tb_divider_six();reg    sys_clk      ;reg    sys_rst_n    ;wire   clk_out      ;initialbeginsys_clk    =    1'b1    ;sys_rst_n    <=    1'b0    ;#20    ;sys_rst_n    <=    1'b1    ;endalways #10     sys_clk     <=    ~sys_clk    ;divider_six    divider_six_inst(.sys_clk      (sys_clk)      ,.sys_rst_n    (sys_rst_n)    ,.clk_out      (clk_out));endmodule

奇数分频

module    divider_five
(input    wire    sys_clk      ,input    wire    sys_rst_n    ,output   wire    clk_out
);reg    [2:0]    cnt     ;reg             clk1    ;reg             clk2    ;always@( posedge sys_clk or negedge sys_rst_n )beginif( sys_rst_n == 1'b0 )begincnt    <=    3'd0    ;endelse if( cnt == 3'd4 )begincnt    <=    3'd0    ;endelsebegincnt    <=    cnt    + 1'b1    ;endend//clk1always@( posedge sys_clk or negedge sys_rst_n )        beginif( sys_rst_n == 1'b0 )beginclk1    <=    1'b1    ;endelse if( cnt == 3'd2 )beginclk1    <=    1'b0    ;endelsebeginclk1    <=    1'b1    ;endend//clk2always@( negedge sys_clk or negedge sys_rst_n )beginif( sys_rst_n == 1'b0 )beginclk2    <=    1'b1    ;endelse if( cnt    ==    3'd2 )beginclk2    <=    1'b0    ;endelsebeginclk2    <=    1'b1    ;endendassign    clk_out    =    clk1 & clk2    ;endmodule

奇数分频的tb

`timescale 1ns/1nsmodule    tb_divider_five();reg    sys_clk      ; reg    sys_rst_n    ;wire   clk_out      ;initialbeginsys_clk    =    1'b1    ;sys_rst_n    <=    1'b0    ;#20    ;sys_rst_n    <=    1'b1    ;  endalways #10    sys_clk    <=    ~sys_clk    ;divider_five    divider_five_inst(.sys_clk      (sys_clk)      ,.sys_rst_n    (sys_rst_n)    ,.clk_out      (clk_out));endmodule


http://www.ppmy.cn/server/159409.html

相关文章

linux OutOfMemoryError 内存溢出排查

前言 内存溢出我会先分成两种情况。 一种是8g内存服务器分配给服务2g内存&#xff0c;导致服务内存溢出。 一种是8g内存服务器把内存全部分给服务导致的内存溢出。 也就是说一种是给服务加配置&#xff0c;一种需要调整服务的代码处理。 思路整理 日志排查 第一步应该是日志…

使用redis-cli命令实现redis crud操作

项目场景&#xff1a; 线上环境上redis中的key影响数据展示&#xff0c;需要删除。但环境特殊没办法通过 redis客户端工具直连。只能使用redis-cli命令来实现。 操作步骤&#xff1a; 1、确定redis安装的服务器&#xff1b; 2、找到redis的安装目录下 ##找到redis安装目…

用公网服务器实现内网穿透

首先需要一个公网服务器 下载frp 搜索github下载到frp&#xff0c;服务端frps/客户端frpc。。下载的时候要注意自己本地内网机的cpu版本和服务端cpu架构 我的电脑是mac M1PRO版本 下载的是&#xff1a;darwinarm64 比如 服务端一般是Linux&#xff08;Intel 64位CPU&#xf…

Red Hat8:搭建FTP服务器

目录 一、匿名FTP访问 1、新建挂载文件 2、挂载 3、关闭防火墙 4、搭建yum源 5、安装VSFTPD 6、 打开配置文件 7、设置配置文件如下几个参数 8、重启vsftpd服务 9、进入图形化界面配置网络 10、查看IP地址 11、安装ftp服务 12、遇到拒绝连接 13、测试 二、本地…

【Delete 删除数据语法合集】.NET开源ORM框架 SqlSugar 系列

系列文章目录 &#x1f380;&#x1f380;&#x1f380; .NET开源 ORM 框架 SqlSugar 系列 &#x1f380;&#x1f380;&#x1f380; 文章目录 系列文章目录前言 &#x1f343;一、根据实体删除1.1 强类型实体2.2 无主键实体删除2.3 Object、接口、抽象类 删除 二、根据主键三…

Java负载均衡

Java中的负载均衡原理是指通过合理分配网络请求或计算任务的方式&#xff0c;将工作负载分配到多个服务器、处理单元或服务实例上&#xff0c;从而提高系统的性能、可扩展性和可用性。负载均衡不仅可以分散请求压力&#xff0c;还能增强系统的容错能力&#xff0c;避免单点故障…

数据结构 数组

1. 常见的错误 这里我要特别纠正一个“错误”。我在面试的时候&#xff0c;常常会问数组和链表的区别&#xff0c;很多人都回答说&#xff0c;“链表适合插入、删除&#xff0c;时间复杂度O(1)&#xff1b;数组适合查找&#xff0c;查找时间复杂度为O(1)”。 实际上&#xff…

VTK知识学习(36)-图像平滑

1、前言 图像平滑常用于图像的预处理中&#xff0c;如计算梯度时先对图像进行平滑处理&#xff0c;可以减少噪声对梯度的影响。图像平滑一般是通过模板卷积运算实现。模板可以看作一个大小为nxn的小图像&#xff0c;例如 3x3、5x5等&#xff0c;模板的每个像素都对应一个系数值…