Verilog学习笔记简单功能实现(六)...............计数分频电路

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

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

 1 module half_clk(clr,clk_in,clk_out,out2);
 2   input clr,clk_in;
 3   output clk_out,out2;
 4   reg clk_out,out2;
 5
 6   always @(posedge clk_in)
 7   begin
 8   if (clr==0) begin clk_out=0; out2=1;end
 9     else begin clk_out<=~clk_out; out2=~out2;end
10   end
11 endmodule 

波形图如下所示:

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

 1 module fdivision(rst,clkin,clkout);
 2   input rst,clkin;
 3   output clkout;
 4   reg clkout;
 5   reg [4:0]i;
 6   always @(posedge clkin)
 7   begin
 8   if(!rst) begin clkout<=0; i<=0;end
 9     else begin
10          if(i==19)
11            begin clkout<=~clkout;i<=0;end
12            else
13           i<=i+1;
14          end
15   end
16 endmodule 

波形图:

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

 1 module fdivision5(clkin,clkout);
 2   input  clkin;
 3   output clkout;
 4   wire clkout;
 5   reg [2:0]step,step1;
 6   always @(posedge clkin)
 7   begin
 8     case(step)
 9       3‘b000:step<=3‘b010;
10       3‘b010:step<=3‘b100;
11       3‘b100:step<=3‘b001;
12       3‘b001:step<=3‘b011;
13       3‘b011:step<=3‘b000;
14       default step<=3‘b000;
15     endcase
16   end
17   always @(negedge clkin)
18   begin
19   case(step1)
20       3‘b000:step1<=3‘b010;
21       3‘b010:step1<=3‘b100;
22       3‘b100:step1<=3‘b001;
23       3‘b001:step1<=3‘b011;
24       3‘b011:step1<=3‘b000;
25       default step1<=3‘b000;
26     endcase
27   end
28   assign clkout=(step[0]|step1[0]);
29 endmodule

顶层文件(testbench):

 1 `timescale 1ns/1ns
 2 `define half_period 20
 3 module fdivision5_test;
 4   reg  clkin;
 5   wire clkout;
 6   wire step,step1;
 7   initial
 8   begin
 9   clkin=0;
10   end
11   always #`half_period clkin=~clkin;
12   fdivision5 m(clkin,clkout);
13   assign step=m.step;
14   assign step1=m.step1;
15 endmodule

波形图:

时间: 2024-10-05 04:24:50

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

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

Part 1,功能定义: 用16*8 RAM实现一个同步先进先出(FIFO)队列设计.由写使能端控制该数据流的写入FIFO,并由读使能控制FIFO中数据的读出.写入和读出的操作(高电平有效)由时钟的上升沿触发.当FIFO的数据满和空的时候分别设置相应的高电平加以指示.FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,它与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成

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

这里以简单的3-8译码器和8-3编码器为例: module decoder3_8(a,out); input [2:0]a; output [7:0]out; assign out=1'b1<<a;/*把最低位的1左移in位(根据in口输入的值)并赋予out*/ endmodule 8-3编码器程序: 1)利用for循环 1 module encoder8_3(a,out,none_on); 2 input [7:0]a; 3 output [2:0]out; 4 output none_on

学习笔记——Maven实战(六)Gradle,构建工具的未来?

Maven面临的挑战 软件行业新旧交替的速度之快往往令人咂舌,不用多少时间,你就会发现曾经大红大紫的技术已经成为了昨日黄花,当然,Maven也不会例外.虽然目前它基本上是Java构建的事实标准,但我们也能看到新兴的工具在涌现,比如基于Goovy的Gradle,而去年Hibernate宣布从Maven迁移至Gradle这一事件更是吸引了不少眼球.在此之前,我也听到了不少对Maven的抱怨,包括XML的繁冗,不够灵活,学习曲线陡峭等等.那Gradle是否能够在继承 Maven优点的基础上,克服这些缺

Redis学习笔记(简单了解与运行)

Redis学习笔记(简单了解与运行) 开源的非关系型数据库 是REmote Dictionary Server(远程字典服务器)的缩写,以字典结构存储数据 允许其他应用通过TCP协议读写字典中的内容. Redis支持存储的键值数据类型 字符串类型 散列类型 列表类型 集合类型 有序集合类型 Redis的特性 通过一个列子看出Mysql和Redis的存储区别 例如: (存储一篇文章,文章包括:标题(title),正文(content),阅读量(views),标签(tags)) 需求: 把数据存储在

树莓派学习笔记——GPIO功能学习

树莓派学习笔记——GPIO功能学习

Dynamic CRM 2013学习笔记(三十六)全部禁用、部分禁用&rdquo;自动保存&rdquo; 功能

我们都知道CRM2013新增了一个自动保存的功能:每30秒或跳转到新的记录前会自动保存.但有时考虑到性能或其它原因,我们有时要禁用此功能.下面介绍如何在所有form里禁用或在部分form里禁用此功能.   一.全部禁用 全部禁用很简单,依次打开Seeting –> administrator –> system settings, 然后如下图把Enable auto save on all forms 设为No即可   二.部分禁用 上面的方法是针对所有的form.如果我们只想在指定的form

Dynamic CRM 2013学习笔记(四十六)简单审批流的实现

前面介绍过自定义审批流: Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示 Dynamic CRM 2013学习笔记(二十一)自定义审批流2 - 配置按钮 Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置 Dynamic CRM 2013学习笔记(三十三)自定义审批流4 - 规则节点 -有分支的流程处理 Dynamic CRM 2013学习笔记(三十四)自定义审批流5 - 自动邮件通知 Dynamic CRM 2013学习笔记(三十

【Java学习笔记之二十六】深入理解Java匿名内部类

在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.如何初始化匿名内部类.匿名内部类使用的形参为何要为final. 一.使用匿名内部类内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪.创建格式如下: new 父类构造器(参数列表)|实现接口() { //匿名内部类的类体部分 } 在这里我们看到使用匿名内部类我们必须要继承一个父类或者

Dynamic CRM 2013学习笔记(二十六)Reporting Service报表 动态参数、参数多选全选、动态列、动态显示行字体颜色

上次介绍过CRM里开始报表的一些注意事项:Dynamic CRM 2013学习笔记(十五)报表入门.开发工具及注意事项,本文继续介绍报表里的一些动态效果:动态显示参数,参数是从数据库里查询出来的:参数可以多选或全选:动态地显示列,列不是固定的:根据某一字段的值来动态地显示整行字体的颜色. 下面介绍详细的方法: 一.动态参数.参数多选全选 动态参数: 首先定义一个Dataset: SELECT DISTINCT new_countryId, new_codename AS name FROM ne