在分频器电路中最重要的概念有两个;1)奇分频/偶分频;2)占空比。

A)其中最简单的就是二分频电路,占空比为50%,其Verilog程序为

 module half_clk(clr,clk_in,clk_out,out2);
input clr,clk_in;
output clk_out,out2;
reg clk_out,out2; always @(posedge clk_in)
begin
if (clr==) begin clk_out=; out2=;end
else begin clk_out<=~clk_out; out2=~out2;end
end
endmodule

波形图如下所示:

B)采用计数器实现计数分频(偶数)占空比为50%,如实现40分频,程序如下:

 module fdivision(rst,clkin,clkout);
input rst,clkin;
output clkout;
reg clkout;
reg [:]i;
always @(posedge clkin)
begin
if(!rst) begin clkout<=; i<=;end
else begin
if(i==)
begin clkout<=~clkout;i<=;end
else
i<=i+;
end
end
endmodule

波形图:

C)采用相与/相或的方式实现奇分频,以及占空比可调分频器;如5分频,占空比分别为50%,40%

 module fdivision5(clkin,clkout);
input clkin;
output clkout;
wire clkout;
reg [:]step,step1;
always @(posedge clkin)
begin
case(step)
'b000:step<=3'b010;
'b010:step<=3'b100;
'b100:step<=3'b001;
'b001:step<=3'b011;
'b011:step<=3'b000;
default step<='b000;
endcase
end
always @(negedge clkin)
begin
case(step1)
'b000:step1<=3'b010;
'b010:step1<=3'b100;
'b100:step1<=3'b001;
'b001:step1<=3'b011;
'b011:step1<=3'b000;
default step1<='b000;
endcase
end
assign clkout=(step[]|step1[]);
endmodule

顶层文件(testbench):

 `timescale 1ns/1ns
`define half_period
module fdivision5_test;
reg clkin;
wire clkout;
wire step,step1;
initial
begin
clkin=;
end
always #`half_period clkin=~clkin;
fdivision5 m(clkin,clkout);
assign step=m.step;
assign step1=m.step1;
endmodule

波形图:

也可以采用两个计数器分别对上升沿和下降沿进行计数来实现奇分频:

module div5(clkin,clkout,rst);
input clkin,rst;
output clkout; parameter N=;
wire clk1,clk2;
reg [:]cnt1,cnt2; always @(posedge clkin or negedge rst)
if (!rst) cnt1<=;
else if(cnt1<(N-)) cnt1<=cnt1+;
else cnt1<=; always @(negedge clkin or negedge rst)
if (!rst) cnt2<=;
else if(cnt2<(N-)) cnt2<=cnt2+;
else cnt2<=; assign clk1=(cnt1<=((N-)/))?'b1:1'b0;
assign clk2=(cnt2<=((N-)/))?'b1:1'b0;
assign clkout=clk1&clk2;
endmodule

其testbench为:

`timescale 10ns/1ns
`define period
module div5_test;
reg clkin,rst;
wire clkout;
wire clk1,clk2; initial
begin
clkin=;
rst=;
# rst=;
# rst=;
end
always #`period clkin=~clkin;
assign clk1=m.clk1;
assign clk2=m.clk2; div5 m(clkin,clkout,rst); endmodule

波形图为:

