1.目标:使用verilog编写三分频电路,要求占空比大小为50%。

2.方法:分别使用上升沿和下降沿计数cnt_p以及cnt_n,并且计数从0到N-1(N为分频的次数,此时为3);分别对clk_p以及clk_n做复位初始化为0,这样当它们计数到0或者(N-1)/2的时候分别进行信号的翻转;如果clk_p以及clk_n初始化为0,结果是clk_p | clk_n,如果初始化为1则是clk_p &  clk_n。

3. three_div_Freq.v

`timescale 1ns / 1ps
//
// Company: Shanghaitech
// Engineer: Junluoyu
//
// Create Date: 2021/11/02 22:48:53
// Design Name:
// Module Name: three_div_Freq
// Project Name:
// Target Devices:
// Tool Versions: vivado 2020.1
// Description: 三分频电路
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//module three_div_Freq #(parameter N = 3
)
(input clk_in,input rst_n,output clk_out
);
/*----------------------------------------------------------------------------------------------*/
reg [3:0] cnt_p , cnt_n ;
reg       clk_p , clk_n ;
/*----------------------------------------------------------------------------------------------*/
always @(posedge clk_in or negedge rst_n) beginif(!rst_n)cnt_p<=4'b0000;else if(cnt_p==N-1)cnt_p<=4'b0000;elsecnt_p<=cnt_p+1'b1;
endalways @(negedge clk_in or negedge rst_n) beginif(!rst_n)cnt_n<=4'b0000;else if(cnt_n==N-1)cnt_n<=4'b0000;elsecnt_n<=cnt_n+1'b1;
endalways @(posedge clk_in or negedge rst_n) beginif(!rst_n)clk_p<=1'b0;else if(cnt_p==(N-1)/2)clk_p<=~clk_p;else if(cnt_p==4'b0000)clk_p<=~clk_p;elseclk_p<=clk_p;
endalways @(negedge clk_in or negedge rst_n) beginif(!rst_n)clk_n<=1'b0;else if(cnt_n==(N-1)/2)clk_n<=~clk_n;else if(cnt_n==4'b0000)clk_n<=~clk_n;elseclk_n<=clk_n;
endassign clk_out = clk_p | clk_n;
endmodule

4.testbench

`timescale 1ns / 1ps
//
// Company: Shanghaitech
// Engineer: Junluoyu
//
// Create Date: 2021/11/02 22:59:59
// Design Name:
// Module Name: tb
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module tb();
/*---------------------------------------------------------------------------------------------*/
reg  clk_in;
reg  rst_n;
wire clk_out;
/*---------------------------------------------------------------------------------------------*/
three_div_Freq #(.N(3)
)
three_div_Freq_inst
(.clk_in (clk_in ),.rst_n  (rst_n  ),.clk_out(clk_out)
);
/*----------------------------------------------------------------------------------------------*/
initial clk_in = 1'b0;
always #5 clk_in = ~clk_in;  // 10ns,50MHz
/*----------------------------------------------------------------------------------------------*/
initial beginrst_n = 1'b0;#100;rst_n = 1'b1;#1000;$stop;
end
endmodule

5.仿真波形

可见,生成的波形时钟周期为30ns,三分频即周期扩大三倍,故实现了三分频的功能。

6.扩展

如果实现其他奇数分频,只需要修改参数N为对应奇数即可。那么如果想得到占空比不是50%的应该怎么操作呢?

