FPGA学习笔记. 二分频和三分频
二分频和三分频
二分频:将输入频率CLK分为原来的 1/2 。
实现:在每次CLK的上升沿或下降沿将输出翻转。
三分频:
1/3占空比。
实现:可使用上升沿或下降沿计数生成输出。需要一个两位计数器。
- 第一个CLK,输出Q翻转,计数器加1;
- 第二个CLK,输出Q不变,计数器加1;
- 第三个CLK,输出Q翻转,计数器清零。
50%占空比。
实现:将上升沿生成的Q1和下降沿生成的Q2两个1/3占空比相或。
code:
module DividerMultiple(
input clk_i,
input rst_n_i,
output div2_o,
output div3_o,
output [:]div3p_o,
output [:]div3n_o
// output [1:0]div3_r,
// output div3_75
);
//***************
reg div2_o_r;
//****************
reg [:] pos_cnt;
reg [:] neg_cnt;
reg div3_o_r0;
reg div3_o_r1;
//reg div3p_o;
//reg div3n_o;
//reg [1:0]div3_r;
//reg div3_75;
//******************* //always@(posedge clk_i or negedge rst_n_i)
//begin
// if(!rst_n_i)begin
// div3_r <= 2'b00;
// div3_75 <= 1'b0;
// end
// else begin
// if(div3_r == 2'b00) begin
// div3_75 <= ~div3_75;
// div3_r <= div3_r + 1'b1;
// end
// else if(div3_r == 2'b10) begin
// div3_75 <= ~div3_75;
// div3_r <= 2'b00;
// end
// else
// div3_r <= 2'b00;
// end
//end //two divided-frequency
always@(posedge clk_i or negedge rst_n_i)
begin
if(!rst_n_i)begin
div2_o_r <= 'b0;
end
else begin
div2_o_r <= ~div2_o_r;
end
end //three divided-frequency
always@(posedge clk_i or negedge rst_n_i) //上升沿计数
begin
if(!rst_n_i)begin
pos_cnt<='b00;
end
else begin
if(pos_cnt=='d2)
pos_cnt<='b00;
else
pos_cnt<=pos_cnt+'b1;
end
end
always@(negedge clk_i or negedge rst_n_i) //下降沿计数
begin
if(!rst_n_i)begin
neg_cnt<='b00;
end
else begin
if(neg_cnt=='d2) begin
neg_cnt<='b00;
end
else
neg_cnt<=neg_cnt+'b1;
end
end
always@(posedge clk_i or negedge rst_n_i)
begin
if(!rst_n_i)
div3_o_r0<='b0;
else
if(pos_cnt<'d1) div3_o_r0<=1'b1;
else div3_o_r0<='b0;
end
always@(negedge clk_i or negedge rst_n_i)
begin
if(!rst_n_i)
div3_o_r1<='b0;
else
if(neg_cnt<'d1) div3_o_r1<=1'b1;
else div3_o_r1<='b0;
end assign div2_o = div2_o_r;
assign div3_o = div3_o_r0 | div3_o_r1; //相或
assign div3p_o = div3_o_r0;
assign div3n_o = div3_o_r1; endmodule
testbench
module Divider_Multiple_tb;
// Inputs
reg clk_i;
reg rst_n_i;
// Outputs
wire div2_o;
wire div3_o;
wire [:]div3p_o;
wire [:]div3n_o;
// Instantiate the Unit Under Test (UUT)
DividerMultiple uut (
.clk_i(clk_i),
.rst_n_i(rst_n_i),
.div2_o(div2_o),
.div3_o(div3_o) ,
.div3p_o(div3p_o) ,
.div3n_o(div3n_o)
);
initial begin
// Initialize Inputs4
clk_i = ;
rst_n_i = ;
// Wait 100 ns for global reset to finish
#; rst_n_i=;
end
always
begin
# clk_i=~clk_i;
end
endmodule
仿真结果:
FPGA学习笔记. 二分频和三分频的更多相关文章
- 【Unity Shaders】学习笔记——SurfaceShader(三)BasicDiffuse和HalfLambert
[Unity Shaders]学习笔记——SurfaceShader(三)BasicDiffuse和HalfLambert 转载请注明出处:http://www.cnblogs.com/-867259 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第三章:变换
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第三章:变换 学习目标 理解如何用矩阵表示线性变换和仿射变换: 学习在 ...
- FPGA学习笔记(二)——FPGA学习路线及开发流程
###### [该随笔部分内容转载自小梅哥] ######### 一.FPGA学习路线 工具使用 -> 语法学习 -> 逻辑设计 -> IP使用 ->接口设计 -& ...
- 20145316许心远《Java学习笔记》第三周总结
20145316许心远<Java程序设计>第3周学习总结 教材学习内容总结 一.定义类: 类定义时使用class关键字 如果要将x绑定到新建的对象上,可以使用"="制定 ...
- MySQL实战45讲学习笔记:第三十九讲
一.本节概况 MySQL实战45讲学习笔记:自增主键为什么不是连续的?(第39讲) 在第 4 篇文章中,我们提到过自增主键,由于自增主键可以让主键索引尽量地保持递增顺序插入,避免了页分裂,因此索引更紧 ...
- Java菜鸟学习笔记--数组篇(三):二维数组
定义 //1.二维数组的定义 //2.二维数组的内存空间 //3.不规则数组 package me.array; public class Array2Demo{ public static void ...
- 【EF6学习笔记】(三)排序、过滤查询及分页
本篇原文地址:Sorting, Filtering, and Paging 说明:学习笔记参考原文中的流程,为了增加实际操作性,并能够深入理解,部分地方根据实际情况做了一些调整:并且根据自己的理解做了 ...
- 学习笔记-AngularJs(三)
学习笔记-AngularJs(二)写了个所有程序语言入门时都必须要写的Hello World,那么从现在开始做那个之前说过的互联网大佬介绍的学习例子,当然这里开始会慢慢按照之前说过的目录来搭建这个学习 ...
- FPGA学习笔记(三)—— 数字逻辑设计基础(抽象的艺术)
FPGA设计的是数字逻辑,在开始用HDL设计之前,需要先了解一下基本的数字逻辑设计-- 一门抽象的艺术. 现实世界是一个模拟的世界,有很多模拟量,比如温度,声音······都是模拟信号,通过对模拟信号 ...
随机推荐
- js中判断是否包含某个字符串
1,字符串中是否包含 str.indexOf("3")indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置.如果要检索的字符串值没有出现,则该方法返回 -1. ...
- [转载]ValidationExpression验证规则
ValidationExpression验证规则 在ASP.NET中,ValidationExpression 验证规则属性可以根据自已的需要,对输入的数据进行限制,其常用符号如下表所示: 符号 ...
- Python的三种格式化输出
今天刚学了python的三种格式化输出,以前没接触过这么有趣的输出方式,现在来分享一下. #!/user/bin/env python#coding:utf-8#三种格式化输出 #第一种格式化输出na ...
- Restful api 防止重复提交
当前很多网站是前后分离的,前端(android,iso,h5)通过restful API 调用 后端服务器,这就存在一个问题,对于创建操作,比如购买某个商品,如果由于某种原因,手抖,控件bug,网络错 ...
- 深入解读Quartz的原理
Quartz是一个大名鼎鼎的Java版开源定时调度器,功能强悍,使用方便. 一.核心概念 Quartz的原理不是很复杂,只要搞明白几个概念,然后知道如何去启动和关闭一个调度程序即可. 1 ...
- java使用JMail通过QQ邮件服务器实现自动发送邮件
前言:项目开发的过程中,我们项目需要一个自动发送邮件提醒的小功能,于是简单的研究了一下java的JMail来实现自动发送邮件的功能.已被后期需要参考. 一.准备 实现的原理很简单:发送人 , 中转的邮 ...
- Java 策略模式(Strategy)
创建一个能够根据所传递的参数对象的不同而具有不同行为的方法 要执行的算法固定不变,封装到一个类(Context)中 策略就是传递进去的参数对象,它包含执行代码 策略接口 /** * 策略接口 */ p ...
- Fantastic Graph 2018 沈阳赛区网络预赛 F题
题意: 二分图 有k条边,我们去选择其中的几条 每选中一条那么此条边的u 和 v的度数就+1,最后使得所有点的度数都在[l, r]这个区间内 , 这就相当于 边流入1,流出1,最后使流量平衡 解析: ...
- 使用VBA批量转换Excel格式,由.xls转换成.xlsx
问题分析: Excel2007以前的格式是.xls,之后的格式是.xlsx.打开单独的一个Excel文档,使用“另存为”功能,可以很轻松的转换格式.但是面对几百个Excel表这样就太累了,搜索很久,也 ...
- 【Luogu P4074】[WC2013]糖果公园(树上带修改莫队)
题目描述 Candyland 有一座糖果公园,公园里不仅有美丽的风景.好玩的游乐项目,还有许多免费糖果的发放点,这引来了许多贪吃的小朋友来糖果公园游玩. 糖果公园的结构十分奇特,它由 \(n\) 个游 ...