Verilog学习笔记简单功能实现(六)...............计数分频电路的更多相关文章

  1. Verilog学习笔记简单功能实现(五)...............序列检测设计

    这里采用夏宇闻教授第十五章的序列检测为例来学习; 从以上的状态转换图可以写出状态机的程序: module seqdet(x,out,clk,rst); input x,clk,rst; output ...

  2. Verilog学习笔记简单功能实现(二)...............全加器

    先以一位全加器为例:Xi.Yi代表两个加数,Cin是地位进位信号,Cout是向高位的进位信号.列表有:   Xi     Yi    Cin Sum Cout 0 0 0 0 0 0 0 1 1 0 ...

  3. Verilog学习笔记简单功能实现(八)...............同步FIFO

    Part 1,功能定义: 用16*8 RAM实现一个同步先进先出(FIFO)队列设计.由写使能端控制该数据流的写入FIFO,并由读使能控制FIFO中数据的读出.写入和读出的操作(高电平有效)由时钟的上 ...

  4. Verilog学习笔记简单功能实现(三)...............同步有限状态机

    在Verilog中可以采用多种方法来描述有限状态机最常见的方法就是用always和case语句.如下图所示的状态转移图就表示了一个简单的有限状态机: 图中:图表示了一个四状态的状态机,输入为A和Res ...

  5. Verilog学习笔记简单功能实现(四)...............译码器和编码器

    这里以简单的3-8译码器和8-3编码器为例: module decoder3_8(a,out); :]a; :]out; 'b1<<a;/*把最低位的1左移in位(根据in口输入的值)并赋 ...

  6. Verilog学习笔记简单功能实现(一)...............D触发器

    module D_flop(data,clk,clr,q,qb); input data,clk,clr; output q,qb; wire a,b,c,d,e,f,ndata,nclk; nand ...

  7. Verilog学习笔记简单功能实现(八)...............异步FIFO

    基本原理:       1.读写指针的工作原理 写指针:总是指向下一个将要被写入的单元,复位时,指向第1个单元(编号为0). 读指针:总是指向当前要被读出的数据,复位时,指向第1个单元(编号为0). ...

  8. Verilog学习笔记简单功能实现(七)...............接口设计(并行输入串行输出)

    利用状态机实现比较复杂的接口设计: 这是一个将并行数据转换为串行输出的变换器,利用双向总线输出.这是由EEPROM读写器的缩减得到的,首先对I2C总线特征介绍: I2C总线(inter integra ...

  9. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十六章:实例化和截头锥体裁切

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十六章:实例化和截头锥体裁切 代码工程地址: https://git ...

随机推荐

  1. Atitit   发帖机实现(3 )---usrQBN023 js提交ajax内容到后端规范与标准化

    Atitit   发帖机实现(3 )---usrQBN023 js提交ajax内容到后端规范与标准化 大段内容务必要替换转义换行符号1 提交务必使用utf编码,否则解码后的可能缺失,是web serv ...

  2. Atitit。木马病毒原理机密与概论以及防御

    Atitit.木马病毒原理机密与概论以及防御 1. 定时截屏木马1 1.1. QQ聊天与微信聊天木马1 2. 文档木马1 3. 病毒木马的触发方式2 4. 远程木马2 5. 漏洞木马2 6. 病毒木马 ...

  3. fir.im Weekly - 从零开始,搭建理想的直播平台

    2016年苹果发布会如期而至,新一代的 iPhone 7, Apple Watch 同时亮相,可惜大家期待的 MacBookPro.AR.VR产品并未出现.不论大家对新产品是"买买买&quo ...

  4. Hadoop学习笔记【分布式文件系统学习笔记】

    分布式文件系统介绍 分布式文件系统:Hadoop Distributed File System,简称HDFS. 一.HDFS简介 Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(c ...

  5. MySQL(二) 数据库数据类型详解

    序言 今天去健身了,感觉把身体练好还是不错的,闲话不多说,把这个数据库所遇到的数据类型今天统统在这里讲清楚了,以后在看到什么数据类型,咱度应该认识,对我来说,最不熟悉的应该就是时间类型这块了.但是通过 ...

  6. ASP.NET MVC TagBuilder使用

    ASP.NET MVC在需要进行新建HTML辅助方法时,可以来使用TagBuilder类. TagBuilder类常用方法: 方法名称 说明 AddCssClass() 可在卷标中添加一个新的Clas ...

  7. Cwinux源码解析系列

      Cwinux源码解析系列

  8. Deep learning:四十五(maxout简单理解)

    maxout出现在ICML2013上,作者Goodfellow将maxout和dropout结合后,号称在MNIST, CIFAR-10, CIFAR-100, SVHN这4个数据上都取得了start ...

  9. 【GIT】使用Git命令窗口将本地工程提交至远程GitHub

    目标: 1.解决的问题是如何通过Git命令窗口将本地工程提交至GitHub. 2.方便园友的同时也方便自己以后解决此类问题. 步骤: 1.首先登陆GitHub网站https://github.com/ ...

  10. 微信js SDK接口

    微信JS-SDK说明文档 http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html 一.微信登录功能 在进行微信OAut ...