一、verilog编写三分频电路相关推荐

  1. 题目:用Verilog实现三分频电路,要求输出50%占空比。

    题目:用Verilog实现三分频电路,要求输出50%占空比. module Div_three(input clk,input rst_n,output div_three ); reg [1:0] ...

  2. 设计占空比为50%的三分频电路

    设计占空比为50%的三分频电路 时序图工具 {signal: [ {name: 'clk', wave: 'P-P-'}, {name: 'clk1', wave: 'H.LH.LH.L'}, {na ...

  3. 三分频电路Verilog设计

    三分频用两个在不同的时钟沿的序列发生器来构成一个3分频信号: `timescale 1ns/10ps module div_3(clkin,clkout1,clkout2,clkout3); inpu ...

  4. FPGA三分频电路的实现

    最近刚开始学习FPGA,准备使用verlog实现一些分频电路,偶数倍分频比较好操作,奇数倍分频相对来说要复杂一点点,我在网上查阅了一些资料,我来用我自己的话总结下. 1.最简单最好理解的实现(不推荐) ...

  5. Verilog实现25分频电路代码

    可以使用一个计数器实现 25 分频电路.可以设置计数器的计数范围为 0 到 24,每次计数器增加 1.在计数器的值为 24 时,将其设置为 0 并触发输出信号.这样就能实现 25 分频.以下是一个简单 ...

  6. 一种三分频电路的实现与仿真

    module fenpin;reg clk;reg q1;reg q2;wire d1,d2;initial beginclk = 0;q1 = 0;q2 = 0;endalways #10 clk ...

  7. 数字IC秋招手撕代码(二)50%占空比的三分频

    数字IC秋招手撕代码(二)50%占空比的三分频 题目 设计思路 与逻辑分频 代码 或逻辑分频 代码 异或逻辑分频 代码 题目 用verilog实现三分频电路,要求输出50%占空比 设计思路 如果不限制 ...

  8. 【Verilog HDL 训练】第 11 天(分频电路)

    设计一个占空比50%的三分频电路. 针对这个分频器,博文的末尾会给出一个反面教材,这是我上次写的一个分频器,看起来很好,其实是不能综合的.针对其中的错误,我令立博文记录之:[ Verilog ]alw ...

  9. 【数字IC手撕代码】Verilog奇数分频|题目|原理|设计|仿真(三分频,五分频,奇数分频及特殊占空比)

    芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球 四社区联合力荐!近500篇数字IC精品文章收录! [数字IC精品文章收录]学习路线·基础知识·总线·脚本语言·芯片求职· ...

最新文章

  1. mysql报错无效默认值1067_Mysql 报错:#1067 - Invalid default value for 'update_time
  2. IO 模拟 1/2 Bias、1/4 Duty的 LCD 驱动
  3. :new与:old的用法
  4. Web API实现微信公众平台开发-服务器验证
  5. Alpha冲刺随笔—:第一天
  6. 电影'社交网络'获金球奖最佳影片,最佳编剧,最佳导演,最佳配乐奖
  7. centos php mysql 配置_CentOS系统中安装配置Apache+PHP+MySQL环境
  8. java谷歌翻译_Java 调用 google 翻译
  9. 彻底删除微软拼音输入法2003
  10. 一阶电路实验报告心得_一阶rc电路的暂态响应实验报告分析
  11. mem leak debug
  12. 数据可视化之美—BI
  13. jupyter lab版本更新问题
  14. 测试开发工程师的发展
  15. maya(学习笔记)之Arnold渲染器
  16. python sort 多级排序_python sort、sorted高级排序技巧
  17. python中用BBP公式计算π
  18. 基本共射放大电路的动态分析(低频、Ri、Ro大小对电路影响的分析)
  19. 线性代数 ----- 行列式的性质
  20. C# GZip 压缩 / 解压

热门文章

  1. 【入门】(二)相机标定、矩阵求解、相机位姿势估计
  2. 幼儿体能五项技能测试软件,幼儿体能训练项目及评分标准(3.5-6岁)[精制甲类]
  3. tcl 950 android 7,TCL 950测评:商务旗舰手机界的一股清流
  4. 微信小程序实现手写签名(极简横版)
  5. Centos6 密钥登陆,解决所选的用户密钥未在远程主机上注册
  6. NJCTF writeup
  7. python数据库开发 dga_使用深度学习检测DGA(域名生成算法)——LSTM的输入数据本质上还是词袋模型...
  8. hdu 6059 Kanade's trio
  9. [问题解决]电脑有线 连接天翼光猫 不分配ip 电脑有线无法上网
  10. linux 网站服务器优化 web server优化